From b6b00dd55e035bfbe311a527b567962ffa77ee43 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 26 Jun 2024 18:18:37 +0200 Subject: Merging upstream version 1:4.15.2. Signed-off-by: Daniel Baumann --- AUTHORS.md | 9 + ChangeLog | 14 +- Makefile.am | 9 +- Makefile.in | 36 +- NEWS | 14 +- README | 11 + TODO | 127 - aclocal.m4 | 1255 ++++ config.h.in | 196 +- configure | 2552 ++++--- configure.ac | 195 +- contrib/Makefile.am | 4 +- contrib/Makefile.in | 22 +- contrib/README | 3 - contrib/adduser.c | 4 +- contrib/groupmems.shar | 465 -- contrib/pwdauth.c | 308 - contrib/shadow-anonftp.patch | 147 - contrib/udbachk.tgz | Bin 17571 -> 0 bytes doc/Makefile.am | 3 +- doc/Makefile.in | 21 +- doc/README.platforms | 33 - doc/WISHLIST | 39 - doc/console.c.spec.txt | 36 - doc/cracklib26.diff | 340 - etc/Makefile.am | 2 +- etc/Makefile.in | 19 +- etc/login.defs | 5 - etc/pam.d/Makefile.am | 4 +- etc/pam.d/Makefile.in | 22 +- etc/shadow-maint/Makefile.am | 5 + etc/shadow-maint/Makefile.in | 509 ++ .../groupdel-pre.d/01-kill_group_procs.sh | 26 + .../userdel-pre.d/01-kill_user_procs.sh | 31 + lib/Makefile.am | 159 +- lib/Makefile.in | 1414 +++- lib/addgrps.c | 114 + lib/adds.c | 15 + lib/adds.h | 86 + lib/age.c | 181 + lib/agetpass.c | 145 + lib/agetpass.h | 23 + lib/alloc.c | 73 + lib/alloc.h | 101 + lib/atoi/a2i.c | 46 + lib/atoi/a2i.h | 386 + lib/atoi/str2i.c | 18 + lib/atoi/str2i.h | 108 + lib/atoi/strtoi.c | 15 + lib/atoi/strtoi.h | 96 + lib/atoi/strtou_noneg.c | 13 + lib/atoi/strtou_noneg.h | 39 + lib/attr.h | 33 + lib/audit_help.c | 89 + lib/basename.c | 31 + lib/bit.c | 19 + lib/bit.h | 53 + lib/btrfs.c | 110 + lib/cast.h | 15 + lib/chkname.c | 120 + lib/chkname.h | 34 + lib/chowndir.c | 146 + lib/chowntty.c | 79 + lib/cleanup.c | 121 + lib/cleanup_group.c | 216 + lib/cleanup_user.c | 131 + lib/commonio.c | 121 +- lib/commonio.h | 10 +- lib/console.c | 109 + lib/copydir.c | 925 +++ lib/csrand.c | 150 + lib/defines.h | 183 +- lib/env.c | 236 + lib/failure.c | 267 + lib/failure.h | 44 + lib/fd.c | 41 + lib/fields.c | 40 +- lib/find_new_gid.c | 500 ++ lib/find_new_sub_gids.c | 64 + lib/find_new_sub_uids.c | 64 + lib/find_new_uid.c | 500 ++ lib/fputsx.c | 3 +- lib/freezero.c | 30 + lib/freezero.h | 34 + lib/get_gid.c | 21 +- lib/get_pid.c | 90 +- lib/get_uid.c | 21 +- lib/getdate.c | 2535 +++++++ lib/getdate.h | 16 + lib/getdate.y | 949 +++ lib/getdef.c | 119 +- lib/getdef.h | 2 +- lib/getgr_nam_gid.c | 43 + lib/getlong.c | 36 - lib/getrange.c | 71 + lib/gettime.c | 47 + lib/getulong.c | 39 - lib/groupio.c | 65 +- lib/groupmem.c | 40 +- lib/gshadow.c | 231 +- lib/hushed.c | 80 + lib/idmapping.c | 224 + lib/idmapping.h | 23 + lib/isexpired.c | 105 + lib/limits.c | 537 ++ lib/list.c | 245 + lib/lockpw.c | 2 +- lib/log.c | 109 + lib/logind.c | 52 + lib/loginprompt.c | 111 + lib/mail.c | 67 + lib/memzero.c | 17 + lib/memzero.h | 49 + lib/motd.c | 60 + lib/must_be.h | 99 + lib/myname.c | 49 + lib/nscd.c | 2 +- lib/nss.c | 138 +- lib/obscure.c | 224 + lib/pam_defs.h | 2 +- lib/pam_pass.c | 59 + lib/pam_pass_non_interactive.c | 149 + lib/port.c | 34 +- lib/prefix_flag.c | 360 + lib/prototypes.h | 156 +- lib/pwauth.c | 64 +- lib/pwd2spwd.c | 62 + lib/pwd_init.c | 56 + lib/pwdcheck.c | 40 + lib/pwio.c | 23 +- lib/pwmem.c | 9 +- lib/readpassphrase.c | 198 + lib/readpassphrase.h | 47 + lib/remove_tree.c | 101 + lib/rlogin.c | 135 + lib/root_flag.c | 108 + lib/run_part.c | 24 +- lib/salt.c | 452 ++ lib/selinux.c | 4 +- lib/semanage.c | 47 +- lib/setugid.c | 125 + lib/setupenv.c | 285 + lib/sgetgrent.c | 70 +- lib/sgetpwent.c | 26 +- lib/sgetspent.c | 57 +- lib/sgroupio.c | 21 +- lib/shadow.c | 305 +- lib/shadowio.c | 7 +- lib/shadowlog_internal.h | 2 +- lib/shadowmem.c | 9 +- lib/shell.c | 82 + lib/sizeof.h | 25 + lib/spawn.c | 5 +- lib/sssd.c | 12 +- lib/string/sprintf.c | 24 + lib/string/sprintf.h | 97 + lib/string/stpecpy.c | 20 + lib/string/stpecpy.h | 90 + lib/string/stpeprintf.c | 25 + lib/string/stpeprintf.h | 120 + lib/string/strftime.c | 7 + lib/string/strftime.h | 19 + lib/string/strncpy.h | 21 + lib/string/strtcpy.c | 18 + lib/string/strtcpy.h | 80 + lib/string/zustr2stp.h | 58 + lib/strtoday.c | 77 + lib/sub.c | 69 + lib/subordinateio.c | 135 +- lib/sulog.c | 83 + lib/tcbfuncs.c | 11 +- lib/time/day_to_str.c | 11 + lib/time/day_to_str.h | 51 + lib/ttytype.c | 65 + lib/tz.c | 58 + lib/ulimit.c | 29 + lib/user_busy.c | 269 + lib/utent.c | 70 - lib/utmp.c | 434 ++ lib/valid.c | 82 + lib/write_full.c | 77 + lib/xgetXXbyYY.c | 118 + lib/xgetgrgid.c | 41 + lib/xgetgrnam.c | 41 + lib/xgetpwnam.c | 41 + lib/xgetpwuid.c | 41 + lib/xgetspnam.c | 41 + lib/xprefix_getpwnam.c | 41 + lib/yesno.c | 87 + libmisc/.indent.pro | 5 - libmisc/Makefile.am | 80 - libmisc/Makefile.in | 927 --- libmisc/addgrps.c | 114 - libmisc/age.c | 178 - libmisc/audit_help.c | 87 - libmisc/basename.c | 27 - libmisc/btrfs.c | 110 - libmisc/chkname.c | 101 - libmisc/chkname.h | 27 - libmisc/chowndir.c | 146 - libmisc/chowntty.c | 79 - libmisc/cleanup.c | 121 - libmisc/cleanup_group.c | 215 - libmisc/cleanup_user.c | 130 - libmisc/console.c | 108 - libmisc/copydir.c | 968 --- libmisc/date_to_str.c | 46 - libmisc/entry.c | 45 - libmisc/env.c | 253 - libmisc/failure.c | 295 - libmisc/failure.h | 61 - libmisc/find_new_gid.c | 483 -- libmisc/find_new_sub_gids.c | 64 - libmisc/find_new_sub_uids.c | 64 - libmisc/find_new_uid.c | 483 -- libmisc/getdate.c | 2540 ------- libmisc/getdate.h | 16 - libmisc/getdate.y | 954 --- libmisc/getgr_nam_gid.c | 43 - libmisc/getrange.c | 101 - libmisc/gettime.c | 68 - libmisc/hushed.c | 77 - libmisc/idmapping.c | 223 - libmisc/idmapping.h | 23 - libmisc/isexpired.c | 102 - libmisc/limits.c | 589 -- libmisc/list.c | 249 - libmisc/log.c | 93 - libmisc/loginprompt.c | 155 - libmisc/mail.c | 69 - libmisc/motd.c | 58 - libmisc/myname.c | 49 - libmisc/obscure.c | 306 - libmisc/pam_pass.c | 59 - libmisc/pam_pass_non_interactive.c | 145 - libmisc/prefix_flag.c | 340 - libmisc/pwd2spwd.c | 67 - libmisc/pwd_init.c | 79 - libmisc/pwdcheck.c | 38 - libmisc/remove_tree.c | 101 - libmisc/rlogin.c | 175 - libmisc/root_flag.c | 108 - libmisc/salt.c | 566 -- libmisc/setugid.c | 125 - libmisc/setupenv.c | 290 - libmisc/shell.c | 80 - libmisc/strtoday.c | 220 - libmisc/sub.c | 55 - libmisc/sulog.c | 83 - libmisc/ttytype.c | 67 - libmisc/tz.c | 57 - libmisc/ulimit.c | 47 - libmisc/user_busy.c | 273 - libmisc/utmp.c | 474 -- libmisc/valid.c | 82 - libmisc/xgetXXbyYY.c | 121 - libmisc/xgetgrgid.c | 41 - libmisc/xgetgrnam.c | 41 - libmisc/xgetpwnam.c | 41 - libmisc/xgetpwuid.c | 41 - libmisc/xgetspnam.c | 41 - libmisc/xmalloc.c | 46 - libmisc/yesno.c | 56 - libsubid/Makefile.am | 3 - libsubid/Makefile.in | 39 +- libsubid/api.c | 4 +- ltmain.sh | 851 ++- m4/libtool.m4 | 229 +- m4/ltoptions.m4 | 4 +- m4/ltsugar.m4 | 2 +- m4/ltversion.m4 | 13 +- m4/lt~obsolete.m4 | 4 +- man/Makefile.am | 23 +- man/Makefile.in | 128 +- man/chage.1.xml | 15 + man/chgpasswd.8.xml | 64 +- man/chpasswd.8.xml | 80 +- man/chsh.1.xml | 45 +- man/config.xml | 2 + man/cs/Makefile.am | 5 +- man/cs/Makefile.in | 40 +- man/da/Makefile.in | 38 +- man/da/man1/chfn.1 | 8 +- man/da/man1/groups.1 | 8 +- man/da/man1/id.1 | 6 +- man/da/man1/newgrp.1 | 6 +- man/da/man1/sg.1 | 6 +- man/da/man5/gshadow.5 | 12 +- man/da/man8/groupdel.8 | 10 +- man/da/man8/logoutd.8 | 8 +- man/da/man8/nologin.8 | 8 +- man/da/man8/vipw.8 | 18 +- man/de/Makefile.am | 5 +- man/de/Makefile.in | 59 +- man/de/man1/chage.1 | 28 +- man/de/man1/chfn.1 | 26 +- man/de/man1/chsh.1 | 28 +- man/de/man1/expiry.1 | 18 +- man/de/man1/gpasswd.1 | 20 +- man/de/man1/groups.1 | 12 +- man/de/man1/id.1 | 8 +- man/de/man1/login.1 | 40 +- man/de/man1/newgrp.1 | 16 +- man/de/man1/passwd.1 | 89 +- man/de/man1/sg.1 | 14 +- man/de/man1/su.1 | 26 +- man/de/man3/shadow.3 | 32 +- man/de/man5/faillog.5 | 14 +- man/de/man5/gshadow.5 | 26 +- man/de/man5/limits.5 | 44 +- man/de/man5/login.access.5 | 14 +- man/de/man5/login.defs.5 | 17 +- man/de/man5/passwd.5 | 22 +- man/de/man5/porttime.5 | 12 +- man/de/man5/shadow.5 | 60 +- man/de/man5/suauth.5 | 28 +- man/de/man8/chgpasswd.8 | 52 +- man/de/man8/chpasswd.8 | 60 +- man/de/man8/faillog.8 | 20 +- man/de/man8/groupadd.8 | 20 +- man/de/man8/groupdel.8 | 18 +- man/de/man8/groupmems.8 | 26 +- man/de/man8/groupmod.8 | 20 +- man/de/man8/grpck.8 | 14 +- man/de/man8/lastlog.8 | 20 +- man/de/man8/logoutd.8 | 14 +- man/de/man8/newusers.8 | 73 +- man/de/man8/nologin.8 | 8 +- man/de/man8/pwck.8 | 34 +- man/de/man8/pwconv.8 | 22 +- man/de/man8/sulogin.8 | 10 +- man/de/man8/useradd.8 | 68 +- man/de/man8/userdel.8 | 28 +- man/de/man8/usermod.8 | 46 +- man/de/man8/vipw.8 | 30 +- man/es/Makefile.in | 17 +- man/fi/Makefile.in | 17 +- man/fr/Makefile.am | 5 +- man/fr/Makefile.in | 65 +- man/fr/man1/chage.1 | 14 +- man/fr/man1/chfn.1 | 8 +- man/fr/man1/chsh.1 | 14 +- man/fr/man1/expiry.1 | 8 +- man/fr/man1/gpasswd.1 | 10 +- man/fr/man1/groups.1 | 10 +- man/fr/man1/id.1 | 8 +- man/fr/man1/login.1 | 12 +- man/fr/man1/newgidmap.1 | 18 +- man/fr/man1/newgrp.1 | 10 +- man/fr/man1/newuidmap.1 | 18 +- man/fr/man1/passwd.1 | 63 +- man/fr/man1/sg.1 | 8 +- man/fr/man1/su.1 | 10 +- man/fr/man3/shadow.3 | 12 +- man/fr/man5/faillog.5 | 6 +- man/fr/man5/gshadow.5 | 14 +- man/fr/man5/limits.5 | 10 +- man/fr/man5/login.access.5 | 6 +- man/fr/man5/login.defs.5 | 9 +- man/fr/man5/passwd.5 | 6 +- man/fr/man5/porttime.5 | 6 +- man/fr/man5/shadow.5 | 24 +- man/fr/man5/suauth.5 | 6 +- man/fr/man5/subgid.5 | 6 +- man/fr/man5/subuid.5 | 8 +- man/fr/man8/chgpasswd.8 | 26 +- man/fr/man8/chpasswd.8 | 36 +- man/fr/man8/faillog.8 | 8 +- man/fr/man8/groupadd.8 | 8 +- man/fr/man8/groupdel.8 | 10 +- man/fr/man8/groupmems.8 | 10 +- man/fr/man8/groupmod.8 | 10 +- man/fr/man8/grpck.8 | 10 +- man/fr/man8/lastlog.8 | 10 +- man/fr/man8/logoutd.8 | 8 +- man/fr/man8/newusers.8 | 21 +- man/fr/man8/nologin.8 | 8 +- man/fr/man8/pwck.8 | 8 +- man/fr/man8/pwconv.8 | 8 +- man/fr/man8/sulogin.8 | 8 +- man/fr/man8/useradd.8 | 34 +- man/fr/man8/userdel.8 | 8 +- man/fr/man8/usermod.8 | 22 +- man/fr/man8/vipw.8 | 10 +- man/generate_mans.mak | 33 +- man/generate_translations.mak | 6 +- man/gpasswd.1.xml | 2 + man/groupmems.8.xml | 2 +- man/hu/Makefile.am | 5 +- man/hu/Makefile.in | 33 +- man/id/Makefile.in | 17 +- man/it/Makefile.am | 5 +- man/it/Makefile.in | 59 +- man/it/man1/chage.1 | 16 +- man/it/man1/chfn.1 | 10 +- man/it/man1/chsh.1 | 16 +- man/it/man1/expiry.1 | 10 +- man/it/man1/gpasswd.1 | 10 +- man/it/man1/groups.1 | 10 +- man/it/man1/id.1 | 8 +- man/it/man1/login.1 | 12 +- man/it/man1/newgrp.1 | 10 +- man/it/man1/passwd.1 | 65 +- man/it/man1/sg.1 | 8 +- man/it/man1/su.1 | 10 +- man/it/man3/shadow.3 | 10 +- man/it/man5/faillog.5 | 6 +- man/it/man5/gshadow.5 | 14 +- man/it/man5/limits.5 | 10 +- man/it/man5/login.access.5 | 6 +- man/it/man5/login.defs.5 | 9 +- man/it/man5/passwd.5 | 6 +- man/it/man5/porttime.5 | 6 +- man/it/man5/shadow.5 | 24 +- man/it/man5/suauth.5 | 6 +- man/it/man8/chgpasswd.8 | 28 +- man/it/man8/chpasswd.8 | 38 +- man/it/man8/faillog.8 | 10 +- man/it/man8/groupadd.8 | 10 +- man/it/man8/groupdel.8 | 10 +- man/it/man8/groupmems.8 | 10 +- man/it/man8/groupmod.8 | 10 +- man/it/man8/grpck.8 | 10 +- man/it/man8/lastlog.8 | 12 +- man/it/man8/logoutd.8 | 8 +- man/it/man8/newusers.8 | 21 +- man/it/man8/nologin.8 | 8 +- man/it/man8/pwck.8 | 10 +- man/it/man8/pwconv.8 | 16 +- man/it/man8/sulogin.8 | 8 +- man/it/man8/useradd.8 | 38 +- man/it/man8/userdel.8 | 10 +- man/it/man8/usermod.8 | 24 +- man/it/man8/vipw.8 | 14 +- man/its.rules | 16 + man/ja/Makefile.am | 5 +- man/ja/Makefile.in | 36 +- man/ko/Makefile.in | 17 +- man/lastlog.8.xml | 4 +- man/login.1.xml | 2 +- man/login.defs.5.xml | 23 +- man/login.defs.d/BCRYPT_MIN_ROUNDS.xml | 40 + man/login.defs.d/CONSOLE_GROUPS.xml | 2 +- man/login.defs.d/ENCRYPT_METHOD.xml | 6 +- man/login.defs.d/ENV_HZ.xml | 7 +- man/login.defs.d/PASS_WARN_AGE.xml | 4 +- man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml | 2 +- man/login.defs.d/TTYGROUP.xml | 11 +- man/login.defs.d/YESCRYPT_COST_FACTOR.xml | 29 + man/man1/chage.1 | 12 +- man/man1/chfn.1 | 6 +- man/man1/chsh.1 | 12 +- man/man1/expiry.1 | 6 +- man/man1/getsubids.1 | 6 +- man/man1/gpasswd.1 | 8 +- man/man1/groups.1 | 6 +- man/man1/id.1 | 6 +- man/man1/login.1 | 12 +- man/man1/newgidmap.1 | 16 +- man/man1/newgrp.1 | 6 +- man/man1/newuidmap.1 | 16 +- man/man1/passwd.1 | 63 +- man/man1/sg.1 | 6 +- man/man1/su.1 | 6 +- man/man3/shadow.3 | 6 +- man/man5/faillog.5 | 6 +- man/man5/gshadow.5 | 6 +- man/man5/limits.5 | 6 +- man/man5/login.access.5 | 6 +- man/man5/login.defs.5 | 19 +- man/man5/passwd.5 | 6 +- man/man5/porttime.5 | 6 +- man/man5/shadow.5 | 6 +- man/man5/suauth.5 | 6 +- man/man5/subgid.5 | 6 +- man/man5/subuid.5 | 8 +- man/man8/chgpasswd.8 | 26 +- man/man8/chpasswd.8 | 36 +- man/man8/faillog.8 | 6 +- man/man8/groupadd.8 | 6 +- man/man8/groupdel.8 | 6 +- man/man8/groupmems.8 | 8 +- man/man8/groupmod.8 | 6 +- man/man8/grpck.8 | 6 +- man/man8/lastlog.8 | 8 +- man/man8/logoutd.8 | 6 +- man/man8/newusers.8 | 21 +- man/man8/nologin.8 | 6 +- man/man8/pwck.8 | 8 +- man/man8/pwconv.8 | 8 +- man/man8/sulogin.8 | 6 +- man/man8/useradd.8 | 34 +- man/man8/userdel.8 | 6 +- man/man8/usermod.8 | 20 +- man/man8/vipw.8 | 8 +- man/newgidmap.1.xml | 11 + man/newuidmap.1.xml | 11 + man/newusers.8.xml | 43 +- man/passwd.1.xml | 73 +- man/pl/Makefile.am | 5 +- man/pl/Makefile.in | 51 +- man/pl/man1/chage.1 | 16 +- man/pl/man1/chsh.1 | 16 +- man/pl/man1/expiry.1 | 8 +- man/pl/man1/groups.1 | 8 +- man/pl/man1/id.1 | 8 +- man/pl/man1/newgrp.1 | 8 +- man/pl/man1/sg.1 | 8 +- man/pl/man3/shadow.3 | 8 +- man/pl/man5/faillog.5 | 6 +- man/pl/man5/porttime.5 | 6 +- man/pl/man8/faillog.8 | 10 +- man/pl/man8/groupadd.8 | 10 +- man/pl/man8/groupdel.8 | 10 +- man/pl/man8/groupmems.8 | 10 +- man/pl/man8/groupmod.8 | 10 +- man/pl/man8/grpck.8 | 10 +- man/pl/man8/lastlog.8 | 12 +- man/pl/man8/logoutd.8 | 8 +- man/pl/man8/userdel.8 | 10 +- man/pl/man8/usermod.8 | 24 +- man/pl/man8/vipw.8 | 14 +- man/po/Makefile.in | 54 +- man/po/da.po | 2342 +++--- man/po/de.po | 7467 ++++++++++++-------- man/po/fr.po | 2405 ++++--- man/po/it.po | 2406 ++++--- man/po/pl.po | 2267 +++--- man/po/ru.po | 2421 ++++--- man/po/shadow-man-pages.pot | 2845 ++++---- man/po/sv.po | 2307 +++--- man/po/uk.po | 2536 ++++--- man/po/zh_CN.po | 2372 ++++--- man/pt_BR/Makefile.in | 17 +- man/ru/Makefile.am | 5 +- man/ru/Makefile.in | 59 +- man/ru/man1/chage.1 | 16 +- man/ru/man1/chfn.1 | 10 +- man/ru/man1/chsh.1 | 16 +- man/ru/man1/expiry.1 | 10 +- man/ru/man1/gpasswd.1 | 10 +- man/ru/man1/groups.1 | 10 +- man/ru/man1/id.1 | 8 +- man/ru/man1/login.1 | 12 +- man/ru/man1/newgrp.1 | 10 +- man/ru/man1/passwd.1 | 65 +- man/ru/man1/sg.1 | 8 +- man/ru/man1/su.1 | 10 +- man/ru/man3/shadow.3 | 10 +- man/ru/man5/faillog.5 | 6 +- man/ru/man5/gshadow.5 | 14 +- man/ru/man5/limits.5 | 10 +- man/ru/man5/login.access.5 | 6 +- man/ru/man5/login.defs.5 | 9 +- man/ru/man5/passwd.5 | 6 +- man/ru/man5/porttime.5 | 6 +- man/ru/man5/shadow.5 | 24 +- man/ru/man5/suauth.5 | 6 +- man/ru/man8/chgpasswd.8 | 28 +- man/ru/man8/chpasswd.8 | 38 +- man/ru/man8/faillog.8 | 10 +- man/ru/man8/groupadd.8 | 10 +- man/ru/man8/groupdel.8 | 10 +- man/ru/man8/groupmems.8 | 10 +- man/ru/man8/groupmod.8 | 10 +- man/ru/man8/grpck.8 | 10 +- man/ru/man8/lastlog.8 | 12 +- man/ru/man8/logoutd.8 | 8 +- man/ru/man8/newusers.8 | 23 +- man/ru/man8/nologin.8 | 8 +- man/ru/man8/pwck.8 | 10 +- man/ru/man8/pwconv.8 | 16 +- man/ru/man8/sulogin.8 | 8 +- man/ru/man8/useradd.8 | 38 +- man/ru/man8/userdel.8 | 10 +- man/ru/man8/usermod.8 | 24 +- man/ru/man8/vipw.8 | 14 +- man/shadow-man.xsl | 9 + man/su.1.xml | 2 +- man/subuid.5.xml | 2 +- man/sulogin.8.xml | 2 +- man/sv/Makefile.am | 5 +- man/sv/Makefile.in | 53 +- man/sv/man1/chage.1 | 16 +- man/sv/man1/chsh.1 | 16 +- man/sv/man1/expiry.1 | 8 +- man/sv/man1/groups.1 | 10 +- man/sv/man1/id.1 | 8 +- man/sv/man1/newgrp.1 | 10 +- man/sv/man1/passwd.1 | 65 +- man/sv/man1/sg.1 | 8 +- man/sv/man3/shadow.3 | 10 +- man/sv/man5/faillog.5 | 6 +- man/sv/man5/gshadow.5 | 10 +- man/sv/man5/limits.5 | 6 +- man/sv/man5/passwd.5 | 6 +- man/sv/man5/porttime.5 | 6 +- man/sv/man5/suauth.5 | 6 +- man/sv/man8/faillog.8 | 10 +- man/sv/man8/groupadd.8 | 10 +- man/sv/man8/groupdel.8 | 10 +- man/sv/man8/groupmems.8 | 10 +- man/sv/man8/groupmod.8 | 10 +- man/sv/man8/grpck.8 | 10 +- man/sv/man8/lastlog.8 | 12 +- man/sv/man8/logoutd.8 | 8 +- man/sv/man8/nologin.8 | 8 +- man/sv/man8/pwck.8 | 10 +- man/sv/man8/userdel.8 | 10 +- man/sv/man8/vipw.8 | 14 +- man/tr/Makefile.in | 17 +- man/uk/Makefile.am | 5 +- man/uk/Makefile.in | 59 +- man/uk/man1/chage.1 | 141 +- man/uk/man1/chfn.1 | 56 +- man/uk/man1/chsh.1 | 51 +- man/uk/man1/expiry.1 | 19 +- man/uk/man1/gpasswd.1 | 106 +- man/uk/man1/groups.1 | 31 +- man/uk/man1/id.1 | 8 +- man/uk/man1/login.1 | 108 +- man/uk/man1/newgrp.1 | 43 +- man/uk/man1/passwd.1 | 169 +- man/uk/man1/sg.1 | 42 +- man/uk/man1/su.1 | 188 +- man/uk/man3/shadow.3 | 59 +- man/uk/man5/faillog.5 | 10 +- man/uk/man5/gshadow.5 | 35 +- man/uk/man5/login.access.5 | 30 +- man/uk/man5/login.defs.5 | 34 +- man/uk/man5/passwd.5 | 81 +- man/uk/man5/porttime.5 | 42 +- man/uk/man5/shadow.5 | 42 +- man/uk/man5/suauth.5 | 36 +- man/uk/man8/chgpasswd.8 | 59 +- man/uk/man8/chpasswd.8 | 91 +- man/uk/man8/faillog.8 | 116 +- man/uk/man8/groupadd.8 | 144 +- man/uk/man8/groupdel.8 | 51 +- man/uk/man8/groupmems.8 | 86 +- man/uk/man8/groupmod.8 | 130 +- man/uk/man8/grpck.8 | 94 +- man/uk/man8/lastlog.8 | 83 +- man/uk/man8/logoutd.8 | 20 +- man/uk/man8/newusers.8 | 94 +- man/uk/man8/nologin.8 | 23 +- man/uk/man8/pwck.8 | 100 +- man/uk/man8/pwconv.8 | 116 +- man/uk/man8/sulogin.8 | 12 +- man/uk/man8/useradd.8 | 403 +- man/uk/man8/userdel.8 | 114 +- man/uk/man8/usermod.8 | 260 +- man/uk/man8/vipw.8 | 48 +- man/useradd.8.xml | 31 +- man/usermod.8.xml | 19 +- man/vipw.8.xml | 2 +- man/zh_CN/Makefile.am | 5 +- man/zh_CN/Makefile.in | 59 +- man/zh_CN/man1/chage.1 | 16 +- man/zh_CN/man1/chfn.1 | 10 +- man/zh_CN/man1/chsh.1 | 16 +- man/zh_CN/man1/expiry.1 | 10 +- man/zh_CN/man1/gpasswd.1 | 10 +- man/zh_CN/man1/groups.1 | 10 +- man/zh_CN/man1/id.1 | 8 +- man/zh_CN/man1/login.1 | 12 +- man/zh_CN/man1/newgrp.1 | 8 +- man/zh_CN/man1/passwd.1 | 65 +- man/zh_CN/man1/sg.1 | 8 +- man/zh_CN/man1/su.1 | 10 +- man/zh_CN/man3/shadow.3 | 8 +- man/zh_CN/man5/faillog.5 | 6 +- man/zh_CN/man5/gshadow.5 | 14 +- man/zh_CN/man5/limits.5 | 6 +- man/zh_CN/man5/login.access.5 | 6 +- man/zh_CN/man5/login.defs.5 | 9 +- man/zh_CN/man5/passwd.5 | 6 +- man/zh_CN/man5/porttime.5 | 6 +- man/zh_CN/man5/shadow.5 | 24 +- man/zh_CN/man5/suauth.5 | 6 +- man/zh_CN/man8/chgpasswd.8 | 28 +- man/zh_CN/man8/chpasswd.8 | 38 +- man/zh_CN/man8/faillog.8 | 10 +- man/zh_CN/man8/groupadd.8 | 10 +- man/zh_CN/man8/groupdel.8 | 10 +- man/zh_CN/man8/groupmems.8 | 10 +- man/zh_CN/man8/groupmod.8 | 10 +- man/zh_CN/man8/grpck.8 | 10 +- man/zh_CN/man8/lastlog.8 | 12 +- man/zh_CN/man8/logoutd.8 | 8 +- man/zh_CN/man8/newusers.8 | 21 +- man/zh_CN/man8/nologin.8 | 8 +- man/zh_CN/man8/pwck.8 | 10 +- man/zh_CN/man8/pwconv.8 | 16 +- man/zh_CN/man8/sulogin.8 | 8 +- man/zh_CN/man8/useradd.8 | 38 +- man/zh_CN/man8/userdel.8 | 10 +- man/zh_CN/man8/usermod.8 | 24 +- man/zh_CN/man8/vipw.8 | 14 +- man/zh_TW/Makefile.in | 17 +- po/POTFILES.in | 115 +- po/bs.po | 698 +- po/ca.gmo | Bin 66042 -> 64794 bytes po/ca.po | 836 ++- po/cs.gmo | Bin 69417 -> 67218 bytes po/cs.po | 848 ++- po/da.gmo | Bin 61675 -> 60496 bytes po/da.po | 840 ++- po/de.gmo | Bin 67706 -> 66320 bytes po/de.po | 854 ++- po/dz.gmo | Bin 32468 -> 30605 bytes po/dz.po | 703 +- po/el.gmo | Bin 82996 -> 81341 bytes po/el.po | 829 ++- po/es.gmo | Bin 59443 -> 58297 bytes po/es.po | 812 ++- po/eu.gmo | Bin 46950 -> 45911 bytes po/eu.po | 745 +- po/fi.gmo | Bin 18790 -> 17856 bytes po/fi.po | 706 +- po/fr.gmo | Bin 82156 -> 85223 bytes po/fr.po | 994 +-- po/gl.gmo | Bin 18898 -> 17915 bytes po/gl.po | 709 +- po/he.gmo | Bin 4599 -> 4540 bytes po/he.po | 750 +- po/hu.gmo | Bin 18576 -> 17635 bytes po/hu.po | 705 +- po/id.gmo | Bin 15773 -> 15129 bytes po/id.po | 804 ++- po/it.gmo | Bin 21104 -> 20119 bytes po/it.po | 715 +- po/ja.gmo | Bin 71049 -> 69659 bytes po/ja.po | 834 ++- po/ka.gmo | Bin 124859 -> 126863 bytes po/ka.po | 884 ++- po/kk.gmo | Bin 82687 -> 80737 bytes po/kk.po | 840 ++- po/km.gmo | Bin 28070 -> 26518 bytes po/km.po | 731 +- po/ko.gmo | Bin 31161 -> 29994 bytes po/ko.po | 724 +- po/nb.gmo | Bin 65335 -> 63851 bytes po/nb.po | 841 ++- po/ne.gmo | Bin 27914 -> 26502 bytes po/ne.po | 705 +- po/nl.gmo | Bin 84933 -> 86354 bytes po/nl.po | 849 ++- po/nn.gmo | Bin 12505 -> 12114 bytes po/nn.po | 785 +- po/pl.gmo | Bin 18986 -> 17995 bytes po/pl.po | 705 +- po/pt.gmo | Bin 65517 -> 64276 bytes po/pt.po | 841 ++- po/pt_BR.gmo | Bin 56515 -> 55421 bytes po/pt_BR.po | 746 +- po/ro.gmo | Bin 18755 -> 17796 bytes po/ro.po | 707 +- po/ru.gmo | Bin 89001 -> 86939 bytes po/ru.po | 850 ++- po/shadow.pot | 517 +- po/sk.gmo | Bin 43041 -> 41925 bytes po/sk.po | 732 +- po/sq.po | 674 +- po/sv.gmo | Bin 54072 -> 52938 bytes po/sv.po | 810 ++- po/tl.gmo | Bin 18837 -> 17855 bytes po/tl.po | 709 +- po/tr.gmo | Bin 20505 -> 19549 bytes po/tr.po | 716 +- po/uk.gmo | Bin 105763 -> 101973 bytes po/uk.po | 863 ++- po/vi.gmo | Bin 73832 -> 72137 bytes po/vi.po | 846 ++- po/zh_CN.gmo | Bin 62731 -> 68997 bytes po/zh_CN.po | 1040 +-- po/zh_TW.gmo | Bin 66576 -> 65146 bytes po/zh_TW.po | 832 ++- shadow.spec.in | 93 - src/Makefile.am | 42 +- src/Makefile.in | 117 +- src/chage.c | 185 +- src/check_subid_range.c | 12 +- src/chfn.c | 94 +- src/chgpasswd.c | 39 +- src/chpasswd.c | 51 +- src/chsh.c | 147 +- src/expiry.c | 24 +- src/faillog.c | 218 +- src/free_subid_range.c | 3 +- src/get_subid_owners.c | 3 +- src/getsubids.c | 4 +- src/gpasswd.c | 198 +- src/groupadd.c | 56 +- src/groupdel.c | 61 +- src/groupmems.c | 32 +- src/groupmod.c | 151 +- src/groups.c | 11 +- src/grpck.c | 14 +- src/grpconv.c | 12 +- src/grpunconv.c | 9 +- src/id.c | 15 +- src/lastlog.c | 49 +- src/login.c | 267 +- src/login_nopam.c | 68 +- src/logoutd.c | 92 +- src/new_subid_range.c | 3 +- src/newgidmap.c | 48 +- src/newgrp.c | 127 +- src/newuidmap.c | 47 +- src/newusers.c | 192 +- src/passwd.c | 425 +- src/pwck.c | 24 +- src/pwconv.c | 11 +- src/pwunconv.c | 6 +- src/su.c | 115 +- src/suauth.c | 9 +- src/sulogin.c | 182 +- src/useradd.c | 909 +-- src/userdel.c | 156 +- src/usermod.c | 714 +- src/vipw.c | 113 +- test-driver | 153 + tests/tests/README | 19 + tests/tests/bug332198-test.exp | 61 + tests/tests/bug334803-test.exp | 83 + tests/tests/chage/01/data/chage1 | 7 + tests/tests/chage/01/data/chage2 | 7 + tests/tests/chage/01/data/chage3 | 7 + tests/tests/chage/01/data/chage4 | 7 + tests/tests/chage/01/data/chage5 | 7 + tests/tests/chage/01/data/chage6 | 7 + tests/tests/chage/01/data/chage7 | 7 + tests/tests/chage/01/data/chage7b | 7 + tests/tests/chage/01/data/chage8 | 1 + tests/tests/chage/01/data/group | 42 + tests/tests/chage/01/data/gshadow | 42 + tests/tests/chage/01/data/passwd | 26 + tests/tests/chage/01/data/shadow | 26 + tests/tests/chage/01/data/usage | 16 + tests/tests/chage/01/run | 206 + tests/tests/chage/01/run1.exp | 31 + tests/tests/chage/01/run2.exp | 31 + tests/tests/chage/02/data/group | 42 + tests/tests/chage/02/data/gshadow | 42 + tests/tests/chage/02/data/passwd | 20 + tests/tests/chage/02/data/shadow | 20 + tests/tests/chage/02/run | 50 + tests/tests/chage/02/run.exp | 83 + tests/tests/chage/03_chsh_usage/chage.test | 48 + tests/tests/chage/03_chsh_usage/config.txt | 0 tests/tests/chage/03_chsh_usage/config/etc/group | 42 + tests/tests/chage/03_chsh_usage/config/etc/gshadow | 42 + tests/tests/chage/03_chsh_usage/config/etc/passwd | 26 + tests/tests/chage/03_chsh_usage/config/etc/shadow | 26 + tests/tests/chage/03_chsh_usage/data/usage.out | 16 + .../chage/04_chsh_usage_invalid_option/chage.test | 54 + .../chage/04_chsh_usage_invalid_option/config.txt | 0 .../04_chsh_usage_invalid_option/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../04_chsh_usage_invalid_option/config/etc/passwd | 26 + .../04_chsh_usage_invalid_option/config/etc/shadow | 26 + .../04_chsh_usage_invalid_option/data/usage.out | 17 + tests/tests/chage/05_chsh_usage_2_users/chage.test | 54 + tests/tests/chage/05_chsh_usage_2_users/config.txt | 0 .../chage/05_chsh_usage_2_users/config/etc/group | 42 + .../chage/05_chsh_usage_2_users/config/etc/gshadow | 42 + .../chage/05_chsh_usage_2_users/config/etc/passwd | 26 + .../chage/05_chsh_usage_2_users/config/etc/shadow | 26 + .../chage/05_chsh_usage_2_users/data/usage.out | 16 + .../tests/chage/06_chsh_usage_no_users/chage.test | 54 + .../tests/chage/06_chsh_usage_no_users/config.txt | 0 .../chage/06_chsh_usage_no_users/config/etc/group | 42 + .../06_chsh_usage_no_users/config/etc/gshadow | 42 + .../chage/06_chsh_usage_no_users/config/etc/passwd | 26 + .../chage/06_chsh_usage_no_users/config/etc/shadow | 26 + .../chage/06_chsh_usage_no_users/data/usage.out | 16 + .../chage/07_chsh_usage-l_exclusive/chage.test | 57 + .../chage/07_chsh_usage-l_exclusive/config.txt | 0 .../07_chsh_usage-l_exclusive/config/etc/group | 42 + .../07_chsh_usage-l_exclusive/config/etc/gshadow | 42 + .../07_chsh_usage-l_exclusive/config/etc/passwd | 26 + .../07_chsh_usage-l_exclusive/config/etc/shadow | 26 + .../chage/07_chsh_usage-l_exclusive/data/usage.out | 17 + .../chage/08_chsh_usage_invalid_date/chage.test | 59 + .../chage/08_chsh_usage_invalid_date/config.txt | 0 .../08_chsh_usage_invalid_date/config/etc/group | 42 + .../08_chsh_usage_invalid_date/config/etc/gshadow | 42 + .../08_chsh_usage_invalid_date/config/etc/passwd | 26 + .../08_chsh_usage_invalid_date/config/etc/shadow | 26 + .../08_chsh_usage_invalid_date/data/usage.out | 17 + .../09_chsh_usage_invalid_numeric_arg/chage.test | 59 + .../09_chsh_usage_invalid_numeric_arg/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../data/usage.out | 17 + tests/tests/chage/10_chsh-l/chage.test | 51 + tests/tests/chage/10_chsh-l/config.txt | 0 tests/tests/chage/10_chsh-l/config/etc/group | 42 + tests/tests/chage/10_chsh-l/config/etc/gshadow | 42 + tests/tests/chage/10_chsh-l/config/etc/passwd | 32 + tests/tests/chage/10_chsh-l/config/etc/shadow | 30 + tests/tests/chage/10_chsh-l/data/myuser1 | 7 + tests/tests/chage/10_chsh-l/data/myuser10 | 7 + tests/tests/chage/10_chsh-l/data/myuser11 | 7 + tests/tests/chage/10_chsh-l/data/myuser2 | 7 + tests/tests/chage/10_chsh-l/data/myuser3 | 7 + tests/tests/chage/10_chsh-l/data/myuser4 | 7 + tests/tests/chage/10_chsh-l/data/myuser5 | 7 + tests/tests/chage/10_chsh-l/data/myuser6 | 7 + tests/tests/chage/10_chsh-l/data/myuser7 | 7 + tests/tests/chage/10_chsh-l/data/myuser8 | 7 + tests/tests/chage/10_chsh-l/data/myuser9 | 7 + .../chage/11_chsh_usage_invalid_user/chage.test | 54 + .../chage/11_chsh_usage_invalid_user/config.txt | 0 .../11_chsh_usage_invalid_user/config/etc/group | 42 + .../11_chsh_usage_invalid_user/config/etc/gshadow | 42 + .../11_chsh_usage_invalid_user/config/etc/passwd | 26 + .../11_chsh_usage_invalid_user/config/etc/shadow | 26 + .../11_chsh_usage_invalid_user/data/usage.out | 1 + .../chage/12_chsh_usage-l_invalid_user2/chage.test | 54 + .../chage/12_chsh_usage-l_invalid_user2/config.txt | 0 .../12_chsh_usage-l_invalid_user2/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../12_chsh_usage-l_invalid_user2/data/usage.out | 1 + tests/tests/chage/13_chsh_locked_passwd/chage.test | 59 + tests/tests/chage/13_chsh_locked_passwd/config.txt | 0 .../chage/13_chsh_locked_passwd/config/etc/group | 42 + .../chage/13_chsh_locked_passwd/config/etc/gshadow | 42 + .../chage/13_chsh_locked_passwd/config/etc/passwd | 26 + .../chage/13_chsh_locked_passwd/config/etc/shadow | 26 + .../chage/13_chsh_locked_passwd/data/usage.out | 2 + tests/tests/chage/14_chsh_locked_shadow/chage.test | 59 + tests/tests/chage/14_chsh_locked_shadow/config.txt | 0 .../chage/14_chsh_locked_shadow/config/etc/group | 42 + .../chage/14_chsh_locked_shadow/config/etc/gshadow | 42 + .../chage/14_chsh_locked_shadow/config/etc/passwd | 26 + .../chage/14_chsh_locked_shadow/config/etc/shadow | 26 + .../chage/14_chsh_locked_shadow/data/usage.out | 2 + .../chage/15_chage-I_no_shadow_entry/chage.test | 39 + .../chage/15_chage-I_no_shadow_entry/config.txt | 1 + .../15_chage-I_no_shadow_entry/config/etc/group | 42 + .../15_chage-I_no_shadow_entry/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../15_chage-I_no_shadow_entry/config/etc/passwd | 20 + .../15_chage-I_no_shadow_entry/config/etc/shadow | 19 + .../chage/15_chage-I_no_shadow_entry/data/passwd | 20 + .../chage/15_chage-I_no_shadow_entry/data/shadow | 20 + .../chage/16_chage-m_no_shadow_entry/chage.test | 39 + .../chage/16_chage-m_no_shadow_entry/config.txt | 1 + .../16_chage-m_no_shadow_entry/config/etc/group | 42 + .../16_chage-m_no_shadow_entry/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../16_chage-m_no_shadow_entry/config/etc/passwd | 20 + .../16_chage-m_no_shadow_entry/config/etc/shadow | 19 + .../chage/16_chage-m_no_shadow_entry/data/passwd | 20 + .../chage/16_chage-m_no_shadow_entry/data/shadow | 20 + .../chage/17_chage-M_no_shadow_entry/chage.test | 39 + .../chage/17_chage-M_no_shadow_entry/config.txt | 1 + .../17_chage-M_no_shadow_entry/config/etc/group | 42 + .../17_chage-M_no_shadow_entry/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../17_chage-M_no_shadow_entry/config/etc/passwd | 20 + .../17_chage-M_no_shadow_entry/config/etc/shadow | 19 + .../chage/17_chage-M_no_shadow_entry/data/passwd | 20 + .../chage/17_chage-M_no_shadow_entry/data/shadow | 20 + .../chage/18_chage-d_no_shadow_entry/chage.test | 39 + .../chage/18_chage-d_no_shadow_entry/config.txt | 1 + .../18_chage-d_no_shadow_entry/config/etc/group | 42 + .../18_chage-d_no_shadow_entry/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../18_chage-d_no_shadow_entry/config/etc/passwd | 20 + .../18_chage-d_no_shadow_entry/config/etc/shadow | 19 + .../chage/18_chage-d_no_shadow_entry/data/passwd | 20 + .../chage/18_chage-d_no_shadow_entry/data/shadow | 20 + .../chage/19_chage-W_no_shadow_entry/chage.test | 39 + .../chage/19_chage-W_no_shadow_entry/config.txt | 1 + .../19_chage-W_no_shadow_entry/config/etc/group | 42 + .../19_chage-W_no_shadow_entry/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../19_chage-W_no_shadow_entry/config/etc/passwd | 20 + .../19_chage-W_no_shadow_entry/config/etc/shadow | 19 + .../chage/19_chage-W_no_shadow_entry/data/passwd | 20 + .../chage/19_chage-W_no_shadow_entry/data/shadow | 20 + .../chage/20_chage-E_no_shadow_entry/chage.test | 39 + .../chage/20_chage-E_no_shadow_entry/config.txt | 1 + .../20_chage-E_no_shadow_entry/config/etc/group | 42 + .../20_chage-E_no_shadow_entry/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../20_chage-E_no_shadow_entry/config/etc/passwd | 20 + .../20_chage-E_no_shadow_entry/config/etc/shadow | 19 + .../chage/20_chage-E_no_shadow_entry/data/passwd | 20 + .../chage/20_chage-E_no_shadow_entry/data/shadow | 20 + .../tests/chage/21_chage_no_shadow_file/chage.test | 58 + .../tests/chage/21_chage_no_shadow_file/config.txt | 0 .../chage/21_chage_no_shadow_file/config/etc/group | 42 + .../21_chage_no_shadow_file/config/etc/gshadow | 42 + .../21_chage_no_shadow_file/config/etc/passwd | 26 + .../21_chage_no_shadow_file/config/etc/shadow | 26 + .../chage/21_chage_no_shadow_file/data/usage.out | 1 + tests/tests/chage/22_chage_myuser-l/chage.test | 51 + tests/tests/chage/22_chage_myuser-l/config.txt | 0 .../tests/chage/22_chage_myuser-l/config/etc/group | 42 + .../chage/22_chage_myuser-l/config/etc/gshadow | 42 + .../chage/22_chage_myuser-l/config/etc/passwd | 32 + .../chage/22_chage_myuser-l/config/etc/shadow | 30 + tests/tests/chage/22_chage_myuser-l/data/myuser1 | 7 + tests/tests/chage/23_chage_myuser-I/chage.test | 54 + tests/tests/chage/23_chage_myuser-I/config.txt | 0 .../tests/chage/23_chage_myuser-I/config/etc/group | 42 + .../chage/23_chage_myuser-I/config/etc/gshadow | 42 + .../chage/23_chage_myuser-I/config/etc/passwd | 26 + .../chage/23_chage_myuser-I/config/etc/shadow | 26 + tests/tests/chage/23_chage_myuser-I/data/usage.out | 1 + .../tests/chage/24_chage_myuser-l_other/chage.test | 54 + .../tests/chage/24_chage_myuser-l_other/config.txt | 0 .../chage/24_chage_myuser-l_other/config/etc/group | 42 + .../24_chage_myuser-l_other/config/etc/gshadow | 42 + .../24_chage_myuser-l_other/config/etc/passwd | 26 + .../24_chage_myuser-l_other/config/etc/shadow | 26 + .../chage/24_chage_myuser-l_other/data/usage.out | 1 + tests/tests/chage/25_chage_interactive/chage.test | 39 + tests/tests/chage/25_chage_interactive/config.txt | 1 + .../chage/25_chage_interactive/config/etc/group | 42 + .../chage/25_chage_interactive/config/etc/gshadow | 42 + .../25_chage_interactive/config/etc/login.defs | 314 + .../chage/25_chage_interactive/config/etc/passwd | 26 + .../chage/25_chage_interactive/config/etc/shadow | 26 + tests/tests/chage/25_chage_interactive/data/shadow | 26 + tests/tests/chage/25_chage_interactive/run.exp | 31 + .../chage/26_chage_interactive_date_0/chage.test | 39 + .../chage/26_chage_interactive_date_0/config.txt | 1 + .../26_chage_interactive_date_0/config/etc/group | 42 + .../26_chage_interactive_date_0/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../26_chage_interactive_date_0/config/etc/passwd | 26 + .../26_chage_interactive_date_0/config/etc/shadow | 26 + .../chage/26_chage_interactive_date_0/data/shadow | 26 + .../chage/26_chage_interactive_date_0/run.exp | 31 + .../chage/27_chage_interactive_date_-1/chage.test | 39 + .../chage/27_chage_interactive_date_-1/config.txt | 1 + .../27_chage_interactive_date_-1/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../27_chage_interactive_date_-1/config/etc/passwd | 26 + .../27_chage_interactive_date_-1/config/etc/shadow | 26 + .../chage/27_chage_interactive_date_-1/data/shadow | 26 + .../chage/27_chage_interactive_date_-1/run.exp | 31 + .../28_chage_interactive_date_EPOCH/chage.test | 39 + .../28_chage_interactive_date_EPOCH/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../28_chage_interactive_date_EPOCH/data/shadow | 26 + .../chage/28_chage_interactive_date_EPOCH/run.exp | 31 + .../29_chage_interactive_date_pre-EPOCH/chage.test | 39 + .../29_chage_interactive_date_pre-EPOCH/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../29_chage_interactive_date_pre-EPOCH/run.exp | 26 + .../chage.test | 39 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../30_chage_interactive_date_pre-EPOCH2/run.exp | 32 + .../31_chage_interactive_date_invalid/chage.test | 39 + .../31_chage_interactive_date_invalid/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../31_chage_interactive_date_invalid/run.exp | 26 + .../32_chage_interactive_date_invalid2/chage.test | 39 + .../32_chage_interactive_date_invalid2/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../32_chage_interactive_date_invalid2/run.exp | 26 + .../33_chage_interactive-W_invalid1/chage.test | 39 + .../33_chage_interactive-W_invalid1/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../chage/33_chage_interactive-W_invalid1/run.exp | 32 + .../34_chage_interactive-W_invalid2/chage.test | 39 + .../34_chage_interactive-W_invalid2/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../chage/34_chage_interactive-W_invalid2/run.exp | 32 + .../chage/35_chage_interactive-W-1/chage.test | 39 + .../chage/35_chage_interactive-W-1/config.txt | 1 + .../35_chage_interactive-W-1/config/etc/group | 42 + .../35_chage_interactive-W-1/config/etc/gshadow | 42 + .../35_chage_interactive-W-1/config/etc/login.defs | 314 + .../35_chage_interactive-W-1/config/etc/passwd | 26 + .../35_chage_interactive-W-1/config/etc/shadow | 26 + .../chage/35_chage_interactive-W-1/data/shadow | 26 + tests/tests/chage/35_chage_interactive-W-1/run.exp | 31 + .../36_chage_interactive-I_invalid1/chage.test | 39 + .../36_chage_interactive-I_invalid1/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../chage/36_chage_interactive-I_invalid1/run.exp | 32 + .../37_chage_interactive-I_invalid2/chage.test | 39 + .../37_chage_interactive-I_invalid2/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 26 + .../config/etc/shadow | 26 + .../chage/37_chage_interactive-I_invalid2/run.exp | 32 + .../chage/38_chage_interactive-I-1/chage.test | 39 + .../chage/38_chage_interactive-I-1/config.txt | 1 + .../38_chage_interactive-I-1/config/etc/group | 42 + .../38_chage_interactive-I-1/config/etc/gshadow | 42 + .../38_chage_interactive-I-1/config/etc/login.defs | 314 + .../38_chage_interactive-I-1/config/etc/passwd | 26 + .../38_chage_interactive-I-1/config/etc/shadow | 26 + .../chage/38_chage_interactive-I-1/data/shadow | 26 + tests/tests/chage/38_chage_interactive-I-1/run.exp | 31 + .../chage/39_chage_interactive-d-1/chage.test | 39 + .../chage/39_chage_interactive-d-1/config.txt | 1 + .../39_chage_interactive-d-1/config/etc/group | 42 + .../39_chage_interactive-d-1/config/etc/gshadow | 42 + .../39_chage_interactive-d-1/config/etc/login.defs | 314 + .../39_chage_interactive-d-1/config/etc/passwd | 26 + .../39_chage_interactive-d-1/config/etc/shadow | 26 + .../chage/39_chage_interactive-d-1/data/shadow | 26 + tests/tests/chage/39_chage_interactive-d-1/run.exp | 31 + tests/tests/chroot/chage/01_chage--root/chage.test | 52 + tests/tests/chroot/chage/01_chage--root/config.txt | 10 + .../01_chage--root/config/etc/default/useradd | 36 + .../chroot/chage/01_chage--root/config/etc/group | 41 + .../chroot/chage/01_chage--root/config/etc/gshadow | 41 + .../chroot/chage/01_chage--root/config/etc/passwd | 19 + .../chroot/chage/01_chage--root/config/etc/shadow | 19 + .../chage/01_chage--root/config_chroot/etc/group | 42 + .../chage/01_chage--root/config_chroot/etc/gshadow | 42 + .../01_chage--root/config_chroot/etc/login.defs | 334 + .../chage/01_chage--root/config_chroot/etc/passwd | 21 + .../chage/01_chage--root/config_chroot/etc/shadow | 20 + .../tests/chroot/chage/01_chage--root/data/shadow | 20 + .../chgpasswd/01_chgpasswd--root/chgpasswd.test | 50 + .../chroot/chgpasswd/01_chgpasswd--root/config.txt | 10 + .../01_chgpasswd--root/config/etc/default/useradd | 36 + .../chgpasswd/01_chgpasswd--root/config/etc/group | 41 + .../01_chgpasswd--root/config/etc/gshadow | 41 + .../chgpasswd/01_chgpasswd--root/config/etc/passwd | 19 + .../chgpasswd/01_chgpasswd--root/config/etc/shadow | 19 + .../01_chgpasswd--root/config_chroot/etc/group | 42 + .../01_chgpasswd--root/config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../01_chgpasswd--root/config_chroot/etc/passwd | 21 + .../01_chgpasswd--root/config_chroot/etc/shadow | 20 + .../chgpasswd/01_chgpasswd--root/data/gshadow | 42 + .../chpasswd/01_chpasswd--root_nopam/chpasswd.test | 50 + .../chpasswd/01_chpasswd--root_nopam/config.txt | 10 + .../config/etc/default/useradd | 36 + .../01_chpasswd--root_nopam/config/etc/group | 41 + .../01_chpasswd--root_nopam/config/etc/gshadow | 41 + .../01_chpasswd--root_nopam/config/etc/passwd | 19 + .../01_chpasswd--root_nopam/config/etc/shadow | 19 + .../config_chroot/etc/group | 42 + .../config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../config_chroot/etc/passwd | 21 + .../config_chroot/etc/shadow | 20 + .../chpasswd/01_chpasswd--root_nopam/data/shadow | 20 + .../chpasswd/02_chpasswd--root_pam/chpasswd.test | 50 + .../chpasswd/02_chpasswd--root_pam/config.txt | 10 + .../config/etc/default/useradd | 36 + .../02_chpasswd--root_pam/config/etc/group | 41 + .../02_chpasswd--root_pam/config/etc/gshadow | 41 + .../02_chpasswd--root_pam/config/etc/passwd | 19 + .../02_chpasswd--root_pam/config/etc/shadow | 19 + .../02_chpasswd--root_pam/config_chroot/etc/group | 42 + .../config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../config_chroot/etc/pam.d/chpasswd | 5 + .../config_chroot/etc/pam.d/common-password | 33 + .../02_chpasswd--root_pam/config_chroot/etc/passwd | 21 + .../02_chpasswd--root_pam/config_chroot/etc/shadow | 20 + .../chpasswd/02_chpasswd--root_pam/data/shadow | 20 + tests/tests/chroot/chsh/01_chsh--root/chsh.test | 52 + tests/tests/chroot/chsh/01_chsh--root/config.txt | 10 + .../chsh/01_chsh--root/config/etc/default/useradd | 36 + .../chroot/chsh/01_chsh--root/config/etc/group | 41 + .../chroot/chsh/01_chsh--root/config/etc/gshadow | 41 + .../chroot/chsh/01_chsh--root/config/etc/passwd | 19 + .../chroot/chsh/01_chsh--root/config/etc/shadow | 19 + .../chroot/chsh/01_chsh--root/config_chroot.list | 1 + .../chsh/01_chsh--root/config_chroot/etc/group | 42 + .../chsh/01_chsh--root/config_chroot/etc/gshadow | 42 + .../01_chsh--root/config_chroot/etc/login.defs | 334 + .../01_chsh--root/config_chroot/etc/pam.d/chsh | 20 + .../config_chroot/etc/pam.d/common-account | 25 + .../config_chroot/etc/pam.d/common-auth | 25 + .../config_chroot/etc/pam.d/common-session | 25 + .../chsh/01_chsh--root/config_chroot/etc/passwd | 21 + .../chsh/01_chsh--root/config_chroot/etc/shadow | 20 + .../chsh/01_chsh--root/config_chroot/etc/shells | 3 + tests/tests/chroot/chsh/01_chsh--root/data/passwd | 21 + .../chroot/gpasswd/01_gpasswd--root/config.txt | 10 + .../01_gpasswd--root/config/etc/default/useradd | 36 + .../gpasswd/01_gpasswd--root/config/etc/group | 41 + .../gpasswd/01_gpasswd--root/config/etc/gshadow | 41 + .../gpasswd/01_gpasswd--root/config/etc/passwd | 19 + .../gpasswd/01_gpasswd--root/config/etc/shadow | 19 + .../01_gpasswd--root/config_chroot/etc/group | 42 + .../01_gpasswd--root/config_chroot/etc/gshadow | 42 + .../01_gpasswd--root/config_chroot/etc/login.defs | 334 + .../01_gpasswd--root/config_chroot/etc/passwd | 21 + .../01_gpasswd--root/config_chroot/etc/shadow | 20 + .../chroot/gpasswd/01_gpasswd--root/data/group | 42 + .../chroot/gpasswd/01_gpasswd--root/data/gshadow | 42 + .../chroot/gpasswd/01_gpasswd--root/gpasswd.test | 52 + .../chroot/groupadd/01_groupadd--root/config.txt | 10 + .../01_groupadd--root/config/etc/default/useradd | 36 + .../groupadd/01_groupadd--root/config/etc/group | 41 + .../groupadd/01_groupadd--root/config/etc/gshadow | 41 + .../groupadd/01_groupadd--root/config/etc/passwd | 19 + .../groupadd/01_groupadd--root/config/etc/shadow | 19 + .../01_groupadd--root/config_chroot/etc/group | 42 + .../01_groupadd--root/config_chroot/etc/gshadow | 42 + .../01_groupadd--root/config_chroot/etc/login.defs | 334 + .../01_groupadd--root/config_chroot/etc/passwd | 21 + .../01_groupadd--root/config_chroot/etc/shadow | 20 + .../chroot/groupadd/01_groupadd--root/data/group | 43 + .../chroot/groupadd/01_groupadd--root/data/gshadow | 43 + .../groupadd/01_groupadd--root/groupadd.test | 52 + .../chroot/groupdel/01_groupdel--root/config.txt | 10 + .../01_groupdel--root/config/etc/default/useradd | 36 + .../groupdel/01_groupdel--root/config/etc/group | 41 + .../groupdel/01_groupdel--root/config/etc/gshadow | 41 + .../groupdel/01_groupdel--root/config/etc/passwd | 19 + .../groupdel/01_groupdel--root/config/etc/shadow | 19 + .../01_groupdel--root/config_chroot/etc/group | 42 + .../01_groupdel--root/config_chroot/etc/gshadow | 42 + .../01_groupdel--root/config_chroot/etc/login.defs | 334 + .../01_groupdel--root/config_chroot/etc/passwd | 21 + .../01_groupdel--root/config_chroot/etc/shadow | 20 + .../chroot/groupdel/01_groupdel--root/data/group | 41 + .../chroot/groupdel/01_groupdel--root/data/gshadow | 41 + .../groupdel/01_groupdel--root/groupdel.test | 52 + .../chroot/groupmod/01_groupmod--root/config.txt | 10 + .../01_groupmod--root/config/etc/default/useradd | 36 + .../groupmod/01_groupmod--root/config/etc/group | 41 + .../groupmod/01_groupmod--root/config/etc/gshadow | 41 + .../groupmod/01_groupmod--root/config/etc/passwd | 19 + .../groupmod/01_groupmod--root/config/etc/shadow | 19 + .../01_groupmod--root/config_chroot/etc/group | 42 + .../01_groupmod--root/config_chroot/etc/gshadow | 42 + .../01_groupmod--root/config_chroot/etc/login.defs | 334 + .../01_groupmod--root/config_chroot/etc/passwd | 21 + .../01_groupmod--root/config_chroot/etc/shadow | 20 + .../chroot/groupmod/01_groupmod--root/data/group | 42 + .../chroot/groupmod/01_groupmod--root/data/gshadow | 42 + .../groupmod/01_groupmod--root/groupmod.test | 52 + tests/tests/chroot/grpck/01_grpck--root/config.txt | 10 + .../01_grpck--root/config/etc/default/useradd | 36 + .../chroot/grpck/01_grpck--root/config/etc/group | 41 + .../chroot/grpck/01_grpck--root/config/etc/gshadow | 41 + .../chroot/grpck/01_grpck--root/config/etc/passwd | 19 + .../chroot/grpck/01_grpck--root/config/etc/shadow | 19 + .../grpck/01_grpck--root/config_chroot/etc/group | 42 + .../grpck/01_grpck--root/config_chroot/etc/gshadow | 42 + .../01_grpck--root/config_chroot/etc/login.defs | 334 + .../grpck/01_grpck--root/config_chroot/etc/passwd | 21 + .../grpck/01_grpck--root/config_chroot/etc/shadow | 20 + tests/tests/chroot/grpck/01_grpck--root/data/group | 42 + .../tests/chroot/grpck/01_grpck--root/data/gshadow | 42 + tests/tests/chroot/grpck/01_grpck--root/grpck.test | 50 + .../chroot/grpconv/01_grpconv--root/config.txt | 10 + .../01_grpconv--root/config/etc/default/useradd | 36 + .../grpconv/01_grpconv--root/config/etc/group | 41 + .../grpconv/01_grpconv--root/config/etc/gshadow | 41 + .../grpconv/01_grpconv--root/config/etc/passwd | 19 + .../grpconv/01_grpconv--root/config/etc/shadow | 19 + .../01_grpconv--root/config_chroot/etc/group | 42 + .../01_grpconv--root/config_chroot/etc/login.defs | 334 + .../01_grpconv--root/config_chroot/etc/passwd | 21 + .../01_grpconv--root/config_chroot/etc/shadow | 20 + .../chroot/grpconv/01_grpconv--root/data/group | 42 + .../chroot/grpconv/01_grpconv--root/data/gshadow | 42 + .../chroot/grpconv/01_grpconv--root/grpconv.test | 50 + .../chroot/grpunconv/01_grpunconv--root/config.txt | 10 + .../01_grpunconv--root/config/etc/default/useradd | 36 + .../grpunconv/01_grpunconv--root/config/etc/group | 41 + .../01_grpunconv--root/config/etc/gshadow | 41 + .../grpunconv/01_grpunconv--root/config/etc/passwd | 19 + .../grpunconv/01_grpunconv--root/config/etc/shadow | 19 + .../01_grpunconv--root/config_chroot/etc/group | 42 + .../01_grpunconv--root/config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../01_grpunconv--root/config_chroot/etc/passwd | 21 + .../01_grpunconv--root/config_chroot/etc/shadow | 20 + .../chroot/grpunconv/01_grpunconv--root/data/group | 42 + .../grpunconv/01_grpunconv--root/grpunconv.test | 52 + .../chroot/lastlog/01_lastlog--root/config.txt | 10 + .../01_lastlog--root/config/etc/default/useradd | 36 + .../lastlog/01_lastlog--root/config/etc/group | 41 + .../lastlog/01_lastlog--root/config/etc/gshadow | 41 + .../lastlog/01_lastlog--root/config/etc/passwd | 19 + .../lastlog/01_lastlog--root/config/etc/shadow | 19 + .../01_lastlog--root/config_chroot/etc/group | 42 + .../01_lastlog--root/config_chroot/etc/gshadow | 42 + .../01_lastlog--root/config_chroot/etc/login.defs | 334 + .../01_lastlog--root/config_chroot/etc/passwd | 21 + .../01_lastlog--root/config_chroot/etc/shadow | 20 + .../chroot/lastlog/01_lastlog--root/data/group | 42 + .../chroot/lastlog/01_lastlog--root/data/gshadow | 42 + .../lastlog/01_lastlog--root/data/lastlog.list | 2 + .../chroot/lastlog/01_lastlog--root/lastlog.test | 47 + .../chroot/login/01_login_sublogin/config.txt | 3 + .../login/01_login_sublogin/config/etc/group | 42 + .../login/01_login_sublogin/config/etc/gshadow | 42 + .../login/01_login_sublogin/config/etc/login.defs | 314 + .../login/01_login_sublogin/config/etc/passwd | 21 + .../login/01_login_sublogin/config/etc/shadow | 20 + .../login/01_login_sublogin/config_chroot.list | 3 + .../01_login_sublogin/config_chroot/etc/group | 42 + .../01_login_sublogin/config_chroot/etc/gshadow | 42 + .../01_login_sublogin/config_chroot/etc/login.defs | 314 + .../config_chroot/etc/pam.d/common-account | 25 + .../config_chroot/etc/pam.d/common-auth | 25 + .../config_chroot/etc/pam.d/common-password | 33 + .../config_chroot/etc/pam.d/common-session | 25 + .../etc/pam.d/common-session-noninteractive | 25 + .../config_chroot/etc/pam.d/login | 107 + .../config_chroot/etc/pam.d/other | 16 + .../01_login_sublogin/config_chroot/etc/passwd | 21 + .../01_login_sublogin/config_chroot/etc/securetty | 390 + .../config_chroot/etc/security/limits.conf | 0 .../01_login_sublogin/config_chroot/etc/shadow | 20 + .../tests/chroot/login/01_login_sublogin/login.exp | 25 + .../chroot/login/01_login_sublogin/login.test | 33 + tests/tests/chroot/pwck/01_pwck--root/config.txt | 10 + .../pwck/01_pwck--root/config/etc/default/useradd | 36 + .../chroot/pwck/01_pwck--root/config/etc/group | 41 + .../chroot/pwck/01_pwck--root/config/etc/gshadow | 41 + .../chroot/pwck/01_pwck--root/config/etc/passwd | 19 + .../chroot/pwck/01_pwck--root/config/etc/shadow | 19 + .../pwck/01_pwck--root/config_chroot/etc/group | 42 + .../pwck/01_pwck--root/config_chroot/etc/gshadow | 42 + .../01_pwck--root/config_chroot/etc/login.defs | 334 + .../pwck/01_pwck--root/config_chroot/etc/passwd | 23 + .../pwck/01_pwck--root/config_chroot/etc/shadow | 20 + .../tests/chroot/pwck/01_pwck--root/data/pwck.out | 59 + tests/tests/chroot/pwck/01_pwck--root/pwck.test | 67 + .../tests/chroot/pwconv/01_pwconv--root/config.txt | 10 + .../01_pwconv--root/config/etc/default/useradd | 36 + .../chroot/pwconv/01_pwconv--root/config/etc/group | 41 + .../pwconv/01_pwconv--root/config/etc/gshadow | 41 + .../pwconv/01_pwconv--root/config/etc/passwd | 19 + .../pwconv/01_pwconv--root/config/etc/shadow | 19 + .../pwconv/01_pwconv--root/config_chroot/etc/group | 42 + .../01_pwconv--root/config_chroot/etc/gshadow | 42 + .../01_pwconv--root/config_chroot/etc/login.defs | 334 + .../01_pwconv--root/config_chroot/etc/passwd | 21 + .../chroot/pwconv/01_pwconv--root/data/passwd | 21 + .../chroot/pwconv/01_pwconv--root/data/shadow | 21 + .../chroot/pwconv/01_pwconv--root/pwconv.test | 50 + .../chroot/pwunconv/01_pwunconv--root/config.txt | 10 + .../01_pwunconv--root/config/etc/default/useradd | 36 + .../pwunconv/01_pwunconv--root/config/etc/group | 41 + .../pwunconv/01_pwunconv--root/config/etc/gshadow | 41 + .../pwunconv/01_pwunconv--root/config/etc/passwd | 19 + .../pwunconv/01_pwunconv--root/config/etc/shadow | 19 + .../01_pwunconv--root/config_chroot/etc/group | 42 + .../01_pwunconv--root/config_chroot/etc/gshadow | 42 + .../01_pwunconv--root/config_chroot/etc/login.defs | 334 + .../01_pwunconv--root/config_chroot/etc/passwd | 21 + .../01_pwunconv--root/config_chroot/etc/shadow | 20 + .../chroot/pwunconv/01_pwunconv--root/data/passwd | 21 + .../pwunconv/01_pwunconv--root/pwunconv.test | 52 + .../chroot/useradd/01_useradd--root/config.txt | 10 + .../01_useradd--root/config/etc/default/useradd | 36 + .../useradd/01_useradd--root/config/etc/group | 41 + .../useradd/01_useradd--root/config/etc/gshadow | 41 + .../useradd/01_useradd--root/config/etc/passwd | 19 + .../useradd/01_useradd--root/config/etc/shadow | 19 + .../01_useradd--root/config_chroot/etc/group | 42 + .../01_useradd--root/config_chroot/etc/gshadow | 42 + .../01_useradd--root/config_chroot/etc/login.defs | 334 + .../01_useradd--root/config_chroot/etc/passwd | 21 + .../01_useradd--root/config_chroot/etc/shadow | 20 + .../chroot/useradd/01_useradd--root/data/group | 43 + .../chroot/useradd/01_useradd--root/data/gshadow | 43 + .../chroot/useradd/01_useradd--root/data/passwd | 22 + .../chroot/useradd/01_useradd--root/data/shadow | 21 + .../chroot/useradd/01_useradd--root/useradd.test | 52 + .../useradd/02_useradd--root_login.defs/config.txt | 10 + .../config/etc/default/useradd | 36 + .../02_useradd--root_login.defs/config/etc/group | 41 + .../02_useradd--root_login.defs/config/etc/gshadow | 41 + .../02_useradd--root_login.defs/config/etc/passwd | 19 + .../02_useradd--root_login.defs/config/etc/shadow | 19 + .../config_chroot/etc/group | 42 + .../config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../config_chroot/etc/passwd | 21 + .../config_chroot/etc/shadow | 20 + .../useradd/02_useradd--root_login.defs/data/group | 43 + .../02_useradd--root_login.defs/data/gshadow | 43 + .../02_useradd--root_login.defs/data/passwd | 22 + .../02_useradd--root_login.defs/data/shadow | 21 + .../02_useradd--root_login.defs/useradd.test | 52 + .../03_useradd--root_useradd.default/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config_chroot/etc/default/useradd | 36 + .../config_chroot/etc/group | 42 + .../config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../config_chroot/etc/passwd | 21 + .../config_chroot/etc/shadow | 20 + .../03_useradd--root_useradd.default/data/group | 43 + .../03_useradd--root_useradd.default/data/gshadow | 43 + .../03_useradd--root_useradd.default/data/passwd | 22 + .../03_useradd--root_useradd.default/data/shadow | 21 + .../03_useradd--root_useradd.default/useradd.test | 52 + .../useradd/04_useradd--root_useradd-D/config.txt | 10 + .../config/etc/default/useradd | 36 + .../04_useradd--root_useradd-D/config/etc/group | 41 + .../04_useradd--root_useradd-D/config/etc/gshadow | 41 + .../04_useradd--root_useradd-D/config/etc/passwd | 19 + .../04_useradd--root_useradd-D/config/etc/shadow | 19 + .../config_chroot/etc/default/useradd | 36 + .../config_chroot/etc/group | 42 + .../config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../config_chroot/etc/passwd | 21 + .../config_chroot/etc/shadow | 20 + .../04_useradd--root_useradd-D/data/useradd.out | 7 + .../04_useradd--root_useradd-D/useradd.test | 61 + .../05_useradd--root_useradd-D-e-g/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config_chroot/etc/default/useradd | 36 + .../config_chroot/etc/group | 42 + .../config_chroot/etc/gshadow | 42 + .../config_chroot/etc/login.defs | 334 + .../config_chroot/etc/passwd | 21 + .../config_chroot/etc/shadow | 20 + .../data/useradd.default | 38 + .../05_useradd--root_useradd-D-e-g/useradd.test | 56 + .../chroot/userdel/01_userdel--root/config.txt | 10 + .../01_userdel--root/config/etc/default/useradd | 36 + .../userdel/01_userdel--root/config/etc/group | 41 + .../userdel/01_userdel--root/config/etc/gshadow | 41 + .../userdel/01_userdel--root/config/etc/passwd | 19 + .../userdel/01_userdel--root/config/etc/shadow | 19 + .../01_userdel--root/config_chroot/etc/group | 42 + .../01_userdel--root/config_chroot/etc/gshadow | 42 + .../01_userdel--root/config_chroot/etc/login.defs | 334 + .../01_userdel--root/config_chroot/etc/passwd | 21 + .../01_userdel--root/config_chroot/etc/shadow | 20 + .../chroot/userdel/01_userdel--root/data/group | 41 + .../chroot/userdel/01_userdel--root/data/gshadow | 41 + .../chroot/userdel/01_userdel--root/data/passwd | 20 + .../chroot/userdel/01_userdel--root/data/shadow | 19 + .../chroot/userdel/01_userdel--root/userdel.test | 52 + .../chroot/usermod/01_usermod--root/config.txt | 10 + .../01_usermod--root/config/etc/default/useradd | 36 + .../usermod/01_usermod--root/config/etc/group | 41 + .../usermod/01_usermod--root/config/etc/gshadow | 41 + .../usermod/01_usermod--root/config/etc/passwd | 19 + .../usermod/01_usermod--root/config/etc/shadow | 19 + .../01_usermod--root/config_chroot/etc/group | 42 + .../01_usermod--root/config_chroot/etc/gshadow | 42 + .../01_usermod--root/config_chroot/etc/login.defs | 334 + .../01_usermod--root/config_chroot/etc/passwd | 21 + .../01_usermod--root/config_chroot/etc/shadow | 20 + .../chroot/usermod/01_usermod--root/data/passwd | 21 + .../chroot/usermod/01_usermod--root/usermod.test | 52 + tests/tests/chsh/01/data/chsh1 | 1 + tests/tests/chsh/01/data/chsh2 | 1 + tests/tests/chsh/01/data/group | 42 + tests/tests/chsh/01/data/gshadow | 42 + tests/tests/chsh/01/data/passwd | 21 + tests/tests/chsh/01/data/shadow | 21 + tests/tests/chsh/01/data/shells | 16 + tests/tests/chsh/01/run | 143 + tests/tests/chsh/01/run.exp | 38 + tests/tests/chsh/02_chsh_usage/chsh.test | 48 + tests/tests/chsh/02_chsh_usage/config.txt | 0 tests/tests/chsh/02_chsh_usage/config/etc/group | 0 tests/tests/chsh/02_chsh_usage/config/etc/gshadow | 0 tests/tests/chsh/02_chsh_usage/config/etc/passwd | 0 tests/tests/chsh/02_chsh_usage/config/etc/shadow | 0 tests/tests/chsh/02_chsh_usage/data/usage.out | 7 + .../chsh/03_chsh_usage_invalid_option/chsh.test | 54 + .../chsh/03_chsh_usage_invalid_option/config.txt | 0 .../03_chsh_usage_invalid_option/config/etc/group | 0 .../config/etc/gshadow | 0 .../03_chsh_usage_invalid_option/config/etc/passwd | 0 .../03_chsh_usage_invalid_option/config/etc/shadow | 0 .../03_chsh_usage_invalid_option/data/usage.out | 8 + tests/tests/chsh/04_chsh_usage_2_users/chsh.test | 54 + tests/tests/chsh/04_chsh_usage_2_users/config.txt | 0 .../chsh/04_chsh_usage_2_users/config/etc/group | 0 .../chsh/04_chsh_usage_2_users/config/etc/gshadow | 0 .../chsh/04_chsh_usage_2_users/config/etc/passwd | 0 .../chsh/04_chsh_usage_2_users/config/etc/shadow | 0 .../chsh/04_chsh_usage_2_users/data/usage.out | 7 + .../chsh/05_chsh_myuser_restricted_shell/chsh.test | 41 + .../05_chsh_myuser_restricted_shell/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 15 + .../chsh/05_chsh_myuser_restricted_shell/run.exp | 34 + .../06_chsh_myuser_non_restricted_shell/chsh.test | 41 + .../06_chsh_myuser_non_restricted_shell/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 16 + .../data/passwd | 21 + .../06_chsh_myuser_non_restricted_shell/run.exp | 40 + .../chsh/07_chsh_usage_invalid_user/chsh.test | 54 + .../chsh/07_chsh_usage_invalid_user/config.txt | 0 .../07_chsh_usage_invalid_user/config/etc/group | 0 .../07_chsh_usage_invalid_user/config/etc/gshadow | 0 .../07_chsh_usage_invalid_user/config/etc/passwd | 0 .../07_chsh_usage_invalid_user/config/etc/shadow | 0 .../chsh/07_chsh_usage_invalid_user/data/usage.out | 1 + .../08_chsh_myuser_to_restricted_shell/chsh.test | 41 + .../08_chsh_myuser_to_restricted_shell/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 15 + .../08_chsh_myuser_to_restricted_shell/data/passwd | 21 + .../08_chsh_myuser_to_restricted_shell/run.exp | 41 + .../chsh/09_chsh_myuser_to_missing_shell/chsh.test | 42 + .../09_chsh_myuser_to_missing_shell/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 15 + .../09_chsh_myuser_to_missing_shell/data/passwd | 21 + .../chsh/09_chsh_myuser_to_missing_shell/run.exp | 41 + .../chsh.test | 46 + .../config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 15 + .../data/passwd | 21 + .../10_chsh_myuser_to_non_executable_shell/run.exp | 41 + tests/tests/chsh/11_chsh_auth_failure/chsh.test | 41 + tests/tests/chsh/11_chsh_auth_failure/config.txt | 0 .../chsh/11_chsh_auth_failure/config/etc/group | 42 + .../chsh/11_chsh_auth_failure/config/etc/gshadow | 42 + .../chsh/11_chsh_auth_failure/config/etc/passwd | 21 + .../chsh/11_chsh_auth_failure/config/etc/shadow | 21 + .../chsh/11_chsh_auth_failure/config/etc/shells | 15 + tests/tests/chsh/11_chsh_auth_failure/data/passwd | 21 + tests/tests/chsh/11_chsh_auth_failure/run.exp | 36 + .../chsh/12_chsh_warning_missing_shell/chsh.test | 48 + .../chsh/12_chsh_warning_missing_shell/config.txt | 0 .../12_chsh_warning_missing_shell/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/chsh | 20 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 16 + .../12_chsh_warning_missing_shell/data/chsh.err | 1 + .../chsh/12_chsh_warning_missing_shell/data/passwd | 21 + .../chsh/13_chsh_warning_non_executable/chsh.test | 52 + .../chsh/13_chsh_warning_non_executable/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/chsh | 20 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../config/etc/shells | 16 + .../13_chsh_warning_non_executable/data/chsh.err | 1 + .../13_chsh_warning_non_executable/data/passwd | 21 + tests/tests/chsh/14_chsh_locked_passwd/chsh.test | 59 + tests/tests/chsh/14_chsh_locked_passwd/config.txt | 0 .../chsh/14_chsh_locked_passwd/config/etc/group | 42 + .../chsh/14_chsh_locked_passwd/config/etc/gshadow | 42 + .../chsh/14_chsh_locked_passwd/config/etc/passwd | 26 + .../chsh/14_chsh_locked_passwd/config/etc/shadow | 26 + .../tests/chsh/14_chsh_locked_passwd/data/chsh.err | 2 + tests/tests/chsh/15_chsh_PAM_error/chsh.test | 58 + tests/tests/chsh/15_chsh_PAM_error/config.txt | 0 .../tests/chsh/15_chsh_PAM_error/config/etc/group | 42 + .../chsh/15_chsh_PAM_error/config/etc/gshadow | 42 + .../chsh/15_chsh_PAM_error/config/etc/pam.d/chsh | 1 + .../chsh/15_chsh_PAM_error/config/etc/pam.d/other | 1 + .../tests/chsh/15_chsh_PAM_error/config/etc/passwd | 26 + .../tests/chsh/15_chsh_PAM_error/config/etc/shadow | 26 + tests/tests/chsh/15_chsh_PAM_error/data/chsh.err | 1 + tests/tests/cktools/01/data/group | 41 + tests/tests/cktools/01/data/gshadow | 41 + tests/tests/cktools/01/data/passwd | 19 + tests/tests/cktools/01/data/run2.err | 0 tests/tests/cktools/01/data/run2.out | 13 + tests/tests/cktools/01/data/shadow | 19 + tests/tests/cktools/01/run1 | 54 + tests/tests/cktools/01/run2 | 62 + tests/tests/cktools/02_pwck_sort/config.txt | 5 + tests/tests/cktools/02_pwck_sort/config/etc/group | 42 + .../tests/cktools/02_pwck_sort/config/etc/gshadow | 42 + tests/tests/cktools/02_pwck_sort/config/etc/passwd | 20 + tests/tests/cktools/02_pwck_sort/config/etc/shadow | 20 + tests/tests/cktools/02_pwck_sort/data/passwd | 20 + tests/tests/cktools/02_pwck_sort/data/shadow | 20 + tests/tests/cktools/02_pwck_sort/pwck.test | 39 + tests/tests/cktools/03_grpck_sort/config.txt | 5 + tests/tests/cktools/03_grpck_sort/config/etc/group | 42 + .../tests/cktools/03_grpck_sort/config/etc/gshadow | 42 + .../tests/cktools/03_grpck_sort/config/etc/passwd | 20 + .../tests/cktools/03_grpck_sort/config/etc/shadow | 20 + tests/tests/cktools/03_grpck_sort/data/group | 42 + tests/tests/cktools/03_grpck_sort/data/gshadow | 42 + tests/tests/cktools/03_grpck_sort/grpck.test | 39 + .../04_pwck_sort_missing_shadow_user/config.txt | 5 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../04_pwck_sort_missing_shadow_user/data/passwd | 20 + .../04_pwck_sort_missing_shadow_user/data/shadow | 19 + .../04_pwck_sort_missing_shadow_user/pwck.test | 39 + .../05_grpck_sort_missing_shadow_group/config.txt | 5 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../05_grpck_sort_missing_shadow_group/data/group | 42 + .../data/gshadow | 41 + .../05_grpck_sort_missing_shadow_group/grpck.test | 39 + .../cktools/06_pwck_sort_NIS_server/config.txt | 5 + .../06_pwck_sort_NIS_server/config/etc/group | 43 + .../06_pwck_sort_NIS_server/config/etc/gshadow | 43 + .../06_pwck_sort_NIS_server/config/etc/passwd | 24 + .../06_pwck_sort_NIS_server/config/etc/shadow | 21 + .../cktools/06_pwck_sort_NIS_server/data/passwd | 24 + .../cktools/06_pwck_sort_NIS_server/data/shadow | 21 + .../cktools/06_pwck_sort_NIS_server/pwck.test | 39 + .../cktools/07_pwck_sort_NIS_client/config.txt | 5 + .../07_pwck_sort_NIS_client/config/etc/group | 45 + .../07_pwck_sort_NIS_client/config/etc/gshadow | 43 + .../07_pwck_sort_NIS_client/config/etc/passwd | 22 + .../07_pwck_sort_NIS_client/config/etc/shadow | 22 + .../cktools/07_pwck_sort_NIS_client/data/passwd | 22 + .../cktools/07_pwck_sort_NIS_client/data/shadow | 22 + .../cktools/07_pwck_sort_NIS_client/pwck.test | 39 + .../04_grpck_missing_field_group_delete/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../04_grpck_missing_field_group_delete/data/group | 41 + .../data/gshadow | 41 + .../04_grpck_missing_field_group_delete/grpck.exp | 23 + .../04_grpck_missing_field_group_delete/grpck.test | 37 + .../05_grpck_missing_field_group_keep/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../05_grpck_missing_field_group_keep/data/gshadow | 41 + .../05_grpck_missing_field_group_keep/grpck.exp | 23 + .../05_grpck_missing_field_group_keep/grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../grpck.exp | 23 + .../grpck.test | 37 + .../07_grpck_missing_field_gshadow_add/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 42 + .../07_grpck_missing_field_gshadow_add/grpck.exp | 23 + .../07_grpck_missing_field_gshadow_add/grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 41 + .../grpck.exp | 23 + .../grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../grpck.exp | 23 + .../grpck.test | 37 + .../10_grpck_missing_field_group_local/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../10_grpck_missing_field_group_local/data/group | 41 + .../data/gshadow | 41 + .../10_grpck_missing_field_group_local/grpck.exp | 23 + .../10_grpck_missing_field_group_local/grpck.test | 45 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../data/shadow | 20 + .../11_grpck_missing_field_gshadow_local/grpck.exp | 23 + .../grpck.test | 45 + .../grpck/12_grpck_unknown_user_group/config.txt | 2 + .../12_grpck_unknown_user_group/config/etc/group | 42 + .../12_grpck_unknown_user_group/config/etc/gshadow | 42 + .../12_grpck_unknown_user_group/config/etc/passwd | 20 + .../12_grpck_unknown_user_group/config/etc/shadow | 20 + .../grpck/12_grpck_unknown_user_group/data/group | 42 + .../grpck/12_grpck_unknown_user_group/grpck.exp | 20 + .../grpck/12_grpck_unknown_user_group/grpck.test | 37 + .../grpck/13_grpck_unknown_user_gshadow/config.txt | 2 + .../13_grpck_unknown_user_gshadow/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../13_grpck_unknown_user_gshadow/data/gshadow | 42 + .../grpck/13_grpck_unknown_user_gshadow/grpck.exp | 21 + .../grpck/13_grpck_unknown_user_gshadow/grpck.test | 37 + .../14_grpck_unknown_user_adm_gshadow/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../14_grpck_unknown_user_adm_gshadow/data/gshadow | 42 + .../14_grpck_unknown_user_adm_gshadow/grpck.exp | 31 + .../14_grpck_unknown_user_adm_gshadow/grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../grpck.exp | 23 + .../grpck.test | 37 + .../16_grpck_duplicate_entry_group/config.txt | 2 + .../config/etc/group | 43 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../16_grpck_duplicate_entry_group/data/group | 42 + .../grpck/16_grpck_duplicate_entry_group/grpck.exp | 20 + .../16_grpck_duplicate_entry_group/grpck.test | 37 + .../17_grpck_duplicate_entry_gshadow/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../17_grpck_duplicate_entry_gshadow/data/gshadow | 42 + .../17_grpck_duplicate_entry_gshadow/grpck.exp | 20 + .../17_grpck_duplicate_entry_gshadow/grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 43 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../grpck.exp | 24 + .../grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../grpck.exp | 23 + .../grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 42 + .../grpck.exp | 23 + .../grpck.test | 37 + .../grpck/21_grpck_invalid_group_name/config.txt | 2 + .../21_grpck_invalid_group_name/config/etc/group | 42 + .../21_grpck_invalid_group_name/config/etc/gshadow | 42 + .../21_grpck_invalid_group_name/config/etc/passwd | 20 + .../21_grpck_invalid_group_name/config/etc/shadow | 20 + .../grpck/21_grpck_invalid_group_name/grpck.exp | 17 + .../grpck/21_grpck_invalid_group_name/grpck.test | 37 + .../grpck/22_grpck_invalid_group_ID_-1/config.txt | 2 + .../22_grpck_invalid_group_ID_-1/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../22_grpck_invalid_group_ID_-1/config/etc/passwd | 20 + .../22_grpck_invalid_group_ID_-1/config/etc/shadow | 20 + .../grpck/22_grpck_invalid_group_ID_-1/data/group | 41 + .../22_grpck_invalid_group_ID_-1/data/gshadow | 41 + .../grpck/22_grpck_invalid_group_ID_-1/grpck.exp | 23 + .../grpck/22_grpck_invalid_group_ID_-1/grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../23_grpck_invalid_group_ID_4294967295/grpck.exp | 18 + .../grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 41 + .../data/gshadow | 41 + .../24_grpck_invalid_group_ID_4294967296/grpck.exp | 23 + .../grpck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../grpck.exp | 23 + .../grpck.test | 37 + .../grpck/26_grpck_no_gshadow_file/config.txt | 5 + .../26_grpck_no_gshadow_file/config/etc/group | 42 + .../26_grpck_no_gshadow_file/config/etc/gshadow | 41 + .../26_grpck_no_gshadow_file/config/etc/passwd | 20 + .../26_grpck_no_gshadow_file/config/etc/shadow | 20 + .../grpck/26_grpck_no_gshadow_file/data/grpck.out | 3 + .../grpck/26_grpck_no_gshadow_file/grpck.test | 58 + .../grpck/27_grpck_sort_no_gshadow_file/config.txt | 5 + .../27_grpck_sort_no_gshadow_file/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../grpck/27_grpck_sort_no_gshadow_file/data/group | 42 + .../grpck/27_grpck_sort_no_gshadow_file/grpck.test | 43 + .../tests/cktools/grpck/28_grpck_usage/config.txt | 10 + .../28_grpck_usage/config/etc/default/useradd | 36 + .../cktools/grpck/28_grpck_usage/config/etc/group | 41 + .../grpck/28_grpck_usage/config/etc/gshadow | 41 + .../cktools/grpck/28_grpck_usage/config/etc/passwd | 19 + .../cktools/grpck/28_grpck_usage/config/etc/shadow | 19 + .../cktools/grpck/28_grpck_usage/data/usage.out | 9 + .../tests/cktools/grpck/28_grpck_usage/grpck.test | 47 + .../grpck/29_grpck_sort_readonly/config.txt | 10 + .../config/etc/default/useradd | 36 + .../grpck/29_grpck_sort_readonly/config/etc/group | 41 + .../29_grpck_sort_readonly/config/etc/gshadow | 41 + .../grpck/29_grpck_sort_readonly/config/etc/passwd | 19 + .../grpck/29_grpck_sort_readonly/config/etc/shadow | 19 + .../grpck/29_grpck_sort_readonly/data/usage.out | 1 + .../grpck/29_grpck_sort_readonly/grpck.test | 54 + .../cktools/grpck/30_grpck_3_files/config.txt | 10 + .../30_grpck_3_files/config/etc/default/useradd | 36 + .../grpck/30_grpck_3_files/config/etc/group | 41 + .../grpck/30_grpck_3_files/config/etc/gshadow | 41 + .../grpck/30_grpck_3_files/config/etc/passwd | 19 + .../grpck/30_grpck_3_files/config/etc/shadow | 19 + .../cktools/grpck/30_grpck_3_files/data/usage.out | 9 + .../cktools/grpck/30_grpck_3_files/grpck.test | 54 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 41 + .../grpck.exp | 20 + .../grpck.test | 44 + .../cktools/grpck/32_grpck_sort_nis/config.txt | 5 + .../grpck/32_grpck_sort_nis/config/etc/group | 45 + .../grpck/32_grpck_sort_nis/config/etc/gshadow | 42 + .../grpck/32_grpck_sort_nis/config/etc/passwd | 20 + .../grpck/32_grpck_sort_nis/config/etc/shadow | 20 + .../cktools/grpck/32_grpck_sort_nis/data/group | 45 + .../cktools/grpck/32_grpck_sort_nis/data/gshadow | 42 + .../cktools/grpck/32_grpck_sort_nis/grpck.test | 39 + .../cktools/grpck/33_grpck_locked_group/config.txt | 0 .../config/etc/default/useradd | 36 + .../grpck/33_grpck_locked_group/config/etc/group | 42 + .../grpck/33_grpck_locked_group/config/etc/gshadow | 42 + .../grpck/33_grpck_locked_group/config/etc/passwd | 20 + .../grpck/33_grpck_locked_group/config/etc/shadow | 20 + .../grpck/33_grpck_locked_group/data/grpck.err | 2 + .../cktools/grpck/33_grpck_locked_group/grpck.test | 60 + .../grpck/34_grpck_locked_gshadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../grpck/34_grpck_locked_gshadow/config/etc/group | 42 + .../34_grpck_locked_gshadow/config/etc/gshadow | 42 + .../34_grpck_locked_gshadow/config/etc/passwd | 20 + .../34_grpck_locked_gshadow/config/etc/shadow | 20 + .../grpck/34_grpck_locked_gshadow/data/grpck.err | 2 + .../grpck/34_grpck_locked_gshadow/grpck.test | 60 + .../35_grpck_duplicate_entry_group_NIS/config.txt | 2 + .../config/etc/group | 45 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../35_grpck_duplicate_entry_group_NIS/data/group | 44 + .../35_grpck_duplicate_entry_group_NIS/grpck.exp | 20 + .../35_grpck_duplicate_entry_group_NIS/grpck.test | 37 + .../36_grpck_password_group_gshadow/config.txt | 5 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../36_grpck_password_group_gshadow/data/grpck.out | 2 + .../36_grpck_password_group_gshadow/grpck.test | 54 + .../grpck/37_grpck_invalid_option/config.txt | 10 + .../grpck/37_grpck_invalid_option/config/etc/group | 41 + .../37_grpck_invalid_option/config/etc/gshadow | 41 + .../37_grpck_invalid_option/config/etc/passwd | 19 + .../37_grpck_invalid_option/config/etc/shadow | 19 + .../grpck/37_grpck_invalid_option/data/usage.out | 10 + .../grpck/37_grpck_invalid_option/grpck.test | 54 + .../04_pwck_missing_field_passwd_delete/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../data/passwd | 10 + .../data/shadow | 10 + .../04_pwck_missing_field_passwd_delete/pwck.exp | 23 + .../04_pwck_missing_field_passwd_delete/pwck.test | 37 + .../05_pwck_missing_field_passwd_keep/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../05_pwck_missing_field_passwd_keep/data/shadow | 10 + .../05_pwck_missing_field_passwd_keep/pwck.exp | 22 + .../05_pwck_missing_field_passwd_keep/pwck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../pwck.exp | 23 + .../pwck.test | 37 + .../07_pwck_missing_field_shadow_add/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../07_pwck_missing_field_shadow_add/data/shadow | 11 + .../pwck/07_pwck_missing_field_shadow_add/pwck.exp | 23 + .../07_pwck_missing_field_shadow_add/pwck.test | 37 + .../08_pwck_missing_field_shadow_delete/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../data/shadow | 10 + .../08_pwck_missing_field_shadow_delete/pwck.exp | 23 + .../08_pwck_missing_field_shadow_delete/pwck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../pwck.exp | 23 + .../pwck.test | 37 + .../10_pwck_missing_field_passwd_local/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../10_pwck_missing_field_passwd_local/data/passwd | 10 + .../10_pwck_missing_field_passwd_local/data/shadow | 10 + .../10_pwck_missing_field_passwd_local/pwck.exp | 23 + .../10_pwck_missing_field_passwd_local/pwck.test | 45 + .../11_pwck_missing_field_shadow_local/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../11_pwck_missing_field_shadow_local/data/passwd | 11 + .../11_pwck_missing_field_shadow_local/data/shadow | 11 + .../11_pwck_missing_field_shadow_local/pwck.exp | 23 + .../11_pwck_missing_field_shadow_local/pwck.test | 45 + .../pwck/12_pwck_unknown_user_group_ID/config.txt | 2 + .../12_pwck_unknown_user_group_ID/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../pwck/12_pwck_unknown_user_group_ID/pwck.exp | 18 + .../pwck/12_pwck_unknown_user_group_ID/pwck.test | 37 + .../pwck/13_pwck_duplicate_entry_passwd/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 12 + .../config/etc/shadow | 11 + .../13_pwck_duplicate_entry_passwd/data/passwd | 11 + .../pwck/13_pwck_duplicate_entry_passwd/pwck.exp | 20 + .../pwck/13_pwck_duplicate_entry_passwd/pwck.test | 37 + .../pwck/14_pwck_duplicate_entry_shadow/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 12 + .../14_pwck_duplicate_entry_shadow/data/shadow | 11 + .../pwck/14_pwck_duplicate_entry_shadow/pwck.exp | 20 + .../pwck/14_pwck_duplicate_entry_shadow/pwck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 12 + .../config/etc/shadow | 11 + .../pwck.exp | 23 + .../pwck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 12 + .../pwck.exp | 23 + .../pwck.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 12 + .../config/etc/shadow | 11 + .../data/passwd | 11 + .../pwck.exp | 23 + .../pwck.test | 37 + .../pwck/18_pwck_invalid_user_name/config.txt | 2 + .../18_pwck_invalid_user_name/config/etc/group | 42 + .../18_pwck_invalid_user_name/config/etc/gshadow | 42 + .../18_pwck_invalid_user_name/config/etc/passwd | 11 + .../18_pwck_invalid_user_name/config/etc/shadow | 11 + .../pwck/18_pwck_invalid_user_name/pwck.exp | 18 + .../pwck/18_pwck_invalid_user_name/pwck.test | 37 + .../pwck/19_pwck_invalid_user_ID_-1/config.txt | 2 + .../19_pwck_invalid_user_ID_-1/config/etc/group | 42 + .../19_pwck_invalid_user_ID_-1/config/etc/gshadow | 42 + .../19_pwck_invalid_user_ID_-1/config/etc/passwd | 11 + .../19_pwck_invalid_user_ID_-1/config/etc/shadow | 11 + .../pwck/19_pwck_invalid_user_ID_-1/data/passwd | 10 + .../pwck/19_pwck_invalid_user_ID_-1/data/shadow | 10 + .../pwck/19_pwck_invalid_user_ID_-1/pwck.exp | 23 + .../pwck/19_pwck_invalid_user_ID_-1/pwck.test | 37 + .../20_pwck_invalid_user_ID_4294967295/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../20_pwck_invalid_user_ID_4294967295/pwck.exp | 18 + .../20_pwck_invalid_user_ID_4294967295/pwck.test | 37 + .../21_pwck_invalid_user_ID_4294967296/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 11 + .../config/etc/shadow | 11 + .../21_pwck_invalid_user_ID_4294967296/data/passwd | 10 + .../21_pwck_invalid_user_ID_4294967296/data/shadow | 10 + .../21_pwck_invalid_user_ID_4294967296/pwck.exp | 23 + .../21_pwck_invalid_user_ID_4294967296/pwck.test | 37 + tests/tests/cktools/pwck/22_pwck_usage/config.txt | 10 + .../cktools/pwck/22_pwck_usage/config/etc/group | 41 + .../cktools/pwck/22_pwck_usage/config/etc/gshadow | 41 + .../cktools/pwck/22_pwck_usage/config/etc/passwd | 19 + .../cktools/pwck/22_pwck_usage/config/etc/shadow | 19 + .../cktools/pwck/22_pwck_usage/data/usage.out | 10 + tests/tests/cktools/pwck/22_pwck_usage/pwck.test | 47 + .../cktools/pwck/23_pwck_locked_passwd/config.txt | 0 .../pwck/23_pwck_locked_passwd/config/etc/group | 42 + .../pwck/23_pwck_locked_passwd/config/etc/gshadow | 42 + .../pwck/23_pwck_locked_passwd/config/etc/passwd | 20 + .../pwck/23_pwck_locked_passwd/config/etc/shadow | 20 + .../pwck/23_pwck_locked_passwd/data/pwck.err | 2 + .../cktools/pwck/23_pwck_locked_passwd/pwck.test | 60 + .../cktools/pwck/24_pwck_locked_shadow/config.txt | 0 .../pwck/24_pwck_locked_shadow/config/etc/group | 42 + .../pwck/24_pwck_locked_shadow/config/etc/gshadow | 42 + .../pwck/24_pwck_locked_shadow/config/etc/passwd | 20 + .../pwck/24_pwck_locked_shadow/config/etc/shadow | 20 + .../pwck/24_pwck_locked_shadow/data/pwck.err | 2 + .../cktools/pwck/24_pwck_locked_shadow/pwck.test | 60 + .../pwck/25_pwck_usage_invalid_option/config.txt | 0 .../25_pwck_usage_invalid_option/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../25_pwck_usage_invalid_option/config/etc/passwd | 20 + .../25_pwck_usage_invalid_option/config/etc/shadow | 20 + .../25_pwck_usage_invalid_option/data/pwck.err | 11 + .../pwck/25_pwck_usage_invalid_option/pwck.test | 56 + .../cktools/pwck/26_pwck_usage-s-r/config.txt | 0 .../pwck/26_pwck_usage-s-r/config/etc/group | 42 + .../pwck/26_pwck_usage-s-r/config/etc/gshadow | 42 + .../pwck/26_pwck_usage-s-r/config/etc/passwd | 20 + .../pwck/26_pwck_usage-s-r/config/etc/shadow | 20 + .../cktools/pwck/26_pwck_usage-s-r/data/pwck.err | 1 + .../tests/cktools/pwck/26_pwck_usage-s-r/pwck.test | 56 + .../cktools/pwck/27_pwck_usage_3_files/config.txt | 0 .../pwck/27_pwck_usage_3_files/config/etc/group | 42 + .../pwck/27_pwck_usage_3_files/config/etc/gshadow | 42 + .../pwck/27_pwck_usage_3_files/config/etc/passwd | 20 + .../pwck/27_pwck_usage_3_files/config/etc/shadow | 20 + .../pwck/27_pwck_usage_3_files/data/pwck.err | 10 + .../cktools/pwck/27_pwck_usage_3_files/pwck.test | 56 + .../cktools/pwck/28_pwck_no_shadow_file/config.txt | 10 + .../pwck/28_pwck_no_shadow_file/config/etc/group | 42 + .../pwck/28_pwck_no_shadow_file/config/etc/gshadow | 42 + .../pwck/28_pwck_no_shadow_file/config/etc/passwd | 23 + .../pwck/28_pwck_no_shadow_file/config/etc/shadow | 20 + .../pwck/28_pwck_no_shadow_file/data/pwck.out | 7 + .../cktools/pwck/28_pwck_no_shadow_file/pwck.test | 58 + .../29_pwck_password_change_in_future/config.txt | 10 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwck.out | 2 + .../29_pwck_password_change_in_future/pwck.test | 54 + .../cktools/pwck/30_pwck_NIS_entries/config.txt | 10 + .../pwck/30_pwck_NIS_entries/config/etc/group | 42 + .../pwck/30_pwck_NIS_entries/config/etc/gshadow | 42 + .../pwck/30_pwck_NIS_entries/config/etc/passwd | 23 + .../pwck/30_pwck_NIS_entries/config/etc/shadow | 23 + .../cktools/pwck/30_pwck_NIS_entries/data/pwck.out | 10 + .../cktools/pwck/30_pwck_NIS_entries/pwck.test | 54 + .../31_pwck_shadow_entry_passwd_no_x/config.txt | 10 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../31_pwck_shadow_entry_passwd_no_x/data/pwck.out | 2 + .../31_pwck_shadow_entry_passwd_no_x/pwck.test | 54 + tests/tests/cktools/pwck/32_pwck_quiet/config.txt | 10 + .../cktools/pwck/32_pwck_quiet/config/etc/group | 41 + .../cktools/pwck/32_pwck_quiet/config/etc/gshadow | 41 + .../cktools/pwck/32_pwck_quiet/config/etc/passwd | 22 + .../cktools/pwck/32_pwck_quiet/config/etc/shadow | 19 + .../tests/cktools/pwck/32_pwck_quiet/data/pwck.out | 9 + tests/tests/cktools/pwck/32_pwck_quiet/pwck.test | 54 + tests/tests/cleanup.sh | 33 + tests/tests/common/Makefile | 14 + tests/tests/common/compare_file.pl | 116 + tests/tests/common/config.sh | 132 + tests/tests/common/config_chroot-i386.list | 25 + tests/tests/common/config_chroot-powerpc.list | 25 + tests/tests/common/fopen_failure.c | 46 + tests/tests/common/link_failure.c | 51 + tests/tests/common/log.sh | 46 + tests/tests/common/open_RDONLY_failure.c | 51 + tests/tests/common/open_RDWR_failure.c | 51 + tests/tests/common/rename_failure.c | 50 + tests/tests/common/rmdir_failure.c | 51 + tests/tests/common/time_0.c | 16 + tests/tests/common/time_past.c | 52 + tests/tests/common/unlink_failure.c | 51 + tests/tests/common/unlinkat_failure.c | 62 + tests/tests/convtools/01/data/1/group | 42 + tests/tests/convtools/01/data/1/passwd | 21 + tests/tests/convtools/01/data/2/group | 42 + tests/tests/convtools/01/data/2/gshadow | 42 + tests/tests/convtools/01/data/2/passwd | 21 + tests/tests/convtools/01/data/2/shadow | 21 + tests/tests/convtools/01/run | 117 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 42 + .../grpconv.test | 39 + .../convtools/03_grpconv_copy_passwd/config.txt | 2 + .../03_grpconv_copy_passwd/config/etc/group | 42 + .../03_grpconv_copy_passwd/config/etc/gshadow | 41 + .../03_grpconv_copy_passwd/config/etc/passwd | 19 + .../03_grpconv_copy_passwd/config/etc/shadow | 19 + .../convtools/03_grpconv_copy_passwd/data/group | 42 + .../convtools/03_grpconv_copy_passwd/data/gshadow | 42 + .../convtools/03_grpconv_copy_passwd/grpconv.test | 39 + .../convtools/04_grpconv_no_password/config.txt | 2 + .../04_grpconv_no_password/config/etc/group | 42 + .../04_grpconv_no_password/config/etc/gshadow | 41 + .../04_grpconv_no_password/config/etc/passwd | 19 + .../04_grpconv_no_password/config/etc/shadow | 19 + .../convtools/04_grpconv_no_password/data/group | 42 + .../convtools/04_grpconv_no_password/data/gshadow | 42 + .../convtools/04_grpconv_no_password/grpconv.test | 39 + .../config.txt | 3 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../grpconv.test | 39 + .../06_grpconv_error_group_locked/config.txt | 1 + .../06_grpconv_error_group_locked/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../06_grpconv_error_group_locked/data/grpconv.err | 2 + .../06_grpconv_error_group_locked/grpconv.test | 63 + .../07_grpconv_error_gshadow_locked/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/grpconv.err | 2 + .../07_grpconv_error_gshadow_locked/grpconv.test | 62 + .../08_grpunconv_no_gshadow_file/config.txt | 1 + .../08_grpunconv_no_gshadow_file/config/etc/group | 42 + .../config/etc/gshadow | 43 + .../08_grpunconv_no_gshadow_file/config/etc/passwd | 20 + .../08_grpunconv_no_gshadow_file/config/etc/shadow | 20 + .../08_grpunconv_no_gshadow_file/grpunconv.test | 43 + .../09_grpunconv_error_group_locked/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/grpunconv.err | 2 + .../09_grpunconv_error_group_locked/grpunconv.test | 62 + .../10_grpunconv_error_gshadow_locked/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/grpunconv.err | 2 + .../grpunconv.test | 62 + .../11_pwconv_error_passwd_locked/config.txt | 5 + .../11_pwconv_error_passwd_locked/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../11_pwconv_error_passwd_locked/data/pwconv.err | 2 + .../11_pwconv_error_passwd_locked/pwconv.test | 62 + .../12_pwconv_error_shadow_locked/config.txt | 5 + .../12_pwconv_error_shadow_locked/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../12_pwconv_error_shadow_locked/data/pwconv.err | 2 + .../12_pwconv_error_shadow_locked/pwconv.test | 62 + .../13_pwunconv_error_passwd_locked/config.txt | 5 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/pwunconv.err | 2 + .../13_pwunconv_error_passwd_locked/pwunconv.test | 62 + .../14_pwunconv_error_shadow_locked/config.txt | 5 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/pwunconv.err | 2 + .../14_pwunconv_error_shadow_locked/pwunconv.test | 62 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 21 + .../data/shadow | 20 + .../pwconv.test | 39 + .../convtools/16_pwconv_copy_passwd/config.txt | 1 + .../16_pwconv_copy_passwd/config/etc/group | 42 + .../16_pwconv_copy_passwd/config/etc/gshadow | 41 + .../16_pwconv_copy_passwd/config/etc/passwd | 20 + .../16_pwconv_copy_passwd/config/etc/shadow | 20 + .../convtools/16_pwconv_copy_passwd/data/passwd | 20 + .../convtools/16_pwconv_copy_passwd/data/shadow | 20 + .../convtools/16_pwconv_copy_passwd/pwconv.test | 39 + .../17_pwunconv_no_shadow_file/config.txt | 6 + .../17_pwunconv_no_shadow_file/config/etc/group | 42 + .../17_pwunconv_no_shadow_file/config/etc/gshadow | 43 + .../17_pwunconv_no_shadow_file/config/etc/passwd | 20 + .../17_pwunconv_no_shadow_file/config/etc/shadow | 20 + .../17_pwunconv_no_shadow_file/pwunconv.test | 43 + .../18_pwunconv_user_not_in_shadow/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../18_pwunconv_user_not_in_shadow/data/passwd | 20 + .../18_pwunconv_user_not_in_shadow/pwunconv.test | 39 + tests/tests/convtools/19_pwconv_NIS/config.txt | 1 + .../tests/convtools/19_pwconv_NIS/config/etc/group | 42 + .../convtools/19_pwconv_NIS/config/etc/gshadow | 41 + .../convtools/19_pwconv_NIS/config/etc/passwd | 22 + .../convtools/19_pwconv_NIS/config/etc/shadow | 20 + tests/tests/convtools/19_pwconv_NIS/data/passwd | 22 + tests/tests/convtools/19_pwconv_NIS/data/shadow | 20 + tests/tests/convtools/19_pwconv_NIS/pwconv.test | 43 + .../convtools/20_pwunconv_usage_option/config.txt | 10 + .../20_pwunconv_usage_option/config/etc/group | 41 + .../20_pwunconv_usage_option/config/etc/gshadow | 41 + .../20_pwunconv_usage_option/config/etc/passwd | 19 + .../20_pwunconv_usage_option/config/etc/shadow | 19 + .../20_pwunconv_usage_option/data/usage.out | 7 + .../20_pwunconv_usage_option/pwunconv.test | 54 + .../21_pwunconv_keep_passwd_password/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../21_pwunconv_keep_passwd_password/data/passwd | 20 + .../21_pwunconv_keep_passwd_password/pwunconv.test | 39 + .../convtools/22_grpunconv_usage_option/config.txt | 10 + .../22_grpunconv_usage_option/config/etc/group | 41 + .../22_grpunconv_usage_option/config/etc/gshadow | 41 + .../22_grpunconv_usage_option/config/etc/passwd | 19 + .../22_grpunconv_usage_option/config/etc/shadow | 19 + .../22_grpunconv_usage_option/data/usage.out | 7 + .../22_grpunconv_usage_option/grpunconv.test | 54 + .../23_grpunconv_keep_group_password/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../23_grpunconv_keep_group_password/data/group | 42 + .../grpunconv.test | 39 + .../24_grpunconv_no_gshadow_entry/config.txt | 1 + .../24_grpunconv_no_gshadow_entry/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../24_grpunconv_no_gshadow_entry/data/group | 42 + .../24_grpunconv_no_gshadow_entry/grpunconv.test | 39 + .../convtools/25_pwconv_usage_option/config.txt | 0 .../25_pwconv_usage_option/config/etc/group | 0 .../25_pwconv_usage_option/config/etc/gshadow | 0 .../25_pwconv_usage_option/config/etc/passwd | 0 .../25_pwconv_usage_option/config/etc/shadow | 0 .../25_pwconv_usage_option/data/usage.out | 7 + .../convtools/25_pwconv_usage_option/pwconv.test | 54 + .../convtools/26_grpconv_usage_option/config.txt | 0 .../26_grpconv_usage_option/config/etc/group | 0 .../26_grpconv_usage_option/config/etc/gshadow | 0 .../26_grpconv_usage_option/config/etc/passwd | 0 .../26_grpconv_usage_option/config/etc/shadow | 0 .../26_grpconv_usage_option/data/usage.out | 7 + .../convtools/26_grpconv_usage_option/grpconv.test | 54 + tests/tests/convtools/27_pwunconv_usage/config.txt | 10 + .../convtools/27_pwunconv_usage/config/etc/group | 41 + .../convtools/27_pwunconv_usage/config/etc/gshadow | 41 + .../convtools/27_pwunconv_usage/config/etc/passwd | 19 + .../convtools/27_pwunconv_usage/config/etc/shadow | 19 + .../convtools/27_pwunconv_usage/data/usage.out | 6 + .../convtools/27_pwunconv_usage/pwunconv.test | 48 + .../28_pwunconv_usage_extra_arg/config.txt | 10 + .../28_pwunconv_usage_extra_arg/config/etc/group | 41 + .../28_pwunconv_usage_extra_arg/config/etc/gshadow | 41 + .../28_pwunconv_usage_extra_arg/config/etc/passwd | 19 + .../28_pwunconv_usage_extra_arg/config/etc/shadow | 19 + .../28_pwunconv_usage_extra_arg/data/usage.out | 6 + .../28_pwunconv_usage_extra_arg/pwunconv.test | 54 + tests/tests/convtools/29_grpconv_usage/config.txt | 0 .../convtools/29_grpconv_usage/config/etc/group | 0 .../convtools/29_grpconv_usage/config/etc/gshadow | 0 .../convtools/29_grpconv_usage/config/etc/passwd | 0 .../convtools/29_grpconv_usage/config/etc/shadow | 0 .../convtools/29_grpconv_usage/data/usage.out | 6 + .../tests/convtools/29_grpconv_usage/grpconv.test | 48 + .../30_grpconv_usage_extra_arg/config.txt | 0 .../30_grpconv_usage_extra_arg/config/etc/group | 0 .../30_grpconv_usage_extra_arg/config/etc/gshadow | 0 .../30_grpconv_usage_extra_arg/config/etc/passwd | 0 .../30_grpconv_usage_extra_arg/config/etc/shadow | 0 .../30_grpconv_usage_extra_arg/data/usage.out | 6 + .../30_grpconv_usage_extra_arg/grpconv.test | 54 + tests/tests/convtools/31_pwconv_usage/config.txt | 0 .../convtools/31_pwconv_usage/config/etc/group | 0 .../convtools/31_pwconv_usage/config/etc/gshadow | 0 .../convtools/31_pwconv_usage/config/etc/passwd | 0 .../convtools/31_pwconv_usage/config/etc/shadow | 0 .../tests/convtools/31_pwconv_usage/data/usage.out | 6 + tests/tests/convtools/31_pwconv_usage/pwconv.test | 48 + .../convtools/32_pwconv_usage_extra_arg/config.txt | 0 .../32_pwconv_usage_extra_arg/config/etc/group | 0 .../32_pwconv_usage_extra_arg/config/etc/gshadow | 0 .../32_pwconv_usage_extra_arg/config/etc/passwd | 0 .../32_pwconv_usage_extra_arg/config/etc/shadow | 0 .../32_pwconv_usage_extra_arg/data/usage.out | 6 + .../32_pwconv_usage_extra_arg/pwconv.test | 54 + .../tests/convtools/33_grpunconv_usage/config.txt | 10 + .../convtools/33_grpunconv_usage/config/etc/group | 41 + .../33_grpunconv_usage/config/etc/gshadow | 41 + .../convtools/33_grpunconv_usage/config/etc/passwd | 19 + .../convtools/33_grpunconv_usage/config/etc/shadow | 19 + .../convtools/33_grpunconv_usage/data/usage.out | 6 + .../convtools/33_grpunconv_usage/grpunconv.test | 48 + .../34_grpunconv_usage_extra_arg/config.txt | 10 + .../34_grpunconv_usage_extra_arg/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../34_grpunconv_usage_extra_arg/config/etc/passwd | 19 + .../34_grpunconv_usage_extra_arg/config/etc/shadow | 19 + .../34_grpunconv_usage_extra_arg/data/usage.out | 6 + .../34_grpunconv_usage_extra_arg/grpunconv.test | 54 + tests/tests/coverage.sh | 11 + tests/tests/cptools/01/data/group | 41 + tests/tests/cptools/01/data/group.new | 42 + tests/tests/cptools/01/data/gshadow | 41 + tests/tests/cptools/01/data/gshadow.new | 42 + tests/tests/cptools/01/data/passwd | 19 + tests/tests/cptools/01/data/passwd.new | 20 + tests/tests/cptools/01/data/shadow | 19 + tests/tests/cptools/01/data/shadow.new | 20 + tests/tests/cptools/01/run1 | 57 + tests/tests/cptools/01/run2 | 57 + tests/tests/cptools/01/run3 | 57 + tests/tests/cptools/01/run4 | 57 + tests/tests/cptools/02_cppw_usage/config.txt | 0 tests/tests/cptools/02_cppw_usage/config/etc/group | 0 .../tests/cptools/02_cppw_usage/config/etc/gshadow | 0 .../tests/cptools/02_cppw_usage/config/etc/passwd | 0 .../tests/cptools/02_cppw_usage/config/etc/shadow | 0 tests/tests/cptools/02_cppw_usage/cppw.test | 48 + tests/tests/cptools/02_cppw_usage/data/usage.out | 3 + .../03_cppw_usage_invalid_option/config.txt | 0 .../03_cppw_usage_invalid_option/config/etc/group | 0 .../config/etc/gshadow | 0 .../03_cppw_usage_invalid_option/config/etc/passwd | 0 .../03_cppw_usage_invalid_option/config/etc/shadow | 0 .../cptools/03_cppw_usage_invalid_option/cppw.test | 54 + .../03_cppw_usage_invalid_option/data/usage.out | 4 + .../cptools/04_cppw_no_file_argument/config.txt | 0 .../04_cppw_no_file_argument/config/etc/group | 0 .../04_cppw_no_file_argument/config/etc/gshadow | 0 .../04_cppw_no_file_argument/config/etc/passwd | 0 .../04_cppw_no_file_argument/config/etc/shadow | 0 .../cptools/04_cppw_no_file_argument/cppw.test | 54 + .../04_cppw_no_file_argument/data/usage.out | 2 + tests/tests/cptools/05_cppw_2_files/config.txt | 0 .../tests/cptools/05_cppw_2_files/config/etc/group | 42 + .../cptools/05_cppw_2_files/config/etc/gshadow | 42 + .../cptools/05_cppw_2_files/config/etc/passwd | 21 + .../cptools/05_cppw_2_files/config/etc/shadow | 21 + tests/tests/cptools/05_cppw_2_files/cppw.test | 54 + tests/tests/cptools/05_cppw_2_files/data/passwd | 17 + tests/tests/cptools/05_cppw_2_files/data/usage.out | 2 + tests/tests/cptools/06_cppw_no_file/config.txt | 0 .../tests/cptools/06_cppw_no_file/config/etc/group | 0 .../cptools/06_cppw_no_file/config/etc/gshadow | 0 .../cptools/06_cppw_no_file/config/etc/passwd | 0 .../cptools/06_cppw_no_file/config/etc/shadow | 0 tests/tests/cptools/06_cppw_no_file/cppw.test | 54 + tests/tests/cptools/06_cppw_no_file/data/usage.out | 2 + .../tests/cptools/07_cppw_locked_passwd/config.txt | 0 .../cptools/07_cppw_locked_passwd/config/etc/group | 0 .../07_cppw_locked_passwd/config/etc/gshadow | 0 .../07_cppw_locked_passwd/config/etc/passwd | 0 .../07_cppw_locked_passwd/config/etc/shadow | 0 .../tests/cptools/07_cppw_locked_passwd/cppw.test | 60 + .../cptools/07_cppw_locked_passwd/data/passwd | 0 .../cptools/07_cppw_locked_passwd/data/usage.out | 3 + tests/tests/cptools/08_cppw-p/config.txt | 0 tests/tests/cptools/08_cppw-p/config/etc/group | 0 tests/tests/cptools/08_cppw-p/config/etc/gshadow | 0 tests/tests/cptools/08_cppw-p/config/etc/passwd | 0 tests/tests/cptools/08_cppw-p/config/etc/shadow | 0 tests/tests/cptools/08_cppw-p/cppw.test | 39 + tests/tests/cptools/08_cppw-p/data/passwd | 0 tests/tests/cptools/09_cppw-g/config.txt | 0 tests/tests/cptools/09_cppw-g/config/etc/group | 42 + tests/tests/cptools/09_cppw-g/config/etc/gshadow | 42 + tests/tests/cptools/09_cppw-g/config/etc/passwd | 20 + tests/tests/cptools/09_cppw-g/config/etc/shadow | 20 + tests/tests/cptools/09_cppw-g/cppw.test | 39 + tests/tests/cptools/09_cppw-g/data/group | 39 + tests/tests/cptools/10_cppw-g-s/config.txt | 0 tests/tests/cptools/10_cppw-g-s/config/etc/group | 42 + tests/tests/cptools/10_cppw-g-s/config/etc/gshadow | 42 + tests/tests/cptools/10_cppw-g-s/config/etc/passwd | 20 + tests/tests/cptools/10_cppw-g-s/config/etc/shadow | 20 + tests/tests/cptools/10_cppw-g-s/cppw.test | 39 + tests/tests/cptools/10_cppw-g-s/data/gshadow | 39 + tests/tests/cptools/11_cppw-p-s/config.txt | 0 tests/tests/cptools/11_cppw-p-s/config/etc/group | 42 + tests/tests/cptools/11_cppw-p-s/config/etc/gshadow | 42 + tests/tests/cptools/11_cppw-p-s/config/etc/passwd | 20 + tests/tests/cptools/11_cppw-p-s/config/etc/shadow | 20 + tests/tests/cptools/11_cppw-p-s/cppw.test | 39 + tests/tests/cptools/11_cppw-p-s/data/shadow | 16 + .../cptools/12_cppw-s_no_shadow_file/config.txt | 0 .../12_cppw-s_no_shadow_file/config/etc/group | 0 .../12_cppw-s_no_shadow_file/config/etc/gshadow | 0 .../12_cppw-s_no_shadow_file/config/etc/passwd | 0 .../12_cppw-s_no_shadow_file/config/etc/shadow | 0 .../cptools/12_cppw-s_no_shadow_file/cppw.test | 58 + .../cptools/12_cppw-s_no_shadow_file/data/cppw.err | 2 + .../cptools/12_cppw-s_no_shadow_file/data/shadow | 0 .../login.defs_DES-MD5_CRYPT_ENAB/01_chpasswd.test | 39 + .../01_chpasswd/group | 41 + .../01_chpasswd/gshadow | 41 + .../01_chpasswd/passwd | 19 + .../01_chpasswd/shadow | 19 + .../login.defs_DES-MD5_CRYPT_ENAB/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + tests/tests/crypt/login.defs_DES/01_chpasswd.test | 39 + tests/tests/crypt/login.defs_DES/01_chpasswd/group | 41 + .../tests/crypt/login.defs_DES/01_chpasswd/gshadow | 41 + .../tests/crypt/login.defs_DES/01_chpasswd/passwd | 19 + .../tests/crypt/login.defs_DES/01_chpasswd/shadow | 19 + .../02_chpasswd--crypt-method-MD5.test | 39 + .../02_chpasswd--crypt-method-MD5/group | 41 + .../02_chpasswd--crypt-method-MD5/gshadow | 41 + .../02_chpasswd--crypt-method-MD5/passwd | 19 + .../02_chpasswd--crypt-method-MD5/passwd.new | 19 + .../02_chpasswd--crypt-method-MD5/shadow | 19 + .../03_chpasswd--crypt-method-DES.test | 39 + .../03_chpasswd--crypt-method-DES/group | 41 + .../03_chpasswd--crypt-method-DES/gshadow | 41 + .../03_chpasswd--crypt-method-DES/passwd | 19 + .../03_chpasswd--crypt-method-DES/shadow | 19 + .../04_chpasswd--crypt-method-NONE.test | 39 + .../04_chpasswd--crypt-method-NONE/group | 41 + .../04_chpasswd--crypt-method-NONE/gshadow | 41 + .../04_chpasswd--crypt-method-NONE/passwd | 19 + .../04_chpasswd--crypt-method-NONE/shadow | 19 + .../tests/crypt/login.defs_DES/05_chpasswd-e.test | 39 + .../tests/crypt/login.defs_DES/05_chpasswd-e/group | 41 + .../crypt/login.defs_DES/05_chpasswd-e/gshadow | 41 + .../crypt/login.defs_DES/05_chpasswd-e/passwd | 19 + .../crypt/login.defs_DES/05_chpasswd-e/shadow | 19 + .../tests/crypt/login.defs_DES/06_chpasswd-m.test | 39 + .../tests/crypt/login.defs_DES/06_chpasswd-m/group | 41 + .../crypt/login.defs_DES/06_chpasswd-m/gshadow | 41 + .../crypt/login.defs_DES/06_chpasswd-m/passwd | 19 + .../crypt/login.defs_DES/06_chpasswd-m/shadow | 19 + tests/tests/crypt/login.defs_DES/07_chgpasswd.test | 39 + .../tests/crypt/login.defs_DES/07_chgpasswd/group | 41 + .../crypt/login.defs_DES/07_chgpasswd/gshadow | 41 + .../tests/crypt/login.defs_DES/07_chgpasswd/passwd | 19 + .../tests/crypt/login.defs_DES/07_chgpasswd/shadow | 19 + .../08_chgpasswd--crypt-method-MD5.test | 39 + .../08_chgpasswd--crypt-method-MD5/group | 41 + .../08_chgpasswd--crypt-method-MD5/gshadow | 41 + .../08_chgpasswd--crypt-method-MD5/passwd | 19 + .../08_chgpasswd--crypt-method-MD5/shadow | 19 + .../09_chgpasswd--crypt-method-DES.test | 39 + .../09_chgpasswd--crypt-method-DES/group | 41 + .../09_chgpasswd--crypt-method-DES/gshadow | 41 + .../09_chgpasswd--crypt-method-DES/passwd | 19 + .../09_chgpasswd--crypt-method-DES/shadow | 19 + .../10_chgpasswd--crypt-method-NONE.test | 39 + .../10_chgpasswd--crypt-method-NONE/group | 41 + .../10_chgpasswd--crypt-method-NONE/gshadow | 41 + .../10_chgpasswd--crypt-method-NONE/passwd | 19 + .../10_chgpasswd--crypt-method-NONE/shadow | 19 + .../tests/crypt/login.defs_DES/11_chgpasswd-e.test | 39 + .../crypt/login.defs_DES/11_chgpasswd-e/group | 41 + .../crypt/login.defs_DES/11_chgpasswd-e/gshadow | 41 + .../crypt/login.defs_DES/11_chgpasswd-e/passwd | 19 + .../crypt/login.defs_DES/11_chgpasswd-e/shadow | 19 + .../tests/crypt/login.defs_DES/12_chgpasswd-m.test | 39 + .../crypt/login.defs_DES/12_chgpasswd-m/group | 41 + .../crypt/login.defs_DES/12_chgpasswd-m/gshadow | 41 + .../crypt/login.defs_DES/12_chgpasswd-m/passwd | 19 + .../crypt/login.defs_DES/12_chgpasswd-m/shadow | 19 + tests/tests/crypt/login.defs_DES/config/etc/group | 41 + .../tests/crypt/login.defs_DES/config/etc/gshadow | 41 + .../crypt/login.defs_DES/config/etc/login.defs | 317 + tests/tests/crypt/login.defs_DES/config/etc/passwd | 19 + tests/tests/crypt/login.defs_DES/config/etc/shadow | 19 + tests/tests/crypt/login.defs_MD5/01_chpasswd.test | 39 + tests/tests/crypt/login.defs_MD5/01_chpasswd/group | 41 + .../tests/crypt/login.defs_MD5/01_chpasswd/gshadow | 41 + .../tests/crypt/login.defs_MD5/01_chpasswd/passwd | 19 + .../tests/crypt/login.defs_MD5/01_chpasswd/shadow | 19 + tests/tests/crypt/login.defs_MD5/02_chgpasswd.test | 39 + .../tests/crypt/login.defs_MD5/02_chgpasswd/group | 41 + .../crypt/login.defs_MD5/02_chgpasswd/gshadow | 41 + .../tests/crypt/login.defs_MD5/02_chgpasswd/passwd | 19 + .../tests/crypt/login.defs_MD5/02_chgpasswd/shadow | 19 + tests/tests/crypt/login.defs_MD5/config/etc/group | 41 + .../tests/crypt/login.defs_MD5/config/etc/gshadow | 41 + .../crypt/login.defs_MD5/config/etc/login.defs | 317 + tests/tests/crypt/login.defs_MD5/config/etc/passwd | 19 + tests/tests/crypt/login.defs_MD5/config/etc/shadow | 19 + .../login.defs_MD5_CRYPT_ENAB/01_chpasswd.test | 39 + .../login.defs_MD5_CRYPT_ENAB/01_chpasswd/shadow | 19 + .../login.defs_MD5_CRYPT_ENAB/02_chgpasswd.test | 39 + .../login.defs_MD5_CRYPT_ENAB/02_chgpasswd/gshadow | 41 + .../login.defs_MD5_CRYPT_ENAB/config/etc/group | 41 + .../login.defs_MD5_CRYPT_ENAB/config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../login.defs_MD5_CRYPT_ENAB/config/etc/passwd | 19 + .../login.defs_MD5_CRYPT_ENAB/config/etc/shadow | 19 + .../login.defs_SHA256-round-max/01_chpasswd.test | 45 + .../login.defs_SHA256-round-max/01_chpasswd/shadow | 19 + .../login.defs_SHA256-round-max/02_chgpasswd.test | 45 + .../02_chgpasswd/gshadow | 41 + .../login.defs_SHA256-round-max/config/etc/group | 41 + .../login.defs_SHA256-round-max/config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../login.defs_SHA256-round-max/config/etc/passwd | 19 + .../login.defs_SHA256-round-max/config/etc/shadow | 19 + .../01_chpasswd.test | 64 + .../01_chpasswd/shadow | 19 + .../02_chgpasswd.test | 64 + .../02_chgpasswd/gshadow | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../login.defs_SHA256-round-min/01_chpasswd.test | 45 + .../login.defs_SHA256-round-min/01_chpasswd/shadow | 19 + .../login.defs_SHA256-round-min/02_chgpasswd.test | 45 + .../02_chgpasswd/gshadow | 41 + .../login.defs_SHA256-round-min/config/etc/group | 41 + .../login.defs_SHA256-round-min/config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../login.defs_SHA256-round-min/config/etc/passwd | 19 + .../login.defs_SHA256-round-min/config/etc/shadow | 19 + .../tests/crypt/login.defs_SHA256/01_chpasswd.test | 39 + .../crypt/login.defs_SHA256/01_chpasswd/shadow | 19 + .../crypt/login.defs_SHA256/02_chgpasswd.test | 39 + .../crypt/login.defs_SHA256/02_chgpasswd/gshadow | 41 + .../tests/crypt/login.defs_SHA256/config/etc/group | 41 + .../crypt/login.defs_SHA256/config/etc/gshadow | 41 + .../crypt/login.defs_SHA256/config/etc/login.defs | 317 + .../crypt/login.defs_SHA256/config/etc/passwd | 19 + .../crypt/login.defs_SHA256/config/etc/shadow | 19 + .../tests/crypt/login.defs_SHA512/01_chpasswd.test | 39 + .../crypt/login.defs_SHA512/01_chpasswd/shadow | 19 + .../crypt/login.defs_SHA512/02_chgpasswd.test | 39 + .../crypt/login.defs_SHA512/02_chgpasswd/gshadow | 41 + .../tests/crypt/login.defs_SHA512/config/etc/group | 41 + .../crypt/login.defs_SHA512/config/etc/gshadow | 41 + .../crypt/login.defs_SHA512/config/etc/login.defs | 317 + .../crypt/login.defs_SHA512/config/etc/passwd | 19 + .../crypt/login.defs_SHA512/config/etc/shadow | 19 + tests/tests/crypt/login.defs_none/01_chpasswd.test | 39 + .../tests/crypt/login.defs_none/01_chpasswd/shadow | 19 + .../tests/crypt/login.defs_none/02_chgpasswd.test | 39 + .../crypt/login.defs_none/02_chgpasswd/gshadow | 41 + tests/tests/crypt/login.defs_none/config/etc/group | 41 + .../tests/crypt/login.defs_none/config/etc/gshadow | 41 + .../crypt/login.defs_none/config/etc/login.defs | 317 + .../tests/crypt/login.defs_none/config/etc/passwd | 19 + .../tests/crypt/login.defs_none/config/etc/shadow | 19 + tests/tests/debian/01/data/login_files | 296 + tests/tests/debian/01/data/passwd_files | 400 ++ tests/tests/debian/01/run | 33 + tests/tests/debian/02/run | 28 + .../expiry/01_expiry_-c_no_expiry/config/etc/group | 42 + .../01_expiry_-c_no_expiry/config/etc/gshadow | 42 + .../01_expiry_-c_no_expiry/config/etc/passwd | 20 + .../01_expiry_-c_no_expiry/config/etc/shadow | 20 + .../tests/expiry/01_expiry_-c_no_expiry/expiry.exp | 17 + .../expiry/01_expiry_-c_no_expiry/expiry.test | 37 + .../expiry/02_expiry_-c_expired/config/etc/group | 42 + .../expiry/02_expiry_-c_expired/config/etc/gshadow | 42 + .../expiry/02_expiry_-c_expired/config/etc/passwd | 20 + .../expiry/02_expiry_-c_expired/config/etc/shadow | 20 + tests/tests/expiry/02_expiry_-c_expired/expiry.exp | 17 + .../tests/expiry/02_expiry_-c_expired/expiry.test | 37 + .../expiry/03_expiry_-f_expired/config/etc/group | 42 + .../expiry/03_expiry_-f_expired/config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../expiry/03_expiry_-f_expired/config/etc/passwd | 20 + .../expiry/03_expiry_-f_expired/config/etc/shadow | 20 + .../tests/expiry/03_expiry_-f_expired/data/shadow | 20 + tests/tests/expiry/03_expiry_-f_expired/expiry.exp | 23 + .../tests/expiry/03_expiry_-f_expired/expiry.test | 37 + .../expiry/04_expiry_no_options/config/etc/group | 42 + .../expiry/04_expiry_no_options/config/etc/gshadow | 42 + .../expiry/04_expiry_no_options/config/etc/passwd | 20 + .../expiry/04_expiry_no_options/config/etc/shadow | 20 + .../expiry/04_expiry_no_options/data/usage.out | 8 + .../tests/expiry/04_expiry_no_options/expiry.test | 54 + .../05_expiry_-c_no_shadow_file/config/etc/group | 42 + .../05_expiry_-c_no_shadow_file/config/etc/gshadow | 42 + .../05_expiry_-c_no_shadow_file/config/etc/passwd | 20 + .../05_expiry_-c_no_shadow_file/config/etc/shadow | 20 + .../expiry/05_expiry_-c_no_shadow_file/expiry.exp | 17 + .../expiry/05_expiry_-c_no_shadow_file/expiry.test | 41 + .../06_expiry_-c_no_shadow_entry/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../06_expiry_-c_no_shadow_entry/config/etc/passwd | 20 + .../06_expiry_-c_no_shadow_entry/config/etc/shadow | 19 + .../expiry/06_expiry_-c_no_shadow_entry/expiry.exp | 17 + .../06_expiry_-c_no_shadow_entry/expiry.test | 37 + .../07_expiry_-c_expired_account/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../07_expiry_-c_expired_account/config/etc/passwd | 20 + .../07_expiry_-c_expired_account/config/etc/shadow | 20 + .../expiry/07_expiry_-c_expired_account/expiry.exp | 17 + .../07_expiry_-c_expired_account/expiry.test | 37 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../08_expiry_-c_expired_max+inact/expiry.exp | 17 + .../08_expiry_-c_expired_max+inact/expiry.test | 37 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../09_expiry_-c_expired_not_inactive/expiry.exp | 17 + .../09_expiry_-c_expired_not_inactive/expiry.test | 37 + .../expiry/10_expiry_bad_option/config/etc/group | 42 + .../expiry/10_expiry_bad_option/config/etc/gshadow | 42 + .../expiry/10_expiry_bad_option/config/etc/passwd | 20 + .../expiry/10_expiry_bad_option/config/etc/shadow | 20 + .../expiry/10_expiry_bad_option/data/usage.out | 9 + .../tests/expiry/10_expiry_bad_option/expiry.test | 53 + .../tests/expiry/11_expiry_usage/config/etc/group | 42 + .../expiry/11_expiry_usage/config/etc/gshadow | 42 + .../tests/expiry/11_expiry_usage/config/etc/passwd | 20 + .../tests/expiry/11_expiry_usage/config/etc/shadow | 20 + tests/tests/expiry/11_expiry_usage/data/usage.out | 8 + tests/tests/expiry/11_expiry_usage/expiry.test | 47 + .../expiry/12_expiry_extra_arg/config/etc/group | 42 + .../expiry/12_expiry_extra_arg/config/etc/gshadow | 42 + .../expiry/12_expiry_extra_arg/config/etc/passwd | 20 + .../expiry/12_expiry_extra_arg/config/etc/shadow | 20 + .../expiry/12_expiry_extra_arg/data/usage.out | 9 + tests/tests/expiry/12_expiry_extra_arg/expiry.test | 53 + .../expiry/13_expiry_usage-c-f/config/etc/group | 42 + .../expiry/13_expiry_usage-c-f/config/etc/gshadow | 42 + .../expiry/13_expiry_usage-c-f/config/etc/passwd | 20 + .../expiry/13_expiry_usage-c-f/config/etc/shadow | 20 + .../expiry/13_expiry_usage-c-f/data/usage.out | 9 + tests/tests/expiry/13_expiry_usage-c-f/expiry.test | 53 + .../01_chage_openRW_passwd_failure/chage.test | 62 + .../01_chage_openRW_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../01_chage_openRW_passwd_failure/data/chage.err | 2 + .../02_chage_openRO_passwd_failure/chage.test | 62 + .../02_chage_openRO_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../02_chage_openRO_passwd_failure/data/chage.err | 2 + .../03_chage_openRW_shadow_failure/chage.test | 62 + .../03_chage_openRW_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../03_chage_openRW_shadow_failure/data/chage.err | 2 + .../04_chage_openRO_shadow_failure/chage.test | 62 + .../04_chage_openRO_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../04_chage_openRO_shadow_failure/data/chage.err | 2 + .../05_chage_rename_shadow_failure/chage.test | 62 + .../05_chage_rename_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../05_chage_rename_shadow_failure/data/chage.err | 2 + .../06_chage_rename_passwd_failure/chage.test | 62 + .../06_chage_rename_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../06_chage_rename_passwd_failure/data/chage.err | 2 + .../06_chage_rename_passwd_failure/data/shadow | 20 + .../chgpasswd.test | 55 + .../01_chgpasswd-e_open_group_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/chgpasswd.err | 2 + .../chgpasswd.test | 55 + .../02_chgpasswd-e_open_gshadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/chgpasswd.err | 2 + .../chgpasswd.test | 55 + .../03_chgpasswd-e_rename_group_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/chgpasswd.err | 2 + .../data/gshadow | 41 + .../chgpasswd.test | 55 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/chgpasswd.err | 2 + .../chpasswd.test | 55 + .../01_chpasswd-e_open_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/chpasswd.err | 2 + .../chpasswd.test | 55 + .../02_chpasswd-e_open_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/chpasswd.err | 2 + .../chpasswd.test | 55 + .../03_chpasswd-e_rename_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 2 + .../data/shadow | 19 + .../chpasswd.test | 55 + .../04_chpasswd-e_rename_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 2 + .../05_chpasswd-e_time_0/chpasswd.test | 40 + .../chpasswd-PAM/05_chpasswd-e_time_0/config.txt | 2 + .../05_chpasswd-e_time_0/config/etc/group | 42 + .../05_chpasswd-e_time_0/config/etc/gshadow | 42 + .../05_chpasswd-e_time_0/config/etc/passwd | 20 + .../05_chpasswd-e_time_0/config/etc/shadow | 20 + .../chpasswd-PAM/05_chpasswd-e_time_0/data/shadow | 20 + .../chsh/01_chsh_open_passwd_failure/chsh.test | 54 + .../chsh/01_chsh_open_passwd_failure/config.txt | 1 + .../01_chsh_open_passwd_failure/config/etc/group | 42 + .../01_chsh_open_passwd_failure/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../01_chsh_open_passwd_failure/config/etc/passwd | 20 + .../01_chsh_open_passwd_failure/config/etc/shadow | 20 + .../chsh/01_chsh_open_passwd_failure/data/chsh.err | 2 + .../chsh/02_chsh_rename_passwd_failure/chsh.test | 54 + .../chsh/02_chsh_rename_passwd_failure/config.txt | 1 + .../02_chsh_rename_passwd_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../02_chsh_rename_passwd_failure/data/chsh.err | 2 + .../chsh/02_chsh_rename_passwd_failure/data/shadow | 20 + .../cppw/01_cppw_open_passwd_in_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../cppw/01_cppw_open_passwd_in_failure/cppw.test | 54 + .../01_cppw_open_passwd_in_failure/data/cppw.err | 3 + .../01_cppw_open_passwd_in_failure/data/passwd | 17 + .../02_cppw_open_passwd_backup_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../02_cppw_open_passwd_backup_failure/cppw.test | 54 + .../data/cppw.err | 3 + .../02_cppw_open_passwd_backup_failure/data/passwd | 17 + .../cppw/03_cppw_rename_passwd_failure/config.txt | 1 + .../03_cppw_rename_passwd_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../cppw/03_cppw_rename_passwd_failure/cppw.test | 54 + .../03_cppw_rename_passwd_failure/data/cppw.err | 3 + .../cppw/03_cppw_rename_passwd_failure/data/passwd | 17 + .../01_gpasswd_group_open_failure/config.txt | 1 + .../01_gpasswd_group_open_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../01_gpasswd_group_open_failure/data/gpasswd.err | 2 + .../01_gpasswd_group_open_failure/gpasswd.test | 54 + .../02_gpasswd_gshadow_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../02_gpasswd_gshadow_open_failure/gpasswd.test | 54 + .../03_gpasswd-a_group_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../03_gpasswd-a_group_open_failure/gpasswd.test | 54 + .../04_gpasswd-d_group_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../04_gpasswd-d_group_open_failure/gpasswd.test | 54 + .../05_gpasswd-r_group_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../05_gpasswd-r_group_open_failure/gpasswd.test | 54 + .../06_gpasswd-R_gshadow_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../06_gpasswd-R_gshadow_open_failure/gpasswd.test | 54 + .../07_gpasswd-A_gshadow_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../07_gpasswd-A_gshadow_open_failure/gpasswd.test | 54 + .../08_gpasswd_group_openRO_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../08_gpasswd_group_openRO_failure/gpasswd.test | 54 + .../09_gpasswd_gshadow_openRO_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../09_gpasswd_gshadow_openRO_failure/gpasswd.test | 54 + .../10_gpasswd_group_rename_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../10_gpasswd_group_rename_failure/gpasswd.test | 54 + .../11_gpasswd_gshadow_rename_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gpasswd.err | 2 + .../11_gpasswd_gshadow_rename_failure/data/group | 42 + .../11_gpasswd_gshadow_rename_failure/gpasswd.test | 54 + .../01_groupadd_gshadow_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../01_groupadd_gshadow_rename_failure/data/group | 42 + .../data/groupadd.err | 2 + .../groupadd.test | 54 + .../02_groupadd_group_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupadd.err | 2 + .../02_groupadd_group_rename_failure/groupadd.test | 54 + .../03_groupadd_gshadow_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupadd.err | 2 + .../03_groupadd_gshadow_open_failure/groupadd.test | 54 + .../04_groupadd_group_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupadd.err | 2 + .../04_groupadd_group_open_failure/groupadd.test | 54 + .../01_groupdel_gshadow_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../01_groupdel_gshadow_rename_failure/data/group | 41 + .../data/groupdel.err | 2 + .../groupdel.test | 54 + .../02_groupdel_group_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupdel.err | 2 + .../02_groupdel_group_rename_failure/groupdel.test | 54 + .../03_groupdel_gshadow_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupdel.err | 2 + .../03_groupdel_gshadow_open_failure/groupdel.test | 54 + .../04_groupdel_group_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupdel.err | 2 + .../04_groupdel_group_open_failure/groupdel.test | 54 + .../01_groupmems_group_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmems.err | 2 + .../01_groupmems_group_open_failure/groupmems.test | 54 + .../02_groupmems_gshadow_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmems.err | 2 + .../groupmems.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/groupmod.err | 2 + .../groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/groupmod.err | 2 + .../groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 2 + .../groupmod.test | 54 + .../04_groupmod_group_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 2 + .../04_groupmod_group_open_failure/groupmod.test | 54 + .../05_groupmod_gshadow_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 2 + .../05_groupmod_gshadow_open_failure/groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 39 + .../07_groupmod_passwd_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/groupmod.err | 2 + .../07_groupmod_passwd_open_failure/groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../groupmod.test | 39 + .../01_grpck_system_group_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/grpck.err | 2 + .../01_grpck_system_group_open_failure/grpck.test | 54 + .../grpck/02_grpck_group_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../02_grpck_group_open_failure/config/etc/group | 42 + .../02_grpck_group_open_failure/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../02_grpck_group_open_failure/config/etc/passwd | 19 + .../02_grpck_group_open_failure/config/etc/shadow | 19 + .../02_grpck_group_open_failure/data/grpck.err | 2 + .../grpck/02_grpck_group_open_failure/grpck.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/grpck.err | 2 + .../grpck.test | 54 + .../grpck/04_grpck_gshadow_open_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../04_grpck_gshadow_open_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../grpck/04_grpck_gshadow_open_failure/data/group | 42 + .../04_grpck_gshadow_open_failure/data/grpck.err | 2 + .../04_grpck_gshadow_open_failure/data/gshadow | 42 + .../grpck/04_grpck_gshadow_open_failure/grpck.test | 54 + .../05_grpck_sort_group_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpck.err | 2 + .../05_grpck_sort_group_rename_failure/grpck.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/grpck.err | 2 + .../grpck.test | 54 + .../01_grpconv_open_group_failure/config.txt | 1 + .../01_grpconv_open_group_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../01_grpconv_open_group_failure/data/grpconv.err | 2 + .../01_grpconv_open_group_failure/grpconv.test | 58 + .../02_grpconv_open_gshadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpconv.err | 2 + .../02_grpconv_open_gshadow_failure/grpconv.test | 58 + .../03_grpconv_rename_group_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpconv.err | 2 + .../03_grpconv_rename_group_failure/data/gshadow | 42 + .../03_grpconv_rename_group_failure/grpconv.test | 58 + .../04_grpconv_rename_gshadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpconv.err | 2 + .../04_grpconv_rename_gshadow_failure/grpconv.test | 58 + .../01_grpunconv_group_rename_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpunconv.err | 2 + .../grpunconv.test | 54 + .../02_grpunconv_open_group_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpunconv.err | 2 + .../02_grpunconv_open_group_failure/grpunconv.test | 54 + .../03_grpunconv_open_gshadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/grpunconv.err | 2 + .../grpunconv.test | 54 + .../04_grpunconv_unlink_gshadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../04_grpunconv_unlink_gshadow_failure/data/group | 42 + .../data/grpunconv.err | 2 + .../grpunconv.test | 54 + .../01_newusers_open_passwd_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../01_newusers_open_passwd_failure/newusers.test | 54 + .../02_newusers_open_shadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../02_newusers_open_shadow_failure/newusers.test | 54 + .../03_newusers_open_group_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../03_newusers_open_group_failure/newusers.test | 54 + .../04_newusers_open_gshadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../04_newusers_open_gshadow_failure/newusers.test | 54 + .../05_newusers_rename_passwd_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../06_newusers_rename_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../06_newusers_rename_shadow_failure/data/passwd | 20 + .../newusers.test | 54 + .../07_newusers_rename_group_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../07_newusers_rename_group_failure/data/passwd | 20 + .../07_newusers_rename_group_failure/data/shadow | 20 + .../07_newusers_rename_group_failure/newusers.test | 54 + .../08_newusers_rename_gshadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../08_newusers_rename_gshadow_failure/data/group | 43 + .../data/newusers.err | 2 + .../data/newusers.list | 1 + .../08_newusers_rename_gshadow_failure/data/passwd | 20 + .../08_newusers_rename_gshadow_failure/data/shadow | 20 + .../newusers.test | 54 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 20 + .../data/group | 43 + .../data/gshadow | 43 + .../data/newusers.err | 4 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../newusers.test | 54 + .../newusers/10_newusers_time_0/config.txt | 2 + .../10_newusers_time_0/config/etc/default/useradd | 36 + .../newusers/10_newusers_time_0/config/etc/group | 41 + .../newusers/10_newusers_time_0/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../newusers/10_newusers_time_0/config/etc/passwd | 19 + .../newusers/10_newusers_time_0/config/etc/shadow | 19 + .../newusers/10_newusers_time_0/data/group | 42 + .../newusers/10_newusers_time_0/data/gshadow | 42 + .../newusers/10_newusers_time_0/data/newusers.list | 1 + .../newusers/10_newusers_time_0/data/passwd | 20 + .../newusers/10_newusers_time_0/data/shadow | 20 + .../newusers/10_newusers_time_0/newusers.test | 39 + .../01_pwck_system_passwd_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/pwck.err | 2 + .../01_pwck_system_passwd_open_failure/pwck.test | 54 + .../pwck/02_pwck_passwd_open_failure/config.txt | 1 + .../02_pwck_passwd_open_failure/config/etc/group | 42 + .../02_pwck_passwd_open_failure/config/etc/gshadow | 42 + .../02_pwck_passwd_open_failure/config/etc/passwd | 19 + .../02_pwck_passwd_open_failure/config/etc/shadow | 19 + .../pwck/02_pwck_passwd_open_failure/data/pwck.err | 2 + .../pwck/02_pwck_passwd_open_failure/pwck.test | 54 + .../03_pwck_system_shadow_open_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/pwck.err | 2 + .../03_pwck_system_shadow_open_failure/pwck.test | 54 + .../pwck/04_pwck_shadow_open_failure/config.txt | 1 + .../04_pwck_shadow_open_failure/config/etc/group | 42 + .../04_pwck_shadow_open_failure/config/etc/gshadow | 42 + .../04_pwck_shadow_open_failure/config/etc/passwd | 19 + .../04_pwck_shadow_open_failure/config/etc/shadow | 19 + .../pwck/04_pwck_shadow_open_failure/data/passwd | 19 + .../pwck/04_pwck_shadow_open_failure/data/pwck.err | 2 + .../pwck/04_pwck_shadow_open_failure/pwck.test | 54 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwck.err | 2 + .../pwck.test | 54 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd | 20 + .../data/pwck.err | 2 + .../pwck.test | 54 + .../07_pwck_sort_passwd_rename_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../07_pwck_sort_passwd_rename_failure/data/passwd | 20 + .../data/pwck.err | 2 + .../07_pwck_sort_passwd_rename_failure/pwck.test | 59 + .../08_pwck_sort_shadow_rename_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../08_pwck_sort_shadow_rename_failure/data/passwd | 20 + .../data/passwd.out | 20 + .../data/pwck.err | 2 + .../08_pwck_sort_shadow_rename_failure/data/shadow | 20 + .../08_pwck_sort_shadow_rename_failure/pwck.test | 59 + .../09_pwck_create_shadow_entry_time_0/config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 12 + .../config/etc/shadow | 11 + .../09_pwck_create_shadow_entry_time_0/data/shadow | 12 + .../09_pwck_create_shadow_entry_time_0/pwck.exp | 20 + .../09_pwck_create_shadow_entry_time_0/pwck.test | 37 + .../01_pwconv_open_passwd_failure/config.txt | 1 + .../01_pwconv_open_passwd_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../01_pwconv_open_passwd_failure/data/pwconv.err | 2 + .../01_pwconv_open_passwd_failure/pwconv.test | 58 + .../02_pwconv_open_shadow_failure/config.txt | 1 + .../02_pwconv_open_shadow_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../02_pwconv_open_shadow_failure/data/pwconv.err | 2 + .../02_pwconv_open_shadow_failure/pwconv.test | 58 + .../03_pwconv_rename_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwconv.err | 2 + .../03_pwconv_rename_passwd_failure/data/shadow | 20 + .../03_pwconv_rename_passwd_failure/pwconv.test | 58 + .../04_pwconv_rename_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwconv.err | 2 + .../04_pwconv_rename_shadow_failure/pwconv.test | 58 + .../failures/pwconv/05_pwconv_time_0/config.txt | 2 + .../pwconv/05_pwconv_time_0/config/etc/group | 42 + .../pwconv/05_pwconv_time_0/config/etc/gshadow | 42 + .../pwconv/05_pwconv_time_0/config/etc/passwd | 20 + .../pwconv/05_pwconv_time_0/config/etc/shadow | 20 + .../failures/pwconv/05_pwconv_time_0/data/passwd | 20 + .../failures/pwconv/05_pwconv_time_0/data/shadow | 20 + .../failures/pwconv/05_pwconv_time_0/pwconv.test | 43 + .../01_pwunconv_passwd_rename_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwunconv.err | 2 + .../pwunconv.test | 54 + .../02_pwunconv_open_passwd_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwunconv.err | 2 + .../02_pwunconv_open_passwd_failure/pwunconv.test | 54 + .../03_pwunconv_open_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/pwunconv.err | 2 + .../03_pwunconv_open_shadow_failure/pwunconv.test | 54 + .../04_pwunconv_unlink_shadow_failure/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../04_pwunconv_unlink_shadow_failure/data/passwd | 20 + .../data/pwunconv.err | 2 + .../pwunconv.test | 54 + .../01_useradd_open_passwd_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/useradd.err | 2 + .../01_useradd_open_passwd_failure/useradd.test | 54 + .../02_useradd_open_shadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/useradd.err | 2 + .../02_useradd_open_shadow_failure/useradd.test | 54 + .../03_useradd_open_group_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../03_useradd_open_group_failure/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../03_useradd_open_group_failure/data/useradd.err | 2 + .../03_useradd_open_group_failure/useradd.test | 54 + .../04_useradd_open_gshadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/useradd.err | 2 + .../04_useradd_open_gshadow_failure/useradd.test | 54 + .../05_useradd_rename_passwd_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/useradd.err | 2 + .../05_useradd_rename_passwd_failure/useradd.test | 54 + .../06_useradd_rename_shadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../06_useradd_rename_shadow_failure/data/passwd | 20 + .../data/useradd.err | 2 + .../06_useradd_rename_shadow_failure/useradd.test | 54 + .../07_useradd_rename_group_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../07_useradd_rename_group_failure/data/passwd | 20 + .../07_useradd_rename_group_failure/data/shadow | 20 + .../data/useradd.err | 2 + .../07_useradd_rename_group_failure/useradd.test | 54 + .../08_useradd_rename_gshadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../08_useradd_rename_gshadow_failure/data/group | 42 + .../08_useradd_rename_gshadow_failure/data/passwd | 20 + .../08_useradd_rename_gshadow_failure/data/shadow | 20 + .../data/useradd.err | 2 + .../08_useradd_rename_gshadow_failure/useradd.test | 54 + .../09_useradd_rename_defaults_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/useradd.err | 2 + .../useradd.test | 55 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/useradd.err | 2 + .../useradd.test | 54 + .../failures/useradd/11_useradd_time_0/config.txt | 2 + .../11_useradd_time_0/config/etc/default/useradd | 36 + .../useradd/11_useradd_time_0/config/etc/group | 41 + .../useradd/11_useradd_time_0/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../useradd/11_useradd_time_0/config/etc/passwd | 19 + .../useradd/11_useradd_time_0/config/etc/shadow | 19 + .../failures/useradd/11_useradd_time_0/data/group | 42 + .../useradd/11_useradd_time_0/data/gshadow | 42 + .../useradd/11_useradd_time_0/data/newusers.list | 1 + .../failures/useradd/11_useradd_time_0/data/passwd | 20 + .../failures/useradd/11_useradd_time_0/data/shadow | 20 + .../useradd/11_useradd_time_0/useradd.test | 39 + .../12_useradd_open_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../12_useradd_open_subuid_failure/useradd.test | 60 + .../13_useradd_open_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../13_useradd_open_subgid_failure/useradd.test | 60 + .../14_username_rename_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../14_username_rename_subuid_failure/data/group | 42 + .../14_username_rename_subuid_failure/data/gshadow | 42 + .../14_username_rename_subuid_failure/data/passwd | 20 + .../14_username_rename_subuid_failure/data/shadow | 20 + .../data/useradd.err | 2 + .../14_username_rename_subuid_failure/useradd.test | 60 + .../15_username_rename_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../15_username_rename_subgid_failure/data/group | 42 + .../15_username_rename_subgid_failure/data/gshadow | 42 + .../15_username_rename_subgid_failure/data/passwd | 20 + .../15_username_rename_subgid_failure/data/shadow | 20 + .../15_username_rename_subgid_failure/data/subuid | 1 + .../data/useradd.err | 2 + .../15_username_rename_subgid_failure/useradd.test | 60 + .../01_userdel_gshadow_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../01_userdel_gshadow_rename_failure/data/group | 41 + .../01_userdel_gshadow_rename_failure/data/passwd | 19 + .../01_userdel_gshadow_rename_failure/data/shadow | 19 + .../data/userdel.err | 2 + .../01_userdel_gshadow_rename_failure/userdel.test | 54 + .../02_userdel_group_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../02_userdel_group_rename_failure/data/passwd | 19 + .../02_userdel_group_rename_failure/data/shadow | 19 + .../data/userdel.err | 2 + .../02_userdel_group_rename_failure/userdel.test | 54 + .../03_userdel_shadow_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../03_userdel_shadow_rename_failure/data/passwd | 19 + .../data/userdel.err | 2 + .../03_userdel_shadow_rename_failure/userdel.test | 54 + .../04_userdel_passwd_rename_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/userdel.err | 2 + .../04_userdel_passwd_rename_failure/userdel.test | 54 + .../05_userdel_failure_remove_mailbox/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/var/mail/foo | 0 .../05_userdel_failure_remove_mailbox/data/group | 41 + .../05_userdel_failure_remove_mailbox/data/gshadow | 41 + .../05_userdel_failure_remove_mailbox/data/passwd | 19 + .../05_userdel_failure_remove_mailbox/data/shadow | 19 + .../data/userdel.err | 3 + .../05_userdel_failure_remove_mailbox/userdel.test | 58 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 41 + .../data/gshadow | 41 + .../data/passwd | 19 + .../data/shadow | 19 + .../data/userdel.err | 3 + .../userdel.test | 64 + .../07_userdel_failure_remove_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../07_userdel_failure_remove_homedir/data/group | 41 + .../07_userdel_failure_remove_homedir/data/gshadow | 41 + .../07_userdel_failure_remove_homedir/data/passwd | 19 + .../07_userdel_failure_remove_homedir/data/shadow | 19 + .../data/userdel.err | 3 + .../07_userdel_failure_remove_homedir/userdel.test | 64 + .../08_userdel_open_passwd_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/userdel.err | 2 + .../08_userdel_open_passwd_failure/userdel.test | 54 + .../09_userdel_open_shadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/userdel.err | 2 + .../09_userdel_open_shadow_failure/userdel.test | 54 + .../10_userdel_open_group_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../10_userdel_open_group_failure/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../10_userdel_open_group_failure/data/userdel.err | 2 + .../10_userdel_open_group_failure/userdel.test | 54 + .../11_userdel_open_gshadow_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/userdel.err | 2 + .../11_userdel_open_gshadow_failure/userdel.test | 54 + .../12_userdel_open_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/userdel.err | 2 + .../12_userdel_open_subuid_failure/userdel.test | 60 + .../13_userdel_open_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/userdel.err | 2 + .../13_userdel_open_subgid_failure/userdel.test | 60 + .../14_userdel_rename_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../14_userdel_rename_subuid_failure/data/group | 41 + .../14_userdel_rename_subuid_failure/data/gshadow | 41 + .../14_userdel_rename_subuid_failure/data/passwd | 19 + .../14_userdel_rename_subuid_failure/data/shadow | 19 + .../data/userdel.err | 2 + .../14_userdel_rename_subuid_failure/usedel.test | 60 + .../15_userdel_rename_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 2 + .../15_userdel_rename_subgid_failure/data/group | 41 + .../15_userdel_rename_subgid_failure/data/gshadow | 41 + .../15_userdel_rename_subgid_failure/data/passwd | 19 + .../15_userdel_rename_subgid_failure/data/shadow | 19 + .../15_userdel_rename_subgid_failure/data/subuid | 1 + .../data/userdel.err | 2 + .../15_userdel_rename_subgid_failure/usedel.test | 60 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd | 20 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 54 + .../usermod/10_usermod_-p_time_0/config.txt | 2 + .../config/etc/default/useradd | 36 + .../usermod/10_usermod_-p_time_0/config/etc/group | 42 + .../10_usermod_-p_time_0/config/etc/gshadow | 42 + .../usermod/10_usermod_-p_time_0/config/etc/passwd | 20 + .../usermod/10_usermod_-p_time_0/config/etc/shadow | 20 + .../usermod/10_usermod_-p_time_0/data/passwd | 20 + .../usermod/10_usermod_-p_time_0/data/shadow | 20 + .../usermod/10_usermod_-p_time_0/usermod.test | 39 + .../11_usermod-f_no_shadow_entry_time_0/config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 2 + .../usermod.test | 50 + .../13_usermod_-v_open_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/usermod.err | 2 + .../13_usermod_-v_open_subuid_failure/usermod.test | 60 + .../14_usermod_-V_open_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/usermod.err | 2 + .../14_usermod_-V_open_subuid_failure/usermod.test | 60 + .../15_usermod_-w_open_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/usermod.err | 2 + .../15_usermod_-w_open_subgid_failure/usermod.test | 60 + .../16_usermod_-W_open_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/usermod.err | 2 + .../16_usermod_-W_open_subgid_failure/usermod.test | 60 + .../17_usermod_-v_rename_subuid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/usermod.err | 2 + .../usermod.test | 60 + .../18_usermod_-w_rename_subgid_failure/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/usermod.err | 2 + .../usermod.test | 60 + .../01_chgpasswd_invalid_group/chgpasswd.test | 56 + .../01_chgpasswd_invalid_group/config/etc/group | 41 + .../01_chgpasswd_invalid_group/config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../01_chgpasswd_invalid_group/config/etc/passwd | 19 + .../01_chgpasswd_invalid_group/config/etc/shadow | 19 + .../01_chgpasswd_invalid_group/data/chgpasswd.err | 2 + .../02_chgpasswd_multiple_groups/chgpasswd.test | 40 + .../02_chgpasswd_multiple_groups/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../02_chgpasswd_multiple_groups/config/etc/passwd | 19 + .../02_chgpasswd_multiple_groups/config/etc/shadow | 19 + .../02_chgpasswd_multiple_groups/data/gshadow | 41 + .../03_chgpasswd_no_gshadow_file/chgpasswd.test | 44 + .../03_chgpasswd_no_gshadow_file/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../03_chgpasswd_no_gshadow_file/config/etc/passwd | 19 + .../03_chgpasswd_no_gshadow_file/config/etc/shadow | 19 + .../03_chgpasswd_no_gshadow_file/data/group | 41 + .../04_chgpasswd_no_gshadow_entry/chgpasswd.test | 40 + .../04_chgpasswd_no_gshadow_entry/config/etc/group | 41 + .../config/etc/gshadow | 40 + .../config/etc/login.defs | 317 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../04_chgpasswd_no_gshadow_entry/data/group | 41 + .../04_chgpasswd_no_gshadow_entry/data/gshadow | 41 + .../05_chgpasswd_error_no_password/chgpasswd.test | 55 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/chgpasswd.err | 2 + .../chgpasswd/06_chgpasswd_usage/chgpasswd.test | 48 + .../chgpasswd/06_chgpasswd_usage/config.txt | 10 + .../06_chgpasswd_usage/config/etc/default/useradd | 36 + .../chgpasswd/06_chgpasswd_usage/config/etc/group | 41 + .../06_chgpasswd_usage/config/etc/gshadow | 41 + .../chgpasswd/06_chgpasswd_usage/config/etc/passwd | 19 + .../chgpasswd/06_chgpasswd_usage/config/etc/shadow | 19 + .../chgpasswd/06_chgpasswd_usage/data/usage.out | 12 + .../07_chgpasswd_usage_bad_option/chgpasswd.test | 54 + .../07_chgpasswd_usage_bad_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../07_chgpasswd_usage_bad_option/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../07_chgpasswd_usage_bad_option/data/usage.out | 13 + .../chgpasswd.test | 54 + .../08_chgpasswd_usage-e-m_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/usage.out | 13 + .../chgpasswd.test | 54 + .../09_chgpasswd_usage-e-c_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/usage.out | 13 + .../chgpasswd.test | 54 + .../10_chgpasswd_usage-m-c_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/usage.out | 13 + .../11_chgpasswd_usage-s_without-c/chgpasswd.test | 54 + .../11_chgpasswd_usage-s_without-c/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../11_chgpasswd_usage-s_without-c/data/usage.out | 13 + .../12_chgpasswd_usage-s_invalid/chgpasswd.test | 54 + .../12_chgpasswd_usage-s_invalid/config.txt | 10 + .../config/etc/default/useradd | 36 + .../12_chgpasswd_usage-s_invalid/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../12_chgpasswd_usage-s_invalid/config/etc/passwd | 20 + .../12_chgpasswd_usage-s_invalid/config/etc/shadow | 19 + .../12_chgpasswd_usage-s_invalid/data/usage.out | 13 + .../13_chgpasswd_usage-c_invalid/chgpasswd.test | 54 + .../13_chgpasswd_usage-c_invalid/config.txt | 10 + .../config/etc/default/useradd | 36 + .../13_chgpasswd_usage-c_invalid/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../13_chgpasswd_usage-c_invalid/config/etc/passwd | 20 + .../13_chgpasswd_usage-c_invalid/config/etc/shadow | 19 + .../13_chgpasswd_usage-c_invalid/data/usage.out | 13 + .../14_chgpasswd_password_encrypted/chgpasswd.test | 40 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../14_chgpasswd_password_encrypted/data/gshadow | 41 + .../15_chgpasswd_password_md5/chgpasswd.test | 40 + .../15_chgpasswd_password_md5/config/etc/group | 41 + .../15_chgpasswd_password_md5/config/etc/gshadow | 41 + .../15_chgpasswd_password_md5/config/etc/passwd | 19 + .../15_chgpasswd_password_md5/config/etc/shadow | 19 + .../15_chgpasswd_password_md5/data/gshadow | 41 + .../16_chgpasswd_password_NONE/chgpasswd.test | 40 + .../16_chgpasswd_password_NONE/config/etc/group | 41 + .../16_chgpasswd_password_NONE/config/etc/gshadow | 41 + .../16_chgpasswd_password_NONE/config/etc/passwd | 19 + .../16_chgpasswd_password_NONE/config/etc/shadow | 19 + .../16_chgpasswd_password_NONE/data/gshadow | 41 + .../17_chgpasswd_password_MD5/chgpasswd.test | 40 + .../17_chgpasswd_password_MD5/config/etc/group | 41 + .../17_chgpasswd_password_MD5/config/etc/gshadow | 41 + .../17_chgpasswd_password_MD5/config/etc/passwd | 19 + .../17_chgpasswd_password_MD5/config/etc/shadow | 19 + .../17_chgpasswd_password_MD5/data/gshadow | 41 + .../18_chgpasswd_password_DES/chgpasswd.test | 40 + .../18_chgpasswd_password_DES/config/etc/group | 41 + .../18_chgpasswd_password_DES/config/etc/gshadow | 41 + .../18_chgpasswd_password_DES/config/etc/passwd | 19 + .../18_chgpasswd_password_DES/config/etc/shadow | 19 + .../18_chgpasswd_password_DES/data/gshadow | 41 + .../19_chgpasswd_password_SHA256/chgpasswd.test | 40 + .../19_chgpasswd_password_SHA256/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../19_chgpasswd_password_SHA256/config/etc/passwd | 19 + .../19_chgpasswd_password_SHA256/config/etc/shadow | 19 + .../19_chgpasswd_password_SHA256/data/gshadow | 41 + .../chgpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gshadow | 41 + .../chgpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gshadow | 41 + .../22_chgpasswd_password_SHA512/chgpasswd.test | 40 + .../22_chgpasswd_password_SHA512/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../22_chgpasswd_password_SHA512/config/etc/passwd | 19 + .../22_chgpasswd_password_SHA512/config/etc/shadow | 19 + .../22_chgpasswd_password_SHA512/data/gshadow | 41 + .../chgpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gshadow | 41 + .../chgpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gshadow | 41 + .../25_chgpasswd-e_no_gshadow_file/chgpasswd.test | 44 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../25_chgpasswd-e_no_gshadow_file/data/group | 41 + .../chgpasswd.test | 44 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 41 + .../29_chgpasswd-e_no_gshadow_entry/chgpasswd.test | 40 + .../config/etc/group | 41 + .../config/etc/gshadow | 40 + .../config/etc/passwd | 19 + .../config/etc/shadow | 18 + .../29_chgpasswd-e_no_gshadow_entry/data/group | 41 + .../29_chgpasswd-e_no_gshadow_entry/data/gshadow | 41 + .../30_chgpasswd_locked_group/chgpasswd.test | 61 + .../chgpasswd/30_chgpasswd_locked_group/config.txt | 0 .../config/etc/default/useradd | 36 + .../30_chgpasswd_locked_group/config/etc/group | 42 + .../30_chgpasswd_locked_group/config/etc/gshadow | 42 + .../30_chgpasswd_locked_group/config/etc/passwd | 20 + .../30_chgpasswd_locked_group/config/etc/shadow | 20 + .../30_chgpasswd_locked_group/data/chgpasswd.err | 2 + .../31_chgpasswd_locked_gshadow/chgpasswd.test | 61 + .../31_chgpasswd_locked_gshadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../31_chgpasswd_locked_gshadow/config/etc/group | 42 + .../31_chgpasswd_locked_gshadow/config/etc/gshadow | 42 + .../31_chgpasswd_locked_gshadow/config/etc/passwd | 20 + .../31_chgpasswd_locked_gshadow/config/etc/shadow | 20 + .../31_chgpasswd_locked_gshadow/data/chgpasswd.err | 2 + .../32_chgpasswd_invalid_group/chgpasswd.test | 56 + .../32_chgpasswd_invalid_group/config.txt | 0 .../config/etc/default/useradd | 36 + .../32_chgpasswd_invalid_group/config/etc/group | 42 + .../32_chgpasswd_invalid_group/config/etc/gshadow | 42 + .../32_chgpasswd_invalid_group/config/etc/passwd | 20 + .../32_chgpasswd_invalid_group/config/etc/shadow | 20 + .../32_chgpasswd_invalid_group/data/chgpasswd.err | 2 + .../01_gpasswd_change_member_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../01_gpasswd_change_member_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../01_gpasswd_change_member_list/data/group | 42 + .../01_gpasswd_change_member_list/data/gshadow | 42 + .../01_gpasswd_change_member_list/gpasswd.test | 39 + .../02_gpasswd_change_member_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../02_gpasswd_change_member_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../02_gpasswd_change_member_list/data/group | 42 + .../02_gpasswd_change_member_list/data/gshadow | 42 + .../02_gpasswd_change_member_list/gpasswd.test | 39 + .../03_gpasswd_change_member_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../03_gpasswd_change_member_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../03_gpasswd_change_member_list/data/group | 42 + .../03_gpasswd_change_member_list/data/gshadow | 42 + .../03_gpasswd_change_member_list/gpasswd.test | 39 + .../04_gpasswd_change_member_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../04_gpasswd_change_member_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../04_gpasswd_change_member_list/data/group | 42 + .../04_gpasswd_change_member_list/data/gshadow | 42 + .../04_gpasswd_change_member_list/gpasswd.test | 39 + .../05_gpasswd_change_member_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../05_gpasswd_change_member_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../05_gpasswd_change_member_list/data/group | 42 + .../05_gpasswd_change_member_list/data/gshadow | 42 + .../05_gpasswd_change_member_list/gpasswd.test | 39 + .../06_gpasswd_change_member_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../06_gpasswd_change_member_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../06_gpasswd_change_member_list/data/group | 42 + .../06_gpasswd_change_member_list/data/gshadow | 42 + .../06_gpasswd_change_member_list/gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 43 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../19_gpasswd_change_passwd-root/config.txt | 3 + .../19_gpasswd_change_passwd-root/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../19_gpasswd_change_passwd-root/data/gshadow | 42 + .../19_gpasswd_change_passwd-root/gpasswd.exp | 70 + .../19_gpasswd_change_passwd-root/gpasswd.test | 42 + .../config.txt | 3 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 42 + .../gpasswd.exp | 70 + .../gpasswd.test | 42 + .../config.txt | 3 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.exp | 70 + .../gpasswd.test | 45 + .../22_gpasswd_change_passwd-myuser/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../22_gpasswd_change_passwd-myuser/data/gshadow | 42 + .../22_gpasswd_change_passwd-myuser/gpasswd.exp | 70 + .../22_gpasswd_change_passwd-myuser/gpasswd.test | 42 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../gpasswd.exp | 60 + .../gpasswd.test | 42 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../gpasswd.exp | 59 + .../gpasswd.test | 45 + .../gpasswd/25_gpasswd_remove_password/config.txt | 5 + .../config/etc/default/useradd | 36 + .../25_gpasswd_remove_password/config/etc/group | 42 + .../25_gpasswd_remove_password/config/etc/gshadow | 42 + .../25_gpasswd_remove_password/config/etc/passwd | 20 + .../25_gpasswd_remove_password/config/etc/shadow | 20 + .../gpasswd/25_gpasswd_remove_password/data/group | 42 + .../25_gpasswd_remove_password/data/gshadow | 42 + .../25_gpasswd_remove_password/gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../gpasswd/28_gpasswd_lock_password/config.txt | 5 + .../config/etc/default/useradd | 36 + .../28_gpasswd_lock_password/config/etc/group | 42 + .../28_gpasswd_lock_password/config/etc/gshadow | 42 + .../28_gpasswd_lock_password/config/etc/passwd | 20 + .../28_gpasswd_lock_password/config/etc/shadow | 20 + .../gpasswd/28_gpasswd_lock_password/data/group | 42 + .../gpasswd/28_gpasswd_lock_password/data/gshadow | 42 + .../gpasswd/28_gpasswd_lock_password/gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../31_gpasswd_add_user_to_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../31_gpasswd_add_user_to_group/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../31_gpasswd_add_user_to_group/config/etc/passwd | 20 + .../31_gpasswd_add_user_to_group/config/etc/shadow | 20 + .../31_gpasswd_add_user_to_group/data/group | 42 + .../31_gpasswd_add_user_to_group/data/gshadow | 42 + .../31_gpasswd_add_user_to_group/gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../34_gpasswd_remove_user_from_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../34_gpasswd_remove_user_from_group/data/group | 42 + .../34_gpasswd_remove_user_from_group/data/gshadow | 42 + .../34_gpasswd_remove_user_from_group/gpasswd.test | 39 + .../35_gpasswd_remove_user_from_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../35_gpasswd_remove_user_from_group/data/group | 42 + .../35_gpasswd_remove_user_from_group/data/gshadow | 42 + .../35_gpasswd_remove_user_from_group/gpasswd.test | 39 + .../36_gpasswd_remove_user_from_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../36_gpasswd_remove_user_from_group/data/group | 42 + .../36_gpasswd_remove_user_from_group/data/gshadow | 42 + .../36_gpasswd_remove_user_from_group/gpasswd.test | 40 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 42 + .../gpasswd/43_gpasswd_-r_locked_group/config.txt | 10 + .../config/etc/default/useradd | 36 + .../43_gpasswd_-r_locked_group/config/etc/group | 42 + .../43_gpasswd_-r_locked_group/config/etc/gshadow | 42 + .../43_gpasswd_-r_locked_group/config/etc/passwd | 20 + .../43_gpasswd_-r_locked_group/config/etc/shadow | 20 + .../43_gpasswd_-r_locked_group/data/gpasswd.err | 2 + .../43_gpasswd_-r_locked_group/gpasswd.test | 60 + .../44_gpasswd_-r_locked_gshadow/config.txt | 10 + .../config/etc/default/useradd | 36 + .../44_gpasswd_-r_locked_gshadow/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../44_gpasswd_-r_locked_gshadow/config/etc/passwd | 20 + .../44_gpasswd_-r_locked_gshadow/config/etc/shadow | 20 + .../44_gpasswd_-r_locked_gshadow/data/gpasswd.err | 2 + .../44_gpasswd_-r_locked_gshadow/gpasswd.test | 60 + .../gpasswd/45_gpasswd_-r_unknown_group/config.txt | 10 + .../config/etc/default/useradd | 36 + .../45_gpasswd_-r_unknown_group/config/etc/group | 42 + .../45_gpasswd_-r_unknown_group/config/etc/gshadow | 42 + .../45_gpasswd_-r_unknown_group/config/etc/passwd | 20 + .../45_gpasswd_-r_unknown_group/config/etc/shadow | 20 + .../45_gpasswd_-r_unknown_group/data/gpasswd.err | 1 + .../45_gpasswd_-r_unknown_group/gpasswd.test | 54 + .../gpasswd/46_gpasswd_-a_unknown_user/config.txt | 10 + .../config/etc/default/useradd | 36 + .../46_gpasswd_-a_unknown_user/config/etc/group | 42 + .../46_gpasswd_-a_unknown_user/config/etc/gshadow | 42 + .../46_gpasswd_-a_unknown_user/config/etc/passwd | 20 + .../46_gpasswd_-a_unknown_user/config/etc/shadow | 20 + .../46_gpasswd_-a_unknown_user/data/gpasswd.err | 1 + .../46_gpasswd_-a_unknown_user/gpasswd.test | 54 + .../gpasswd/47_gpasswd_-M_unknown_user/config.txt | 10 + .../config/etc/default/useradd | 36 + .../47_gpasswd_-M_unknown_user/config/etc/group | 42 + .../47_gpasswd_-M_unknown_user/config/etc/gshadow | 42 + .../47_gpasswd_-M_unknown_user/config/etc/passwd | 20 + .../47_gpasswd_-M_unknown_user/config/etc/shadow | 20 + .../47_gpasswd_-M_unknown_user/data/gpasswd.err | 1 + .../47_gpasswd_-M_unknown_user/gpasswd.test | 54 + .../48_gpasswd_change_admin_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../48_gpasswd_change_admin_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../48_gpasswd_change_admin_list/config/etc/passwd | 20 + .../48_gpasswd_change_admin_list/config/etc/shadow | 20 + .../48_gpasswd_change_admin_list/data/gshadow | 42 + .../48_gpasswd_change_admin_list/gpasswd.test | 39 + .../49_gpasswd_change_admin_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../49_gpasswd_change_admin_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../49_gpasswd_change_admin_list/config/etc/passwd | 20 + .../49_gpasswd_change_admin_list/config/etc/shadow | 20 + .../49_gpasswd_change_admin_list/data/gshadow | 42 + .../49_gpasswd_change_admin_list/gpasswd.test | 39 + .../50_gpasswd_change_admin_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../50_gpasswd_change_admin_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../50_gpasswd_change_admin_list/config/etc/passwd | 20 + .../50_gpasswd_change_admin_list/config/etc/shadow | 20 + .../50_gpasswd_change_admin_list/data/gshadow | 42 + .../50_gpasswd_change_admin_list/gpasswd.test | 39 + .../51_gpasswd_change_admin_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../51_gpasswd_change_admin_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../51_gpasswd_change_admin_list/config/etc/passwd | 20 + .../51_gpasswd_change_admin_list/config/etc/shadow | 20 + .../51_gpasswd_change_admin_list/data/gshadow | 42 + .../51_gpasswd_change_admin_list/gpasswd.test | 39 + .../52_gpasswd_change_admin_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../52_gpasswd_change_admin_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../52_gpasswd_change_admin_list/config/etc/passwd | 20 + .../52_gpasswd_change_admin_list/config/etc/shadow | 20 + .../52_gpasswd_change_admin_list/data/gshadow | 42 + .../52_gpasswd_change_admin_list/gpasswd.test | 39 + .../53_gpasswd_change_admin_list/config.txt | 5 + .../config/etc/default/useradd | 36 + .../53_gpasswd_change_admin_list/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../53_gpasswd_change_admin_list/config/etc/passwd | 20 + .../53_gpasswd_change_admin_list/config/etc/shadow | 20 + .../53_gpasswd_change_admin_list/data/gshadow | 42 + .../53_gpasswd_change_admin_list/gpasswd.test | 39 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gpasswd.err | 1 + .../gpasswd.test | 57 + .../56_gpasswd_add_user_to_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../56_gpasswd_add_user_to_group/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../56_gpasswd_add_user_to_group/config/etc/passwd | 20 + .../56_gpasswd_add_user_to_group/config/etc/shadow | 20 + .../56_gpasswd_add_user_to_group/gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gpasswd.err | 1 + .../gpasswd.test | 54 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../gpasswd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/gshadow | 42 + .../gpasswd.test | 39 + .../60_gpasswd_add_long_user_to_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../60_gpasswd_add_long_user_to_group/data/group | 42 + .../60_gpasswd_add_long_user_to_group/data/gshadow | 42 + .../60_gpasswd_add_long_user_to_group/gpasswd.test | 39 + .../grouptools/gpasswd/61_gpasswd_usage/config.txt | 10 + .../gpasswd/61_gpasswd_usage/config/etc/group | 41 + .../gpasswd/61_gpasswd_usage/config/etc/gshadow | 41 + .../gpasswd/61_gpasswd_usage/config/etc/passwd | 19 + .../gpasswd/61_gpasswd_usage/config/etc/shadow | 19 + .../gpasswd/61_gpasswd_usage/data/usage.out | 13 + .../gpasswd/61_gpasswd_usage/gpasswd.test | 49 + .../gpasswd/62_gpasswd_-A_unknown_user/config.txt | 10 + .../config/etc/default/useradd | 36 + .../62_gpasswd_-A_unknown_user/config/etc/group | 42 + .../62_gpasswd_-A_unknown_user/config/etc/gshadow | 42 + .../62_gpasswd_-A_unknown_user/config/etc/passwd | 20 + .../62_gpasswd_-A_unknown_user/config/etc/shadow | 20 + .../62_gpasswd_-A_unknown_user/data/gpasswd.err | 1 + .../62_gpasswd_-A_unknown_user/gpasswd.test | 54 + .../gpasswd/63_gpasswd_usage_bad_option/config.txt | 10 + .../63_gpasswd_usage_bad_option/config/etc/group | 41 + .../63_gpasswd_usage_bad_option/config/etc/gshadow | 41 + .../63_gpasswd_usage_bad_option/config/etc/passwd | 19 + .../63_gpasswd_usage_bad_option/config/etc/shadow | 19 + .../63_gpasswd_usage_bad_option/data/usage.out | 14 + .../63_gpasswd_usage_bad_option/gpasswd.test | 54 + .../gpasswd/64_gpasswd_usage-a-d/config.txt | 10 + .../gpasswd/64_gpasswd_usage-a-d/config/etc/group | 41 + .../64_gpasswd_usage-a-d/config/etc/gshadow | 41 + .../gpasswd/64_gpasswd_usage-a-d/config/etc/passwd | 19 + .../gpasswd/64_gpasswd_usage-a-d/config/etc/shadow | 19 + .../gpasswd/64_gpasswd_usage-a-d/data/usage.out | 13 + .../gpasswd/64_gpasswd_usage-a-d/gpasswd.test | 54 + .../gpasswd/65_gpasswd_usage_no_groups/config.txt | 10 + .../65_gpasswd_usage_no_groups/config/etc/group | 41 + .../65_gpasswd_usage_no_groups/config/etc/gshadow | 41 + .../65_gpasswd_usage_no_groups/config/etc/passwd | 19 + .../65_gpasswd_usage_no_groups/config/etc/shadow | 19 + .../65_gpasswd_usage_no_groups/data/usage.out | 13 + .../65_gpasswd_usage_no_groups/gpasswd.test | 54 + .../gpasswd/66_gpasswd_usage_2_groups/config.txt | 10 + .../66_gpasswd_usage_2_groups/config/etc/group | 41 + .../66_gpasswd_usage_2_groups/config/etc/gshadow | 41 + .../66_gpasswd_usage_2_groups/config/etc/passwd | 19 + .../66_gpasswd_usage_2_groups/config/etc/shadow | 19 + .../66_gpasswd_usage_2_groups/data/usage.out | 13 + .../gpasswd/66_gpasswd_usage_2_groups/gpasswd.test | 54 + .../gpasswd/67_gpasswd-A_myuser/config.txt | 1 + .../gpasswd/67_gpasswd-A_myuser/config/etc/group | 42 + .../gpasswd/67_gpasswd-A_myuser/config/etc/gshadow | 42 + .../gpasswd/67_gpasswd-A_myuser/config/etc/passwd | 21 + .../gpasswd/67_gpasswd-A_myuser/config/etc/shadow | 21 + .../gpasswd/67_gpasswd-A_myuser/gpasswd.exp | 59 + .../gpasswd/67_gpasswd-A_myuser/gpasswd.test | 42 + .../gpasswd/68_gpasswd-M_myuser/config.txt | 1 + .../gpasswd/68_gpasswd-M_myuser/config/etc/group | 42 + .../gpasswd/68_gpasswd-M_myuser/config/etc/gshadow | 42 + .../gpasswd/68_gpasswd-M_myuser/config/etc/passwd | 21 + .../gpasswd/68_gpasswd-M_myuser/config/etc/shadow | 21 + .../gpasswd/68_gpasswd-M_myuser/gpasswd.exp | 60 + .../gpasswd/68_gpasswd-M_myuser/gpasswd.test | 42 + .../69_gpasswd_change_passwd_2_tries/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../69_gpasswd_change_passwd_2_tries/data/gshadow | 42 + .../69_gpasswd_change_passwd_2_tries/gpasswd.exp | 87 + .../69_gpasswd_change_passwd_2_tries/gpasswd.test | 42 + .../70_gpasswd_change_passwd_3_tries/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../70_gpasswd_change_passwd_3_tries/data/gshadow | 42 + .../70_gpasswd_change_passwd_3_tries/gpasswd.exp | 96 + .../70_gpasswd_change_passwd_3_tries/gpasswd.test | 42 + .../71_gpasswd_change_passwd_4_tries/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../71_gpasswd_change_passwd_4_tries/gpasswd.exp | 96 + .../71_gpasswd_change_passwd_4_tries/gpasswd.test | 42 + .../grouptools/gpasswd/72_gpasswd-M-A/config.txt | 5 + .../gpasswd/72_gpasswd-M-A/config/etc/group | 42 + .../gpasswd/72_gpasswd-M-A/config/etc/gshadow | 42 + .../gpasswd/72_gpasswd-M-A/config/etc/passwd | 20 + .../gpasswd/72_gpasswd-M-A/config/etc/shadow | 20 + .../grouptools/gpasswd/72_gpasswd-M-A/data/group | 42 + .../grouptools/gpasswd/72_gpasswd-M-A/data/gshadow | 42 + .../grouptools/gpasswd/72_gpasswd-M-A/gpasswd.test | 39 + .../groupadd/01_groupadd_add_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../01_groupadd_add_group/config/etc/group | 41 + .../01_groupadd_add_group/config/etc/gshadow | 41 + .../01_groupadd_add_group/config/etc/login.defs | 314 + .../01_groupadd_add_group/config/etc/passwd | 19 + .../01_groupadd_add_group/config/etc/shadow | 19 + .../groupadd/01_groupadd_add_group/data/group | 42 + .../groupadd/01_groupadd_add_group/data/gshadow | 42 + .../groupadd/01_groupadd_add_group/groupadd.test | 39 + .../02_groupadd_add_group_GID_MIN/config.txt | 5 + .../config/etc/default/useradd | 36 + .../02_groupadd_add_group_GID_MIN/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../02_groupadd_add_group_GID_MIN/data/group | 42 + .../02_groupadd_add_group_GID_MIN/data/gshadow | 42 + .../02_groupadd_add_group_GID_MIN/groupadd.test | 39 + .../03_groupadd_add_group_-K_GID_MIN/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../03_groupadd_add_group_-K_GID_MIN/data/group | 42 + .../03_groupadd_add_group_-K_GID_MIN/data/gshadow | 42 + .../03_groupadd_add_group_-K_GID_MIN/groupadd.test | 39 + .../groupadd/04_groupadd_set_password/config.txt | 5 + .../config/etc/default/useradd | 36 + .../04_groupadd_set_password/config/etc/group | 41 + .../04_groupadd_set_password/config/etc/gshadow | 41 + .../04_groupadd_set_password/config/etc/login.defs | 314 + .../04_groupadd_set_password/config/etc/passwd | 19 + .../04_groupadd_set_password/config/etc/shadow | 19 + .../groupadd/04_groupadd_set_password/data/group | 42 + .../groupadd/04_groupadd_set_password/data/gshadow | 42 + .../04_groupadd_set_password/groupadd.test | 39 + .../groupadd/05_groupadd_set_GID/config.txt | 5 + .../05_groupadd_set_GID/config/etc/default/useradd | 36 + .../groupadd/05_groupadd_set_GID/config/etc/group | 41 + .../05_groupadd_set_GID/config/etc/gshadow | 41 + .../05_groupadd_set_GID/config/etc/login.defs | 314 + .../groupadd/05_groupadd_set_GID/config/etc/passwd | 19 + .../groupadd/05_groupadd_set_GID/config/etc/shadow | 19 + .../groupadd/05_groupadd_set_GID/data/group | 42 + .../groupadd/05_groupadd_set_GID/data/gshadow | 42 + .../groupadd/05_groupadd_set_GID/groupadd.test | 39 + .../06_groupadd_-f_add_existing_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../groupadd.test | 39 + .../07_groupadd_-f_add_existing_GID/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../07_groupadd_-f_add_existing_GID/data/group | 43 + .../07_groupadd_-f_add_existing_GID/data/gshadow | 43 + .../07_groupadd_-f_add_existing_GID/groupadd.test | 39 + .../groupadd/08_groupadd_locked_group/config.txt | 10 + .../config/etc/default/useradd | 36 + .../08_groupadd_locked_group/config/etc/group | 41 + .../08_groupadd_locked_group/config/etc/gshadow | 41 + .../08_groupadd_locked_group/config/etc/passwd | 19 + .../08_groupadd_locked_group/config/etc/shadow | 19 + .../08_groupadd_locked_group/data/groupadd.err | 2 + .../08_groupadd_locked_group/groupadd.test | 60 + .../groupadd/09_groupadd_locked_gshadow/config.txt | 10 + .../config/etc/default/useradd | 36 + .../09_groupadd_locked_gshadow/config/etc/group | 41 + .../09_groupadd_locked_gshadow/config/etc/gshadow | 41 + .../09_groupadd_locked_gshadow/config/etc/passwd | 19 + .../09_groupadd_locked_gshadow/config/etc/shadow | 19 + .../09_groupadd_locked_gshadow/data/groupadd.err | 2 + .../09_groupadd_locked_gshadow/groupadd.test | 60 + .../10_groupadd_-o_add_existing_GID/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../10_groupadd_-o_add_existing_GID/data/group | 43 + .../10_groupadd_-o_add_existing_GID/data/gshadow | 43 + .../10_groupadd_-o_add_existing_GID/groupadd.test | 39 + .../groupadd/11_groupadd_invalid_GID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../11_groupadd_invalid_GID/config/etc/group | 41 + .../11_groupadd_invalid_GID/config/etc/gshadow | 41 + .../11_groupadd_invalid_GID/config/etc/passwd | 19 + .../11_groupadd_invalid_GID/config/etc/shadow | 19 + .../11_groupadd_invalid_GID/data/groupadd.err | 1 + .../groupadd/11_groupadd_invalid_GID/groupadd.test | 54 + .../groupadd/12_groupadd_negative_GID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../12_groupadd_negative_GID/config/etc/group | 41 + .../12_groupadd_negative_GID/config/etc/gshadow | 41 + .../12_groupadd_negative_GID/config/etc/passwd | 19 + .../12_groupadd_negative_GID/config/etc/shadow | 19 + .../12_groupadd_negative_GID/data/groupadd.err | 1 + .../12_groupadd_negative_GID/groupadd.test | 54 + .../groupadd/13_groupadd_invalid_name/config.txt | 10 + .../config/etc/default/useradd | 36 + .../13_groupadd_invalid_name/config/etc/group | 41 + .../13_groupadd_invalid_name/config/etc/gshadow | 41 + .../13_groupadd_invalid_name/config/etc/passwd | 19 + .../13_groupadd_invalid_name/config/etc/shadow | 19 + .../13_groupadd_invalid_name/data/groupadd.err | 1 + .../13_groupadd_invalid_name/groupadd.test | 54 + .../14_groupadd_invalid_-K_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../14_groupadd_invalid_-K_option/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupadd.err | 1 + .../14_groupadd_invalid_-K_option/groupadd.test | 54 + .../15_groupadd_invalid_-K_no_=/config.txt | 10 + .../config/etc/default/useradd | 36 + .../15_groupadd_invalid_-K_no_=/config/etc/group | 41 + .../15_groupadd_invalid_-K_no_=/config/etc/gshadow | 41 + .../15_groupadd_invalid_-K_no_=/config/etc/passwd | 19 + .../15_groupadd_invalid_-K_no_=/config/etc/shadow | 19 + .../15_groupadd_invalid_-K_no_=/data/groupadd.err | 1 + .../15_groupadd_invalid_-K_no_=/groupadd.test | 54 + .../groupadd/16_groupadd_existing_group/config.txt | 10 + .../config/etc/default/useradd | 36 + .../16_groupadd_existing_group/config/etc/group | 42 + .../16_groupadd_existing_group/config/etc/gshadow | 42 + .../16_groupadd_existing_group/config/etc/passwd | 19 + .../16_groupadd_existing_group/config/etc/shadow | 19 + .../16_groupadd_existing_group/data/groupadd.err | 1 + .../16_groupadd_existing_group/groupadd.test | 54 + .../17_groupadd_add_systemgroup/config.txt | 5 + .../config/etc/default/useradd | 36 + .../17_groupadd_add_systemgroup/config/etc/group | 41 + .../17_groupadd_add_systemgroup/config/etc/gshadow | 41 + .../config/etc/login.defs | 315 + .../17_groupadd_add_systemgroup/config/etc/passwd | 19 + .../17_groupadd_add_systemgroup/config/etc/shadow | 19 + .../17_groupadd_add_systemgroup/data/group | 42 + .../17_groupadd_add_systemgroup/data/gshadow | 42 + .../17_groupadd_add_systemgroup/groupadd.test | 39 + .../groupadd/18_groupadd_no_more_GID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../18_groupadd_no_more_GID/config/etc/group | 43 + .../18_groupadd_no_more_GID/config/etc/gshadow | 42 + .../18_groupadd_no_more_GID/config/etc/login.defs | 314 + .../18_groupadd_no_more_GID/config/etc/passwd | 19 + .../18_groupadd_no_more_GID/config/etc/shadow | 19 + .../18_groupadd_no_more_GID/data/groupadd.err | 1 + .../groupadd/18_groupadd_no_more_GID/groupadd.test | 54 + .../19_groupadd_-r_no_more_system_GID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupadd.err | 1 + .../groupadd.test | 54 + .../20_groupadd_add_existing_GID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../20_groupadd_add_existing_GID/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../20_groupadd_add_existing_GID/config/etc/passwd | 19 + .../20_groupadd_add_existing_GID/config/etc/shadow | 19 + .../20_groupadd_add_existing_GID/data/groupadd.err | 1 + .../20_groupadd_add_existing_GID/groupadd.test | 54 + .../21_groupadd_invalid_GID_4294967295/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupadd.err | 1 + .../groupadd.test | 54 + .../groupadd/22_groupadd_usage/config.txt | 10 + .../22_groupadd_usage/config/etc/default/useradd | 36 + .../groupadd/22_groupadd_usage/config/etc/group | 41 + .../groupadd/22_groupadd_usage/config/etc/gshadow | 41 + .../groupadd/22_groupadd_usage/config/etc/passwd | 19 + .../groupadd/22_groupadd_usage/config/etc/shadow | 19 + .../groupadd/22_groupadd_usage/data/usage.out | 14 + .../groupadd/22_groupadd_usage/groupadd.test | 49 + .../groupadd/23_groupadd_no_groups/config.txt | 10 + .../config/etc/default/useradd | 36 + .../23_groupadd_no_groups/config/etc/group | 41 + .../23_groupadd_no_groups/config/etc/gshadow | 41 + .../23_groupadd_no_groups/config/etc/passwd | 19 + .../23_groupadd_no_groups/config/etc/shadow | 19 + .../23_groupadd_no_groups/data/groupadd.err | 14 + .../groupadd/23_groupadd_no_groups/groupadd.test | 54 + .../groupadd/24_groupadd_2_groups/config.txt | 10 + .../config/etc/default/useradd | 36 + .../groupadd/24_groupadd_2_groups/config/etc/group | 41 + .../24_groupadd_2_groups/config/etc/gshadow | 41 + .../24_groupadd_2_groups/config/etc/passwd | 19 + .../24_groupadd_2_groups/config/etc/shadow | 19 + .../24_groupadd_2_groups/data/groupadd.err | 14 + .../groupadd/24_groupadd_2_groups/groupadd.test | 54 + .../groupadd/25_groupadd_no_gshadow/config.txt | 5 + .../config/etc/default/useradd | 36 + .../25_groupadd_no_gshadow/config/etc/group | 41 + .../25_groupadd_no_gshadow/config/etc/gshadow | 41 + .../25_groupadd_no_gshadow/config/etc/login.defs | 314 + .../25_groupadd_no_gshadow/config/etc/passwd | 19 + .../25_groupadd_no_gshadow/config/etc/shadow | 19 + .../groupadd/25_groupadd_no_gshadow/data/group | 42 + .../groupadd/25_groupadd_no_gshadow/groupadd.test | 43 + .../groupadd/26_groupadd_-o_without_-g/config.txt | 10 + .../config/etc/default/useradd | 36 + .../26_groupadd_-o_without_-g/config/etc/group | 41 + .../26_groupadd_-o_without_-g/config/etc/gshadow | 41 + .../26_groupadd_-o_without_-g/config/etc/passwd | 19 + .../26_groupadd_-o_without_-g/config/etc/shadow | 19 + .../26_groupadd_-o_without_-g/data/groupadd.err | 14 + .../26_groupadd_-o_without_-g/groupadd.test | 54 + .../groupadd/27_groupadd_invalid_option/config.txt | 10 + .../27_groupadd_invalid_option/config/etc/group | 41 + .../27_groupadd_invalid_option/config/etc/gshadow | 41 + .../27_groupadd_invalid_option/config/etc/passwd | 19 + .../27_groupadd_invalid_option/config/etc/shadow | 19 + .../27_groupadd_invalid_option/data/groupadd.err | 15 + .../27_groupadd_invalid_option/groupadd.test | 54 + .../groupdel/01_groupdel_delete_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../01_groupdel_delete_group/config/etc/group | 42 + .../01_groupdel_delete_group/config/etc/gshadow | 42 + .../01_groupdel_delete_group/config/etc/login.defs | 314 + .../01_groupdel_delete_group/config/etc/passwd | 19 + .../01_groupdel_delete_group/config/etc/shadow | 19 + .../groupdel/01_groupdel_delete_group/data/group | 41 + .../groupdel/01_groupdel_delete_group/data/gshadow | 41 + .../01_groupdel_delete_group/groupdel.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 41 + .../groupdel.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 41 + .../groupdel.test | 42 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/groupdel.err | 1 + .../groupdel.test | 54 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/groupdel.err | 1 + .../groupdel.test | 54 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupdel.err | 2 + .../groupdel.test | 60 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupdel.err | 2 + .../groupdel.test | 60 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/groupdel.err | 6 + .../groupdel.test | 54 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/groupdel.err | 6 + .../groupdel.test | 54 + .../groupdel/10_groupdel_usage/config.txt | 5 + .../10_groupdel_usage/config/etc/default/useradd | 36 + .../groupdel/10_groupdel_usage/config/etc/group | 42 + .../groupdel/10_groupdel_usage/config/etc/gshadow | 42 + .../10_groupdel_usage/config/etc/login.defs | 314 + .../groupdel/10_groupdel_usage/config/etc/passwd | 20 + .../groupdel/10_groupdel_usage/config/etc/shadow | 20 + .../groupdel/10_groupdel_usage/data/usage.out | 6 + .../groupdel/10_groupdel_usage/groupdel.test | 48 + .../groupdel/11_groupdel_invalid_option/config.txt | 5 + .../config/etc/default/useradd | 36 + .../11_groupdel_invalid_option/config/etc/group | 42 + .../11_groupdel_invalid_option/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../11_groupdel_invalid_option/config/etc/passwd | 20 + .../11_groupdel_invalid_option/config/etc/shadow | 20 + .../11_groupdel_invalid_option/data/groupdel.err | 7 + .../11_groupdel_invalid_option/groupdel.test | 54 + .../01_groupmems_root_add_user/config.txt | 2 + .../01_groupmems_root_add_user/config/etc/group | 44 + .../01_groupmems_root_add_user/config/etc/gshadow | 44 + .../01_groupmems_root_add_user/config/etc/passwd | 20 + .../01_groupmems_root_add_user/config/etc/shadow | 20 + .../01_groupmems_root_add_user/data/group | 44 + .../01_groupmems_root_add_user/data/gshadow | 44 + .../01_groupmems_root_add_user/groupmems.test | 39 + .../02_groupmems_root_del_user/config.txt | 2 + .../02_groupmems_root_del_user/config/etc/group | 44 + .../02_groupmems_root_del_user/config/etc/gshadow | 44 + .../02_groupmems_root_del_user/config/etc/passwd | 20 + .../02_groupmems_root_del_user/config/etc/shadow | 20 + .../02_groupmems_root_del_user/data/group | 44 + .../02_groupmems_root_del_user/data/gshadow | 44 + .../02_groupmems_root_del_user/groupmems.test | 39 + .../03_groupmems_root_del_user_admin/config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../03_groupmems_root_del_user_admin/data/group | 44 + .../03_groupmems_root_del_user_admin/data/gshadow | 44 + .../groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../09_groupmems_root_purge_user/config.txt | 2 + .../09_groupmems_root_purge_user/config/etc/group | 44 + .../config/etc/gshadow | 44 + .../09_groupmems_root_purge_user/config/etc/passwd | 20 + .../09_groupmems_root_purge_user/config/etc/shadow | 20 + .../09_groupmems_root_purge_user/data/group | 44 + .../09_groupmems_root_purge_user/data/gshadow | 44 + .../09_groupmems_root_purge_user/groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../config.txt | 2 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../12_groupmems_user_add_user/config.txt | 1 + .../12_groupmems_user_add_user/config/etc/group | 44 + .../12_groupmems_user_add_user/config/etc/gshadow | 44 + .../12_groupmems_user_add_user/config/etc/passwd | 21 + .../12_groupmems_user_add_user/config/etc/shadow | 21 + .../12_groupmems_user_add_user/data/group | 44 + .../12_groupmems_user_add_user/data/gshadow | 44 + .../12_groupmems_user_add_user/groupmems.test | 39 + .../12_groupmems_user_add_user/run_groupmems.exp | 49 + .../13_groupmems_user_del_user/config.txt | 1 + .../13_groupmems_user_del_user/config/etc/group | 44 + .../13_groupmems_user_del_user/config/etc/gshadow | 44 + .../13_groupmems_user_del_user/config/etc/passwd | 21 + .../13_groupmems_user_del_user/config/etc/shadow | 21 + .../13_groupmems_user_del_user/data/group | 44 + .../13_groupmems_user_del_user/data/gshadow | 44 + .../13_groupmems_user_del_user/groupmems.test | 39 + .../13_groupmems_user_del_user/run_groupmems.exp | 49 + .../14_groupmems_user_del_user_admin/config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../14_groupmems_user_del_user_admin/data/group | 44 + .../14_groupmems_user_del_user_admin/data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../20_groupmems_user_purge_user/config.txt | 1 + .../20_groupmems_user_purge_user/config/etc/group | 44 + .../config/etc/gshadow | 44 + .../20_groupmems_user_purge_user/config/etc/passwd | 21 + .../20_groupmems_user_purge_user/config/etc/shadow | 21 + .../20_groupmems_user_purge_user/data/group | 44 + .../20_groupmems_user_purge_user/data/gshadow | 44 + .../20_groupmems_user_purge_user/groupmems.test | 39 + .../20_groupmems_user_purge_user/run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 41 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 48 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../groupmems.test | 42 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 48 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 48 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../groupmems.test | 42 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../data/gshadow | 44 + .../groupmems.test | 39 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 44 + .../groupmems.test | 42 + .../run_groupmems.exp | 49 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../42_groupmems_user_list_users/config.txt | 1 + .../42_groupmems_user_list_users/config/etc/group | 44 + .../config/etc/gshadow | 44 + .../42_groupmems_user_list_users/config/etc/passwd | 21 + .../42_groupmems_user_list_users/config/etc/shadow | 21 + .../42_groupmems_user_list_users/groupmems.test | 39 + .../42_groupmems_user_list_users/run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 42 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 50 + .../config.txt | 1 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 45 + .../run_groupmems.exp | 50 + .../groupmems/53_groupmems_usage/config.txt | 10 + .../groupmems/53_groupmems_usage/config/etc/group | 41 + .../53_groupmems_usage/config/etc/gshadow | 41 + .../groupmems/53_groupmems_usage/config/etc/passwd | 19 + .../groupmems/53_groupmems_usage/config/etc/shadow | 19 + .../groupmems/53_groupmems_usage/data/usage.out | 13 + .../groupmems/53_groupmems_usage/groupmems.test | 49 + .../54_groupmems_usage_invalid_option/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmems.err | 14 + .../groupmems.test | 54 + .../groupmems/55_groupmems_usage-a-d/config.txt | 1 + .../55_groupmems_usage-a-d/config/etc/group | 42 + .../55_groupmems_usage-a-d/config/etc/gshadow | 42 + .../55_groupmems_usage-a-d/config/etc/login.defs | 314 + .../55_groupmems_usage-a-d/config/etc/passwd | 19 + .../55_groupmems_usage-a-d/config/etc/shadow | 19 + .../55_groupmems_usage-a-d/data/groupmems.err | 13 + .../55_groupmems_usage-a-d/groupmems.test | 54 + .../56_groupmems_usage_extra_arg/config.txt | 1 + .../56_groupmems_usage_extra_arg/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../56_groupmems_usage_extra_arg/config/etc/passwd | 19 + .../56_groupmems_usage_extra_arg/config/etc/shadow | 19 + .../data/groupmems.err | 13 + .../56_groupmems_usage_extra_arg/groupmems.test | 54 + .../57_groupmems_authentication/config.txt | 1 + .../57_groupmems_authentication/config/etc/group | 45 + .../57_groupmems_authentication/config/etc/gshadow | 45 + .../config/etc/pam.d/common-account | 25 + .../config/etc/pam.d/common-auth | 25 + .../config/etc/pam.d/groupmems | 8 + .../57_groupmems_authentication/config/etc/passwd | 21 + .../57_groupmems_authentication/config/etc/shadow | 21 + .../57_groupmems_authentication/data/group | 45 + .../57_groupmems_authentication/data/gshadow | 45 + .../57_groupmems_authentication/groupmems.test | 39 + .../57_groupmems_authentication/run_groupmems.exp | 43 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/pam.d/common-account | 25 + .../config/etc/pam.d/common-auth | 25 + .../config/etc/pam.d/groupmems | 8 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 44 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/pam.d/common-account | 1 + .../config/etc/pam.d/common-auth | 25 + .../config/etc/pam.d/groupmems | 8 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 39 + .../run_groupmems.exp | 44 + .../config.txt | 1 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/pam.d/groupmems | 1 + .../config/etc/pam.d/other | 1 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../groupmems.test | 43 + .../run_groupmems.exp | 42 + .../groupmod/01_groupmod_change_gid/config.txt | 1 + .../config/etc/default/useradd | 36 + .../01_groupmod_change_gid/config/etc/group | 42 + .../01_groupmod_change_gid/config/etc/gshadow | 42 + .../01_groupmod_change_gid/config/etc/login.defs | 314 + .../01_groupmod_change_gid/config/etc/passwd | 19 + .../01_groupmod_change_gid/config/etc/shadow | 19 + .../groupmod/01_groupmod_change_gid/data/group | 42 + .../groupmod/01_groupmod_change_gid/groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/passwd | 20 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 42 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 43 + .../groupmod.test | 39 + .../06_groupmod_change_group_name/config.txt | 1 + .../config/etc/default/useradd | 36 + .../06_groupmod_change_group_name/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../06_groupmod_change_group_name/data/group | 42 + .../06_groupmod_change_group_name/data/gshadow | 42 + .../06_groupmod_change_group_name/groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 42 + .../groupmod/09_groupmod_set_password/config.txt | 1 + .../config/etc/default/useradd | 36 + .../09_groupmod_set_password/config/etc/group | 42 + .../09_groupmod_set_password/config/etc/gshadow | 42 + .../09_groupmod_set_password/config/etc/login.defs | 314 + .../09_groupmod_set_password/config/etc/passwd | 19 + .../09_groupmod_set_password/config/etc/shadow | 19 + .../groupmod/09_groupmod_set_password/data/gshadow | 42 + .../09_groupmod_set_password/groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gshadow | 42 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 42 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 2 + .../groupmod.test | 60 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 47 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 11 + .../groupmod.test | 60 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../groupmod.test | 39 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../data/passwd | 20 + .../groupmod.test | 39 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 2 + .../groupmod.test | 60 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 2 + .../groupmod.test | 60 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../groupmod.test | 47 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/groupmod.err | 1 + .../groupmod.test | 54 + .../groupmod/28_groupmod_usage/config.txt | 10 + .../28_groupmod_usage/config/etc/default/useradd | 36 + .../groupmod/28_groupmod_usage/config/etc/group | 41 + .../groupmod/28_groupmod_usage/config/etc/gshadow | 41 + .../groupmod/28_groupmod_usage/config/etc/passwd | 19 + .../groupmod/28_groupmod_usage/config/etc/shadow | 19 + .../groupmod/28_groupmod_usage/data/usage.out | 11 + .../groupmod/28_groupmod_usage/groupmod.test | 49 + .../29_groupmod_-g_same_gid_new_name/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../29_groupmod_-g_same_gid_new_name/data/group | 42 + .../29_groupmod_-g_same_gid_new_name/data/gshadow | 42 + .../29_groupmod_-g_same_gid_new_name/groupmod.test | 39 + .../30_groupmod_-g_same_gid_same_name/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../groupmod.test | 39 + .../groupmod/31_groupmod_-g_same_gid/config.txt | 1 + .../config/etc/default/useradd | 36 + .../31_groupmod_-g_same_gid/config/etc/group | 42 + .../31_groupmod_-g_same_gid/config/etc/gshadow | 42 + .../31_groupmod_-g_same_gid/config/etc/login.defs | 314 + .../31_groupmod_-g_same_gid/config/etc/passwd | 19 + .../31_groupmod_-g_same_gid/config/etc/shadow | 19 + .../groupmod/31_groupmod_-g_same_gid/groupmod.test | 39 + .../groupmod/32_groupmod_-o_without_-g/config.txt | 10 + .../config/etc/default/useradd | 36 + .../32_groupmod_-o_without_-g/config/etc/group | 41 + .../32_groupmod_-o_without_-g/config/etc/gshadow | 41 + .../32_groupmod_-o_without_-g/config/etc/passwd | 19 + .../32_groupmod_-o_without_-g/config/etc/shadow | 19 + .../32_groupmod_-o_without_-g/data/groupmod.err | 11 + .../32_groupmod_-o_without_-g/groupmod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 42 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../groupmod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/gshadow | 42 + .../groupmod.test | 39 + .../groupmod/37_groupmod_invalid_option/config.txt | 1 + .../37_groupmod_invalid_option/config/etc/group | 42 + .../37_groupmod_invalid_option/config/etc/gshadow | 42 + .../config/etc/login.defs | 314 + .../37_groupmod_invalid_option/config/etc/passwd | 19 + .../37_groupmod_invalid_option/config/etc/shadow | 19 + .../37_groupmod_invalid_option/data/groupmod.err | 12 + .../37_groupmod_invalid_option/groupmod.test | 54 + tests/tests/libsubid/01_list_ranges/config.txt | 0 .../libsubid/01_list_ranges/config/etc/subgid | 2 + .../libsubid/01_list_ranges/config/etc/subuid | 3 + .../tests/libsubid/01_list_ranges/list_ranges.test | 38 + .../tests/libsubid/02_get_subid_owners/config.txt | 0 .../libsubid/02_get_subid_owners/config/etc/passwd | 20 + .../libsubid/02_get_subid_owners/config/etc/subgid | 2 + .../libsubid/02_get_subid_owners/config/etc/subuid | 4 + .../02_get_subid_owners/get_subid_owners.test | 52 + .../libsubid/03_add_remove/add_remove_subids.test | 59 + tests/tests/libsubid/03_add_remove/config.txt | 0 .../tests/libsubid/03_add_remove/config/etc/passwd | 20 + .../tests/libsubid/03_add_remove/config/etc/subgid | 2 + .../tests/libsubid/03_add_remove/config/etc/subuid | 1 + tests/tests/libsubid/04_nss/Makefile | 12 + tests/tests/libsubid/04_nss/empty | 0 tests/tests/libsubid/04_nss/libsubid_zzz.c | 140 + tests/tests/libsubid/04_nss/nsswitch1.conf | 20 + tests/tests/libsubid/04_nss/nsswitch2.conf | 22 + tests/tests/libsubid/04_nss/nsswitch3.conf | 22 + tests/tests/libsubid/04_nss/subidnss.test | 22 + tests/tests/libsubid/04_nss/test_nss.c | 72 + tests/tests/libsubid/04_nss/test_range | 52 + .../log/faillog/01_faillog_no_faillog/config.txt | 1 + .../faillog/01_faillog_no_faillog/config/etc/group | 42 + .../01_faillog_no_faillog/config/etc/gshadow | 42 + .../01_faillog_no_faillog/config/etc/passwd | 20 + .../01_faillog_no_faillog/config/etc/shadow | 20 + .../faillog/01_faillog_no_faillog/data/faillog.err | 1 + .../log/faillog/01_faillog_no_faillog/faillog.test | 51 + .../tests/log/faillog/02_faillog_usage/config.txt | 10 + .../log/faillog/02_faillog_usage/config/etc/group | 41 + .../faillog/02_faillog_usage/config/etc/gshadow | 41 + .../log/faillog/02_faillog_usage/config/etc/passwd | 19 + .../log/faillog/02_faillog_usage/config/etc/shadow | 19 + .../log/faillog/02_faillog_usage/data/usage.out | 14 + .../log/faillog/02_faillog_usage/faillog.test | 35 + .../tests/log/faillog/03_faillog_format/config.txt | 1 + .../log/faillog/03_faillog_format/config/etc/group | 42 + .../faillog/03_faillog_format/config/etc/gshadow | 42 + .../03_faillog_format/config/etc/pam.d/login | 111 + .../faillog/03_faillog_format/config/etc/passwd | 20 + .../faillog/03_faillog_format/config/etc/shadow | 20 + .../log/faillog/03_faillog_format/data/faillog.out | 2 + .../log/faillog/03_faillog_format/data/lastlog.out | 20 + .../log/faillog/03_faillog_format/faillog.test | 57 + .../tests/log/faillog/03_faillog_format/login.exp | 17 + .../log/faillog/04_faillog_multiple/config.txt | 1 + .../faillog/04_faillog_multiple/config/etc/group | 42 + .../faillog/04_faillog_multiple/config/etc/gshadow | 42 + .../04_faillog_multiple/config/etc/pam.d/login | 111 + .../faillog/04_faillog_multiple/config/etc/passwd | 22 + .../faillog/04_faillog_multiple/config/etc/shadow | 22 + .../faillog/04_faillog_multiple/data/faillog.list | 5 + .../log/faillog/04_faillog_multiple/faillog.test | 52 + .../log/faillog/04_faillog_multiple/login.exp | 26 + tests/tests/log/faillog/05_faillog-u_ID/config.txt | 1 + .../log/faillog/05_faillog-u_ID/config/etc/group | 42 + .../log/faillog/05_faillog-u_ID/config/etc/gshadow | 42 + .../log/faillog/05_faillog-u_ID/config/etc/passwd | 22 + .../log/faillog/05_faillog-u_ID/config/etc/shadow | 22 + .../log/faillog/05_faillog-u_ID/data/faillog.list | 3 + .../tests/log/faillog/05_faillog-u_ID/faillog.test | 42 + .../tests/log/faillog/06_faillog-u_name/config.txt | 1 + .../log/faillog/06_faillog-u_name/config/etc/group | 42 + .../faillog/06_faillog-u_name/config/etc/gshadow | 42 + .../faillog/06_faillog-u_name/config/etc/passwd | 22 + .../faillog/06_faillog-u_name/config/etc/shadow | 22 + .../faillog/06_faillog-u_name/data/faillog.list | 3 + .../log/faillog/06_faillog-u_name/faillog.test | 42 + .../log/faillog/07_faillog-u_ID_invalid/config.txt | 1 + .../07_faillog-u_ID_invalid/config/etc/group | 42 + .../07_faillog-u_ID_invalid/config/etc/gshadow | 42 + .../07_faillog-u_ID_invalid/config/etc/passwd | 22 + .../07_faillog-u_ID_invalid/config/etc/shadow | 22 + .../07_faillog-u_ID_invalid/data/faillog.list | 0 .../faillog/07_faillog-u_ID_invalid/faillog.test | 41 + .../faillog/08_faillog-u_name_invalid/config.txt | 1 + .../08_faillog-u_name_invalid/config/etc/group | 42 + .../08_faillog-u_name_invalid/config/etc/gshadow | 42 + .../08_faillog-u_name_invalid/config/etc/passwd | 22 + .../08_faillog-u_name_invalid/config/etc/shadow | 22 + .../08_faillog-u_name_invalid/data/faillog.err | 1 + .../faillog/08_faillog-u_name_invalid/faillog.test | 45 + .../log/faillog/09_faillog-u_range/config.txt | 1 + .../faillog/09_faillog-u_range/config/etc/group | 42 + .../faillog/09_faillog-u_range/config/etc/gshadow | 42 + .../09_faillog-u_range/config/etc/pam.d/login | 111 + .../faillog/09_faillog-u_range/config/etc/passwd | 22 + .../faillog/09_faillog-u_range/config/etc/shadow | 22 + .../faillog/09_faillog-u_range/data/faillog.list | 4 + .../log/faillog/09_faillog-u_range/faillog.test | 50 + .../tests/log/faillog/09_faillog-u_range/login.exp | 26 + .../log/faillog/10_faillog-u_open_range/config.txt | 1 + .../10_faillog-u_open_range/config/etc/group | 42 + .../10_faillog-u_open_range/config/etc/gshadow | 42 + .../10_faillog-u_open_range/config/etc/passwd | 22 + .../10_faillog-u_open_range/config/etc/shadow | 22 + .../10_faillog-u_open_range/data/faillog.list | 22 + .../faillog/10_faillog-u_open_range/faillog.test | 42 + .../log/faillog/11_faillog-u_range_open/config.txt | 1 + .../11_faillog-u_range_open/config/etc/group | 42 + .../11_faillog-u_range_open/config/etc/gshadow | 42 + .../11_faillog-u_range_open/config/etc/passwd | 22 + .../11_faillog-u_range_open/config/etc/shadow | 22 + .../11_faillog-u_range_open/data/faillog.list | 10 + .../faillog/11_faillog-u_range_open/faillog.test | 42 + .../faillog/12_faillog-u_range_invalid1/config.txt | 1 + .../12_faillog-u_range_invalid1/config/etc/group | 42 + .../12_faillog-u_range_invalid1/config/etc/gshadow | 42 + .../12_faillog-u_range_invalid1/config/etc/passwd | 22 + .../12_faillog-u_range_invalid1/config/etc/shadow | 22 + .../12_faillog-u_range_invalid1/data/faillog.err | 1 + .../12_faillog-u_range_invalid1/faillog.test | 45 + .../faillog/13_faillog-u_range_invalid2/config.txt | 1 + .../13_faillog-u_range_invalid2/config/etc/group | 42 + .../13_faillog-u_range_invalid2/config/etc/gshadow | 42 + .../13_faillog-u_range_invalid2/config/etc/passwd | 22 + .../13_faillog-u_range_invalid2/config/etc/shadow | 22 + .../13_faillog-u_range_invalid2/data/faillog.err | 1 + .../13_faillog-u_range_invalid2/faillog.test | 45 + .../faillog/14_faillog-u_range_invalid3/config.txt | 1 + .../14_faillog-u_range_invalid3/config/etc/group | 42 + .../14_faillog-u_range_invalid3/config/etc/gshadow | 42 + .../14_faillog-u_range_invalid3/config/etc/passwd | 22 + .../14_faillog-u_range_invalid3/config/etc/shadow | 22 + .../14_faillog-u_range_invalid3/data/faillog.err | 1 + .../14_faillog-u_range_invalid3/faillog.test | 45 + .../log/faillog/15_faillog_bad_option/config.txt | 10 + .../faillog/15_faillog_bad_option/config/etc/group | 41 + .../15_faillog_bad_option/config/etc/gshadow | 41 + .../15_faillog_bad_option/config/etc/passwd | 19 + .../15_faillog_bad_option/config/etc/shadow | 19 + .../faillog/15_faillog_bad_option/data/usage.out | 15 + .../log/faillog/15_faillog_bad_option/faillog.test | 41 + .../log/faillog/16_faillog_extra_arg/config.txt | 10 + .../faillog/16_faillog_extra_arg/config/etc/group | 41 + .../16_faillog_extra_arg/config/etc/gshadow | 41 + .../faillog/16_faillog_extra_arg/config/etc/passwd | 19 + .../faillog/16_faillog_extra_arg/config/etc/shadow | 19 + .../faillog/16_faillog_extra_arg/data/usage.out | 15 + .../log/faillog/16_faillog_extra_arg/faillog.test | 41 + tests/tests/log/faillog/17_faillog-t/config.txt | 1 + .../log/faillog/17_faillog-t/config/etc/group | 42 + .../log/faillog/17_faillog-t/config/etc/gshadow | 42 + .../faillog/17_faillog-t/config/etc/pam.d/login | 111 + .../log/faillog/17_faillog-t/config/etc/passwd | 22 + .../log/faillog/17_faillog-t/config/etc/shadow | 22 + .../log/faillog/17_faillog-t/data/faillog.list | 4 + tests/tests/log/faillog/17_faillog-t/faillog.test | 52 + tests/tests/log/faillog/17_faillog-t/login.exp | 26 + .../log/faillog/18_faillog-t_invalid/config.txt | 1 + .../faillog/18_faillog-t_invalid/config/etc/group | 42 + .../18_faillog-t_invalid/config/etc/gshadow | 42 + .../faillog/18_faillog-t_invalid/config/etc/passwd | 22 + .../faillog/18_faillog-t_invalid/config/etc/shadow | 22 + .../faillog/18_faillog-t_invalid/data/faillog.err | 1 + .../log/faillog/18_faillog-t_invalid/faillog.test | 45 + .../19_faillog_multiple_same_user/config.txt | 1 + .../19_faillog_multiple_same_user/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/faillog.list | 5 + .../19_faillog_multiple_same_user/faillog.test | 55 + .../19_faillog_multiple_same_user/login.exp | 26 + tests/tests/log/faillog/20_faillog-r-u/config.txt | 1 + .../log/faillog/20_faillog-r-u/config/etc/group | 42 + .../log/faillog/20_faillog-r-u/config/etc/gshadow | 42 + .../faillog/20_faillog-r-u/config/etc/pam.d/login | 111 + .../log/faillog/20_faillog-r-u/config/etc/passwd | 22 + .../log/faillog/20_faillog-r-u/config/etc/shadow | 22 + .../log/faillog/20_faillog-r-u/data/faillog.list | 5 + .../tests/log/faillog/20_faillog-r-u/faillog.test | 56 + tests/tests/log/faillog/20_faillog-r-u/login.exp | 26 + .../log/faillog/21_faillog-r-u_range/config.txt | 1 + .../faillog/21_faillog-r-u_range/config/etc/group | 42 + .../21_faillog-r-u_range/config/etc/gshadow | 42 + .../21_faillog-r-u_range/config/etc/pam.d/login | 111 + .../faillog/21_faillog-r-u_range/config/etc/passwd | 22 + .../faillog/21_faillog-r-u_range/config/etc/shadow | 22 + .../faillog/21_faillog-r-u_range/data/faillog.list | 5 + .../log/faillog/21_faillog-r-u_range/faillog.test | 56 + .../log/faillog/21_faillog-r-u_range/login.exp | 26 + .../log/faillog/22_faillog_removed_user/config.txt | 1 + .../22_faillog_removed_user/config/etc/group | 42 + .../22_faillog_removed_user/config/etc/gshadow | 42 + .../22_faillog_removed_user/config/etc/pam.d/login | 111 + .../22_faillog_removed_user/config/etc/passwd | 22 + .../22_faillog_removed_user/config/etc/shadow | 22 + .../22_faillog_removed_user/data/faillog.list | 4 + .../faillog/22_faillog_removed_user/faillog.test | 57 + .../log/faillog/22_faillog_removed_user/login.exp | 26 + .../faillog/23_faillog-a_removed_user/config.txt | 1 + .../23_faillog-a_removed_user/config/etc/group | 42 + .../23_faillog-a_removed_user/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../23_faillog-a_removed_user/config/etc/passwd | 22 + .../23_faillog-a_removed_user/config/etc/shadow | 22 + .../23_faillog-a_removed_user/data/faillog.list | 23 + .../faillog/23_faillog-a_removed_user/faillog.test | 57 + .../faillog/23_faillog-a_removed_user/login.exp | 26 + .../faillog/24_faillog-u_removed_user/config.txt | 1 + .../24_faillog-u_removed_user/config/etc/group | 42 + .../24_faillog-u_removed_user/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../24_faillog-u_removed_user/config/etc/passwd | 22 + .../24_faillog-u_removed_user/config/etc/shadow | 22 + .../24_faillog-u_removed_user/data/faillog.list | 0 .../faillog/24_faillog-u_removed_user/faillog.test | 57 + .../faillog/24_faillog-u_removed_user/login.exp | 26 + .../faillog/25_faillog-r-u_removed_user/config.txt | 1 + .../25_faillog-r-u_removed_user/config/etc/group | 42 + .../25_faillog-r-u_removed_user/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../25_faillog-r-u_removed_user/config/etc/passwd | 22 + .../25_faillog-r-u_removed_user/config/etc/shadow | 22 + .../25_faillog-r-u_removed_user/data/faillog.list | 24 + .../25_faillog-r-u_removed_user/faillog.test | 60 + .../faillog/25_faillog-r-u_removed_user/login.exp | 26 + .../26_faillog-r-u_range_removed_user/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/faillog.list | 24 + .../26_faillog-r-u_range_removed_user/faillog.test | 60 + .../26_faillog-r-u_range_removed_user/login.exp | 26 + .../27_faillog-r-a-u_range_removed_user/config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/faillog.list | 24 + .../faillog.test | 66 + .../27_faillog-r-a-u_range_removed_user/login.exp | 26 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/faillog.list | 24 + .../faillog.test | 66 + .../login.exp | 26 + .../config.txt | 1 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/faillog.list | 24 + .../faillog.test | 66 + .../login.exp | 26 + tests/tests/log/faillog/30_faillog-r/config.txt | 1 + .../log/faillog/30_faillog-r/config/etc/group | 42 + .../log/faillog/30_faillog-r/config/etc/gshadow | 42 + .../faillog/30_faillog-r/config/etc/pam.d/login | 111 + .../log/faillog/30_faillog-r/config/etc/passwd | 22 + .../log/faillog/30_faillog-r/config/etc/shadow | 22 + .../log/faillog/30_faillog-r/data/faillog.list | 5 + tests/tests/log/faillog/30_faillog-r/faillog.test | 56 + tests/tests/log/faillog/30_faillog-r/login.exp | 26 + .../faillog/31_faillog-r-u_open_range/config.txt | 1 + .../31_faillog-r-u_open_range/config/etc/group | 42 + .../31_faillog-r-u_open_range/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../31_faillog-r-u_open_range/config/etc/passwd | 22 + .../31_faillog-r-u_open_range/config/etc/shadow | 22 + .../31_faillog-r-u_open_range/data/faillog.list | 5 + .../faillog/31_faillog-r-u_open_range/faillog.test | 56 + .../faillog/31_faillog-r-u_open_range/login.exp | 26 + tests/tests/log/faillog/32_faillog-l/config.txt | 1 + .../log/faillog/32_faillog-l/config/etc/group | 42 + .../log/faillog/32_faillog-l/config/etc/gshadow | 42 + .../faillog/32_faillog-l/config/etc/pam.d/login | 111 + .../log/faillog/32_faillog-l/config/etc/passwd | 22 + .../log/faillog/32_faillog-l/config/etc/shadow | 22 + .../log/faillog/32_faillog-l/data/faillog.list | 5 + tests/tests/log/faillog/32_faillog-l/faillog.test | 63 + tests/tests/log/faillog/32_faillog-l/login.exp | 26 + .../log/faillog/33_faillog-l-u_user/config.txt | 1 + .../faillog/33_faillog-l-u_user/config/etc/group | 42 + .../faillog/33_faillog-l-u_user/config/etc/gshadow | 42 + .../33_faillog-l-u_user/config/etc/pam.d/login | 111 + .../faillog/33_faillog-l-u_user/config/etc/passwd | 22 + .../faillog/33_faillog-l-u_user/config/etc/shadow | 22 + .../faillog/33_faillog-l-u_user/data/faillog.list | 1 + .../log/faillog/33_faillog-l-u_user/faillog.test | 60 + .../log/faillog/33_faillog-l-u_user/login.exp | 26 + .../log/faillog/34_faillog-l-u_range/config.txt | 1 + .../faillog/34_faillog-l-u_range/config/etc/group | 42 + .../34_faillog-l-u_range/config/etc/gshadow | 42 + .../34_faillog-l-u_range/config/etc/pam.d/login | 111 + .../faillog/34_faillog-l-u_range/config/etc/passwd | 22 + .../faillog/34_faillog-l-u_range/config/etc/shadow | 22 + .../faillog/34_faillog-l-u_range/data/faillog.list | 5 + .../log/faillog/34_faillog-l-u_range/faillog.test | 63 + .../log/faillog/34_faillog-l-u_range/login.exp | 26 + .../faillog/35_faillog-l-u_open_range/config.txt | 1 + .../35_faillog-l-u_open_range/config/etc/group | 42 + .../35_faillog-l-u_open_range/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../35_faillog-l-u_open_range/config/etc/passwd | 22 + .../35_faillog-l-u_open_range/config/etc/shadow | 22 + .../35_faillog-l-u_open_range/data/faillog.list | 5 + .../faillog/35_faillog-l-u_open_range/faillog.test | 63 + .../faillog/35_faillog-l-u_open_range/login.exp | 26 + .../faillog/36_faillog-l-u_range_open/config.txt | 1 + .../36_faillog-l-u_range_open/config/etc/group | 42 + .../36_faillog-l-u_range_open/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../36_faillog-l-u_range_open/config/etc/passwd | 22 + .../36_faillog-l-u_range_open/config/etc/shadow | 22 + .../36_faillog-l-u_range_open/data/faillog.list | 5 + .../faillog/36_faillog-l-u_range_open/faillog.test | 63 + .../faillog/36_faillog-l-u_range_open/login.exp | 26 + .../log/faillog/37_faillog-l-a-u_user/config.txt | 1 + .../faillog/37_faillog-l-a-u_user/config/etc/group | 42 + .../37_faillog-l-a-u_user/config/etc/gshadow | 42 + .../37_faillog-l-a-u_user/config/etc/pam.d/login | 111 + .../37_faillog-l-a-u_user/config/etc/passwd | 22 + .../37_faillog-l-a-u_user/config/etc/shadow | 22 + .../37_faillog-l-a-u_user/data/faillog.list | 1 + .../log/faillog/37_faillog-l-a-u_user/faillog.test | 70 + .../log/faillog/37_faillog-l-a-u_user/login.exp | 26 + .../log/faillog/38_faillog-l-a-u_range/config.txt | 1 + .../38_faillog-l-a-u_range/config/etc/group | 42 + .../38_faillog-l-a-u_range/config/etc/gshadow | 42 + .../38_faillog-l-a-u_range/config/etc/pam.d/login | 111 + .../38_faillog-l-a-u_range/config/etc/passwd | 22 + .../38_faillog-l-a-u_range/config/etc/shadow | 22 + .../38_faillog-l-a-u_range/data/faillog.list | 5 + .../faillog/38_faillog-l-a-u_range/faillog.test | 73 + .../log/faillog/38_faillog-l-a-u_range/login.exp | 26 + .../faillog/39_faillog-l-a-u_open_range/config.txt | 1 + .../39_faillog-l-a-u_open_range/config/etc/group | 42 + .../39_faillog-l-a-u_open_range/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../39_faillog-l-a-u_open_range/config/etc/passwd | 22 + .../39_faillog-l-a-u_open_range/config/etc/shadow | 22 + .../39_faillog-l-a-u_open_range/data/faillog.list | 5 + .../39_faillog-l-a-u_open_range/faillog.test | 73 + .../faillog/39_faillog-l-a-u_open_range/login.exp | 26 + .../faillog/40_faillog-l-a-u_range_open/config.txt | 1 + .../40_faillog-l-a-u_range_open/config/etc/group | 42 + .../40_faillog-l-a-u_range_open/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../40_faillog-l-a-u_range_open/config/etc/passwd | 22 + .../40_faillog-l-a-u_range_open/config/etc/shadow | 22 + .../40_faillog-l-a-u_range_open/data/faillog.list | 5 + .../40_faillog-l-a-u_range_open/faillog.test | 73 + .../faillog/40_faillog-l-a-u_range_open/login.exp | 26 + .../log/faillog/41_faillog-l_invalid/config.txt | 1 + .../faillog/41_faillog-l_invalid/config/etc/group | 42 + .../41_faillog-l_invalid/config/etc/gshadow | 42 + .../faillog/41_faillog-l_invalid/config/etc/passwd | 22 + .../faillog/41_faillog-l_invalid/config/etc/shadow | 22 + .../faillog/41_faillog-l_invalid/data/faillog.err | 1 + .../log/faillog/41_faillog-l_invalid/faillog.test | 45 + tests/tests/log/faillog/42_faillog-m/config.txt | 1 + .../log/faillog/42_faillog-m/config/etc/group | 42 + .../log/faillog/42_faillog-m/config/etc/gshadow | 42 + .../faillog/42_faillog-m/config/etc/pam.d/login | 111 + .../log/faillog/42_faillog-m/config/etc/passwd | 22 + .../log/faillog/42_faillog-m/config/etc/shadow | 22 + .../log/faillog/42_faillog-m/data/faillog.list | 5 + tests/tests/log/faillog/42_faillog-m/faillog.test | 57 + tests/tests/log/faillog/42_faillog-m/login.exp | 26 + .../log/faillog/43_faillog-m-u_user/config.txt | 1 + .../faillog/43_faillog-m-u_user/config/etc/group | 42 + .../faillog/43_faillog-m-u_user/config/etc/gshadow | 42 + .../43_faillog-m-u_user/config/etc/pam.d/login | 111 + .../faillog/43_faillog-m-u_user/config/etc/passwd | 22 + .../faillog/43_faillog-m-u_user/config/etc/shadow | 22 + .../faillog/43_faillog-m-u_user/data/faillog.list | 5 + .../log/faillog/43_faillog-m-u_user/faillog.test | 57 + .../log/faillog/43_faillog-m-u_user/login.exp | 26 + .../log/faillog/44_faillog-m-u_range/config.txt | 1 + .../faillog/44_faillog-m-u_range/config/etc/group | 42 + .../44_faillog-m-u_range/config/etc/gshadow | 42 + .../44_faillog-m-u_range/config/etc/pam.d/login | 111 + .../faillog/44_faillog-m-u_range/config/etc/passwd | 22 + .../faillog/44_faillog-m-u_range/config/etc/shadow | 22 + .../faillog/44_faillog-m-u_range/data/faillog.list | 5 + .../log/faillog/44_faillog-m-u_range/faillog.test | 57 + .../log/faillog/44_faillog-m-u_range/login.exp | 26 + .../faillog/45_faillog-m-u_open_range/config.txt | 1 + .../45_faillog-m-u_open_range/config/etc/group | 42 + .../45_faillog-m-u_open_range/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../45_faillog-m-u_open_range/config/etc/passwd | 22 + .../45_faillog-m-u_open_range/config/etc/shadow | 22 + .../45_faillog-m-u_open_range/data/faillog.list | 5 + .../faillog/45_faillog-m-u_open_range/faillog.test | 57 + .../faillog/45_faillog-m-u_open_range/login.exp | 26 + .../faillog/46_faillog-m-u_range_open/config.txt | 1 + .../46_faillog-m-u_range_open/config/etc/group | 42 + .../46_faillog-m-u_range_open/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../46_faillog-m-u_range_open/config/etc/passwd | 22 + .../46_faillog-m-u_range_open/config/etc/shadow | 22 + .../46_faillog-m-u_range_open/data/faillog.list | 5 + .../faillog/46_faillog-m-u_range_open/faillog.test | 57 + .../faillog/46_faillog-m-u_range_open/login.exp | 26 + .../log/faillog/47_faillog-m-a-u_user/config.txt | 1 + .../faillog/47_faillog-m-a-u_user/config/etc/group | 42 + .../47_faillog-m-a-u_user/config/etc/gshadow | 42 + .../47_faillog-m-a-u_user/config/etc/pam.d/login | 111 + .../47_faillog-m-a-u_user/config/etc/passwd | 22 + .../47_faillog-m-a-u_user/config/etc/shadow | 22 + .../47_faillog-m-a-u_user/data/faillog.list | 5 + .../log/faillog/47_faillog-m-a-u_user/faillog.test | 67 + .../log/faillog/47_faillog-m-a-u_user/login.exp | 26 + .../log/faillog/48_faillog-m-a-u_range/config.txt | 1 + .../48_faillog-m-a-u_range/config/etc/group | 42 + .../48_faillog-m-a-u_range/config/etc/gshadow | 42 + .../48_faillog-m-a-u_range/config/etc/pam.d/login | 111 + .../48_faillog-m-a-u_range/config/etc/passwd | 22 + .../48_faillog-m-a-u_range/config/etc/shadow | 22 + .../48_faillog-m-a-u_range/data/faillog.list | 5 + .../faillog/48_faillog-m-a-u_range/faillog.test | 67 + .../log/faillog/48_faillog-m-a-u_range/login.exp | 26 + .../faillog/49_faillog-m-a-u_open_range/config.txt | 1 + .../49_faillog-m-a-u_open_range/config/etc/group | 42 + .../49_faillog-m-a-u_open_range/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../49_faillog-m-a-u_open_range/config/etc/passwd | 22 + .../49_faillog-m-a-u_open_range/config/etc/shadow | 22 + .../49_faillog-m-a-u_open_range/data/faillog.list | 5 + .../49_faillog-m-a-u_open_range/faillog.test | 67 + .../faillog/49_faillog-m-a-u_open_range/login.exp | 26 + .../faillog/50_faillog-m-a-u_range_open/config.txt | 1 + .../50_faillog-m-a-u_range_open/config/etc/group | 42 + .../50_faillog-m-a-u_range_open/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../50_faillog-m-a-u_range_open/config/etc/passwd | 22 + .../50_faillog-m-a-u_range_open/config/etc/shadow | 22 + .../50_faillog-m-a-u_range_open/data/faillog.list | 5 + .../50_faillog-m-a-u_range_open/faillog.test | 67 + .../faillog/50_faillog-m-a-u_range_open/login.exp | 26 + .../log/faillog/51_faillog-m_invalid/config.txt | 1 + .../faillog/51_faillog-m_invalid/config/etc/group | 42 + .../51_faillog-m_invalid/config/etc/gshadow | 42 + .../faillog/51_faillog-m_invalid/config/etc/passwd | 22 + .../faillog/51_faillog-m_invalid/config/etc/shadow | 22 + .../faillog/51_faillog-m_invalid/data/faillog.err | 1 + .../log/faillog/51_faillog-m_invalid/faillog.test | 45 + .../faillog/52_faillog-t-l_exclusive/config.txt | 10 + .../52_faillog-t-l_exclusive/config/etc/group | 41 + .../52_faillog-t-l_exclusive/config/etc/gshadow | 41 + .../52_faillog-t-l_exclusive/config/etc/passwd | 19 + .../52_faillog-t-l_exclusive/config/etc/shadow | 19 + .../52_faillog-t-l_exclusive/data/usage.out | 14 + .../faillog/52_faillog-t-l_exclusive/faillog.test | 41 + .../faillog/53_faillog-t-m_exclusive/config.txt | 10 + .../53_faillog-t-m_exclusive/config/etc/group | 41 + .../53_faillog-t-m_exclusive/config/etc/gshadow | 41 + .../53_faillog-t-m_exclusive/config/etc/passwd | 19 + .../53_faillog-t-m_exclusive/config/etc/shadow | 19 + .../53_faillog-t-m_exclusive/data/usage.out | 14 + .../faillog/53_faillog-t-m_exclusive/faillog.test | 41 + .../faillog/54_faillog-t-r_exclusive/config.txt | 10 + .../54_faillog-t-r_exclusive/config/etc/group | 41 + .../54_faillog-t-r_exclusive/config/etc/gshadow | 41 + .../54_faillog-t-r_exclusive/config/etc/passwd | 19 + .../54_faillog-t-r_exclusive/config/etc/shadow | 19 + .../54_faillog-t-r_exclusive/data/usage.out | 14 + .../faillog/54_faillog-t-r_exclusive/faillog.test | 41 + .../log/faillog/55_faillog_no_changes/config.txt | 1 + .../faillog/55_faillog_no_changes/config/etc/group | 42 + .../55_faillog_no_changes/config/etc/gshadow | 42 + .../55_faillog_no_changes/config/etc/pam.d/login | 111 + .../55_faillog_no_changes/config/etc/passwd | 22 + .../55_faillog_no_changes/config/etc/shadow | 22 + .../55_faillog_no_changes/data/faillog.stat | 1 + .../log/faillog/55_faillog_no_changes/faillog.test | 35 + .../log/faillog/55_faillog_no_changes/login.exp | 26 + .../faillog/56_faillog-l-m_empty_file/config.txt | 1 + .../56_faillog-l-m_empty_file/config/etc/group | 42 + .../56_faillog-l-m_empty_file/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../56_faillog-l-m_empty_file/config/etc/passwd | 22 + .../56_faillog-l-m_empty_file/config/etc/shadow | 22 + .../56_faillog-l-m_empty_file/data/faillog.stat | 1 + .../faillog/56_faillog-l-m_empty_file/faillog.test | 35 + .../log/faillog/57_faillog-r_empty_file/config.txt | 1 + .../57_faillog-r_empty_file/config/etc/group | 42 + .../57_faillog-r_empty_file/config/etc/gshadow | 42 + .../57_faillog-r_empty_file/config/etc/pam.d/login | 111 + .../57_faillog-r_empty_file/config/etc/passwd | 22 + .../57_faillog-r_empty_file/config/etc/shadow | 22 + .../57_faillog-r_empty_file/data/faillog.stat | 1 + .../faillog/57_faillog-r_empty_file/faillog.test | 35 + .../faillog/58_faillog-l_no_failcount/config.txt | 1 + .../58_faillog-l_no_failcount/config/etc/group | 42 + .../58_faillog-l_no_failcount/config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../58_faillog-l_no_failcount/config/etc/passwd | 22 + .../58_faillog-l_no_failcount/config/etc/shadow | 22 + .../58_faillog-l_no_failcount/data/faillog.list | 3 + .../faillog/58_faillog-l_no_failcount/faillog.test | 57 + .../faillog/58_faillog-l_no_failcount/login.exp | 26 + .../log/lastlog/01_lastlog_no_lastlog/config.txt | 1 + .../lastlog/01_lastlog_no_lastlog/config/etc/group | 42 + .../01_lastlog_no_lastlog/config/etc/gshadow | 42 + .../01_lastlog_no_lastlog/config/etc/passwd | 20 + .../01_lastlog_no_lastlog/config/etc/shadow | 20 + .../lastlog/01_lastlog_no_lastlog/data/lastlog.err | 1 + .../log/lastlog/01_lastlog_no_lastlog/lastlog.test | 51 + .../tests/log/lastlog/02_lastlog_usage/config.txt | 10 + .../log/lastlog/02_lastlog_usage/config/etc/group | 41 + .../lastlog/02_lastlog_usage/config/etc/gshadow | 41 + .../log/lastlog/02_lastlog_usage/config/etc/passwd | 19 + .../log/lastlog/02_lastlog_usage/config/etc/shadow | 19 + .../log/lastlog/02_lastlog_usage/data/usage.out | 9 + .../log/lastlog/02_lastlog_usage/lastlog.test | 35 + .../tests/log/lastlog/03_lastlog_format/config.txt | 1 + .../log/lastlog/03_lastlog_format/config/etc/group | 42 + .../lastlog/03_lastlog_format/config/etc/gshadow | 42 + .../lastlog/03_lastlog_format/config/etc/passwd | 20 + .../lastlog/03_lastlog_format/config/etc/shadow | 20 + .../log/lastlog/03_lastlog_format/data/lastlog.out | 20 + .../log/lastlog/03_lastlog_format/lastlog.test | 60 + .../tests/log/lastlog/03_lastlog_format/login.exp | 13 + .../log/lastlog/04_lastlog_multiple/config.txt | 1 + .../lastlog/04_lastlog_multiple/config/etc/group | 42 + .../lastlog/04_lastlog_multiple/config/etc/gshadow | 42 + .../lastlog/04_lastlog_multiple/config/etc/passwd | 22 + .../lastlog/04_lastlog_multiple/config/etc/shadow | 22 + .../lastlog/04_lastlog_multiple/data/lastlog.list | 4 + .../log/lastlog/04_lastlog_multiple/lastlog.test | 52 + .../log/lastlog/04_lastlog_multiple/login.exp | 19 + tests/tests/log/lastlog/05_lastlog-u_ID/config.txt | 1 + .../log/lastlog/05_lastlog-u_ID/config/etc/group | 42 + .../log/lastlog/05_lastlog-u_ID/config/etc/gshadow | 42 + .../log/lastlog/05_lastlog-u_ID/config/etc/passwd | 22 + .../log/lastlog/05_lastlog-u_ID/config/etc/shadow | 22 + .../log/lastlog/05_lastlog-u_ID/data/lastlog.list | 2 + .../tests/log/lastlog/05_lastlog-u_ID/lastlog.test | 42 + .../tests/log/lastlog/06_lastlog-u_name/config.txt | 1 + .../log/lastlog/06_lastlog-u_name/config/etc/group | 42 + .../lastlog/06_lastlog-u_name/config/etc/gshadow | 42 + .../lastlog/06_lastlog-u_name/config/etc/passwd | 22 + .../lastlog/06_lastlog-u_name/config/etc/shadow | 22 + .../lastlog/06_lastlog-u_name/data/lastlog.list | 2 + .../log/lastlog/06_lastlog-u_name/lastlog.test | 42 + .../log/lastlog/07_lastlog-u_ID_invalid/config.txt | 1 + .../07_lastlog-u_ID_invalid/config/etc/group | 42 + .../07_lastlog-u_ID_invalid/config/etc/gshadow | 42 + .../07_lastlog-u_ID_invalid/config/etc/passwd | 22 + .../07_lastlog-u_ID_invalid/config/etc/shadow | 22 + .../07_lastlog-u_ID_invalid/data/lastlog.list | 0 .../lastlog/07_lastlog-u_ID_invalid/lastlog.test | 41 + .../lastlog/08_lastlog-u_name_invalid/config.txt | 1 + .../08_lastlog-u_name_invalid/config/etc/group | 42 + .../08_lastlog-u_name_invalid/config/etc/gshadow | 42 + .../08_lastlog-u_name_invalid/config/etc/passwd | 22 + .../08_lastlog-u_name_invalid/config/etc/shadow | 22 + .../08_lastlog-u_name_invalid/data/lastlog.err | 1 + .../lastlog/08_lastlog-u_name_invalid/lastlog.test | 45 + .../log/lastlog/09_lastlog-u_range/config.txt | 1 + .../lastlog/09_lastlog-u_range/config/etc/group | 42 + .../lastlog/09_lastlog-u_range/config/etc/gshadow | 42 + .../lastlog/09_lastlog-u_range/config/etc/passwd | 22 + .../lastlog/09_lastlog-u_range/config/etc/shadow | 22 + .../lastlog/09_lastlog-u_range/data/lastlog.list | 7 + .../log/lastlog/09_lastlog-u_range/lastlog.test | 42 + .../log/lastlog/10_lastlog-u_open_range/config.txt | 1 + .../10_lastlog-u_open_range/config/etc/group | 42 + .../10_lastlog-u_open_range/config/etc/gshadow | 42 + .../10_lastlog-u_open_range/config/etc/passwd | 22 + .../10_lastlog-u_open_range/config/etc/shadow | 22 + .../10_lastlog-u_open_range/data/lastlog.list | 21 + .../lastlog/10_lastlog-u_open_range/lastlog.test | 42 + .../log/lastlog/11_lastlog-u_range_open/config.txt | 1 + .../11_lastlog-u_range_open/config/etc/group | 42 + .../11_lastlog-u_range_open/config/etc/gshadow | 42 + .../11_lastlog-u_range_open/config/etc/passwd | 22 + .../11_lastlog-u_range_open/config/etc/shadow | 22 + .../11_lastlog-u_range_open/data/lastlog.list | 9 + .../lastlog/11_lastlog-u_range_open/lastlog.test | 42 + .../lastlog/12_lastlog-u_range_invalid1/config.txt | 1 + .../12_lastlog-u_range_invalid1/config/etc/group | 42 + .../12_lastlog-u_range_invalid1/config/etc/gshadow | 42 + .../12_lastlog-u_range_invalid1/config/etc/passwd | 22 + .../12_lastlog-u_range_invalid1/config/etc/shadow | 22 + .../12_lastlog-u_range_invalid1/data/lastlog.err | 1 + .../12_lastlog-u_range_invalid1/lastlog.test | 45 + .../lastlog/13_lastlog-u_range_invalid2/config.txt | 1 + .../13_lastlog-u_range_invalid2/config/etc/group | 42 + .../13_lastlog-u_range_invalid2/config/etc/gshadow | 42 + .../13_lastlog-u_range_invalid2/config/etc/passwd | 22 + .../13_lastlog-u_range_invalid2/config/etc/shadow | 22 + .../13_lastlog-u_range_invalid2/data/lastlog.err | 1 + .../13_lastlog-u_range_invalid2/lastlog.test | 45 + .../lastlog/14_lastlog-u_range_invalid3/config.txt | 1 + .../14_lastlog-u_range_invalid3/config/etc/group | 42 + .../14_lastlog-u_range_invalid3/config/etc/gshadow | 42 + .../14_lastlog-u_range_invalid3/config/etc/passwd | 22 + .../14_lastlog-u_range_invalid3/config/etc/shadow | 22 + .../14_lastlog-u_range_invalid3/data/lastlog.err | 1 + .../14_lastlog-u_range_invalid3/lastlog.test | 45 + .../log/lastlog/15_lastlog_bad_option/config.txt | 10 + .../lastlog/15_lastlog_bad_option/config/etc/group | 41 + .../15_lastlog_bad_option/config/etc/gshadow | 41 + .../15_lastlog_bad_option/config/etc/passwd | 19 + .../15_lastlog_bad_option/config/etc/shadow | 19 + .../lastlog/15_lastlog_bad_option/data/usage.out | 10 + .../log/lastlog/15_lastlog_bad_option/lastlog.test | 41 + .../log/lastlog/16_lastlog_extra_arg/config.txt | 10 + .../lastlog/16_lastlog_extra_arg/config/etc/group | 41 + .../16_lastlog_extra_arg/config/etc/gshadow | 41 + .../lastlog/16_lastlog_extra_arg/config/etc/passwd | 19 + .../lastlog/16_lastlog_extra_arg/config/etc/shadow | 19 + .../lastlog/16_lastlog_extra_arg/data/usage.out | 10 + .../log/lastlog/16_lastlog_extra_arg/lastlog.test | 41 + tests/tests/log/lastlog/17_lastlog-t/config.txt | 1 + .../log/lastlog/17_lastlog-t/config/etc/group | 42 + .../log/lastlog/17_lastlog-t/config/etc/gshadow | 42 + .../log/lastlog/17_lastlog-t/config/etc/passwd | 22 + .../log/lastlog/17_lastlog-t/config/etc/shadow | 22 + .../log/lastlog/17_lastlog-t/data/lastlog.list | 3 + tests/tests/log/lastlog/17_lastlog-t/lastlog.test | 52 + tests/tests/log/lastlog/17_lastlog-t/login.exp | 19 + tests/tests/log/lastlog/18_lastlog-b/config.txt | 1 + .../log/lastlog/18_lastlog-b/config/etc/group | 42 + .../log/lastlog/18_lastlog-b/config/etc/gshadow | 42 + .../log/lastlog/18_lastlog-b/config/etc/passwd | 22 + .../log/lastlog/18_lastlog-b/config/etc/shadow | 22 + .../log/lastlog/18_lastlog-b/data/lastlog.list | 21 + tests/tests/log/lastlog/18_lastlog-b/lastlog.test | 52 + tests/tests/log/lastlog/18_lastlog-b/login.exp | 19 + .../log/lastlog/19_lastlog-t_invalid/config.txt | 1 + .../lastlog/19_lastlog-t_invalid/config/etc/group | 42 + .../19_lastlog-t_invalid/config/etc/gshadow | 42 + .../lastlog/19_lastlog-t_invalid/config/etc/passwd | 22 + .../lastlog/19_lastlog-t_invalid/config/etc/shadow | 22 + .../lastlog/19_lastlog-t_invalid/data/lastlog.err | 1 + .../log/lastlog/19_lastlog-t_invalid/lastlog.test | 45 + .../log/lastlog/20_lastlog-b_invalid/config.txt | 1 + .../lastlog/20_lastlog-b_invalid/config/etc/group | 42 + .../20_lastlog-b_invalid/config/etc/gshadow | 42 + .../lastlog/20_lastlog-b_invalid/config/etc/passwd | 22 + .../lastlog/20_lastlog-b_invalid/config/etc/shadow | 22 + .../lastlog/20_lastlog-b_invalid/data/lastlog.err | 1 + .../log/lastlog/20_lastlog-b_invalid/lastlog.test | 45 + tests/tests/login/01_login_prompt/config.txt | 3 + tests/tests/login/01_login_prompt/config/etc/group | 42 + .../tests/login/01_login_prompt/config/etc/gshadow | 42 + .../login/01_login_prompt/config/etc/login.defs | 314 + .../tests/login/01_login_prompt/config/etc/passwd | 21 + .../tests/login/01_login_prompt/config/etc/shadow | 20 + tests/tests/login/01_login_prompt/login.exp | 23 + tests/tests/login/01_login_prompt/login.test | 26 + tests/tests/login/02_login_user/config.txt | 3 + tests/tests/login/02_login_user/config/etc/group | 42 + tests/tests/login/02_login_user/config/etc/gshadow | 42 + .../login/02_login_user/config/etc/login.defs | 314 + tests/tests/login/02_login_user/config/etc/passwd | 21 + tests/tests/login/02_login_user/config/etc/shadow | 20 + tests/tests/login/02_login_user/login.exp | 20 + tests/tests/login/02_login_user/login.test | 26 + tests/tests/login/03_login_check_tty/config.txt | 3 + .../login/03_login_check_tty/config/etc/group | 42 + .../login/03_login_check_tty/config/etc/gshadow | 42 + .../login/03_login_check_tty/config/etc/login.defs | 314 + .../login/03_login_check_tty/config/etc/passwd | 21 + .../login/03_login_check_tty/config/etc/shadow | 20 + tests/tests/login/03_login_check_tty/login.exp | 22 + tests/tests/login/03_login_check_tty/login.test | 26 + tests/tests/newgidmap/01_newgidmap/config.txt | 0 .../tests/newgidmap/01_newgidmap/config/etc/group | 43 + .../newgidmap/01_newgidmap/config/etc/login.defs | 341 + .../tests/newgidmap/01_newgidmap/config/etc/passwd | 20 + .../tests/newgidmap/01_newgidmap/config/etc/subgid | 1 + .../tests/newgidmap/01_newgidmap/config/etc/subuid | 1 + tests/tests/newgidmap/01_newgidmap/data/gid_map | 2 + tests/tests/newgidmap/01_newgidmap/newgidmap.test | 62 + .../02_newgidmap_relaxed_gid_check/config.txt | 0 .../config/etc/group | 43 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../02_newgidmap_relaxed_gid_check/data/gid_map | 2 + .../data/gid_map.bar | 2 + .../02_newgidmap_relaxed_gid_check/newgidmap.test | 67 + tests/tests/newuidmap/01_newuidmap/config.txt | 0 .../tests/newuidmap/01_newuidmap/config/etc/group | 43 + .../newuidmap/01_newuidmap/config/etc/login.defs | 343 + .../tests/newuidmap/01_newuidmap/config/etc/passwd | 20 + .../tests/newuidmap/01_newuidmap/config/etc/subgid | 1 + .../tests/newuidmap/01_newuidmap/config/etc/subuid | 1 + tests/tests/newuidmap/01_newuidmap/data/uid_map | 2 + tests/tests/newuidmap/01_newuidmap/newuidmap.test | 62 + .../02_newuidmap_relaxed_gid_check/config.txt | 0 .../config/etc/group | 43 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../02_newuidmap_relaxed_gid_check/data/uid_map | 2 + .../02_newuidmap_relaxed_gid_check/newuidmap.test | 54 + tests/tests/newusers/01_create_user/config.txt | 0 .../tests/newusers/01_create_user/config/etc/group | 41 + .../newusers/01_create_user/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../01_create_user/config/etc/pam.d/newusers | 6 + .../newusers/01_create_user/config/etc/passwd | 19 + .../newusers/01_create_user/config/etc/shadow | 19 + tests/tests/newusers/01_create_user/data/group | 42 + tests/tests/newusers/01_create_user/data/gshadow | 42 + .../newusers/01_create_user/data/newusers.list | 1 + tests/tests/newusers/01_create_user/data/passwd | 20 + tests/tests/newusers/01_create_user/data/shadow | 20 + tests/tests/newusers/01_create_user/newusers.test | 37 + tests/tests/newusers/02_update_password/config.txt | 1 + .../newusers/02_update_password/config/etc/group | 42 + .../newusers/02_update_password/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../02_update_password/config/etc/pam.d/newusers | 6 + .../newusers/02_update_password/config/etc/passwd | 20 + .../newusers/02_update_password/config/etc/shadow | 20 + .../newusers/02_update_password/data/newusers.list | 1 + .../tests/newusers/02_update_password/data/shadow | 20 + .../newusers/02_update_password/newusers.test | 37 + tests/tests/newusers/03_no_update_pid/config.txt | 1 + .../newusers/03_no_update_pid/config/etc/group | 42 + .../newusers/03_no_update_pid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../03_no_update_pid/config/etc/pam.d/newusers | 6 + .../newusers/03_no_update_pid/config/etc/passwd | 20 + .../newusers/03_no_update_pid/config/etc/shadow | 20 + .../newusers/03_no_update_pid/data/newusers.list | 1 + tests/tests/newusers/03_no_update_pid/data/shadow | 20 + .../tests/newusers/03_no_update_pid/newusers.test | 37 + tests/tests/newusers/04_no_update_gid/config.txt | 1 + .../newusers/04_no_update_gid/config/etc/group | 42 + .../newusers/04_no_update_gid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../04_no_update_gid/config/etc/pam.d/newusers | 6 + .../newusers/04_no_update_gid/config/etc/passwd | 20 + .../newusers/04_no_update_gid/config/etc/shadow | 20 + .../newusers/04_no_update_gid/data/newusers.list | 1 + tests/tests/newusers/04_no_update_gid/data/shadow | 20 + .../tests/newusers/04_no_update_gid/newusers.test | 37 + tests/tests/newusers/05_create_user_pid/config.txt | 0 .../newusers/05_create_user_pid/config/etc/group | 41 + .../newusers/05_create_user_pid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../05_create_user_pid/config/etc/pam.d/newusers | 6 + .../newusers/05_create_user_pid/config/etc/passwd | 19 + .../newusers/05_create_user_pid/config/etc/shadow | 19 + tests/tests/newusers/05_create_user_pid/data/group | 42 + .../tests/newusers/05_create_user_pid/data/gshadow | 42 + .../newusers/05_create_user_pid/data/newusers.list | 1 + .../tests/newusers/05_create_user_pid/data/passwd | 20 + .../tests/newusers/05_create_user_pid/data/shadow | 20 + .../newusers/05_create_user_pid/newusers.test | 37 + tests/tests/newusers/06_create_user_gid/config.txt | 0 .../newusers/06_create_user_gid/config/etc/group | 41 + .../newusers/06_create_user_gid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../06_create_user_gid/config/etc/pam.d/newusers | 6 + .../newusers/06_create_user_gid/config/etc/passwd | 19 + .../newusers/06_create_user_gid/config/etc/shadow | 19 + tests/tests/newusers/06_create_user_gid/data/group | 42 + .../tests/newusers/06_create_user_gid/data/gshadow | 42 + .../newusers/06_create_user_gid/data/newusers.list | 1 + .../tests/newusers/06_create_user_gid/data/passwd | 20 + .../tests/newusers/06_create_user_gid/data/shadow | 20 + .../newusers/06_create_user_gid/newusers.test | 37 + .../newusers/07_create_user_pid_gid/config.txt | 0 .../07_create_user_pid_gid/config/etc/group | 41 + .../07_create_user_pid_gid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../07_create_user_pid_gid/config/etc/passwd | 19 + .../07_create_user_pid_gid/config/etc/shadow | 19 + .../newusers/07_create_user_pid_gid/data/group | 42 + .../newusers/07_create_user_pid_gid/data/gshadow | 42 + .../07_create_user_pid_gid/data/newusers.list | 1 + .../newusers/07_create_user_pid_gid/data/passwd | 20 + .../newusers/07_create_user_pid_gid/data/shadow | 20 + .../newusers/07_create_user_pid_gid/newusers.test | 37 + .../08_create_user_pid_other-gid/config.txt | 0 .../08_create_user_pid_other-gid/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../08_create_user_pid_other-gid/config/etc/passwd | 19 + .../08_create_user_pid_other-gid/config/etc/shadow | 19 + .../08_create_user_pid_other-gid/data/group | 42 + .../08_create_user_pid_other-gid/data/gshadow | 42 + .../data/newusers.list | 1 + .../08_create_user_pid_other-gid/data/passwd | 20 + .../08_create_user_pid_other-gid/data/shadow | 20 + .../08_create_user_pid_other-gid/newusers.test | 37 + .../09_create_user_pid-as-user-bar/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../09_create_user_pid-as-user-bar/data/group | 43 + .../09_create_user_pid-as-user-bar/data/gshadow | 43 + .../data/newusers.list | 1 + .../09_create_user_pid-as-user-bar/data/passwd | 21 + .../09_create_user_pid-as-user-bar/data/shadow | 21 + .../09_create_user_pid-as-user-bar/newusers.test | 37 + .../10_create_user_gid-as-group-bar/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/newusers.list | 1 + .../10_create_user_gid-as-group-bar/data/passwd | 21 + .../10_create_user_gid-as-group-bar/data/shadow | 21 + .../10_create_user_gid-as-group-bar/newusers.test | 37 + tests/tests/newusers/11_update_gecos/config.txt | 1 + .../newusers/11_update_gecos/config/etc/group | 42 + .../newusers/11_update_gecos/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../11_update_gecos/config/etc/pam.d/newusers | 6 + .../newusers/11_update_gecos/config/etc/passwd | 20 + .../newusers/11_update_gecos/config/etc/shadow | 20 + .../newusers/11_update_gecos/data/newusers.list | 1 + tests/tests/newusers/11_update_gecos/data/passwd | 20 + tests/tests/newusers/11_update_gecos/data/shadow | 20 + tests/tests/newusers/11_update_gecos/newusers.test | 37 + tests/tests/newusers/12_update_shell/config.txt | 1 + .../newusers/12_update_shell/config/etc/group | 42 + .../newusers/12_update_shell/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../12_update_shell/config/etc/pam.d/newusers | 6 + .../newusers/12_update_shell/config/etc/passwd | 20 + .../newusers/12_update_shell/config/etc/shadow | 20 + .../newusers/12_update_shell/data/newusers.list | 1 + tests/tests/newusers/12_update_shell/data/passwd | 20 + tests/tests/newusers/12_update_shell/data/shadow | 20 + tests/tests/newusers/12_update_shell/newusers.test | 37 + .../newusers/13_create_user_new-home/config.txt | 0 .../13_create_user_new-home/config/etc/group | 41 + .../13_create_user_new-home/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../13_create_user_new-home/config/etc/passwd | 19 + .../13_create_user_new-home/config/etc/shadow | 19 + .../newusers/13_create_user_new-home/data/group | 42 + .../newusers/13_create_user_new-home/data/gshadow | 42 + .../13_create_user_new-home/data/home_ls-a | 2 + .../13_create_user_new-home/data/newusers.list | 1 + .../newusers/13_create_user_new-home/data/passwd | 20 + .../newusers/13_create_user_new-home/data/shadow | 20 + .../newusers/13_create_user_new-home/newusers.test | 59 + .../14_create_user_existing-home/config.txt | 0 .../14_create_user_existing-home/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../14_create_user_existing-home/config/etc/passwd | 19 + .../14_create_user_existing-home/config/etc/shadow | 19 + .../14_create_user_existing-home/data/group | 42 + .../14_create_user_existing-home/data/gshadow | 42 + .../14_create_user_existing-home/data/home_ls-a | 2 + .../data/newusers.list | 1 + .../14_create_user_existing-home/data/passwd | 20 + .../14_create_user_existing-home/data/shadow | 20 + .../14_create_user_existing-home/newusers.test | 61 + tests/tests/newusers/15_update_new-home/config.txt | 1 + .../newusers/15_update_new-home/config/etc/group | 42 + .../newusers/15_update_new-home/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../15_update_new-home/config/etc/pam.d/newusers | 6 + .../newusers/15_update_new-home/config/etc/passwd | 20 + .../newusers/15_update_new-home/config/etc/shadow | 20 + .../newusers/15_update_new-home/data/home_ls-a | 2 + .../newusers/15_update_new-home/data/newusers.list | 1 + .../tests/newusers/15_update_new-home/data/passwd | 20 + .../tests/newusers/15_update_new-home/data/shadow | 20 + .../newusers/15_update_new-home/newusers.test | 60 + .../newusers/16_update_existing-home/config.txt | 1 + .../16_update_existing-home/config/etc/group | 42 + .../16_update_existing-home/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../16_update_existing-home/config/etc/passwd | 20 + .../16_update_existing-home/config/etc/shadow | 20 + .../16_update_existing-home/data/home_ls-a | 2 + .../16_update_existing-home/data/newusers.list | 1 + .../newusers/16_update_existing-home/data/passwd | 20 + .../newusers/16_update_existing-home/data/shadow | 20 + .../newusers/16_update_existing-home/newusers.test | 60 + .../17_create_user_pid-already-used/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../17_create_user_pid-already-used/data/group | 43 + .../17_create_user_pid-already-used/data/gshadow | 43 + .../data/newusers.list | 1 + .../17_create_user_pid-already-used/data/passwd | 21 + .../17_create_user_pid-already-used/data/shadow | 21 + .../17_create_user_pid-already-used/newusers.test | 37 + .../18_create_user_gid-already-used/config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/newusers.list | 1 + .../18_create_user_gid-already-used/data/passwd | 21 + .../18_create_user_gid-already-used/data/shadow | 21 + .../18_create_user_gid-already-used/newusers.test | 37 + .../newusers/19_update_keep-old-home/config.txt | 1 + .../19_update_keep-old-home/config/etc/group | 42 + .../19_update_keep-old-home/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../19_update_keep-old-home/config/etc/passwd | 20 + .../19_update_keep-old-home/config/etc/shadow | 20 + .../19_update_keep-old-home/data/home_ls-a | 2 + .../19_update_keep-old-home/data/home_ls-a.old | 3 + .../19_update_keep-old-home/data/newusers.list | 1 + .../newusers/19_update_keep-old-home/data/passwd | 20 + .../newusers/19_update_keep-old-home/data/shadow | 20 + .../newusers/19_update_keep-old-home/newusers.test | 69 + tests/tests/newusers/20_multiple_users/config.txt | 1 + .../newusers/20_multiple_users/config/etc/group | 42 + .../newusers/20_multiple_users/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../20_multiple_users/config/etc/pam.d/newusers | 6 + .../newusers/20_multiple_users/config/etc/passwd | 20 + .../newusers/20_multiple_users/config/etc/shadow | 20 + tests/tests/newusers/20_multiple_users/data/group | 58 + .../tests/newusers/20_multiple_users/data/gshadow | 57 + .../newusers/20_multiple_users/data/newusers.list | 17 + tests/tests/newusers/20_multiple_users/data/passwd | 37 + tests/tests/newusers/20_multiple_users/data/shadow | 37 + .../tests/newusers/20_multiple_users/newusers.test | 38 + .../newusers/21_create_user_UID_MAX/config.txt | 0 .../21_create_user_UID_MAX/config/etc/group | 41 + .../21_create_user_UID_MAX/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../21_create_user_UID_MAX/config/etc/passwd | 19 + .../21_create_user_UID_MAX/config/etc/shadow | 19 + .../newusers/21_create_user_UID_MAX/data/group | 43 + .../newusers/21_create_user_UID_MAX/data/gshadow | 43 + .../21_create_user_UID_MAX/data/newusers.list | 2 + .../newusers/21_create_user_UID_MAX/data/passwd | 21 + .../newusers/21_create_user_UID_MAX/data/shadow | 21 + .../newusers/21_create_user_UID_MAX/newusers.test | 37 + .../newusers/22_create_user_GID_MAX/config.txt | 0 .../22_create_user_GID_MAX/config/etc/group | 41 + .../22_create_user_GID_MAX/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../22_create_user_GID_MAX/config/etc/passwd | 19 + .../22_create_user_GID_MAX/config/etc/shadow | 19 + .../newusers/22_create_user_GID_MAX/data/group | 43 + .../newusers/22_create_user_GID_MAX/data/gshadow | 43 + .../22_create_user_GID_MAX/data/newusers.list | 2 + .../newusers/22_create_user_GID_MAX/data/passwd | 21 + .../newusers/22_create_user_GID_MAX/data/shadow | 21 + .../newusers/22_create_user_GID_MAX/newusers.test | 37 + .../23_create_user_error_negative_UID/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../24_create_user_error_invalid_UID/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../24_create_user_error_invalid_UID/newusers.test | 54 + .../config.txt | 2 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 3 + .../newusers.test | 55 + .../config.txt | 4 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 314 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 3 + .../newusers.test | 55 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../30_create_user_different_groupname/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../30_create_user_different_groupname/data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../30_create_user_different_groupname/data/passwd | 20 + .../30_create_user_different_groupname/data/shadow | 20 + .../newusers.test | 37 + .../31_create_user_error_invalid_GID/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../31_create_user_error_invalid_GID/newusers.test | 54 + .../config.txt | 1 + .../config/etc/group | 41 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../newusers.test | 37 + .../34_update_password_no_shadow/config.txt | 2 + .../34_update_password_no_shadow/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../34_update_password_no_shadow/config/etc/passwd | 20 + .../34_update_password_no_shadow/config/etc/shadow | 19 + .../data/newusers.list | 1 + .../34_update_password_no_shadow/data/passwd | 20 + .../34_update_password_no_shadow/newusers.test | 38 + tests/tests/newusers/35_read_from_stdin/config.txt | 0 .../newusers/35_read_from_stdin/config/etc/group | 41 + .../newusers/35_read_from_stdin/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../35_read_from_stdin/config/etc/pam.d/newusers | 6 + .../newusers/35_read_from_stdin/config/etc/passwd | 19 + .../newusers/35_read_from_stdin/config/etc/shadow | 19 + tests/tests/newusers/35_read_from_stdin/data/group | 43 + .../tests/newusers/35_read_from_stdin/data/gshadow | 43 + .../newusers/35_read_from_stdin/data/newusers.list | 2 + .../tests/newusers/35_read_from_stdin/data/passwd | 21 + .../tests/newusers/35_read_from_stdin/data/shadow | 21 + .../newusers/35_read_from_stdin/newusers.test | 37 + .../newusers/36_create_user_encrypted/config.txt | 0 .../36_create_user_encrypted/config/etc/group | 41 + .../36_create_user_encrypted/config/etc/gshadow | 41 + .../36_create_user_encrypted/config/etc/passwd | 19 + .../36_create_user_encrypted/config/etc/shadow | 19 + .../newusers/36_create_user_encrypted/data/group | 42 + .../newusers/36_create_user_encrypted/data/gshadow | 42 + .../36_create_user_encrypted/data/newusers.list | 1 + .../newusers/36_create_user_encrypted/data/passwd | 20 + .../newusers/36_create_user_encrypted/data/shadow | 20 + .../36_create_user_encrypted/newusers.test | 37 + .../37_create_user_encrypt_MD5-PAM/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../37_create_user_encrypt_MD5-PAM/data/group | 42 + .../37_create_user_encrypt_MD5-PAM/data/gshadow | 42 + .../data/newusers.list | 1 + .../37_create_user_encrypt_MD5-PAM/data/passwd | 20 + .../37_create_user_encrypt_MD5-PAM/data/shadow | 20 + .../37_create_user_encrypt_MD5-PAM/newusers.test | 37 + .../newusers/37_create_user_encrypt_MD5/config.txt | 0 .../37_create_user_encrypt_MD5/config/etc/group | 41 + .../37_create_user_encrypt_MD5/config/etc/gshadow | 41 + .../37_create_user_encrypt_MD5/config/etc/passwd | 19 + .../37_create_user_encrypt_MD5/config/etc/shadow | 19 + .../newusers/37_create_user_encrypt_MD5/data/group | 42 + .../37_create_user_encrypt_MD5/data/gshadow | 42 + .../37_create_user_encrypt_MD5/data/newusers.list | 1 + .../37_create_user_encrypt_MD5/data/passwd | 20 + .../37_create_user_encrypt_MD5/data/shadow | 20 + .../37_create_user_encrypt_MD5/newusers.test | 37 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../newusers.test | 38 + .../config.txt | 2 + .../config/etc/group | 42 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../newusers.test | 37 + .../40_update_password_encrypted/config.txt | 1 + .../40_update_password_encrypted/config/etc/group | 42 + .../config/etc/gshadow | 41 + .../40_update_password_encrypted/config/etc/passwd | 20 + .../40_update_password_encrypted/config/etc/shadow | 20 + .../data/newusers.list | 1 + .../40_update_password_encrypted/data/shadow | 20 + .../40_update_password_encrypted/newusers.test | 37 + .../41_create_user_encrypt_SHA256-PAM/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../41_create_user_encrypt_SHA256-PAM/data/group | 42 + .../41_create_user_encrypt_SHA256-PAM/data/gshadow | 42 + .../data/newusers.list | 1 + .../41_create_user_encrypt_SHA256-PAM/data/passwd | 20 + .../41_create_user_encrypt_SHA256-PAM/data/shadow | 20 + .../newusers.test | 37 + .../41_create_user_encrypt_SHA256/config.txt | 0 .../41_create_user_encrypt_SHA256/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../41_create_user_encrypt_SHA256/data/group | 42 + .../41_create_user_encrypt_SHA256/data/gshadow | 42 + .../data/newusers.list | 1 + .../41_create_user_encrypt_SHA256/data/passwd | 20 + .../41_create_user_encrypt_SHA256/data/shadow | 20 + .../41_create_user_encrypt_SHA256/newusers.test | 37 + .../42_create_user_encrypt_SHA512-PAM/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../42_create_user_encrypt_SHA512-PAM/data/group | 42 + .../42_create_user_encrypt_SHA512-PAM/data/gshadow | 42 + .../data/newusers.list | 1 + .../42_create_user_encrypt_SHA512-PAM/data/passwd | 20 + .../42_create_user_encrypt_SHA512-PAM/data/shadow | 20 + .../newusers.test | 37 + .../42_create_user_encrypt_SHA512/config.txt | 0 .../42_create_user_encrypt_SHA512/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../42_create_user_encrypt_SHA512/data/group | 42 + .../42_create_user_encrypt_SHA512/data/gshadow | 42 + .../data/newusers.list | 1 + .../42_create_user_encrypt_SHA512/data/passwd | 20 + .../42_create_user_encrypt_SHA512/data/shadow | 20 + .../42_create_user_encrypt_SHA512/newusers.test | 37 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../newusers.test | 47 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../newusers.test | 47 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../newusers.test | 47 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../newusers.test | 47 + .../45_create_user_encrypt_rounds_3000/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 8 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../newusers.test | 38 + .../47_create_user_error_UID_4294967295/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../48_create_user_error_GID_4294967295/config.txt | 0 .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/newusers.err | 3 + .../data/newusers.list | 1 + .../newusers.test | 54 + .../newusers/49_multiple_system_users/config.txt | 1 + .../49_multiple_system_users/config/etc/group | 43 + .../49_multiple_system_users/config/etc/gshadow | 43 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../49_multiple_system_users/config/etc/passwd | 21 + .../49_multiple_system_users/config/etc/shadow | 21 + .../newusers/49_multiple_system_users/data/group | 59 + .../newusers/49_multiple_system_users/data/gshadow | 59 + .../49_multiple_system_users/data/newusers.list | 17 + .../newusers/49_multiple_system_users/data/passwd | 38 + .../newusers/49_multiple_system_users/data/shadow | 38 + .../49_multiple_system_users/newusers.test | 37 + tests/tests/newusers/50_usage/config.txt | 0 tests/tests/newusers/50_usage/config/etc/group | 42 + tests/tests/newusers/50_usage/config/etc/gshadow | 42 + tests/tests/newusers/50_usage/config/etc/passwd | 26 + tests/tests/newusers/50_usage/config/etc/shadow | 26 + tests/tests/newusers/50_usage/data/usage.out | 7 + tests/tests/newusers/50_usage/newusers.test | 48 + .../newusers/51_usage_invalid_option/config.txt | 0 .../51_usage_invalid_option/config/etc/group | 42 + .../51_usage_invalid_option/config/etc/gshadow | 42 + .../51_usage_invalid_option/config/etc/passwd | 26 + .../51_usage_invalid_option/config/etc/shadow | 26 + .../51_usage_invalid_option/data/usage.out | 8 + .../newusers/51_usage_invalid_option/newusers.test | 54 + .../newusers/52_usage_2_input_files/config.txt | 0 .../52_usage_2_input_files/config/etc/group | 42 + .../52_usage_2_input_files/config/etc/gshadow | 42 + .../52_usage_2_input_files/config/etc/passwd | 26 + .../52_usage_2_input_files/config/etc/shadow | 26 + .../newusers/52_usage_2_input_files/data/usage.out | 7 + .../newusers/52_usage_2_input_files/newusers.test | 54 + tests/tests/newusers/53_locked_passwd/config.txt | 0 .../newusers/53_locked_passwd/config/etc/group | 42 + .../newusers/53_locked_passwd/config/etc/gshadow | 42 + .../newusers/53_locked_passwd/config/etc/passwd | 26 + .../newusers/53_locked_passwd/config/etc/shadow | 26 + .../newusers/53_locked_passwd/data/newusers.list | 1 + .../tests/newusers/53_locked_passwd/data/usage.out | 2 + .../tests/newusers/53_locked_passwd/newusers.test | 59 + tests/tests/newusers/54_locked_shadow/config.txt | 0 .../newusers/54_locked_shadow/config/etc/group | 42 + .../newusers/54_locked_shadow/config/etc/gshadow | 42 + .../newusers/54_locked_shadow/config/etc/passwd | 26 + .../newusers/54_locked_shadow/config/etc/shadow | 26 + .../newusers/54_locked_shadow/data/newusers.list | 1 + .../tests/newusers/54_locked_shadow/data/usage.out | 2 + .../tests/newusers/54_locked_shadow/newusers.test | 59 + tests/tests/newusers/55_locked_group/config.txt | 0 .../newusers/55_locked_group/config/etc/group | 42 + .../newusers/55_locked_group/config/etc/gshadow | 42 + .../newusers/55_locked_group/config/etc/passwd | 26 + .../newusers/55_locked_group/config/etc/shadow | 26 + .../newusers/55_locked_group/data/newusers.list | 1 + .../tests/newusers/55_locked_group/data/usage.out | 2 + tests/tests/newusers/55_locked_group/newusers.test | 59 + tests/tests/newusers/56_locked_gshadow/config.txt | 0 .../newusers/56_locked_gshadow/config/etc/group | 42 + .../newusers/56_locked_gshadow/config/etc/gshadow | 42 + .../newusers/56_locked_gshadow/config/etc/passwd | 26 + .../newusers/56_locked_gshadow/config/etc/shadow | 26 + .../newusers/56_locked_gshadow/data/newusers.list | 1 + .../newusers/56_locked_gshadow/data/usage.out | 2 + .../tests/newusers/56_locked_gshadow/newusers.test | 59 + .../newusers/57_missing_input_file/config.txt | 0 .../57_missing_input_file/config/etc/group | 42 + .../57_missing_input_file/config/etc/gshadow | 42 + .../57_missing_input_file/config/etc/passwd | 26 + .../57_missing_input_file/config/etc/shadow | 26 + .../newusers/57_missing_input_file/data/usage.out | 1 + .../newusers/57_missing_input_file/newusers.test | 54 + .../newusers/58_invalid_input_file/config.txt | 0 .../58_invalid_input_file/config/etc/group | 42 + .../58_invalid_input_file/config/etc/gshadow | 42 + .../58_invalid_input_file/config/etc/passwd | 26 + .../58_invalid_input_file/config/etc/shadow | 26 + .../58_invalid_input_file/data/newusers.err | 2 + .../58_invalid_input_file/data/newusers.list | 1 + .../newusers/58_invalid_input_file/newusers.test | 54 + tests/tests/newusers/59_no_gshadow_file/config.txt | 2 + .../newusers/59_no_gshadow_file/config/etc/group | 41 + .../newusers/59_no_gshadow_file/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../59_no_gshadow_file/config/etc/pam.d/newusers | 6 + .../newusers/59_no_gshadow_file/config/etc/passwd | 19 + .../newusers/59_no_gshadow_file/config/etc/shadow | 19 + tests/tests/newusers/59_no_gshadow_file/data/group | 42 + .../newusers/59_no_gshadow_file/data/newusers.list | 1 + .../tests/newusers/59_no_gshadow_file/data/passwd | 20 + .../tests/newusers/59_no_gshadow_file/data/shadow | 20 + .../newusers/59_no_gshadow_file/newusers.test | 38 + tests/tests/newusers/60_update_no_gecos/config.txt | 1 + .../newusers/60_update_no_gecos/config/etc/group | 42 + .../newusers/60_update_no_gecos/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../60_update_no_gecos/config/etc/pam.d/newusers | 6 + .../newusers/60_update_no_gecos/config/etc/passwd | 20 + .../newusers/60_update_no_gecos/config/etc/shadow | 20 + .../newusers/60_update_no_gecos/data/newusers.list | 1 + .../tests/newusers/60_update_no_gecos/data/passwd | 20 + .../tests/newusers/60_update_no_gecos/data/shadow | 20 + .../newusers/60_update_no_gecos/newusers.test | 37 + tests/tests/newusers/61_update_no_shell/config.txt | 1 + .../newusers/61_update_no_shell/config/etc/group | 42 + .../newusers/61_update_no_shell/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../61_update_no_shell/config/etc/pam.d/newusers | 6 + .../newusers/61_update_no_shell/config/etc/passwd | 20 + .../newusers/61_update_no_shell/config/etc/shadow | 20 + .../newusers/61_update_no_shell/data/newusers.list | 1 + .../tests/newusers/61_update_no_shell/data/passwd | 20 + .../tests/newusers/61_update_no_shell/data/shadow | 20 + .../newusers/61_update_no_shell/newusers.test | 37 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd.out | 1 + .../01_passwd_-S_root_locked_account/passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd.out | 1 + .../02_passwd_-S_root_valid_account/passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd.out | 1 + .../03_passwd_-S_root_empty_password/passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd.out | 1 + .../passwd.test | 52 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/passwd.out | 1 + .../passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../06_passwd_-l_root_lock_account/data/passwd.out | 1 + .../06_passwd_-l_root_lock_account/data/shadow | 20 + .../06_passwd_-l_root_lock_account/passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/passwd | 20 + .../data/passwd.out | 1 + .../passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd.out | 1 + .../08_passwd_-u_root_unlock_account/data/shadow | 20 + .../08_passwd_-u_root_unlock_account/passwd.test | 48 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd.err | 2 + .../09_passwd_-u_root_unlock_to_empty/passwd.test | 54 + .../passwd/10_passwd_-d_root/config/etc/group | 42 + .../passwd/10_passwd_-d_root/config/etc/gshadow | 42 + .../passwd/10_passwd_-d_root/config/etc/passwd | 20 + .../passwd/10_passwd_-d_root/config/etc/shadow | 20 + .../tests/passwd/10_passwd_-d_root/data/passwd.out | 1 + tests/tests/passwd/10_passwd_-d_root/data/shadow | 20 + tests/tests/passwd/10_passwd_-d_root/passwd.test | 48 + .../11_passwd_--mindays_root/config/etc/group | 42 + .../11_passwd_--mindays_root/config/etc/gshadow | 42 + .../11_passwd_--mindays_root/config/etc/passwd | 20 + .../11_passwd_--mindays_root/config/etc/shadow | 20 + .../11_passwd_--mindays_root/data/passwd.out | 1 + .../passwd/11_passwd_--mindays_root/data/shadow | 20 + .../passwd/11_passwd_--mindays_root/passwd.test | 48 + .../12_passwd_--maxdays_root/config/etc/group | 42 + .../12_passwd_--maxdays_root/config/etc/gshadow | 42 + .../12_passwd_--maxdays_root/config/etc/passwd | 20 + .../12_passwd_--maxdays_root/config/etc/shadow | 20 + .../12_passwd_--maxdays_root/data/passwd.out | 1 + .../passwd/12_passwd_--maxdays_root/data/shadow | 20 + .../passwd/12_passwd_--maxdays_root/passwd.test | 48 + .../13_passwd_--warndays_root/config/etc/group | 42 + .../13_passwd_--warndays_root/config/etc/gshadow | 42 + .../13_passwd_--warndays_root/config/etc/passwd | 20 + .../13_passwd_--warndays_root/config/etc/shadow | 20 + .../13_passwd_--warndays_root/data/passwd.out | 1 + .../passwd/13_passwd_--warndays_root/data/shadow | 20 + .../passwd/13_passwd_--warndays_root/passwd.test | 48 + .../14_passwd_--inactive_root/config/etc/group | 42 + .../14_passwd_--inactive_root/config/etc/gshadow | 42 + .../14_passwd_--inactive_root/config/etc/passwd | 20 + .../14_passwd_--inactive_root/config/etc/shadow | 20 + .../14_passwd_--inactive_root/data/passwd.out | 1 + .../passwd/14_passwd_--inactive_root/data/shadow | 20 + .../passwd/14_passwd_--inactive_root/passwd.test | 48 + .../15_passwd_--expire_root/config/etc/group | 42 + .../15_passwd_--expire_root/config/etc/gshadow | 42 + .../15_passwd_--expire_root/config/etc/passwd | 20 + .../15_passwd_--expire_root/config/etc/shadow | 20 + .../passwd/15_passwd_--expire_root/data/passwd.out | 1 + .../passwd/15_passwd_--expire_root/data/shadow | 20 + .../passwd/15_passwd_--expire_root/passwd.test | 48 + .../passwd/16_passwd_-S-a_root/config/etc/group | 42 + .../passwd/16_passwd_-S-a_root/config/etc/gshadow | 42 + .../passwd/16_passwd_-S-a_root/config/etc/passwd | 20 + .../passwd/16_passwd_-S-a_root/config/etc/shadow | 20 + .../passwd/16_passwd_-S-a_root/data/passwd.out | 20 + tests/tests/passwd/16_passwd_-S-a_root/passwd.test | 47 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../17_passwd_root_change_password/data/shadow | 20 + .../17_passwd_root_change_password/passwd.exp | 22 + .../17_passwd_root_change_password/passwd.test | 37 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/shadow | 20 + .../18_passwd_root_change_password_user/passwd.exp | 22 + .../passwd.test | 37 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../19_passwd_user_change_password/data/shadow | 20 + .../19_passwd_user_change_password/passwd.exp | 31 + .../19_passwd_user_change_password/passwd.test | 37 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/shadow | 20 + .../passwd.exp | 31 + .../passwd.test | 37 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/passwd.err | 1 + .../passwd.test | 53 + tests/tests/passwd/22_passwd_usage/config.txt | 10 + .../tests/passwd/22_passwd_usage/config/etc/group | 41 + .../passwd/22_passwd_usage/config/etc/gshadow | 41 + .../tests/passwd/22_passwd_usage/config/etc/passwd | 19 + .../tests/passwd/22_passwd_usage/config/etc/shadow | 19 + tests/tests/passwd/22_passwd_usage/data/usage.out | 22 + tests/tests/passwd/22_passwd_usage/passwd.test | 47 + tests/tests/run_all | 1310 ++++ tests/tests/run_all.coverage | 1329 ++++ tests/tests/run_some | 153 + .../split_groups/01_useradd_split_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../01_useradd_split_group/config/etc/group | 44 + .../01_useradd_split_group/config/etc/gshadow | 44 + .../01_useradd_split_group/config/etc/login.defs | 316 + .../01_useradd_split_group/config/etc/passwd | 21 + .../01_useradd_split_group/config/etc/shadow | 21 + .../split_groups/01_useradd_split_group/data/group | 46 + .../01_useradd_split_group/data/gshadow | 45 + .../01_useradd_split_group/data/passwd | 22 + .../01_useradd_split_group/data/shadow | 22 + .../01_useradd_split_group/useradd.test | 39 + .../02_useradd_no_split_group/config.txt | 5 + .../config/etc/default/useradd | 36 + .../02_useradd_no_split_group/config/etc/group | 44 + .../02_useradd_no_split_group/config/etc/gshadow | 44 + .../config/etc/login.defs | 316 + .../02_useradd_no_split_group/config/etc/passwd | 21 + .../02_useradd_no_split_group/config/etc/shadow | 21 + .../02_useradd_no_split_group/data/group | 45 + .../02_useradd_no_split_group/data/gshadow | 45 + .../02_useradd_no_split_group/data/passwd | 22 + .../02_useradd_no_split_group/data/shadow | 22 + .../02_useradd_no_split_group/useradd.test | 39 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/group | 47 + .../data/gshadow | 46 + .../data/passwd | 23 + .../data/shadow | 23 + .../useradd.test | 39 + .../04_useradd_split_group_already_full/config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 45 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../04_useradd_split_group_already_full/data/group | 47 + .../data/gshadow | 46 + .../data/passwd | 23 + .../data/shadow | 23 + .../useradd.test | 39 + .../config.txt | 5 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/useradd.err | 2 + .../useradd.test | 54 + .../config.txt | 5 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/useradd.err | 2 + .../useradd.test | 54 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/group | 47 + .../data/gshadow | 46 + .../data/passwd | 23 + .../data/shadow | 23 + .../useradd.test | 39 + .../config.txt | 5 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/useradd.err | 2 + .../useradd.test | 54 + .../config.txt | 5 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/group | 44 + .../data/gshadow | 44 + .../groupdel.test | 39 + .../config.txt | 5 + .../config/etc/group | 46 + .../config/etc/gshadow | 45 + .../config/etc/login.defs | 316 + .../config/etc/passwd | 22 + .../config/etc/shadow | 22 + .../data/groupdel.err | 2 + .../groupdel.test | 54 + tests/tests/su/01/config.txt | 3 + tests/tests/su/01/config/etc/group | 42 + tests/tests/su/01/config/etc/gshadow | 42 + tests/tests/su/01/config/etc/passwd | 21 + tests/tests/su/01/config/etc/shadow | 20 + tests/tests/su/01/run_su.exp | 73 + tests/tests/su/01/su_root.test | 25 + tests/tests/su/01/su_user.test | 25 + tests/tests/su/02/config.txt | 5 + tests/tests/su/02/config/etc/group | 42 + tests/tests/su/02/config/etc/gshadow | 42 + tests/tests/su/02/config/etc/passwd | 21 + tests/tests/su/02/config/etc/profile | 0 tests/tests/su/02/config/etc/shadow | 20 + tests/tests/su/02/env_FOO-options_ | 40 + tests/tests/su/02/env_FOO-options_- | 40 + tests/tests/su/02/env_FOO-options_--login | 40 + tests/tests/su/02/env_FOO-options_--login.exp | 48 + tests/tests/su/02/env_FOO-options_--login_bash | 40 + .../su/02/env_FOO-options_--preserve-environment | 40 + .../02/env_FOO-options_--preserve-environment.exp | 48 + .../02/env_FOO-options_--preserve-environment_bash | 40 + tests/tests/su/02/env_FOO-options_-.exp | 48 + tests/tests/su/02/env_FOO-options_-_bash | 40 + tests/tests/su/02/env_FOO-options_-l | 40 + tests/tests/su/02/env_FOO-options_-l-m | 40 + tests/tests/su/02/env_FOO-options_-l-m.exp | 48 + tests/tests/su/02/env_FOO-options_-l-m_bash | 40 + tests/tests/su/02/env_FOO-options_-l.exp | 48 + tests/tests/su/02/env_FOO-options_-l_bash | 40 + tests/tests/su/02/env_FOO-options_-m | 40 + tests/tests/su/02/env_FOO-options_-m.exp | 48 + tests/tests/su/02/env_FOO-options_-m_bash | 40 + tests/tests/su/02/env_FOO-options_-p | 40 + tests/tests/su/02/env_FOO-options_-p- | 40 + tests/tests/su/02/env_FOO-options_-p-.exp | 48 + tests/tests/su/02/env_FOO-options_-p-_bash | 40 + tests/tests/su/02/env_FOO-options_-p.exp | 48 + tests/tests/su/02/env_FOO-options_-p_bash | 40 + tests/tests/su/02/env_FOO-options_.exp | 48 + tests/tests/su/02/env_FOO-options__bash | 40 + tests/tests/su/02/env_special-options_ | 40 + tests/tests/su/02/env_special-options_-l | 40 + tests/tests/su/02/env_special-options_-l-p | 40 + tests/tests/su/02/env_special-options_-l-p.exp | 55 + tests/tests/su/02/env_special-options_-l-p_bash | 40 + tests/tests/su/02/env_special-options_-l.exp | 54 + tests/tests/su/02/env_special-options_-l_bash | 40 + tests/tests/su/02/env_special-options_-p | 40 + tests/tests/su/02/env_special-options_-p.exp | 56 + tests/tests/su/02/env_special-options_-p_bash | 40 + tests/tests/su/02/env_special-options_.exp | 55 + tests/tests/su/02/env_special-options__bash | 40 + tests/tests/su/02/env_special_root-options_ | 40 + tests/tests/su/02/env_special_root-options_-l | 40 + tests/tests/su/02/env_special_root-options_-l-p | 40 + .../tests/su/02/env_special_root-options_-l-p.exp | 57 + .../tests/su/02/env_special_root-options_-l-p_bash | 40 + tests/tests/su/02/env_special_root-options_-l.exp | 54 + tests/tests/su/02/env_special_root-options_-l_bash | 40 + tests/tests/su/02/env_special_root-options_-p | 40 + tests/tests/su/02/env_special_root-options_-p.exp | 56 + tests/tests/su/02/env_special_root-options_-p_bash | 40 + tests/tests/su/02/env_special_root-options_.exp | 55 + tests/tests/su/02/env_special_root-options__bash | 40 + tests/tests/su/02/run_env_test.sh | 40 + tests/tests/su/03/config/etc/group | 42 + tests/tests/su/03/config/etc/gshadow | 42 + tests/tests/su/03/config/etc/passwd | 21 + tests/tests/su/03/config/etc/shadow | 20 + tests/tests/su/03/data/ls.out | 1 + tests/tests/su/03/su_run_command01.test | 43 + tests/tests/su/03/su_run_command02.test | 36 + tests/tests/su/03/su_run_command03.test | 36 + tests/tests/su/03/su_run_command04.test | 36 + tests/tests/su/03/su_run_command05.test | 36 + tests/tests/su/03/su_run_command06.test | 45 + tests/tests/su/03/su_run_command07.test | 45 + tests/tests/su/03/su_run_command08.test | 45 + tests/tests/su/03/su_run_command09.test | 45 + tests/tests/su/03/su_run_command10.test | 45 + tests/tests/su/03/su_run_command11.test | 45 + tests/tests/su/03/su_run_command12.test | 45 + tests/tests/su/03/su_run_command13.test | 51 + tests/tests/su/03/su_run_command14.test | 46 + tests/tests/su/03/su_run_command15.test | 53 + tests/tests/su/03/su_run_command16.test | 46 + tests/tests/su/03/su_run_command17.test | 46 + tests/tests/su/04/config.txt | 3 + tests/tests/su/04/config/etc/group | 42 + tests/tests/su/04/config/etc/gshadow | 42 + tests/tests/su/04/config/etc/login.defs | 314 + tests/tests/su/04/config/etc/passwd | 21 + tests/tests/su/04/config/etc/shadow | 20 + tests/tests/su/04/config/var/log/auth.log | 0 tests/tests/su/04/data/wrong_user.err | 1 + tests/tests/su/04/run_su_failed.exp | 58 + tests/tests/su/04/su_user_wrong_passwd.test | 24 + tests/tests/su/04/su_user_wrong_passwd_syslog.test | 40 + tests/tests/su/04/su_wrong_user.test | 47 + tests/tests/su/05/config.txt | 5 + tests/tests/su/05/config/etc/group | 42 + tests/tests/su/05/config/etc/gshadow | 42 + tests/tests/su/05/config/etc/login.defs | 314 + tests/tests/su/05/config/etc/passwd | 21 + tests/tests/su/05/config/etc/shadow | 20 + tests/tests/su/05/config/var/log/auth.log | 0 tests/tests/su/05/run_su_failed.exp | 58 + tests/tests/su/05/su_user_wrong_passwd_syslog.test | 40 + tests/tests/su/06/config.txt | 3 + tests/tests/su/06/config/etc/group | 42 + tests/tests/su/06/config/etc/gshadow | 42 + tests/tests/su/06/config/etc/login.defs | 314 + tests/tests/su/06/config/etc/passwd | 21 + tests/tests/su/06/config/etc/shadow | 20 + tests/tests/su/06/config/var/log/auth.log | 0 tests/tests/su/06/run_su.exp | 73 + tests/tests/su/06/su_user_syslog.test | 39 + tests/tests/su/07/config.txt | 3 + tests/tests/su/07/config/etc/group | 42 + tests/tests/su/07/config/etc/gshadow | 42 + tests/tests/su/07/config/etc/login.defs | 314 + tests/tests/su/07/config/etc/passwd | 21 + tests/tests/su/07/config/etc/shadow | 20 + tests/tests/su/07/config/var/log/auth.log | 0 tests/tests/su/07/run_su.exp | 73 + tests/tests/su/07/su_user_syslog.test | 44 + tests/tests/su/08/config.txt | 0 tests/tests/su/08/config/etc/group | 42 + tests/tests/su/08/config/etc/gshadow | 42 + tests/tests/su/08/config/etc/login.defs | 314 + tests/tests/su/08/config/etc/passwd | 21 + tests/tests/su/08/config/etc/shadow | 20 + tests/tests/su/08/env_special-options_ | 40 + tests/tests/su/08/env_special-options_.exp | 55 + tests/tests/su/08/env_special_root-options_ | 40 + tests/tests/su/08/env_special_root-options_.exp | 55 + tests/tests/su/09/config.txt | 3 + tests/tests/su/09/config/etc/group | 42 + tests/tests/su/09/config/etc/gshadow | 42 + tests/tests/su/09/config/etc/login.defs | 314 + tests/tests/su/09/config/etc/passwd | 21 + tests/tests/su/09/config/etc/shadow | 20 + tests/tests/su/09/env_special-options_ | 40 + tests/tests/su/09/env_special-options_.exp | 55 + tests/tests/su/09/env_special_root-options_ | 40 + tests/tests/su/09/env_special_root-options_.exp | 55 + tests/tests/su/10_su_sulog_success/config.txt | 3 + .../tests/su/10_su_sulog_success/config/etc/group | 42 + .../su/10_su_sulog_success/config/etc/gshadow | 42 + .../su/10_su_sulog_success/config/etc/login.defs | 314 + .../tests/su/10_su_sulog_success/config/etc/passwd | 21 + .../tests/su/10_su_sulog_success/config/etc/shadow | 20 + .../su/10_su_sulog_success/config/var/log/sulog | 0 tests/tests/su/10_su_sulog_success/data/sulog | 1 + tests/tests/su/10_su_sulog_success/run_su.exp | 73 + tests/tests/su/10_su_sulog_success/su.test | 40 + tests/tests/su/11_su_sulog_failure/config.txt | 3 + .../tests/su/11_su_sulog_failure/config/etc/group | 42 + .../su/11_su_sulog_failure/config/etc/gshadow | 42 + .../su/11_su_sulog_failure/config/etc/login.defs | 314 + .../tests/su/11_su_sulog_failure/config/etc/passwd | 21 + .../tests/su/11_su_sulog_failure/config/etc/shadow | 20 + .../su/11_su_sulog_failure/config/var/log/sulog | 0 tests/tests/su/11_su_sulog_failure/data/sulog | 1 + tests/tests/su/11_su_sulog_failure/run_su.exp | 67 + tests/tests/su/11_su_sulog_failure/su.test | 43 + tests/tests/su/12_su_child_failure/config.txt | 3 + .../tests/su/12_su_child_failure/config/etc/group | 42 + .../su/12_su_child_failure/config/etc/gshadow | 42 + .../su/12_su_child_failure/config/etc/login.defs | 314 + .../tests/su/12_su_child_failure/config/etc/passwd | 21 + .../tests/su/12_su_child_failure/config/etc/shadow | 20 + .../su/12_su_child_failure/config/var/log/sulog | 0 tests/tests/su/12_su_child_failure/su.test | 37 + tests/tests/su/13_su_child_success/config.txt | 3 + .../tests/su/13_su_child_success/config/etc/group | 42 + .../su/13_su_child_success/config/etc/gshadow | 42 + .../su/13_su_child_success/config/etc/login.defs | 314 + .../tests/su/13_su_child_success/config/etc/passwd | 21 + .../tests/su/13_su_child_success/config/etc/shadow | 20 + .../su/13_su_child_success/config/var/log/sulog | 0 tests/tests/su/13_su_child_success/su.test | 31 + tests/tests/subids/01_useradd_no_subids/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/01_useradd_no_subids/config/etc/group | 41 + .../subids/01_useradd_no_subids/config/etc/gshadow | 41 + .../subids/01_useradd_no_subids/config/etc/passwd | 19 + .../subids/01_useradd_no_subids/config/etc/shadow | 19 + .../subids/01_useradd_no_subids/config/etc/subgid | 0 .../subids/01_useradd_no_subids/config/etc/subuid | 0 tests/tests/subids/01_useradd_no_subids/data/group | 42 + .../tests/subids/01_useradd_no_subids/data/gshadow | 42 + .../tests/subids/01_useradd_no_subids/data/passwd | 20 + .../tests/subids/01_useradd_no_subids/data/shadow | 20 + .../tests/subids/01_useradd_no_subids/useradd.test | 47 + .../tests/subids/02_useradd_with_subids/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/02_useradd_with_subids/config/etc/group | 41 + .../02_useradd_with_subids/config/etc/gshadow | 41 + .../02_useradd_with_subids/config/etc/passwd | 19 + .../02_useradd_with_subids/config/etc/shadow | 19 + .../02_useradd_with_subids/config/etc/subgid | 0 .../02_useradd_with_subids/config/etc/subuid | 0 .../tests/subids/02_useradd_with_subids/data/group | 42 + .../subids/02_useradd_with_subids/data/gshadow | 42 + .../subids/02_useradd_with_subids/data/passwd | 20 + .../subids/02_useradd_with_subids/data/shadow | 20 + .../subids/02_useradd_with_subids/data/subgid | 1 + .../subids/02_useradd_with_subids/data/subuid | 1 + .../subids/02_useradd_with_subids/useradd.test | 45 + tests/tests/subids/03_useradd_no_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/03_useradd_no_subgid/config/etc/group | 41 + .../subids/03_useradd_no_subgid/config/etc/gshadow | 41 + .../subids/03_useradd_no_subgid/config/etc/passwd | 19 + .../subids/03_useradd_no_subgid/config/etc/shadow | 19 + .../subids/03_useradd_no_subgid/config/etc/subgid | 0 .../subids/03_useradd_no_subgid/config/etc/subuid | 0 tests/tests/subids/03_useradd_no_subgid/data/group | 42 + .../tests/subids/03_useradd_no_subgid/data/gshadow | 42 + .../tests/subids/03_useradd_no_subgid/data/passwd | 20 + .../tests/subids/03_useradd_no_subgid/data/shadow | 20 + .../tests/subids/03_useradd_no_subgid/data/subuid | 1 + .../tests/subids/03_useradd_no_subgid/useradd.test | 49 + tests/tests/subids/04_useradd_no_subuid/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/04_useradd_no_subuid/config/etc/group | 41 + .../subids/04_useradd_no_subuid/config/etc/gshadow | 41 + .../subids/04_useradd_no_subuid/config/etc/passwd | 19 + .../subids/04_useradd_no_subuid/config/etc/shadow | 19 + .../subids/04_useradd_no_subuid/config/etc/subgid | 0 .../subids/04_useradd_no_subuid/config/etc/subuid | 0 tests/tests/subids/04_useradd_no_subuid/data/group | 42 + .../tests/subids/04_useradd_no_subuid/data/gshadow | 42 + .../tests/subids/04_useradd_no_subuid/data/passwd | 20 + .../tests/subids/04_useradd_no_subuid/data/shadow | 20 + .../tests/subids/04_useradd_no_subuid/data/subgid | 1 + .../tests/subids/04_useradd_no_subuid/useradd.test | 49 + .../subids/05_useradd_fill_gap_start/config.txt | 0 .../config/etc/default/useradd | 36 + .../05_useradd_fill_gap_start/config/etc/group | 41 + .../05_useradd_fill_gap_start/config/etc/gshadow | 41 + .../05_useradd_fill_gap_start/config/etc/passwd | 19 + .../05_useradd_fill_gap_start/config/etc/shadow | 19 + .../05_useradd_fill_gap_start/config/etc/subgid | 1 + .../05_useradd_fill_gap_start/config/etc/subuid | 1 + .../subids/05_useradd_fill_gap_start/data/group | 42 + .../subids/05_useradd_fill_gap_start/data/gshadow | 42 + .../subids/05_useradd_fill_gap_start/data/passwd | 20 + .../subids/05_useradd_fill_gap_start/data/shadow | 20 + .../subids/05_useradd_fill_gap_start/data/subgid | 2 + .../subids/05_useradd_fill_gap_start/data/subuid | 2 + .../subids/05_useradd_fill_gap_start/useradd.test | 45 + .../subids/06_useradd_fill_gap_middle/config.txt | 0 .../config/etc/default/useradd | 36 + .../06_useradd_fill_gap_middle/config/etc/group | 41 + .../06_useradd_fill_gap_middle/config/etc/gshadow | 41 + .../06_useradd_fill_gap_middle/config/etc/passwd | 19 + .../06_useradd_fill_gap_middle/config/etc/shadow | 19 + .../06_useradd_fill_gap_middle/config/etc/subgid | 2 + .../06_useradd_fill_gap_middle/config/etc/subuid | 2 + .../subids/06_useradd_fill_gap_middle/data/group | 42 + .../subids/06_useradd_fill_gap_middle/data/gshadow | 42 + .../subids/06_useradd_fill_gap_middle/data/passwd | 20 + .../subids/06_useradd_fill_gap_middle/data/shadow | 20 + .../subids/06_useradd_fill_gap_middle/data/subgid | 3 + .../subids/06_useradd_fill_gap_middle/data/subuid | 3 + .../subids/06_useradd_fill_gap_middle/useradd.test | 45 + .../subids/07_useradd_fill_gap_end/config.txt | 0 .../config/etc/default/useradd | 36 + .../07_useradd_fill_gap_end/config/etc/group | 41 + .../07_useradd_fill_gap_end/config/etc/gshadow | 41 + .../07_useradd_fill_gap_end/config/etc/passwd | 19 + .../07_useradd_fill_gap_end/config/etc/shadow | 19 + .../07_useradd_fill_gap_end/config/etc/subgid | 1 + .../07_useradd_fill_gap_end/config/etc/subuid | 1 + .../subids/07_useradd_fill_gap_end/data/group | 42 + .../subids/07_useradd_fill_gap_end/data/gshadow | 42 + .../subids/07_useradd_fill_gap_end/data/passwd | 20 + .../subids/07_useradd_fill_gap_end/data/shadow | 20 + .../subids/07_useradd_fill_gap_end/data/subgid | 2 + .../subids/07_useradd_fill_gap_end/data/subuid | 2 + .../subids/07_useradd_fill_gap_end/useradd.test | 45 + .../08_useradd_no_more_subuids_start/config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../data/useradd.err | 2 + .../08_useradd_no_more_subuids_start/useradd.test | 60 + .../09_useradd_no_more_subgids_start/config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../data/useradd.err | 2 + .../09_useradd_no_more_subgids_start/useradd.test | 60 + .../10_useradd_no_more_subuids_end/config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../data/useradd.err | 2 + .../10_useradd_no_more_subuids_end/useradd.test | 60 + .../11_useradd_no_more_subgids_end/config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 1 + .../config/etc/subuid | 1 + .../data/useradd.err | 2 + .../11_useradd_no_more_subgids_end/useradd.test | 60 + .../config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../useradd.test | 60 + .../config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../useradd.test | 60 + .../config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../useradd.test | 60 + .../config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../useradd.test | 60 + .../config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../useradd.test | 60 + .../config.txt | 0 .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 342 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/useradd.err | 2 + .../useradd.test | 60 + tests/tests/subids/18_useradd_min=max/config.txt | 0 .../18_useradd_min=max/config/etc/default/useradd | 36 + .../subids/18_useradd_min=max/config/etc/group | 41 + .../subids/18_useradd_min=max/config/etc/gshadow | 41 + .../18_useradd_min=max/config/etc/login.defs | 342 + .../subids/18_useradd_min=max/config/etc/passwd | 19 + .../subids/18_useradd_min=max/config/etc/shadow | 19 + .../subids/18_useradd_min=max/config/etc/subgid | 0 .../subids/18_useradd_min=max/config/etc/subuid | 0 tests/tests/subids/18_useradd_min=max/data/group | 42 + tests/tests/subids/18_useradd_min=max/data/gshadow | 42 + tests/tests/subids/18_useradd_min=max/data/passwd | 20 + tests/tests/subids/18_useradd_min=max/data/shadow | 20 + tests/tests/subids/18_useradd_min=max/data/subgid | 1 + tests/tests/subids/18_useradd_min=max/data/subuid | 1 + tests/tests/subids/18_useradd_min=max/useradd.test | 45 + .../subids/19_useradd_locked_subuid/config.txt | 0 .../config/etc/default/useradd | 36 + .../19_useradd_locked_subuid/config/etc/group | 41 + .../19_useradd_locked_subuid/config/etc/gshadow | 41 + .../19_useradd_locked_subuid/config/etc/passwd | 19 + .../19_useradd_locked_subuid/config/etc/shadow | 19 + .../19_useradd_locked_subuid/config/etc/subgid | 0 .../19_useradd_locked_subuid/config/etc/subuid | 0 .../19_useradd_locked_subuid/data/useradd.err | 2 + .../subids/19_useradd_locked_subuid/useradd.test | 66 + .../subids/20_useradd_locked_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../20_useradd_locked_subgid/config/etc/group | 41 + .../20_useradd_locked_subgid/config/etc/gshadow | 41 + .../20_useradd_locked_subgid/config/etc/passwd | 19 + .../20_useradd_locked_subgid/config/etc/shadow | 19 + .../20_useradd_locked_subgid/config/etc/subgid | 0 .../20_useradd_locked_subgid/config/etc/subuid | 0 .../20_useradd_locked_subgid/data/useradd.err | 2 + .../subids/20_useradd_locked_subgid/useradd.test | 66 + .../21_usermod_create_subuid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../21_usermod_create_subuid_range/data/subuid | 1 + .../21_usermod_create_subuid_range/usermod.test | 45 + .../22_usermod_create_subgid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../22_usermod_create_subgid_range/data/subgid | 1 + .../22_usermod_create_subgid_range/usermod.test | 45 + .../23_usermod_create_subids_ranges/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../23_usermod_create_subids_ranges/data/subgid | 3 + .../23_usermod_create_subids_ranges/data/subuid | 2 + .../23_usermod_create_subids_ranges/usermod.test | 45 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 0 .../data/subgid | 3 + .../data/subuid | 4 + .../usermod.test | 45 + tests/tests/subids/25_usermod_add_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../subids/25_usermod_add_range/config/etc/group | 42 + .../subids/25_usermod_add_range/config/etc/gshadow | 42 + .../subids/25_usermod_add_range/config/etc/passwd | 20 + .../subids/25_usermod_add_range/config/etc/shadow | 20 + .../subids/25_usermod_add_range/config/etc/subgid | 1 + .../subids/25_usermod_add_range/config/etc/subuid | 1 + .../tests/subids/25_usermod_add_range/data/subgid | 2 + .../tests/subids/25_usermod_add_range/data/subuid | 2 + .../tests/subids/25_usermod_add_range/usermod.test | 45 + .../26_usermod_add_overlapping_ranges/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 2 + .../config/etc/subuid | 2 + .../26_usermod_add_overlapping_ranges/data/subgid | 3 + .../26_usermod_add_overlapping_ranges/data/subuid | 3 + .../26_usermod_add_overlapping_ranges/usermod.test | 45 + .../subids/27_usermod_remove_range_all/config.txt | 6 + .../config/etc/default/useradd | 36 + .../27_usermod_remove_range_all/config/etc/group | 42 + .../27_usermod_remove_range_all/config/etc/gshadow | 42 + .../27_usermod_remove_range_all/config/etc/passwd | 20 + .../27_usermod_remove_range_all/config/etc/shadow | 20 + .../27_usermod_remove_range_all/config/etc/subgid | 1 + .../27_usermod_remove_range_all/config/etc/subuid | 1 + .../subids/27_usermod_remove_range_all/data/subgid | 0 .../subids/27_usermod_remove_range_all/data/subuid | 0 .../27_usermod_remove_range_all/usermod.test | 45 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 2 + .../config/etc/subuid | 2 + .../data/subgid | 2 + .../data/subuid | 2 + .../usermod.test | 45 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 2 + .../data/subgid | 2 + .../data/subuid | 4 + .../usermod.test | 45 + .../30_usermod_remove_range_partial_end/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 2 + .../data/subgid | 1 + .../data/subuid | 2 + .../usermod.test | 45 + .../31_usermod_remove_outside_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 2 + .../config/etc/subuid | 2 + .../31_usermod_remove_outside_range/data/subgid | 2 + .../31_usermod_remove_outside_range/data/subuid | 2 + .../31_usermod_remove_outside_range/usermod.test | 45 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 2 + .../data/subgid | 1 + .../data/subuid | 2 + .../usermod.test | 45 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 2 + .../data/subgid | 1 + .../data/subuid | 2 + .../usermod.test | 45 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 2 + .../data/subgid | 0 .../data/subuid | 1 + .../usermod.test | 45 + .../35_usermod_remove_only_user_ranges/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 4 + .../config/etc/subuid | 4 + .../35_usermod_remove_only_user_ranges/data/subgid | 2 + .../35_usermod_remove_only_user_ranges/data/subuid | 2 + .../usermod.test | 45 + .../36_usermod_remove_with_comment/config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 3 + .../config/etc/subuid | 3 + .../36_usermod_remove_with_comment/data/subgid | 1 + .../36_usermod_remove_with_comment/data/subuid | 1 + .../36_usermod_remove_with_comment/usermod.test | 45 + .../subids/37_usermod_-v_invalid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../37_usermod_-v_invalid_range/config/etc/group | 42 + .../37_usermod_-v_invalid_range/config/etc/gshadow | 42 + .../37_usermod_-v_invalid_range/config/etc/passwd | 20 + .../37_usermod_-v_invalid_range/config/etc/shadow | 20 + .../37_usermod_-v_invalid_range/config/etc/subgid | 1 + .../37_usermod_-v_invalid_range/config/etc/subuid | 2 + .../37_usermod_-v_invalid_range/data/usermod.err | 1 + .../37_usermod_-v_invalid_range/usermod.test | 60 + .../subids/38_usermod_-V_invalid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../38_usermod_-V_invalid_range/config/etc/group | 42 + .../38_usermod_-V_invalid_range/config/etc/gshadow | 42 + .../38_usermod_-V_invalid_range/config/etc/passwd | 20 + .../38_usermod_-V_invalid_range/config/etc/shadow | 20 + .../38_usermod_-V_invalid_range/config/etc/subgid | 1 + .../38_usermod_-V_invalid_range/config/etc/subuid | 2 + .../38_usermod_-V_invalid_range/data/usermod.err | 1 + .../38_usermod_-V_invalid_range/usermod.test | 60 + .../subids/39_usermod_-w_invalid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../39_usermod_-w_invalid_range/config/etc/group | 42 + .../39_usermod_-w_invalid_range/config/etc/gshadow | 42 + .../39_usermod_-w_invalid_range/config/etc/passwd | 20 + .../39_usermod_-w_invalid_range/config/etc/shadow | 20 + .../39_usermod_-w_invalid_range/config/etc/subgid | 1 + .../39_usermod_-w_invalid_range/config/etc/subuid | 2 + .../39_usermod_-w_invalid_range/data/usermod.err | 1 + .../39_usermod_-w_invalid_range/usermod.test | 60 + .../subids/40_usermod_-W_invalid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../40_usermod_-W_invalid_range/config/etc/group | 42 + .../40_usermod_-W_invalid_range/config/etc/gshadow | 42 + .../40_usermod_-W_invalid_range/config/etc/passwd | 20 + .../40_usermod_-W_invalid_range/config/etc/shadow | 20 + .../40_usermod_-W_invalid_range/config/etc/subgid | 1 + .../40_usermod_-W_invalid_range/config/etc/subuid | 2 + .../40_usermod_-W_invalid_range/data/usermod.err | 1 + .../40_usermod_-W_invalid_range/usermod.test | 60 + .../subids/41_usermod_locked_subuid/config.txt | 0 .../config/etc/default/useradd | 36 + .../41_usermod_locked_subuid/config/etc/group | 42 + .../41_usermod_locked_subuid/config/etc/gshadow | 42 + .../41_usermod_locked_subuid/config/etc/passwd | 20 + .../41_usermod_locked_subuid/config/etc/shadow | 20 + .../41_usermod_locked_subuid/config/etc/subgid | 0 .../41_usermod_locked_subuid/config/etc/subuid | 0 .../41_usermod_locked_subuid/data/usermod.err | 2 + .../subids/41_usermod_locked_subuid/usermod.test | 66 + .../subids/42_usermod_locked_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../42_usermod_locked_subgid/config/etc/group | 42 + .../42_usermod_locked_subgid/config/etc/gshadow | 42 + .../42_usermod_locked_subgid/config/etc/passwd | 20 + .../42_usermod_locked_subgid/config/etc/shadow | 20 + .../42_usermod_locked_subgid/config/etc/subgid | 0 .../42_usermod_locked_subgid/config/etc/subuid | 0 .../42_usermod_locked_subgid/data/usermod.err | 2 + .../subids/42_usermod_locked_subgid/usermod.test | 66 + .../subids/43_usermod_-w_no_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../43_usermod_-w_no_subgid/config/etc/group | 42 + .../43_usermod_-w_no_subgid/config/etc/gshadow | 42 + .../43_usermod_-w_no_subgid/config/etc/passwd | 20 + .../43_usermod_-w_no_subgid/config/etc/shadow | 20 + .../43_usermod_-w_no_subgid/config/etc/subgid | 0 .../43_usermod_-w_no_subgid/config/etc/subuid | 0 .../43_usermod_-w_no_subgid/data/usermod.err | 1 + .../subids/43_usermod_-w_no_subgid/usermod.test | 64 + .../subids/44_usermod_-W_no_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../44_usermod_-W_no_subgid/config/etc/group | 42 + .../44_usermod_-W_no_subgid/config/etc/gshadow | 42 + .../44_usermod_-W_no_subgid/config/etc/passwd | 20 + .../44_usermod_-W_no_subgid/config/etc/shadow | 20 + .../44_usermod_-W_no_subgid/config/etc/subgid | 0 .../44_usermod_-W_no_subgid/config/etc/subuid | 0 .../44_usermod_-W_no_subgid/data/usermod.err | 1 + .../subids/44_usermod_-W_no_subgid/usermod.test | 64 + .../subids/45_usermod_-v_no_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../45_usermod_-v_no_subgid/config/etc/group | 42 + .../45_usermod_-v_no_subgid/config/etc/gshadow | 42 + .../45_usermod_-v_no_subgid/config/etc/passwd | 20 + .../45_usermod_-v_no_subgid/config/etc/shadow | 20 + .../45_usermod_-v_no_subgid/config/etc/subgid | 0 .../45_usermod_-v_no_subgid/config/etc/subuid | 0 .../45_usermod_-v_no_subgid/data/usermod.err | 1 + .../subids/45_usermod_-v_no_subgid/usermod.test | 64 + .../subids/46_usermod_-V_no_subgid/config.txt | 0 .../config/etc/default/useradd | 36 + .../46_usermod_-V_no_subgid/config/etc/group | 42 + .../46_usermod_-V_no_subgid/config/etc/gshadow | 42 + .../46_usermod_-V_no_subgid/config/etc/passwd | 20 + .../46_usermod_-V_no_subgid/config/etc/shadow | 20 + .../46_usermod_-V_no_subgid/config/etc/subgid | 0 .../46_usermod_-V_no_subgid/config/etc/subuid | 0 .../46_usermod_-V_no_subgid/data/usermod.err | 1 + .../subids/46_usermod_-V_no_subgid/usermod.test | 64 + .../subids/47_usermod_-v_invalid_range2/config.txt | 6 + .../config/etc/default/useradd | 36 + .../47_usermod_-v_invalid_range2/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../47_usermod_-v_invalid_range2/config/etc/passwd | 20 + .../47_usermod_-v_invalid_range2/config/etc/shadow | 20 + .../47_usermod_-v_invalid_range2/config/etc/subgid | 1 + .../47_usermod_-v_invalid_range2/config/etc/subuid | 2 + .../47_usermod_-v_invalid_range2/data/usermod.err | 1 + .../47_usermod_-v_invalid_range2/usermod.test | 60 + .../subids/48_usermod_-v_invalid_range3/config.txt | 6 + .../config/etc/default/useradd | 36 + .../48_usermod_-v_invalid_range3/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../48_usermod_-v_invalid_range3/config/etc/passwd | 20 + .../48_usermod_-v_invalid_range3/config/etc/shadow | 20 + .../48_usermod_-v_invalid_range3/config/etc/subgid | 1 + .../48_usermod_-v_invalid_range3/config/etc/subuid | 2 + .../48_usermod_-v_invalid_range3/data/usermod.err | 1 + .../48_usermod_-v_invalid_range3/usermod.test | 60 + .../subids/49_usermod_-v_invalid_range4/config.txt | 6 + .../config/etc/default/useradd | 36 + .../49_usermod_-v_invalid_range4/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../49_usermod_-v_invalid_range4/config/etc/passwd | 20 + .../49_usermod_-v_invalid_range4/config/etc/shadow | 20 + .../49_usermod_-v_invalid_range4/config/etc/subgid | 1 + .../49_usermod_-v_invalid_range4/config/etc/subuid | 2 + .../49_usermod_-v_invalid_range4/data/usermod.err | 1 + .../49_usermod_-v_invalid_range4/usermod.test | 60 + .../subids/50_usermod_-v_invalid_range5/config.txt | 6 + .../config/etc/default/useradd | 36 + .../50_usermod_-v_invalid_range5/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../50_usermod_-v_invalid_range5/config/etc/passwd | 20 + .../50_usermod_-v_invalid_range5/config/etc/shadow | 20 + .../50_usermod_-v_invalid_range5/config/etc/subgid | 1 + .../50_usermod_-v_invalid_range5/config/etc/subuid | 2 + .../50_usermod_-v_invalid_range5/data/usermod.err | 1 + .../50_usermod_-v_invalid_range5/usermod.test | 60 + .../subids/51_usermod_-v_invalid_range6/config.txt | 6 + .../config/etc/default/useradd | 36 + .../51_usermod_-v_invalid_range6/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../51_usermod_-v_invalid_range6/config/etc/passwd | 20 + .../51_usermod_-v_invalid_range6/config/etc/shadow | 20 + .../51_usermod_-v_invalid_range6/config/etc/subgid | 1 + .../51_usermod_-v_invalid_range6/config/etc/subuid | 2 + .../51_usermod_-v_invalid_range6/data/usermod.err | 1 + .../51_usermod_-v_invalid_range6/usermod.test | 60 + .../subids/52_usermod_-v_invalid_range7/config.txt | 6 + .../config/etc/default/useradd | 36 + .../52_usermod_-v_invalid_range7/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../52_usermod_-v_invalid_range7/config/etc/passwd | 20 + .../52_usermod_-v_invalid_range7/config/etc/shadow | 20 + .../52_usermod_-v_invalid_range7/config/etc/subgid | 1 + .../52_usermod_-v_invalid_range7/config/etc/subuid | 2 + .../52_usermod_-v_invalid_range7/data/usermod.err | 1 + .../52_usermod_-v_invalid_range7/usermod.test | 60 + .../subids/53_userdel_one_subuid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../53_userdel_one_subuid_range/config/etc/group | 42 + .../53_userdel_one_subuid_range/config/etc/gshadow | 42 + .../53_userdel_one_subuid_range/config/etc/passwd | 20 + .../53_userdel_one_subuid_range/config/etc/shadow | 20 + .../53_userdel_one_subuid_range/config/etc/subgid | 0 .../53_userdel_one_subuid_range/config/etc/subuid | 1 + .../subids/53_userdel_one_subuid_range/data/group | 41 + .../53_userdel_one_subuid_range/data/gshadow | 41 + .../subids/53_userdel_one_subuid_range/data/passwd | 19 + .../subids/53_userdel_one_subuid_range/data/shadow | 19 + .../subids/53_userdel_one_subuid_range/data/subuid | 0 .../53_userdel_one_subuid_range/userdel.test | 45 + .../subids/54_userdel_one_subgid_range/config.txt | 6 + .../config/etc/default/useradd | 36 + .../54_userdel_one_subgid_range/config/etc/group | 42 + .../54_userdel_one_subgid_range/config/etc/gshadow | 42 + .../54_userdel_one_subgid_range/config/etc/passwd | 20 + .../54_userdel_one_subgid_range/config/etc/shadow | 20 + .../54_userdel_one_subgid_range/config/etc/subgid | 1 + .../54_userdel_one_subgid_range/config/etc/subuid | 0 .../subids/54_userdel_one_subgid_range/data/group | 41 + .../54_userdel_one_subgid_range/data/gshadow | 41 + .../subids/54_userdel_one_subgid_range/data/passwd | 19 + .../subids/54_userdel_one_subgid_range/data/shadow | 19 + .../subids/54_userdel_one_subgid_range/data/subgid | 0 .../54_userdel_one_subgid_range/userdel.test | 45 + tests/tests/subids/55_userdel_no_subuid/config.txt | 6 + .../config/etc/default/useradd | 36 + .../subids/55_userdel_no_subuid/config/etc/group | 42 + .../subids/55_userdel_no_subuid/config/etc/gshadow | 42 + .../subids/55_userdel_no_subuid/config/etc/passwd | 20 + .../subids/55_userdel_no_subuid/config/etc/shadow | 20 + .../subids/55_userdel_no_subuid/config/etc/subgid | 1 + .../subids/55_userdel_no_subuid/config/etc/subuid | 0 tests/tests/subids/55_userdel_no_subuid/data/group | 41 + .../tests/subids/55_userdel_no_subuid/data/gshadow | 41 + .../tests/subids/55_userdel_no_subuid/data/passwd | 19 + .../tests/subids/55_userdel_no_subuid/data/shadow | 19 + .../tests/subids/55_userdel_no_subuid/data/subgid | 0 .../tests/subids/55_userdel_no_subuid/userdel.test | 49 + tests/tests/subids/56_userdel_no_subgid/config.txt | 6 + .../config/etc/default/useradd | 36 + .../subids/56_userdel_no_subgid/config/etc/group | 42 + .../subids/56_userdel_no_subgid/config/etc/gshadow | 42 + .../subids/56_userdel_no_subgid/config/etc/passwd | 20 + .../subids/56_userdel_no_subgid/config/etc/shadow | 20 + .../subids/56_userdel_no_subgid/config/etc/subgid | 0 .../subids/56_userdel_no_subgid/config/etc/subuid | 1 + tests/tests/subids/56_userdel_no_subgid/data/group | 41 + .../tests/subids/56_userdel_no_subgid/data/gshadow | 41 + .../tests/subids/56_userdel_no_subgid/data/passwd | 19 + .../tests/subids/56_userdel_no_subgid/data/shadow | 19 + .../tests/subids/56_userdel_no_subgid/data/subuid | 0 .../tests/subids/56_userdel_no_subgid/userdel.test | 49 + .../subids/57_userdel_multiple_ranges/config.txt | 6 + .../config/etc/default/useradd | 36 + .../57_userdel_multiple_ranges/config/etc/group | 42 + .../57_userdel_multiple_ranges/config/etc/gshadow | 42 + .../57_userdel_multiple_ranges/config/etc/passwd | 20 + .../57_userdel_multiple_ranges/config/etc/shadow | 20 + .../57_userdel_multiple_ranges/config/etc/subgid | 14 + .../57_userdel_multiple_ranges/config/etc/subuid | 14 + .../subids/57_userdel_multiple_ranges/data/group | 41 + .../subids/57_userdel_multiple_ranges/data/gshadow | 41 + .../subids/57_userdel_multiple_ranges/data/passwd | 19 + .../subids/57_userdel_multiple_ranges/data/shadow | 19 + .../subids/57_userdel_multiple_ranges/data/subgid | 6 + .../subids/57_userdel_multiple_ranges/data/subuid | 6 + .../subids/57_userdel_multiple_ranges/userdel.test | 45 + .../subids/58_newusers_with_subids/config.txt | 0 .../58_newusers_with_subids/config/etc/group | 41 + .../58_newusers_with_subids/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../58_newusers_with_subids/config/etc/passwd | 19 + .../58_newusers_with_subids/config/etc/shadow | 19 + .../58_newusers_with_subids/config/etc/subgid | 0 .../58_newusers_with_subids/config/etc/subuid | 0 .../subids/58_newusers_with_subids/data/group | 42 + .../subids/58_newusers_with_subids/data/gshadow | 42 + .../58_newusers_with_subids/data/newusers.list | 1 + .../subids/58_newusers_with_subids/data/passwd | 20 + .../subids/58_newusers_with_subids/data/shadow | 20 + .../subids/58_newusers_with_subids/data/subgid | 1 + .../subids/58_newusers_with_subids/data/subuid | 1 + .../subids/58_newusers_with_subids/newusers.test | 43 + .../tests/subids/59_newusers_no_subuid/config.txt | 0 .../subids/59_newusers_no_subuid/config/etc/group | 41 + .../59_newusers_no_subuid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../subids/59_newusers_no_subuid/config/etc/passwd | 19 + .../subids/59_newusers_no_subuid/config/etc/shadow | 19 + .../subids/59_newusers_no_subuid/config/etc/subgid | 0 .../subids/59_newusers_no_subuid/config/etc/subuid | 0 .../tests/subids/59_newusers_no_subuid/data/group | 42 + .../subids/59_newusers_no_subuid/data/gshadow | 42 + .../59_newusers_no_subuid/data/newusers.list | 1 + .../tests/subids/59_newusers_no_subuid/data/passwd | 20 + .../tests/subids/59_newusers_no_subuid/data/shadow | 20 + .../tests/subids/59_newusers_no_subuid/data/subgid | 1 + .../subids/59_newusers_no_subuid/newusers.test | 47 + .../tests/subids/60_newusers_no_subgid/config.txt | 0 .../subids/60_newusers_no_subgid/config/etc/group | 41 + .../60_newusers_no_subgid/config/etc/gshadow | 41 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../subids/60_newusers_no_subgid/config/etc/passwd | 19 + .../subids/60_newusers_no_subgid/config/etc/shadow | 19 + .../subids/60_newusers_no_subgid/config/etc/subgid | 0 .../subids/60_newusers_no_subgid/config/etc/subuid | 0 .../tests/subids/60_newusers_no_subgid/data/group | 42 + .../subids/60_newusers_no_subgid/data/gshadow | 42 + .../60_newusers_no_subgid/data/newusers.list | 1 + .../tests/subids/60_newusers_no_subgid/data/passwd | 20 + .../tests/subids/60_newusers_no_subgid/data/shadow | 20 + .../tests/subids/60_newusers_no_subgid/data/subuid | 1 + .../subids/60_newusers_no_subgid/newusers.test | 47 + .../config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 1 + .../config/etc/subuid | 0 .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/subuid | 1 + .../newusers.test | 43 + .../config.txt | 0 .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/common-password | 33 + .../config/etc/pam.d/newusers | 6 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../config/etc/subgid | 0 .../config/etc/subuid | 2 + .../data/group | 42 + .../data/gshadow | 42 + .../data/newusers.list | 1 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/subgid | 1 + .../newusers.test | 43 + tests/tests/subids/63_useradd_fill_gap4/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/63_useradd_fill_gap4/config/etc/group | 41 + .../subids/63_useradd_fill_gap4/config/etc/gshadow | 41 + .../subids/63_useradd_fill_gap4/config/etc/passwd | 19 + .../subids/63_useradd_fill_gap4/config/etc/shadow | 19 + .../subids/63_useradd_fill_gap4/config/etc/subgid | 1 + .../subids/63_useradd_fill_gap4/config/etc/subuid | 3 + tests/tests/subids/63_useradd_fill_gap4/data/group | 42 + .../tests/subids/63_useradd_fill_gap4/data/gshadow | 42 + .../tests/subids/63_useradd_fill_gap4/data/passwd | 20 + .../tests/subids/63_useradd_fill_gap4/data/shadow | 20 + .../tests/subids/63_useradd_fill_gap4/data/subgid | 2 + .../tests/subids/63_useradd_fill_gap4/data/subuid | 4 + .../tests/subids/63_useradd_fill_gap4/useradd.test | 45 + tests/tests/subids/64_useradd_fill_gap5/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/64_useradd_fill_gap5/config/etc/group | 41 + .../subids/64_useradd_fill_gap5/config/etc/gshadow | 41 + .../subids/64_useradd_fill_gap5/config/etc/passwd | 19 + .../subids/64_useradd_fill_gap5/config/etc/shadow | 19 + .../subids/64_useradd_fill_gap5/config/etc/subgid | 1 + .../subids/64_useradd_fill_gap5/config/etc/subuid | 3 + tests/tests/subids/64_useradd_fill_gap5/data/group | 42 + .../tests/subids/64_useradd_fill_gap5/data/gshadow | 42 + .../tests/subids/64_useradd_fill_gap5/data/passwd | 20 + .../tests/subids/64_useradd_fill_gap5/data/shadow | 20 + .../tests/subids/64_useradd_fill_gap5/data/subgid | 2 + .../tests/subids/64_useradd_fill_gap5/data/subuid | 4 + .../tests/subids/64_useradd_fill_gap5/useradd.test | 45 + tests/tests/subids/65_useradd_fill_gap6/config.txt | 0 .../config/etc/default/useradd | 36 + .../subids/65_useradd_fill_gap6/config/etc/group | 41 + .../subids/65_useradd_fill_gap6/config/etc/gshadow | 41 + .../subids/65_useradd_fill_gap6/config/etc/passwd | 19 + .../subids/65_useradd_fill_gap6/config/etc/shadow | 19 + .../subids/65_useradd_fill_gap6/config/etc/subgid | 1 + .../subids/65_useradd_fill_gap6/config/etc/subuid | 1 + tests/tests/subids/65_useradd_fill_gap6/data/group | 42 + .../tests/subids/65_useradd_fill_gap6/data/gshadow | 42 + .../tests/subids/65_useradd_fill_gap6/data/passwd | 20 + .../tests/subids/65_useradd_fill_gap6/data/shadow | 20 + .../tests/subids/65_useradd_fill_gap6/data/subgid | 2 + .../tests/subids/65_useradd_fill_gap6/data/subuid | 2 + .../tests/subids/65_useradd_fill_gap6/useradd.test | 45 + .../subids/66_subordinate_range_cmp/config.txt | 0 .../config/etc/default/useradd | 36 + .../66_subordinate_range_cmp/config/etc/group | 41 + .../66_subordinate_range_cmp/config/etc/gshadow | 41 + .../66_subordinate_range_cmp/config/etc/passwd | 19 + .../66_subordinate_range_cmp/config/etc/shadow | 19 + .../66_subordinate_range_cmp/config/etc/subgid | 1 + .../66_subordinate_range_cmp/config/etc/subuid | 15 + .../subids/66_subordinate_range_cmp/data/group | 42 + .../subids/66_subordinate_range_cmp/data/gshadow | 42 + .../subids/66_subordinate_range_cmp/data/passwd | 20 + .../subids/66_subordinate_range_cmp/data/shadow | 20 + .../subids/66_subordinate_range_cmp/data/subgid | 2 + .../subids/66_subordinate_range_cmp/data/subuid | 16 + .../subids/66_subordinate_range_cmp/useradd.test | 45 + .../subids/67_invalid_subuid_file1/config.txt | 0 .../config/etc/default/useradd | 36 + .../67_invalid_subuid_file1/config/etc/group | 41 + .../67_invalid_subuid_file1/config/etc/gshadow | 41 + .../67_invalid_subuid_file1/config/etc/passwd | 19 + .../67_invalid_subuid_file1/config/etc/shadow | 19 + .../67_invalid_subuid_file1/config/etc/subgid | 1 + .../67_invalid_subuid_file1/config/etc/subuid | 2 + .../subids/67_invalid_subuid_file1/data/group | 42 + .../subids/67_invalid_subuid_file1/data/gshadow | 42 + .../subids/67_invalid_subuid_file1/data/passwd | 20 + .../subids/67_invalid_subuid_file1/data/shadow | 20 + .../subids/67_invalid_subuid_file1/data/subgid | 2 + .../subids/67_invalid_subuid_file1/data/subuid | 3 + .../subids/67_invalid_subuid_file1/useradd.test | 45 + .../subids/68_invalid_subuid_file2/config.txt | 0 .../config/etc/default/useradd | 36 + .../68_invalid_subuid_file2/config/etc/group | 41 + .../68_invalid_subuid_file2/config/etc/gshadow | 41 + .../68_invalid_subuid_file2/config/etc/passwd | 19 + .../68_invalid_subuid_file2/config/etc/shadow | 19 + .../68_invalid_subuid_file2/config/etc/subgid | 1 + .../68_invalid_subuid_file2/config/etc/subuid | 2 + .../subids/68_invalid_subuid_file2/data/group | 42 + .../subids/68_invalid_subuid_file2/data/gshadow | 42 + .../subids/68_invalid_subuid_file2/data/passwd | 20 + .../subids/68_invalid_subuid_file2/data/shadow | 20 + .../subids/68_invalid_subuid_file2/data/subgid | 2 + .../subids/68_invalid_subuid_file2/data/subuid | 3 + .../subids/68_invalid_subuid_file2/useradd.test | 45 + .../subids/69_invalid_subuid_file3/config.txt | 0 .../config/etc/default/useradd | 36 + .../69_invalid_subuid_file3/config/etc/group | 41 + .../69_invalid_subuid_file3/config/etc/gshadow | 41 + .../69_invalid_subuid_file3/config/etc/passwd | 19 + .../69_invalid_subuid_file3/config/etc/shadow | 19 + .../69_invalid_subuid_file3/config/etc/subgid | 1 + .../69_invalid_subuid_file3/config/etc/subuid | 2 + .../subids/69_invalid_subuid_file3/data/group | 42 + .../subids/69_invalid_subuid_file3/data/gshadow | 42 + .../subids/69_invalid_subuid_file3/data/passwd | 20 + .../subids/69_invalid_subuid_file3/data/shadow | 20 + .../subids/69_invalid_subuid_file3/data/subgid | 2 + .../subids/69_invalid_subuid_file3/data/subuid | 3 + .../subids/69_invalid_subuid_file3/useradd.test | 45 + .../subids/70_invalid_subuid_file4/config.txt | 0 .../config/etc/default/useradd | 36 + .../70_invalid_subuid_file4/config/etc/group | 41 + .../70_invalid_subuid_file4/config/etc/gshadow | 41 + .../70_invalid_subuid_file4/config/etc/passwd | 19 + .../70_invalid_subuid_file4/config/etc/shadow | 19 + .../70_invalid_subuid_file4/config/etc/subgid | 1 + .../70_invalid_subuid_file4/config/etc/subuid | 5 + .../subids/70_invalid_subuid_file4/data/group | 42 + .../subids/70_invalid_subuid_file4/data/gshadow | 42 + .../subids/70_invalid_subuid_file4/data/passwd | 20 + .../subids/70_invalid_subuid_file4/data/shadow | 20 + .../subids/70_invalid_subuid_file4/data/subgid | 2 + .../subids/70_invalid_subuid_file4/data/subuid | 6 + .../subids/70_invalid_subuid_file4/useradd.test | 45 + .../subids/71_useradd_subids_for_system/config.txt | 0 .../config/etc/default/useradd | 36 + .../71_useradd_subids_for_system/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../71_useradd_subids_for_system/config/etc/passwd | 19 + .../71_useradd_subids_for_system/config/etc/shadow | 19 + .../71_useradd_subids_for_system/config/etc/subgid | 0 .../71_useradd_subids_for_system/config/etc/subuid | 0 .../71_useradd_subids_for_system/data/subgid | 1 + .../71_useradd_subids_for_system/data/subuid | 1 + .../71_useradd_subids_for_system/useradd.test | 32 + tests/tests/unit/.deps/test_adds-test_adds.Po | 1 + .../.deps/test_atoi_strtoi-test_atoi_strtoi.Po | 1 + .../tests/unit/.deps/test_chkname-test_chkname.Po | 1 + tests/tests/unit/.deps/test_logind-test_logind.Po | 1 + .../tests/unit/.deps/test_sprintf-test_sprintf.Po | 1 + .../tests/unit/.deps/test_strncpy-test_strncpy.Po | 1 + .../tests/unit/.deps/test_strtcpy-test_strtcpy.Po | 1 + .../unit/.deps/test_xasprintf-test_xasprintf.Po | 1 + .../unit/.deps/test_zustr2stp-test_zustr2stp.Po | 1 + tests/tests/unit/.gitignore | 6 + tests/tests/unit/Makefile | 1702 +++++ tests/tests/unit/Makefile.am | 145 + tests/tests/unit/Makefile.in | 1702 +++++ tests/tests/unit/test_adds.c | 105 + tests/tests/unit/test_atoi_strtoi.c | 157 + tests/tests/unit/test_chkname.c | 149 + tests/tests/unit/test_logind.c | 69 + tests/tests/unit/test_sprintf.c | 66 + tests/tests/unit/test_strncpy.c | 85 + tests/tests/unit/test_strtcpy.c | 67 + tests/tests/unit/test_xasprintf.c | 114 + tests/tests/unit/test_zustr2stp.c | 53 + tests/tests/usertools/01/01_useradd_add_user.test | 42 + tests/tests/usertools/01/01_useradd_add_user/group | 42 + .../tests/usertools/01/01_useradd_add_user/gshadow | 42 + .../tests/usertools/01/01_useradd_add_user/passwd | 20 + .../tests/usertools/01/01_useradd_add_user/shadow | 20 + .../tests/usertools/01/01_userdel_delete_user.test | 45 + .../01/02_useradd_recreate_deleted_user.test | 48 + .../01/02_useradd_recreate_deleted_user/group | 42 + .../01/02_useradd_recreate_deleted_user/gshadow | 42 + .../01/02_useradd_recreate_deleted_user/passwd | 20 + .../01/02_useradd_recreate_deleted_user/shadow | 20 + .../01/03_useradd_additional_options.test | 50 + .../01/03_useradd_additional_options/group | 42 + .../01/03_useradd_additional_options/gshadow | 42 + .../01/03_useradd_additional_options/passwd | 20 + .../01/03_useradd_additional_options/shadow | 20 + ...04_useradd_add_user_with_existing_UID_fail.test | 60 + .../group | 42 + .../gshadow | 42 + .../passwd | 20 + .../shadow | 20 + .../useradd.err | 1 + ...useradd_add_user_with_existing_UID_with_-o.test | 48 + .../group | 43 + .../gshadow | 43 + .../passwd | 21 + .../shadow | 21 + .../usertools/01/04_useradd_specified_UID.test | 42 + .../usertools/01/04_useradd_specified_UID/group | 42 + .../usertools/01/04_useradd_specified_UID/gshadow | 42 + .../usertools/01/04_useradd_specified_UID/passwd | 20 + .../usertools/01/04_useradd_specified_UID/shadow | 20 + .../01/04_useradd_specified_UID_and_GID.test | 48 + .../01/04_useradd_specified_UID_and_GID/group | 42 + .../01/04_useradd_specified_UID_and_GID/gshadow | 42 + .../01/04_useradd_specified_UID_and_GID/passwd | 21 + .../01/04_useradd_specified_UID_and_GID/shadow | 21 + ...04_userdel_delete_user_with_non_unique_UID.test | 51 + .../group | 42 + .../gshadow | 42 + .../passwd | 20 + .../shadow | 20 + .../05_useradd_invalid_numeric_primary_group.test | 58 + .../useradd.err | 1 + .../01/06_useradd_invalid_named_primary_group.test | 58 + .../useradd.err | 1 + .../01/07_useradd_numerical_primary_group.test | 42 + .../01/07_useradd_numerical_primary_group/group | 41 + .../01/07_useradd_numerical_primary_group/gshadow | 41 + .../01/07_useradd_numerical_primary_group/passwd | 20 + .../01/07_useradd_numerical_primary_group/shadow | 20 + .../01/08_useradd_named_primary_group.test | 42 + .../01/08_useradd_named_primary_group/group | 41 + .../01/08_useradd_named_primary_group/gshadow | 41 + .../01/08_useradd_named_primary_group/passwd | 20 + .../01/08_useradd_named_primary_group/shadow | 20 + .../usertools/01/09_usermod_change_user_info.test | 45 + .../usertools/01/09_usermod_change_user_info/group | 42 + .../01/09_usermod_change_user_info/gshadow | 42 + .../01/09_usermod_change_user_info/passwd | 20 + .../01/09_usermod_change_user_info/shadow | 20 + .../tests/usertools/01/10_usermod_rename_user.test | 48 + .../usertools/01/10_usermod_rename_user/group | 42 + .../usertools/01/10_usermod_rename_user/gshadow | 42 + .../usertools/01/10_usermod_rename_user/passwd | 20 + .../usertools/01/10_usermod_rename_user/shadow | 20 + .../01/10_usermod_rename_user_in_group.test | 48 + .../01/10_usermod_rename_user_in_group/group | 42 + .../01/10_usermod_rename_user_in_group/gshadow | 42 + .../01/10_usermod_rename_user_in_group/passwd | 20 + .../01/10_usermod_rename_user_in_group/shadow | 20 + .../usertools/01/11_usermod_change_password.test | 46 + .../usertools/01/11_usermod_change_password/group | 42 + .../01/11_usermod_change_password/gshadow | 42 + .../usertools/01/11_usermod_change_password/passwd | 20 + .../usertools/01/11_usermod_change_password/shadow | 20 + .../usertools/01/11_usermod_lock_password.test | 49 + .../usertools/01/11_usermod_lock_password/group | 42 + .../usertools/01/11_usermod_lock_password/gshadow | 42 + .../usertools/01/11_usermod_lock_password/passwd | 20 + .../usertools/01/11_usermod_lock_password/shadow | 20 + .../01/11_usermod_unlock_empty_password.test | 54 + .../01/11_usermod_unlock_empty_password/group | 42 + .../01/11_usermod_unlock_empty_password/gshadow | 42 + .../01/11_usermod_unlock_empty_password/passwd | 20 + .../01/11_usermod_unlock_empty_password/shadow | 20 + .../11_usermod_unlock_empty_password/usermod.err | 2 + .../usertools/01/11_usermod_unlock_password.test | 52 + .../usertools/01/11_usermod_unlock_password/group | 42 + .../01/11_usermod_unlock_password/gshadow | 42 + .../usertools/01/11_usermod_unlock_password/passwd | 20 + .../usertools/01/11_usermod_unlock_password/shadow | 20 + .../usertools/01/12_usermod_change_gid_name.test | 45 + .../usertools/01/12_usermod_change_gid_name/group | 42 + .../01/12_usermod_change_gid_name/gshadow | 42 + .../usertools/01/12_usermod_change_gid_name/passwd | 20 + .../usertools/01/12_usermod_change_gid_name/shadow | 20 + .../usertools/01/12_usermod_change_gid_number.test | 45 + .../01/12_usermod_change_gid_number/group | 42 + .../01/12_usermod_change_gid_number/gshadow | 42 + .../01/12_usermod_change_gid_number/passwd | 20 + .../01/12_usermod_change_gid_number/shadow | 20 + .../usertools/01/13_useradd_negative_UID.test | 52 + .../usertools/01/13_useradd_negative_UID/group | 41 + .../usertools/01/13_useradd_negative_UID/gshadow | 41 + .../usertools/01/13_useradd_negative_UID/passwd | 19 + .../usertools/01/13_useradd_negative_UID/shadow | 19 + .../usertools/01/14_useradd_out_of_range_UID.test | 52 + .../usertools/01/14_useradd_out_of_range_UID/group | 41 + .../01/14_useradd_out_of_range_UID/gshadow | 41 + .../01/14_useradd_out_of_range_UID/passwd | 19 + .../01/14_useradd_out_of_range_UID/shadow | 19 + .../01/15_useradd_specified_large_UID.test | 42 + .../01/15_useradd_specified_large_UID/group | 42 + .../01/15_useradd_specified_large_UID/gshadow | 42 + .../01/15_useradd_specified_large_UID/passwd | 20 + .../01/15_useradd_specified_large_UID/shadow | 20 + .../01/16_useradd_add_user_to_multiple_groups.test | 42 + .../16_useradd_add_user_to_multiple_groups/group | 41 + .../16_useradd_add_user_to_multiple_groups/gshadow | 41 + .../16_useradd_add_user_to_multiple_groups/passwd | 20 + .../16_useradd_add_user_to_multiple_groups/shadow | 20 + .../01/16_useradd_add_user_to_one_group.test | 42 + .../01/16_useradd_add_user_to_one_group/group | 42 + .../01/16_useradd_add_user_to_one_group/gshadow | 42 + .../01/16_useradd_add_user_to_one_group/passwd | 20 + .../01/16_useradd_add_user_to_one_group/shadow | 20 + .../usertools/01/17_useradd_create_homedir.test | 46 + .../usertools/01/17_useradd_create_homedir/group | 42 + .../usertools/01/17_useradd_create_homedir/gshadow | 42 + .../usertools/01/17_useradd_create_homedir/passwd | 20 + .../usertools/01/17_useradd_create_homedir/shadow | 20 + .../usertools/01/18_userdel_remove_homedir.test | 54 + .../usertools/01/18_userdel_remove_homedir/group | 42 + .../usertools/01/18_userdel_remove_homedir/gshadow | 42 + .../usertools/01/18_userdel_remove_homedir/passwd | 20 + .../usertools/01/18_userdel_remove_homedir/shadow | 20 + .../01/18_userdel_remove_homedir/userdel.err | 1 + .../01/19_userdel_delete_user_in_group.test | 45 + .../usertools/01/20_usermod_change_homedir.test | 58 + .../01/21_usermod_change_and_move_homedir.test | 67 + .../tests/usertools/01/22_usermod_new_groups.test | 45 + .../tests/usertools/01/22_usermod_new_groups/group | 42 + .../usertools/01/22_usermod_new_groups/gshadow | 42 + .../usertools/01/22_usermod_new_groups/passwd | 20 + .../usertools/01/22_usermod_new_groups/shadow | 20 + .../tests/usertools/01/23_usermod_add_groups.test | 45 + .../tests/usertools/01/23_usermod_add_groups/group | 42 + .../usertools/01/23_usermod_add_groups/gshadow | 42 + .../usertools/01/23_usermod_add_groups/passwd | 20 + .../usertools/01/23_usermod_add_groups/shadow | 20 + .../24_usermod_new_groups_remove_old_groups.test | 45 + .../24_usermod_new_groups_remove_old_groups/group | 42 + .../gshadow | 42 + .../24_usermod_new_groups_remove_old_groups/passwd | 20 + .../24_usermod_new_groups_remove_old_groups/shadow | 20 + .../01/25_useradd_specified_large_UID2.test | 42 + .../01/25_useradd_specified_large_UID2/group | 42 + .../01/25_useradd_specified_large_UID2/gshadow | 42 + .../01/25_useradd_specified_large_UID2/passwd | 20 + .../01/25_useradd_specified_large_UID2/shadow | 20 + tests/tests/usertools/01/26_useradd_UID_-1.test | 52 + tests/tests/usertools/01/26_useradd_UID_-1/group | 41 + tests/tests/usertools/01/26_useradd_UID_-1/gshadow | 41 + tests/tests/usertools/01/26_useradd_UID_-1/passwd | 19 + tests/tests/usertools/01/26_useradd_UID_-1/shadow | 19 + .../tests/usertools/01/config/etc/default/useradd | 36 + tests/tests/usertools/01/config/etc/group | 41 + tests/tests/usertools/01/config/etc/gshadow | 41 + tests/tests/usertools/01/config/etc/passwd | 19 + tests/tests/usertools/01/config/etc/shadow | 19 + tests/tests/usertools/02/config.txt | 3 + .../tests/usertools/02/config/etc/default/useradd | 37 + tests/tests/usertools/02/config/etc/group | 42 + tests/tests/usertools/02/config/etc/gshadow | 42 + tests/tests/usertools/02/config/etc/passwd | 21 + tests/tests/usertools/02/config/etc/shadow | 20 + tests/tests/usertools/02/data/useradd-D.out | 7 + .../usertools/02/data/useradd-D_default_values.out | 7 + .../02/useradd_change_default_EXPIRE.test | 30 + .../useradd_change_default_EXPIRE/useradd.default | 43 + .../usertools/02/useradd_change_default_GROUP.test | 30 + .../useradd_change_default_GROUP/useradd.default | 43 + .../usertools/02/useradd_change_default_HOME.test | 30 + .../02/useradd_change_default_HOME/useradd.default | 43 + .../02/useradd_change_default_INACTIVE.test | 30 + .../useradd.default | 43 + .../usertools/02/useradd_change_default_SHELL.test | 30 + .../useradd_change_default_SHELL/useradd.default | 43 + .../usertools/02/useradd_change_defaults.test | 30 + .../02/useradd_change_defaults/useradd.default | 43 + .../02/useradd_default_default_values.test | 36 + .../usertools/02/useradd_get_default_values.test | 32 + tests/tests/usertools/03/config.txt | 3 + .../tests/usertools/03/config/etc/default/useradd | 36 + tests/tests/usertools/03/config/etc/group | 42 + tests/tests/usertools/03/config/etc/gshadow | 42 + tests/tests/usertools/03/config/etc/passwd | 21 + tests/tests/usertools/03/config/etc/shadow | 20 + .../usertools/03/useradd_change_defaults.test | 30 + .../03/useradd_change_defaults/useradd.default | 37 + tests/tests/usertools/04/01_useradd_add_user.test | 45 + tests/tests/usertools/04/01_useradd_add_user/group | 42 + .../tests/usertools/04/01_useradd_add_user/gshadow | 42 + .../tests/usertools/04/01_useradd_add_user/passwd | 20 + .../tests/usertools/04/01_useradd_add_user/shadow | 20 + tests/tests/usertools/04/config.txt | 3 + .../tests/usertools/04/config/etc/default/useradd | 36 + tests/tests/usertools/04/config/etc/group | 41 + tests/tests/usertools/04/config/etc/gshadow | 41 + tests/tests/usertools/04/config/etc/passwd | 19 + tests/tests/usertools/04/config/etc/shadow | 19 + .../05_userdel_del_from_group_members/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../05_userdel_del_from_group_members/data/group | 41 + .../05_userdel_del_from_group_members/data/gshadow | 41 + .../05_userdel_del_from_group_members/data/passwd | 19 + .../05_userdel_del_from_group_members/data/shadow | 19 + .../05_userdel_del_from_group_members/userdel.test | 39 + .../06_userdel_del_from_gshadow_members/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../06_userdel_del_from_gshadow_members/data/group | 41 + .../data/gshadow | 41 + .../data/passwd | 19 + .../data/shadow | 19 + .../userdel.test | 39 + .../07_userdel_del_from_gshadow_admins/config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../07_userdel_del_from_gshadow_admins/data/group | 41 + .../data/gshadow | 41 + .../07_userdel_del_from_gshadow_admins/data/passwd | 19 + .../07_userdel_del_from_gshadow_admins/data/shadow | 19 + .../userdel.test | 39 + .../config.txt | 4 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 41 + .../data/gshadow | 41 + .../data/passwd | 19 + .../data/shadow | 19 + .../userdel.test | 39 + .../usertools/09_userdel_del_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../09_userdel_del_homedir/config/etc/group | 42 + .../09_userdel_del_homedir/config/etc/gshadow | 42 + .../09_userdel_del_homedir/config/etc/passwd | 20 + .../09_userdel_del_homedir/config/etc/shadow | 20 + .../usertools/09_userdel_del_homedir/data/group | 41 + .../usertools/09_userdel_del_homedir/data/gshadow | 41 + .../usertools/09_userdel_del_homedir/data/passwd | 19 + .../usertools/09_userdel_del_homedir/data/shadow | 19 + .../usertools/09_userdel_del_homedir/userdel.test | 53 + .../10_userdel_del_homedir_wrong_owner/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../10_userdel_del_homedir_wrong_owner/data/group | 41 + .../data/gshadow | 41 + .../10_userdel_del_homedir_wrong_owner/data/passwd | 19 + .../10_userdel_del_homedir_wrong_owner/data/shadow | 19 + .../data/userdel.err | 1 + .../userdel.test | 69 + .../usertools/11_usermod_move_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../11_usermod_move_homedir/config/etc/group | 42 + .../11_usermod_move_homedir/config/etc/gshadow | 42 + .../11_usermod_move_homedir/config/etc/passwd | 20 + .../11_usermod_move_homedir/config/etc/shadow | 20 + .../11_usermod_move_homedir/data/home_ls-a | 3 + .../usertools/11_usermod_move_homedir/data/passwd | 20 + .../usertools/11_usermod_move_homedir/usermod.test | 58 + .../12_usermod_move_homedir_dev_null/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../12_usermod_move_homedir_dev_null/data/passwd | 20 + .../data/usermod.err | 1 + .../12_usermod_move_homedir_dev_null/usermod.test | 63 + .../13_usermod_move_homedir_file/config.txt | 1 + .../config/etc/default/useradd | 36 + .../13_usermod_move_homedir_file/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../13_usermod_move_homedir_file/config/etc/passwd | 20 + .../13_usermod_move_homedir_file/config/etc/shadow | 20 + .../13_usermod_move_homedir_file/data/passwd | 20 + .../13_usermod_move_homedir_file/data/usermod.err | 1 + .../13_usermod_move_homedir_file/usermod.test | 67 + .../config.txt | 5 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/home_ls-a | 7 + .../data/passwd | 20 + .../usermod.test | 68 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../usermod.test | 39 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../usermod.test | 39 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../usermod.test | 39 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 1 + .../usermod.test | 54 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/usermod.err | 1 + .../usermod.test | 54 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../usermod.test | 39 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/gshadow | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../usermod.test | 39 + .../usertools/24_usermod_locked_passwd/config.txt | 0 .../config/etc/default/useradd | 36 + .../24_usermod_locked_passwd/config/etc/group | 42 + .../24_usermod_locked_passwd/config/etc/gshadow | 42 + .../24_usermod_locked_passwd/config/etc/passwd | 20 + .../24_usermod_locked_passwd/config/etc/shadow | 20 + .../24_usermod_locked_passwd/data/usermod.err | 2 + .../24_usermod_locked_passwd/usermod.test | 60 + .../usertools/25_usermod-G_locked_group/config.txt | 0 .../config/etc/default/useradd | 36 + .../25_usermod-G_locked_group/config/etc/group | 42 + .../25_usermod-G_locked_group/config/etc/gshadow | 42 + .../25_usermod-G_locked_group/config/etc/passwd | 20 + .../25_usermod-G_locked_group/config/etc/shadow | 20 + .../25_usermod-G_locked_group/data/usermod.err | 2 + .../25_usermod-G_locked_group/usermod.test | 60 + .../usertools/26_usermod_locked_shadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../26_usermod_locked_shadow/config/etc/group | 42 + .../26_usermod_locked_shadow/config/etc/gshadow | 42 + .../26_usermod_locked_shadow/config/etc/passwd | 20 + .../26_usermod_locked_shadow/config/etc/shadow | 20 + .../26_usermod_locked_shadow/data/usermod.err | 2 + .../26_usermod_locked_shadow/usermod.test | 60 + .../27_usermod-G_locked_gshadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../27_usermod-G_locked_gshadow/config/etc/group | 42 + .../27_usermod-G_locked_gshadow/config/etc/gshadow | 42 + .../27_usermod-G_locked_gshadow/config/etc/passwd | 20 + .../27_usermod-G_locked_gshadow/config/etc/shadow | 20 + .../27_usermod-G_locked_gshadow/data/usermod.err | 2 + .../27_usermod-G_locked_gshadow/usermod.test | 60 + .../usertools/28_usermod-c_locked_group/config.txt | 1 + .../config/etc/default/useradd | 36 + .../28_usermod-c_locked_group/config/etc/group | 42 + .../28_usermod-c_locked_group/config/etc/gshadow | 42 + .../28_usermod-c_locked_group/config/etc/passwd | 20 + .../28_usermod-c_locked_group/config/etc/shadow | 20 + .../28_usermod-c_locked_group/data/passwd | 20 + .../28_usermod-c_locked_group/usermod.test | 45 + .../29_usermod-c_locked_gshadow/config.txt | 1 + .../config/etc/default/useradd | 36 + .../29_usermod-c_locked_gshadow/config/etc/group | 42 + .../29_usermod-c_locked_gshadow/config/etc/gshadow | 42 + .../29_usermod-c_locked_gshadow/config/etc/passwd | 20 + .../29_usermod-c_locked_gshadow/config/etc/shadow | 20 + .../29_usermod-c_locked_gshadow/data/passwd | 20 + .../29_usermod-c_locked_gshadow/usermod.test | 45 + .../usertools/30_usermod-l_locked_group/config.txt | 1 + .../config/etc/default/useradd | 36 + .../30_usermod-l_locked_group/config/etc/group | 42 + .../30_usermod-l_locked_group/config/etc/gshadow | 42 + .../30_usermod-l_locked_group/config/etc/passwd | 20 + .../30_usermod-l_locked_group/config/etc/shadow | 20 + .../30_usermod-l_locked_group/data/usermod.err | 2 + .../30_usermod-l_locked_group/usermod.test | 60 + .../31_usermod-l_locked_gshadow/config.txt | 1 + .../config/etc/default/useradd | 36 + .../31_usermod-l_locked_gshadow/config/etc/group | 42 + .../31_usermod-l_locked_gshadow/config/etc/gshadow | 42 + .../31_usermod-l_locked_gshadow/config/etc/passwd | 20 + .../31_usermod-l_locked_gshadow/config/etc/shadow | 20 + .../31_usermod-l_locked_gshadow/data/usermod.err | 2 + .../31_usermod-l_locked_gshadow/usermod.test | 60 + .../usertools/32_usermod-u_new_UID/config.txt | 1 + .../config/etc/default/useradd | 36 + .../32_usermod-u_new_UID/config/etc/group | 42 + .../32_usermod-u_new_UID/config/etc/gshadow | 42 + .../32_usermod-u_new_UID/config/etc/passwd | 20 + .../32_usermod-u_new_UID/config/etc/shadow | 20 + .../usertools/32_usermod-u_new_UID/data/passwd | 20 + .../usertools/32_usermod-u_new_UID/usermod.test | 39 + .../usertools/33_usermod-u_existing_UID/config.txt | 2 + .../config/etc/default/useradd | 36 + .../33_usermod-u_existing_UID/config/etc/group | 43 + .../33_usermod-u_existing_UID/config/etc/gshadow | 43 + .../33_usermod-u_existing_UID/config/etc/passwd | 21 + .../33_usermod-u_existing_UID/config/etc/shadow | 21 + .../33_usermod-u_existing_UID/data/usermod.err | 1 + .../33_usermod-u_existing_UID/usermod.test | 54 + .../34_usermod-u-o_existing_UID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../34_usermod-u-o_existing_UID/config/etc/group | 43 + .../34_usermod-u-o_existing_UID/config/etc/gshadow | 43 + .../34_usermod-u-o_existing_UID/config/etc/passwd | 21 + .../34_usermod-u-o_existing_UID/config/etc/shadow | 21 + .../34_usermod-u-o_existing_UID/data/passwd | 21 + .../34_usermod-u-o_existing_UID/usermod.test | 39 + .../usertools/35_usermod-u_invalid_UID/config.txt | 1 + .../config/etc/default/useradd | 36 + .../35_usermod-u_invalid_UID/config/etc/group | 43 + .../35_usermod-u_invalid_UID/config/etc/gshadow | 43 + .../35_usermod-u_invalid_UID/config/etc/passwd | 21 + .../35_usermod-u_invalid_UID/config/etc/shadow | 21 + .../35_usermod-u_invalid_UID/data/usermod.err | 1 + .../35_usermod-u_invalid_UID/usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/home_ls-a | 7 + .../data/passwd | 20 + .../usermod.test | 69 + .../usertools/37_Debian_Bug_470745/config.txt | 2 + .../config/etc/default/useradd | 36 + .../37_Debian_Bug_470745/config/etc/group | 43 + .../37_Debian_Bug_470745/config/etc/gshadow | 43 + .../37_Debian_Bug_470745/config/etc/passwd | 21 + .../37_Debian_Bug_470745/config/etc/shadow | 21 + .../usertools/37_Debian_Bug_470745/data/group | 45 + .../usertools/37_Debian_Bug_470745/data/gshadow | 45 + .../usertools/37_Debian_Bug_470745/data/passwd | 22 + .../usertools/37_Debian_Bug_470745/data/shadow | 22 + .../37_Debian_Bug_470745/data/usermod.err | 2 + .../usertools/37_Debian_Bug_470745/usermod.test | 62 + .../usertools/38_usermod_invalid_user/config.txt | 1 + .../config/etc/default/useradd | 36 + .../38_usermod_invalid_user/config/etc/group | 43 + .../38_usermod_invalid_user/config/etc/gshadow | 43 + .../38_usermod_invalid_user/config/etc/passwd | 21 + .../38_usermod_invalid_user/config/etc/shadow | 21 + .../38_usermod_invalid_user/data/usermod.err | 1 + .../usertools/38_usermod_invalid_user/usermod.test | 54 + .../39_usermod_-c_invalid_comment/config.txt | 1 + .../config/etc/default/useradd | 36 + .../39_usermod_-c_invalid_comment/config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../39_usermod_-c_invalid_comment/data/usermod.err | 1 + .../39_usermod_-c_invalid_comment/usermod.test | 54 + .../40_usermod_-d_invalid_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../40_usermod_-d_invalid_homedir/config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../40_usermod_-d_invalid_homedir/data/usermod.err | 2 + .../40_usermod_-d_invalid_homedir/usermod.test | 56 + .../41_usermod_-d_invalid_shell/config.txt | 1 + .../config/etc/default/useradd | 36 + .../41_usermod_-d_invalid_shell/config/etc/group | 43 + .../41_usermod_-d_invalid_shell/config/etc/gshadow | 43 + .../41_usermod_-d_invalid_shell/config/etc/passwd | 21 + .../41_usermod_-d_invalid_shell/config/etc/shadow | 21 + .../41_usermod_-d_invalid_shell/data/usermod.err | 1 + .../41_usermod_-d_invalid_shell/usermod.test | 54 + .../42_usermod_-g_invalid_group_name/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/usermod.err | 1 + .../42_usermod_-g_invalid_group_name/usermod.test | 54 + .../43_usermod_-g_invalid_group_ID/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/usermod.err | 1 + .../43_usermod_-g_invalid_group_ID/usermod.test | 54 + .../44_usermod-l_existing_username/config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/usermod.err | 1 + .../44_usermod-l_existing_username/usermod.test | 54 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/usermod.err | 1 + .../usermod.test | 54 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/usermod.err | 1 + .../usermod.test | 54 + .../47_usermod-l_no_shadow_file/config.txt | 2 + .../config/etc/default/useradd | 36 + .../47_usermod-l_no_shadow_file/config/etc/group | 42 + .../47_usermod-l_no_shadow_file/config/etc/gshadow | 42 + .../47_usermod-l_no_shadow_file/config/etc/passwd | 20 + .../47_usermod-l_no_shadow_file/config/etc/shadow | 20 + .../47_usermod-l_no_shadow_file/data/group | 42 + .../47_usermod-l_no_shadow_file/data/gshadow | 42 + .../47_usermod-l_no_shadow_file/data/passwd | 20 + .../47_usermod-l_no_shadow_file/usermod.test | 43 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/userdel.err | 1 + .../userdel.test | 48 + .../49_userdel_delete_users_group/config.txt | 1 + .../config/etc/default/useradd | 36 + .../49_userdel_delete_users_group/config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../49_userdel_delete_users_group/data/group | 42 + .../49_userdel_delete_users_group/data/gshadow | 42 + .../49_userdel_delete_users_group/data/passwd | 20 + .../49_userdel_delete_users_group/data/shadow | 20 + .../49_userdel_delete_users_group/userdel.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../userdel.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../userdel.test | 44 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/gshadow | 42 + .../data/passwd | 20 + .../userdel.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/gshadow | 42 + .../data/passwd | 20 + .../userdel.test | 43 + .../54_usermod-u_invalid_UID_4294967295/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/usermod.err | 1 + .../usermod.test | 54 + .../usertools/55_userdel_busy_user/config.txt | 1 + .../config/etc/default/useradd | 36 + .../55_userdel_busy_user/config/etc/group | 42 + .../55_userdel_busy_user/config/etc/gshadow | 42 + .../55_userdel_busy_user/config/etc/passwd | 20 + .../55_userdel_busy_user/config/etc/shadow | 20 + .../55_userdel_busy_user/data/userdel.err | 1 + .../usertools/55_userdel_busy_user/userdel.test | 68 + .../usertools/56_userdel_locked_passwd/config.txt | 0 .../config/etc/default/useradd | 36 + .../56_userdel_locked_passwd/config/etc/group | 42 + .../56_userdel_locked_passwd/config/etc/gshadow | 42 + .../56_userdel_locked_passwd/config/etc/passwd | 20 + .../56_userdel_locked_passwd/config/etc/shadow | 20 + .../56_userdel_locked_passwd/data/userdel.err | 2 + .../56_userdel_locked_passwd/userdel.test | 60 + .../usertools/57_userdel_locked_group/config.txt | 0 .../config/etc/default/useradd | 36 + .../57_userdel_locked_group/config/etc/group | 42 + .../57_userdel_locked_group/config/etc/gshadow | 42 + .../57_userdel_locked_group/config/etc/passwd | 20 + .../57_userdel_locked_group/config/etc/shadow | 20 + .../57_userdel_locked_group/data/userdel.err | 2 + .../usertools/57_userdel_locked_group/userdel.test | 60 + .../usertools/58_userdel_locked_shadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../58_userdel_locked_shadow/config/etc/group | 42 + .../58_userdel_locked_shadow/config/etc/gshadow | 42 + .../58_userdel_locked_shadow/config/etc/passwd | 20 + .../58_userdel_locked_shadow/config/etc/shadow | 20 + .../58_userdel_locked_shadow/data/userdel.err | 2 + .../58_userdel_locked_shadow/userdel.test | 60 + .../usertools/59_userdel_locked_gshadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../59_userdel_locked_gshadow/config/etc/group | 42 + .../59_userdel_locked_gshadow/config/etc/gshadow | 42 + .../59_userdel_locked_gshadow/config/etc/passwd | 20 + .../59_userdel_locked_gshadow/config/etc/shadow | 20 + .../59_userdel_locked_gshadow/data/userdel.err | 2 + .../59_userdel_locked_gshadow/userdel.test | 60 + .../usertools/60_userdel_invalid_user/config.txt | 0 .../config/etc/default/useradd | 36 + .../60_userdel_invalid_user/config/etc/group | 42 + .../60_userdel_invalid_user/config/etc/gshadow | 42 + .../60_userdel_invalid_user/config/etc/passwd | 20 + .../60_userdel_invalid_user/config/etc/shadow | 20 + .../60_userdel_invalid_user/data/userdel.err | 1 + .../usertools/60_userdel_invalid_user/userdel.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 41 + .../data/gshadow | 41 + .../data/passwd | 19 + .../data/shadow | 19 + .../data/userdel.err | 1 + .../userdel.test | 70 + .../config.txt | 4 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 43 + .../data/gshadow | 42 + .../usermod.test | 43 + .../01_chpasswd_invalid_user/chpasswd.test | 56 + .../01_chpasswd_invalid_user/config/etc/group | 41 + .../01_chpasswd_invalid_user/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../01_chpasswd_invalid_user/config/etc/passwd | 19 + .../01_chpasswd_invalid_user/config/etc/shadow | 19 + .../01_chpasswd_invalid_user/data/chpasswd.err | 3 + .../01_chpasswd_invalid_user/data/shadow | 19 + .../02_chpasswd_multiple_users/chpasswd.test | 40 + .../02_chpasswd_multiple_users/config/etc/group | 41 + .../02_chpasswd_multiple_users/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../02_chpasswd_multiple_users/config/etc/passwd | 19 + .../02_chpasswd_multiple_users/config/etc/shadow | 19 + .../02_chpasswd_multiple_users/data/shadow | 19 + .../03_chpasswd_no_shadow_file/chpasswd.test | 44 + .../03_chpasswd_no_shadow_file/config/etc/group | 41 + .../03_chpasswd_no_shadow_file/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../03_chpasswd_no_shadow_file/config/etc/passwd | 19 + .../03_chpasswd_no_shadow_file/config/etc/shadow | 19 + .../03_chpasswd_no_shadow_file/data/passwd | 19 + .../04_chpasswd_no_shadow_entry/chpasswd.test | 43 + .../04_chpasswd_no_shadow_entry/config/etc/group | 41 + .../04_chpasswd_no_shadow_entry/config/etc/gshadow | 40 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../04_chpasswd_no_shadow_entry/config/etc/passwd | 19 + .../04_chpasswd_no_shadow_entry/config/etc/shadow | 18 + .../04_chpasswd_no_shadow_entry/data/shadow | 19 + .../05_chpasswd_error_no_password/chpasswd.test | 55 + .../05_chpasswd_error_no_password/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 1 + .../05_chpasswd_error_no_password/data/shadow | 19 + .../chpasswd-PAM/06_chpasswd_usage/chpasswd.test | 48 + .../chpasswd-PAM/06_chpasswd_usage/config.txt | 10 + .../06_chpasswd_usage/config/etc/default/useradd | 36 + .../06_chpasswd_usage/config/etc/group | 41 + .../06_chpasswd_usage/config/etc/gshadow | 41 + .../06_chpasswd_usage/config/etc/passwd | 19 + .../06_chpasswd_usage/config/etc/shadow | 19 + .../chpasswd-PAM/06_chpasswd_usage/data/usage.out | 12 + .../07_chpasswd_usage_bad_option/chpasswd.test | 54 + .../07_chpasswd_usage_bad_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../07_chpasswd_usage_bad_option/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../07_chpasswd_usage_bad_option/config/etc/passwd | 19 + .../07_chpasswd_usage_bad_option/config/etc/shadow | 19 + .../07_chpasswd_usage_bad_option/data/usage.out | 13 + .../08_chpasswd_usage-e-m_exclusive/chpasswd.test | 54 + .../08_chpasswd_usage-e-m_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../08_chpasswd_usage-e-m_exclusive/data/usage.out | 13 + .../09_chpasswd_usage-e-c_exclusive/chpasswd.test | 54 + .../09_chpasswd_usage-e-c_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../09_chpasswd_usage-e-c_exclusive/data/usage.out | 13 + .../10_chpasswd_usage-m-c_exclusive/chpasswd.test | 54 + .../10_chpasswd_usage-m-c_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../10_chpasswd_usage-m-c_exclusive/data/usage.out | 13 + .../11_chpasswd_usage-s_without-c/chpasswd.test | 54 + .../11_chpasswd_usage-s_without-c/config.txt | 10 + .../config/etc/default/useradd | 36 + .../11_chpasswd_usage-s_without-c/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../11_chpasswd_usage-s_without-c/data/usage.out | 13 + .../12_chpasswd_usage-s_invalid/chpasswd.test | 54 + .../12_chpasswd_usage-s_invalid/config.txt | 10 + .../config/etc/default/useradd | 36 + .../12_chpasswd_usage-s_invalid/config/etc/group | 41 + .../12_chpasswd_usage-s_invalid/config/etc/gshadow | 41 + .../12_chpasswd_usage-s_invalid/config/etc/passwd | 20 + .../12_chpasswd_usage-s_invalid/config/etc/shadow | 19 + .../12_chpasswd_usage-s_invalid/data/usage.out | 13 + .../13_chpasswd_usage-c_invalid/chpasswd.test | 54 + .../13_chpasswd_usage-c_invalid/config.txt | 10 + .../config/etc/default/useradd | 36 + .../13_chpasswd_usage-c_invalid/config/etc/group | 41 + .../13_chpasswd_usage-c_invalid/config/etc/gshadow | 41 + .../13_chpasswd_usage-c_invalid/config/etc/passwd | 20 + .../13_chpasswd_usage-c_invalid/config/etc/shadow | 19 + .../13_chpasswd_usage-c_invalid/data/usage.out | 13 + .../14_chpasswd_password_encrypted/chpasswd.test | 40 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../14_chpasswd_password_encrypted/data/shadow | 19 + .../15_chpasswd_password_md5/chpasswd.test | 40 + .../15_chpasswd_password_md5/config/etc/group | 41 + .../15_chpasswd_password_md5/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../15_chpasswd_password_md5/config/etc/passwd | 19 + .../15_chpasswd_password_md5/config/etc/shadow | 19 + .../15_chpasswd_password_md5/data/shadow | 19 + .../16_chpasswd_password_NONE/chpasswd.test | 40 + .../16_chpasswd_password_NONE/config/etc/group | 41 + .../16_chpasswd_password_NONE/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../16_chpasswd_password_NONE/config/etc/passwd | 19 + .../16_chpasswd_password_NONE/config/etc/shadow | 19 + .../16_chpasswd_password_NONE/data/shadow | 19 + .../17_chpasswd_password_MD5/chpasswd.test | 40 + .../17_chpasswd_password_MD5/config/etc/group | 41 + .../17_chpasswd_password_MD5/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../17_chpasswd_password_MD5/config/etc/passwd | 19 + .../17_chpasswd_password_MD5/config/etc/shadow | 19 + .../17_chpasswd_password_MD5/data/shadow | 19 + .../18_chpasswd_password_DES/chpasswd.test | 40 + .../18_chpasswd_password_DES/config/etc/group | 41 + .../18_chpasswd_password_DES/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../18_chpasswd_password_DES/config/etc/passwd | 19 + .../18_chpasswd_password_DES/config/etc/shadow | 19 + .../18_chpasswd_password_DES/data/shadow | 19 + .../19_chpasswd_password_SHA256/chpasswd.test | 40 + .../19_chpasswd_password_SHA256/config/etc/group | 41 + .../19_chpasswd_password_SHA256/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../19_chpasswd_password_SHA256/config/etc/passwd | 19 + .../19_chpasswd_password_SHA256/config/etc/shadow | 19 + .../19_chpasswd_password_SHA256/data/shadow | 19 + .../chpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/shadow | 19 + .../chpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/shadow | 19 + .../22_chpasswd_password_SHA512/chpasswd.test | 40 + .../22_chpasswd_password_SHA512/config/etc/group | 41 + .../22_chpasswd_password_SHA512/config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../22_chpasswd_password_SHA512/config/etc/passwd | 19 + .../22_chpasswd_password_SHA512/config/etc/shadow | 19 + .../22_chpasswd_password_SHA512/data/shadow | 19 + .../chpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/shadow | 19 + .../chpasswd.test | 41 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/shadow | 19 + .../25_chpasswd-e_no_shadow_file/chpasswd.test | 44 + .../25_chpasswd-e_no_shadow_file/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../25_chpasswd-e_no_shadow_file/config/etc/passwd | 19 + .../25_chpasswd-e_no_shadow_file/config/etc/shadow | 19 + .../25_chpasswd-e_no_shadow_file/data/passwd | 19 + .../chpasswd.test | 59 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 6 + .../chpasswd.test | 59 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 3 + .../data/passwd | 19 + .../chpasswd.test | 59 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 3 + .../data/passwd | 19 + .../29_chpasswd-e_no_shadow_entry/chpasswd.test | 43 + .../29_chpasswd-e_no_shadow_entry/config/etc/group | 41 + .../config/etc/gshadow | 40 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 18 + .../29_chpasswd-e_no_shadow_entry/data/passwd | 19 + .../29_chpasswd-e_no_shadow_entry/data/shadow | 19 + .../30_chpasswd_locked_passwd/chpasswd.test | 61 + .../30_chpasswd_locked_passwd/config.txt | 0 .../config/etc/default/useradd | 36 + .../30_chpasswd_locked_passwd/config/etc/group | 42 + .../30_chpasswd_locked_passwd/config/etc/gshadow | 42 + .../30_chpasswd_locked_passwd/config/etc/passwd | 20 + .../30_chpasswd_locked_passwd/config/etc/shadow | 20 + .../30_chpasswd_locked_passwd/data/chpasswd.err | 2 + .../31_chpasswd_locked_shadow/chpasswd.test | 61 + .../31_chpasswd_locked_shadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../31_chpasswd_locked_shadow/config/etc/group | 42 + .../31_chpasswd_locked_shadow/config/etc/gshadow | 42 + .../31_chpasswd_locked_shadow/config/etc/passwd | 20 + .../31_chpasswd_locked_shadow/config/etc/shadow | 20 + .../31_chpasswd_locked_shadow/data/chpasswd.err | 2 + .../32_chpasswd_invalid_user/chpasswd.test | 56 + .../32_chpasswd_invalid_user/config.txt | 0 .../config/etc/default/useradd | 36 + .../32_chpasswd_invalid_user/config/etc/group | 42 + .../32_chpasswd_invalid_user/config/etc/gshadow | 42 + .../32_chpasswd_invalid_user/config/etc/passwd | 20 + .../32_chpasswd_invalid_user/config/etc/shadow | 20 + .../32_chpasswd_invalid_user/data/chpasswd.err | 3 + .../32_chpasswd_invalid_user/data/shadow | 20 + .../33_chpasswd-e_invalid_user/chpasswd.test | 56 + .../33_chpasswd-e_invalid_user/config.txt | 0 .../config/etc/default/useradd | 36 + .../33_chpasswd-e_invalid_user/config/etc/group | 42 + .../33_chpasswd-e_invalid_user/config/etc/gshadow | 42 + .../33_chpasswd-e_invalid_user/config/etc/passwd | 20 + .../33_chpasswd-e_invalid_user/config/etc/shadow | 20 + .../33_chpasswd-e_invalid_user/data/chpasswd.err | 2 + .../chpasswd.test | 40 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/pam.d/chpasswd | 6 + .../config/etc/pam.d/common-password | 33 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/passwd | 19 + .../data/shadow | 19 + .../01_chpasswd_invalid_user/chpasswd.test | 56 + .../01_chpasswd_invalid_user/config/etc/group | 41 + .../01_chpasswd_invalid_user/config/etc/gshadow | 41 + .../01_chpasswd_invalid_user/config/etc/login.defs | 317 + .../01_chpasswd_invalid_user/config/etc/passwd | 19 + .../01_chpasswd_invalid_user/config/etc/shadow | 19 + .../01_chpasswd_invalid_user/data/chpasswd.err | 2 + .../02_chpasswd_multiple_users/chpasswd.test | 40 + .../02_chpasswd_multiple_users/config/etc/group | 41 + .../02_chpasswd_multiple_users/config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../02_chpasswd_multiple_users/config/etc/passwd | 19 + .../02_chpasswd_multiple_users/config/etc/shadow | 19 + .../02_chpasswd_multiple_users/data/shadow | 19 + .../03_chpasswd_no_shadow_file/chpasswd.test | 44 + .../03_chpasswd_no_shadow_file/config/etc/group | 41 + .../03_chpasswd_no_shadow_file/config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../03_chpasswd_no_shadow_file/config/etc/passwd | 19 + .../03_chpasswd_no_shadow_file/config/etc/shadow | 19 + .../03_chpasswd_no_shadow_file/data/passwd | 19 + .../04_chpasswd_no_shadow_entry/chpasswd.test | 43 + .../04_chpasswd_no_shadow_entry/config/etc/group | 41 + .../04_chpasswd_no_shadow_entry/config/etc/gshadow | 40 + .../config/etc/login.defs | 317 + .../04_chpasswd_no_shadow_entry/config/etc/passwd | 19 + .../04_chpasswd_no_shadow_entry/config/etc/shadow | 18 + .../04_chpasswd_no_shadow_entry/data/passwd | 19 + .../04_chpasswd_no_shadow_entry/data/shadow | 18 + .../05_chpasswd_error_no_password/chpasswd.test | 55 + .../05_chpasswd_error_no_password/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/login.defs | 317 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/chpasswd.err | 2 + .../usertools/useradd/01_useradd_usage/config.txt | 10 + .../01_useradd_usage/config/etc/default/useradd | 36 + .../useradd/01_useradd_usage/config/etc/group | 41 + .../useradd/01_useradd_usage/config/etc/gshadow | 41 + .../useradd/01_useradd_usage/config/etc/passwd | 19 + .../useradd/01_useradd_usage/config/etc/shadow | 19 + .../useradd/01_useradd_usage/data/usage.out | 35 + .../useradd/01_useradd_usage/useradd.test | 48 + .../02_useradd_usage_invalid_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../02_useradd_usage_invalid_option/data/usage.out | 36 + .../02_useradd_usage_invalid_option/useradd.test | 54 + .../useradd/03_useradd_usage_no_users/config.txt | 10 + .../config/etc/default/useradd | 36 + .../03_useradd_usage_no_users/config/etc/group | 41 + .../03_useradd_usage_no_users/config/etc/gshadow | 41 + .../03_useradd_usage_no_users/config/etc/passwd | 19 + .../03_useradd_usage_no_users/config/etc/shadow | 19 + .../03_useradd_usage_no_users/data/usage.out | 35 + .../useradd/03_useradd_usage_no_users/useradd.test | 54 + .../useradd/04_useradd_usage_2_users/config.txt | 10 + .../config/etc/default/useradd | 36 + .../04_useradd_usage_2_users/config/etc/group | 41 + .../04_useradd_usage_2_users/config/etc/gshadow | 41 + .../04_useradd_usage_2_users/config/etc/passwd | 19 + .../04_useradd_usage_2_users/config/etc/shadow | 19 + .../04_useradd_usage_2_users/data/usage.out | 35 + .../useradd/04_useradd_usage_2_users/useradd.test | 54 + .../useradd/05_useradd_usage-b_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../05_useradd_usage-b_invalid1/config/etc/group | 41 + .../05_useradd_usage-b_invalid1/config/etc/gshadow | 41 + .../05_useradd_usage-b_invalid1/config/etc/passwd | 19 + .../05_useradd_usage-b_invalid1/config/etc/shadow | 19 + .../05_useradd_usage-b_invalid1/data/usage.out | 1 + .../05_useradd_usage-b_invalid1/useradd.test | 54 + .../useradd/06_useradd_usage-b_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../06_useradd_usage-b_invalid2/config/etc/group | 41 + .../06_useradd_usage-b_invalid2/config/etc/gshadow | 41 + .../06_useradd_usage-b_invalid2/config/etc/passwd | 19 + .../06_useradd_usage-b_invalid2/config/etc/shadow | 19 + .../06_useradd_usage-b_invalid2/data/usage.out | 2 + .../06_useradd_usage-b_invalid2/useradd.test | 56 + .../useradd/07_useradd_usage-b_invalid3/config.txt | 10 + .../config/etc/default/useradd | 36 + .../07_useradd_usage-b_invalid3/config/etc/group | 41 + .../07_useradd_usage-b_invalid3/config/etc/gshadow | 41 + .../07_useradd_usage-b_invalid3/config/etc/passwd | 19 + .../07_useradd_usage-b_invalid3/config/etc/shadow | 19 + .../07_useradd_usage-b_invalid3/data/usage.out | 1 + .../07_useradd_usage-b_invalid3/useradd.test | 54 + .../useradd/08_useradd_usage-c_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../08_useradd_usage-c_invalid1/config/etc/group | 41 + .../08_useradd_usage-c_invalid1/config/etc/gshadow | 41 + .../08_useradd_usage-c_invalid1/config/etc/passwd | 19 + .../08_useradd_usage-c_invalid1/config/etc/shadow | 19 + .../08_useradd_usage-c_invalid1/data/usage.out | 1 + .../08_useradd_usage-c_invalid1/useradd.test | 54 + .../useradd/09_useradd_usage-c_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../09_useradd_usage-c_invalid2/config/etc/group | 41 + .../09_useradd_usage-c_invalid2/config/etc/gshadow | 41 + .../09_useradd_usage-c_invalid2/config/etc/passwd | 19 + .../09_useradd_usage-c_invalid2/config/etc/shadow | 19 + .../09_useradd_usage-c_invalid2/data/usage.out | 2 + .../09_useradd_usage-c_invalid2/useradd.test | 56 + .../useradd/10_useradd_usage-d_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../10_useradd_usage-d_invalid1/config/etc/group | 41 + .../10_useradd_usage-d_invalid1/config/etc/gshadow | 41 + .../10_useradd_usage-d_invalid1/config/etc/passwd | 19 + .../10_useradd_usage-d_invalid1/config/etc/shadow | 19 + .../10_useradd_usage-d_invalid1/data/usage.out | 1 + .../10_useradd_usage-d_invalid1/useradd.test | 54 + .../useradd/11_useradd_usage-d_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../11_useradd_usage-d_invalid2/config/etc/group | 41 + .../11_useradd_usage-d_invalid2/config/etc/gshadow | 41 + .../11_useradd_usage-d_invalid2/config/etc/passwd | 19 + .../11_useradd_usage-d_invalid2/config/etc/shadow | 19 + .../11_useradd_usage-d_invalid2/data/usage.out | 2 + .../11_useradd_usage-d_invalid2/useradd.test | 56 + .../useradd/12_useradd_usage-d_invalid3/config.txt | 10 + .../config/etc/default/useradd | 36 + .../12_useradd_usage-d_invalid3/config/etc/group | 41 + .../12_useradd_usage-d_invalid3/config/etc/gshadow | 41 + .../12_useradd_usage-d_invalid3/config/etc/passwd | 19 + .../12_useradd_usage-d_invalid3/config/etc/shadow | 19 + .../12_useradd_usage-d_invalid3/data/usage.out | 1 + .../12_useradd_usage-d_invalid3/useradd.test | 54 + .../useradd/13_useradd_usage-e_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../13_useradd_usage-e_invalid1/config/etc/group | 41 + .../13_useradd_usage-e_invalid1/config/etc/gshadow | 41 + .../13_useradd_usage-e_invalid1/config/etc/passwd | 19 + .../13_useradd_usage-e_invalid1/config/etc/shadow | 19 + .../13_useradd_usage-e_invalid1/data/usage.out | 1 + .../13_useradd_usage-e_invalid1/useradd.test | 54 + .../useradd/14_useradd_usage-e_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../14_useradd_usage-e_invalid2/config/etc/group | 41 + .../14_useradd_usage-e_invalid2/config/etc/gshadow | 41 + .../14_useradd_usage-e_invalid2/config/etc/passwd | 19 + .../14_useradd_usage-e_invalid2/config/etc/shadow | 19 + .../14_useradd_usage-e_invalid2/data/usage.out | 1 + .../14_useradd_usage-e_invalid2/useradd.test | 54 + .../15_useradd_usage-e_no_shadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../15_useradd_usage-e_no_shadow_file/useradd.test | 58 + .../useradd/16_useradd_usage-f_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../16_useradd_usage-f_invalid1/config/etc/group | 41 + .../16_useradd_usage-f_invalid1/config/etc/gshadow | 41 + .../16_useradd_usage-f_invalid1/config/etc/passwd | 19 + .../16_useradd_usage-f_invalid1/config/etc/shadow | 19 + .../16_useradd_usage-f_invalid1/data/usage.out | 1 + .../16_useradd_usage-f_invalid1/useradd.test | 54 + .../useradd/17_useradd_usage-f_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../17_useradd_usage-f_invalid2/config/etc/group | 41 + .../17_useradd_usage-f_invalid2/config/etc/gshadow | 41 + .../17_useradd_usage-f_invalid2/config/etc/passwd | 19 + .../17_useradd_usage-f_invalid2/config/etc/shadow | 19 + .../17_useradd_usage-f_invalid2/data/usage.out | 1 + .../17_useradd_usage-f_invalid2/useradd.test | 54 + .../18_useradd_usage-f_no_shadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../18_useradd_usage-f_no_shadow_file/useradd.test | 58 + .../useradd/19_useradd_usage-K_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../19_useradd_usage-K_invalid1/config/etc/group | 41 + .../19_useradd_usage-K_invalid1/config/etc/gshadow | 41 + .../19_useradd_usage-K_invalid1/config/etc/passwd | 19 + .../19_useradd_usage-K_invalid1/config/etc/shadow | 19 + .../19_useradd_usage-K_invalid1/data/usage.out | 1 + .../19_useradd_usage-K_invalid1/useradd.test | 54 + .../useradd/20_useradd_usage-O_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../20_useradd_usage-O_invalid2/config/etc/group | 41 + .../20_useradd_usage-O_invalid2/config/etc/gshadow | 41 + .../20_useradd_usage-O_invalid2/config/etc/passwd | 19 + .../20_useradd_usage-O_invalid2/config/etc/shadow | 19 + .../20_useradd_usage-O_invalid2/data/usage.out | 1 + .../20_useradd_usage-O_invalid2/useradd.test | 54 + .../useradd/21_useradd_usage-p_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../21_useradd_usage-p_invalid1/config/etc/group | 41 + .../21_useradd_usage-p_invalid1/config/etc/gshadow | 41 + .../21_useradd_usage-p_invalid1/config/etc/passwd | 19 + .../21_useradd_usage-p_invalid1/config/etc/shadow | 19 + .../21_useradd_usage-p_invalid1/data/usage.out | 1 + .../21_useradd_usage-p_invalid1/useradd.test | 54 + .../useradd/22_useradd_usage-p_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../22_useradd_usage-p_invalid2/config/etc/group | 41 + .../22_useradd_usage-p_invalid2/config/etc/gshadow | 41 + .../22_useradd_usage-p_invalid2/config/etc/passwd | 19 + .../22_useradd_usage-p_invalid2/config/etc/shadow | 19 + .../22_useradd_usage-p_invalid2/data/usage.out | 2 + .../22_useradd_usage-p_invalid2/useradd.test | 56 + .../useradd/23_useradd_usage-s_invalid1/config.txt | 10 + .../config/etc/default/useradd | 36 + .../23_useradd_usage-s_invalid1/config/etc/group | 41 + .../23_useradd_usage-s_invalid1/config/etc/gshadow | 41 + .../23_useradd_usage-s_invalid1/config/etc/passwd | 19 + .../23_useradd_usage-s_invalid1/config/etc/shadow | 19 + .../23_useradd_usage-s_invalid1/data/usage.out | 1 + .../23_useradd_usage-s_invalid1/useradd.test | 54 + .../useradd/24_useradd_usage-s_invalid2/config.txt | 10 + .../config/etc/default/useradd | 36 + .../24_useradd_usage-s_invalid2/config/etc/group | 41 + .../24_useradd_usage-s_invalid2/config/etc/gshadow | 41 + .../24_useradd_usage-s_invalid2/config/etc/passwd | 19 + .../24_useradd_usage-s_invalid2/config/etc/shadow | 19 + .../24_useradd_usage-s_invalid2/data/usage.out | 2 + .../24_useradd_usage-s_invalid2/useradd.test | 56 + .../useradd/25_useradd_usage-s_invalid3/config.txt | 10 + .../config/etc/default/useradd | 36 + .../25_useradd_usage-s_invalid3/config/etc/group | 41 + .../25_useradd_usage-s_invalid3/config/etc/gshadow | 41 + .../25_useradd_usage-s_invalid3/config/etc/passwd | 19 + .../25_useradd_usage-s_invalid3/config/etc/shadow | 19 + .../25_useradd_usage-s_invalid3/data/usage.out | 1 + .../25_useradd_usage-s_invalid3/useradd.test | 54 + .../26_useradd_usage-o_without-u/config.txt | 10 + .../config/etc/default/useradd | 36 + .../26_useradd_usage-o_without-u/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../26_useradd_usage-o_without-u/config/etc/passwd | 20 + .../26_useradd_usage-o_without-u/config/etc/shadow | 19 + .../26_useradd_usage-o_without-u/data/usage.out | 36 + .../26_useradd_usage-o_without-u/useradd.test | 55 + .../27_useradd_usage-k_without-m/config.txt | 10 + .../config/etc/default/useradd | 36 + .../27_useradd_usage-k_without-m/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../27_useradd_usage-k_without-m/config/etc/passwd | 20 + .../27_useradd_usage-k_without-m/config/etc/shadow | 19 + .../27_useradd_usage-k_without-m/data/usage.out | 36 + .../27_useradd_usage-k_without-m/useradd.test | 55 + .../useradd/28_useradd_usage-U_with-g/config.txt | 10 + .../config/etc/default/useradd | 36 + .../28_useradd_usage-U_with-g/config/etc/group | 41 + .../28_useradd_usage-U_with-g/config/etc/gshadow | 41 + .../28_useradd_usage-U_with-g/config/etc/passwd | 20 + .../28_useradd_usage-U_with-g/config/etc/shadow | 19 + .../28_useradd_usage-U_with-g/data/usage.out | 36 + .../useradd/28_useradd_usage-U_with-g/useradd.test | 55 + .../useradd/29_useradd_usage-U_with-N/config.txt | 10 + .../config/etc/default/useradd | 36 + .../29_useradd_usage-U_with-N/config/etc/group | 41 + .../29_useradd_usage-U_with-N/config/etc/gshadow | 41 + .../29_useradd_usage-U_with-N/config/etc/passwd | 20 + .../29_useradd_usage-U_with-N/config/etc/shadow | 19 + .../29_useradd_usage-U_with-N/data/usage.out | 36 + .../useradd/29_useradd_usage-U_with-N/useradd.test | 55 + .../useradd/30_useradd_usage-m_with-M/config.txt | 10 + .../config/etc/default/useradd | 36 + .../30_useradd_usage-m_with-M/config/etc/group | 41 + .../30_useradd_usage-m_with-M/config/etc/gshadow | 41 + .../30_useradd_usage-m_with-M/config/etc/passwd | 20 + .../30_useradd_usage-m_with-M/config/etc/shadow | 19 + .../30_useradd_usage-m_with-M/data/usage.out | 36 + .../useradd/30_useradd_usage-m_with-M/useradd.test | 55 + .../31_useradd_usage_user_with-D/config.txt | 10 + .../config/etc/default/useradd | 36 + .../31_useradd_usage_user_with-D/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../31_useradd_usage_user_with-D/config/etc/passwd | 19 + .../31_useradd_usage_user_with-D/config/etc/shadow | 19 + .../31_useradd_usage_user_with-D/data/usage.out | 35 + .../31_useradd_usage_user_with-D/useradd.test | 54 + .../32_useradd_usage-D_with_other/config.txt | 10 + .../config/etc/default/useradd | 36 + .../32_useradd_usage-D_with_other/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../32_useradd_usage-D_with_other/data/usage.out | 35 + .../32_useradd_usage-D_with_other/useradd.test | 58 + .../33_useradd_usage_invalid_username/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../33_useradd_usage_invalid_username/useradd.test | 54 + .../34_useradd_default_GROUP_GID/config.txt | 10 + .../config/etc/default/useradd | 36 + .../34_useradd_default_GROUP_GID/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../34_useradd_default_GROUP_GID/config/etc/passwd | 19 + .../34_useradd_default_GROUP_GID/config/etc/shadow | 19 + .../34_useradd_default_GROUP_GID/data/passwd | 20 + .../34_useradd_default_GROUP_GID/data/shadow | 20 + .../34_useradd_default_GROUP_GID/useradd.test | 39 + .../35_useradd_default_GROUP_name/config.txt | 10 + .../config/etc/default/useradd | 36 + .../35_useradd_default_GROUP_name/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../35_useradd_default_GROUP_name/data/passwd | 20 + .../35_useradd_default_GROUP_name/data/shadow | 20 + .../35_useradd_default_GROUP_name/useradd.test | 39 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/usage.out | 2 + .../useradd.test | 48 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/usage.out | 2 + .../useradd.test | 48 + .../useradd/38_useradd_default_INACTIVE/config.txt | 10 + .../config/etc/default/useradd | 36 + .../38_useradd_default_INACTIVE/config/etc/group | 41 + .../38_useradd_default_INACTIVE/config/etc/gshadow | 41 + .../38_useradd_default_INACTIVE/config/etc/passwd | 19 + .../38_useradd_default_INACTIVE/config/etc/shadow | 19 + .../38_useradd_default_INACTIVE/data/passwd | 20 + .../38_useradd_default_INACTIVE/data/shadow | 20 + .../38_useradd_default_INACTIVE/useradd.test | 39 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/usage.out | 2 + .../useradd.test | 48 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/usage.out | 2 + .../useradd.test | 48 + .../41_useradd_default_default_SKEL/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../41_useradd_default_default_SKEL/data/defaults | 7 + .../41_useradd_default_default_SKEL/useradd.test | 48 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/defaults | 7 + .../useradd.test | 48 + .../43_useradd_default_no_final_eol/config.txt | 10 + .../config/etc/default/useradd | 37 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../43_useradd_default_no_final_eol/data/useradd | 38 + .../43_useradd_default_no_final_eol/useradd.test | 43 + .../useradd/44_useradd_default_no_file/config.txt | 10 + .../config/etc/default/useradd | 37 + .../44_useradd_default_no_file/config/etc/group | 41 + .../44_useradd_default_no_file/config/etc/gshadow | 41 + .../44_useradd_default_no_file/config/etc/passwd | 19 + .../44_useradd_default_no_file/config/etc/shadow | 19 + .../44_useradd_default_no_file/data/useradd | 8 + .../44_useradd_default_no_file/useradd.test | 47 + .../useradd/45_useradd-G_UID_name/config.txt | 10 + .../config/etc/default/useradd | 36 + .../useradd/45_useradd-G_UID_name/config/etc/group | 41 + .../45_useradd-G_UID_name/config/etc/gshadow | 41 + .../45_useradd-G_UID_name/config/etc/passwd | 19 + .../45_useradd-G_UID_name/config/etc/shadow | 19 + .../useradd/45_useradd-G_UID_name/data/group | 42 + .../useradd/45_useradd-G_UID_name/data/gshadow | 42 + .../useradd/45_useradd-G_UID_name/data/passwd | 20 + .../useradd/45_useradd-G_UID_name/data/shadow | 20 + .../useradd/45_useradd-G_UID_name/useradd.test | 39 + .../useradd/46_useradd-G_UID_duplicate/config.txt | 10 + .../config/etc/default/useradd | 36 + .../46_useradd-G_UID_duplicate/config/etc/group | 41 + .../46_useradd-G_UID_duplicate/config/etc/gshadow | 41 + .../46_useradd-G_UID_duplicate/config/etc/passwd | 19 + .../46_useradd-G_UID_duplicate/config/etc/shadow | 19 + .../useradd/46_useradd-G_UID_duplicate/data/group | 42 + .../46_useradd-G_UID_duplicate/data/gshadow | 42 + .../useradd/46_useradd-G_UID_duplicate/data/passwd | 20 + .../useradd/46_useradd-G_UID_duplicate/data/shadow | 20 + .../46_useradd-G_UID_duplicate/useradd.test | 39 + .../47_useradd-G_UID_name_duplicate/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../47_useradd-G_UID_name_duplicate/data/group | 42 + .../47_useradd-G_UID_name_duplicate/data/gshadow | 42 + .../47_useradd-G_UID_name_duplicate/data/passwd | 20 + .../47_useradd-G_UID_name_duplicate/data/shadow | 20 + .../47_useradd-G_UID_name_duplicate/useradd.test | 39 + .../useradd/48_useradd-G_name_duplicate/config.txt | 10 + .../config/etc/default/useradd | 36 + .../48_useradd-G_name_duplicate/config/etc/group | 41 + .../48_useradd-G_name_duplicate/config/etc/gshadow | 41 + .../48_useradd-G_name_duplicate/config/etc/passwd | 19 + .../48_useradd-G_name_duplicate/config/etc/shadow | 19 + .../useradd/48_useradd-G_name_duplicate/data/group | 42 + .../48_useradd-G_name_duplicate/data/gshadow | 42 + .../48_useradd-G_name_duplicate/data/passwd | 20 + .../48_useradd-G_name_duplicate/data/shadow | 20 + .../48_useradd-G_name_duplicate/useradd.test | 39 + .../useradd/49_useradd-G_invalid_group/config.txt | 10 + .../config/etc/default/useradd | 36 + .../49_useradd-G_invalid_group/config/etc/group | 41 + .../49_useradd-G_invalid_group/config/etc/gshadow | 41 + .../49_useradd-G_invalid_group/config/etc/passwd | 19 + .../49_useradd-G_invalid_group/config/etc/shadow | 19 + .../49_useradd-G_invalid_group/data/usage.out | 1 + .../49_useradd-G_invalid_group/useradd.test | 54 + .../usertools/useradd/50_useradd-r/config.txt | 10 + .../50_useradd-r/config/etc/default/useradd | 36 + .../useradd/50_useradd-r/config/etc/group | 41 + .../useradd/50_useradd-r/config/etc/gshadow | 41 + .../useradd/50_useradd-r/config/etc/passwd | 19 + .../useradd/50_useradd-r/config/etc/shadow | 19 + .../usertools/useradd/50_useradd-r/data/group | 42 + .../usertools/useradd/50_useradd-r/data/gshadow | 42 + .../usertools/useradd/50_useradd-r/data/passwd | 20 + .../usertools/useradd/50_useradd-r/data/shadow | 20 + .../usertools/useradd/50_useradd-r/useradd.test | 39 + .../useradd/51_useradd_already_exist/config.txt | 10 + .../config/etc/default/useradd | 36 + .../51_useradd_already_exist/config/etc/group | 42 + .../51_useradd_already_exist/config/etc/gshadow | 42 + .../51_useradd_already_exist/config/etc/passwd | 20 + .../51_useradd_already_exist/config/etc/shadow | 20 + .../51_useradd_already_exist/data/usage.out | 1 + .../useradd/51_useradd_already_exist/useradd.test | 54 + .../52_useradd-U_group_already_exist/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../52_useradd-U_group_already_exist/useradd.test | 54 + .../useradd/53_useradd-G_empty/config.txt | 10 + .../53_useradd-G_empty/config/etc/default/useradd | 36 + .../useradd/53_useradd-G_empty/config/etc/group | 41 + .../useradd/53_useradd-G_empty/config/etc/gshadow | 41 + .../useradd/53_useradd-G_empty/config/etc/passwd | 19 + .../useradd/53_useradd-G_empty/config/etc/shadow | 19 + .../useradd/53_useradd-G_empty/data/group | 42 + .../useradd/53_useradd-G_empty/data/gshadow | 42 + .../useradd/53_useradd-G_empty/data/passwd | 20 + .../useradd/53_useradd-G_empty/data/shadow | 20 + .../useradd/53_useradd-G_empty/useradd.test | 39 + .../useradd/54_useradd_no_shadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../54_useradd_no_shadow_file/config/etc/group | 41 + .../54_useradd_no_shadow_file/config/etc/gshadow | 41 + .../54_useradd_no_shadow_file/config/etc/passwd | 19 + .../54_useradd_no_shadow_file/config/etc/shadow | 19 + .../useradd/54_useradd_no_shadow_file/data/group | 42 + .../useradd/54_useradd_no_shadow_file/data/gshadow | 42 + .../useradd/54_useradd_no_shadow_file/data/passwd | 20 + .../useradd/54_useradd_no_shadow_file/useradd.test | 43 + .../useradd/55_useradd_no_gshadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../55_useradd_no_gshadow_file/config/etc/group | 41 + .../55_useradd_no_gshadow_file/config/etc/gshadow | 41 + .../55_useradd_no_gshadow_file/config/etc/passwd | 19 + .../55_useradd_no_gshadow_file/config/etc/shadow | 19 + .../useradd/55_useradd_no_gshadow_file/data/group | 42 + .../useradd/55_useradd_no_gshadow_file/data/passwd | 20 + .../useradd/55_useradd_no_gshadow_file/data/shadow | 20 + .../55_useradd_no_gshadow_file/useradd.test | 43 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/group | 42 + .../data/gshadow | 43 + .../data/passwd | 20 + .../data/shadow | 20 + .../useradd.test | 39 + .../57_useradd_usage-D_not_first_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/usage.out | 35 + .../useradd.test | 54 + .../useradd/58_useradd-e_empty/config.txt | 10 + .../58_useradd-e_empty/config/etc/default/useradd | 36 + .../useradd/58_useradd-e_empty/config/etc/group | 41 + .../useradd/58_useradd-e_empty/config/etc/gshadow | 41 + .../useradd/58_useradd-e_empty/config/etc/passwd | 19 + .../useradd/58_useradd-e_empty/config/etc/shadow | 19 + .../useradd/58_useradd-e_empty/data/group | 42 + .../useradd/58_useradd-e_empty/data/gshadow | 42 + .../useradd/58_useradd-e_empty/data/passwd | 20 + .../useradd/58_useradd-e_empty/data/shadow | 20 + .../useradd/58_useradd-e_empty/useradd.test | 39 + .../useradd/59_useradd-e-1-f-1/config.txt | 10 + .../59_useradd-e-1-f-1/config/etc/default/useradd | 36 + .../useradd/59_useradd-e-1-f-1/config/etc/group | 41 + .../useradd/59_useradd-e-1-f-1/config/etc/gshadow | 41 + .../useradd/59_useradd-e-1-f-1/config/etc/passwd | 19 + .../useradd/59_useradd-e-1-f-1/config/etc/shadow | 19 + .../useradd/59_useradd-e-1-f-1/data/group | 42 + .../useradd/59_useradd-e-1-f-1/data/gshadow | 42 + .../useradd/59_useradd-e-1-f-1/data/passwd | 20 + .../useradd/59_useradd-e-1-f-1/data/shadow | 20 + .../useradd/59_useradd-e-1-f-1/useradd.test | 39 + .../60_useradd-e-1-f-1_no_shadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../60_useradd-e-1-f-1_no_shadow_file/data/group | 42 + .../60_useradd-e-1-f-1_no_shadow_file/data/gshadow | 42 + .../60_useradd-e-1-f-1_no_shadow_file/data/passwd | 20 + .../60_useradd-e-1-f-1_no_shadow_file/useradd.test | 43 + .../usertools/useradd/61_useradd-K/config.txt | 10 + .../61_useradd-K/config/etc/default/useradd | 36 + .../useradd/61_useradd-K/config/etc/group | 41 + .../useradd/61_useradd-K/config/etc/gshadow | 41 + .../useradd/61_useradd-K/config/etc/passwd | 19 + .../useradd/61_useradd-K/config/etc/shadow | 19 + .../usertools/useradd/61_useradd-K/data/group | 42 + .../usertools/useradd/61_useradd-K/data/gshadow | 42 + .../usertools/useradd/61_useradd-K/data/passwd | 20 + .../usertools/useradd/61_useradd-K/data/shadow | 20 + .../usertools/useradd/61_useradd-K/useradd.test | 39 + .../usertools/useradd/62_useradd-p/config.txt | 10 + .../62_useradd-p/config/etc/default/useradd | 36 + .../useradd/62_useradd-p/config/etc/group | 41 + .../useradd/62_useradd-p/config/etc/gshadow | 41 + .../useradd/62_useradd-p/config/etc/passwd | 19 + .../useradd/62_useradd-p/config/etc/shadow | 19 + .../usertools/useradd/62_useradd-p/data/group | 42 + .../usertools/useradd/62_useradd-p/data/gshadow | 42 + .../usertools/useradd/62_useradd-p/data/passwd | 20 + .../usertools/useradd/62_useradd-p/data/shadow | 20 + .../usertools/useradd/62_useradd-p/useradd.test | 39 + .../usertools/useradd/63_useradd-s/config.txt | 10 + .../63_useradd-s/config/etc/default/useradd | 36 + .../useradd/63_useradd-s/config/etc/group | 41 + .../useradd/63_useradd-s/config/etc/gshadow | 41 + .../useradd/63_useradd-s/config/etc/passwd | 19 + .../useradd/63_useradd-s/config/etc/shadow | 19 + .../usertools/useradd/63_useradd-s/data/group | 42 + .../usertools/useradd/63_useradd-s/data/gshadow | 42 + .../usertools/useradd/63_useradd-s/data/passwd | 20 + .../usertools/useradd/63_useradd-s/data/shadow | 20 + .../usertools/useradd/63_useradd-s/useradd.test | 39 + .../useradd/64_useradd_locked_passwd/config.txt | 0 .../config/etc/default/useradd | 36 + .../64_useradd_locked_passwd/config/etc/group | 41 + .../64_useradd_locked_passwd/config/etc/gshadow | 41 + .../64_useradd_locked_passwd/config/etc/passwd | 19 + .../64_useradd_locked_passwd/config/etc/shadow | 19 + .../64_useradd_locked_passwd/data/useradd.err | 2 + .../useradd/64_useradd_locked_passwd/useradd.test | 60 + .../useradd/65_useradd_locked_group/config.txt | 0 .../config/etc/default/useradd | 36 + .../65_useradd_locked_group/config/etc/group | 41 + .../65_useradd_locked_group/config/etc/gshadow | 41 + .../65_useradd_locked_group/config/etc/passwd | 19 + .../65_useradd_locked_group/config/etc/shadow | 19 + .../65_useradd_locked_group/data/useradd.err | 2 + .../useradd/65_useradd_locked_group/useradd.test | 60 + .../useradd/66_useradd_locked_shadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../66_useradd_locked_shadow/config/etc/group | 41 + .../66_useradd_locked_shadow/config/etc/gshadow | 41 + .../66_useradd_locked_shadow/config/etc/passwd | 19 + .../66_useradd_locked_shadow/config/etc/shadow | 19 + .../66_useradd_locked_shadow/data/useradd.err | 2 + .../useradd/66_useradd_locked_shadow/useradd.test | 60 + .../useradd/67_useradd_locked_gshadow/config.txt | 0 .../config/etc/default/useradd | 36 + .../67_useradd_locked_gshadow/config/etc/group | 41 + .../67_useradd_locked_gshadow/config/etc/gshadow | 41 + .../67_useradd_locked_gshadow/config/etc/passwd | 19 + .../67_useradd_locked_gshadow/config/etc/shadow | 19 + .../67_useradd_locked_gshadow/data/useradd.err | 2 + .../useradd/67_useradd_locked_gshadow/useradd.test | 60 + .../useradd/68_useradd-s_empty/config.txt | 10 + .../68_useradd-s_empty/config/etc/default/useradd | 36 + .../useradd/68_useradd-s_empty/config/etc/group | 41 + .../useradd/68_useradd-s_empty/config/etc/gshadow | 41 + .../useradd/68_useradd-s_empty/config/etc/passwd | 19 + .../useradd/68_useradd-s_empty/config/etc/shadow | 19 + .../useradd/68_useradd-s_empty/data/group | 42 + .../useradd/68_useradd-s_empty/data/gshadow | 42 + .../useradd/68_useradd-s_empty/data/passwd | 20 + .../useradd/68_useradd-s_empty/data/shadow | 20 + .../useradd/68_useradd-s_empty/useradd.test | 39 + .../69_useradd_default_GROUPS_name/config.txt | 8 + .../config/etc/default/useradd | 40 + .../config/etc/group | 41 + .../69_useradd_default_GROUPS_name/data/group | 42 + .../69_useradd_default_GROUPS_name/useradd.test | 31 + .../usertools/userdel/01_userdel_usage/config.txt | 10 + .../01_userdel_usage/config/etc/default/useradd | 36 + .../userdel/01_userdel_usage/config/etc/group | 41 + .../userdel/01_userdel_usage/config/etc/gshadow | 41 + .../userdel/01_userdel_usage/config/etc/passwd | 19 + .../userdel/01_userdel_usage/config/etc/shadow | 19 + .../userdel/01_userdel_usage/data/usage.out | 10 + .../userdel/01_userdel_usage/userdel.test | 48 + .../02_userdel_usage_invalid_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../02_userdel_usage_invalid_option/data/usage.out | 11 + .../02_userdel_usage_invalid_option/userdel.test | 54 + .../userdel/03_userdel_usage_no_users/config.txt | 10 + .../config/etc/default/useradd | 36 + .../03_userdel_usage_no_users/config/etc/group | 41 + .../03_userdel_usage_no_users/config/etc/gshadow | 41 + .../03_userdel_usage_no_users/config/etc/passwd | 19 + .../03_userdel_usage_no_users/config/etc/shadow | 19 + .../03_userdel_usage_no_users/data/usage.out | 10 + .../userdel/03_userdel_usage_no_users/userdel.test | 54 + .../userdel/04_userdel_usage_2_users/config.txt | 10 + .../config/etc/default/useradd | 36 + .../04_userdel_usage_2_users/config/etc/group | 41 + .../04_userdel_usage_2_users/config/etc/gshadow | 41 + .../04_userdel_usage_2_users/config/etc/passwd | 19 + .../04_userdel_usage_2_users/config/etc/shadow | 19 + .../04_userdel_usage_2_users/data/usage.out | 10 + .../userdel/04_userdel_usage_2_users/userdel.test | 54 + .../05_userdel_no_USERGROUPS_ENAB/config.txt | 1 + .../config/etc/default/useradd | 36 + .../05_userdel_no_USERGROUPS_ENAB/config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../05_userdel_no_USERGROUPS_ENAB/data/group | 43 + .../05_userdel_no_USERGROUPS_ENAB/data/gshadow | 43 + .../05_userdel_no_USERGROUPS_ENAB/data/passwd | 20 + .../05_userdel_no_USERGROUPS_ENAB/data/shadow | 20 + .../05_userdel_no_USERGROUPS_ENAB/userdel.test | 39 + .../userdel/06_userdel_no_usergroup/config.txt | 1 + .../config/etc/default/useradd | 36 + .../06_userdel_no_usergroup/config/etc/group | 43 + .../06_userdel_no_usergroup/config/etc/gshadow | 43 + .../06_userdel_no_usergroup/config/etc/login.defs | 334 + .../06_userdel_no_usergroup/config/etc/passwd | 21 + .../06_userdel_no_usergroup/config/etc/shadow | 21 + .../userdel/06_userdel_no_usergroup/data/group | 43 + .../userdel/06_userdel_no_usergroup/data/gshadow | 43 + .../userdel/06_userdel_no_usergroup/data/passwd | 20 + .../userdel/06_userdel_no_usergroup/data/shadow | 20 + .../userdel/06_userdel_no_usergroup/userdel.test | 39 + .../07_userdel_usergroup_not_primary/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 44 + .../config/etc/gshadow | 44 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../07_userdel_usergroup_not_primary/data/group | 44 + .../07_userdel_usergroup_not_primary/data/gshadow | 44 + .../07_userdel_usergroup_not_primary/data/passwd | 20 + .../07_userdel_usergroup_not_primary/data/shadow | 20 + .../data/userdel.out | 1 + .../07_userdel_usergroup_not_primary/userdel.test | 48 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 43 + .../data/gshadow | 43 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/userdel.out | 1 + .../userdel.test | 48 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/login.defs | 334 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 43 + .../data/gshadow | 43 + .../data/passwd | 20 + .../data/shadow | 20 + .../data/userdel.out | 1 + .../userdel.test | 48 + .../10_userdel_del_homedir_symlink/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../10_userdel_del_homedir_symlink/data/group | 41 + .../10_userdel_del_homedir_symlink/data/gshadow | 41 + .../10_userdel_del_homedir_symlink/data/passwd | 19 + .../10_userdel_del_homedir_symlink/data/shadow | 19 + .../data/userdel.err | 1 + .../10_userdel_del_homedir_symlink/userdel.test | 72 + .../usermod/01_usermod-p_no_shadow_file/config.txt | 2 + .../config/etc/default/useradd | 36 + .../01_usermod-p_no_shadow_file/config/etc/group | 42 + .../01_usermod-p_no_shadow_file/config/etc/gshadow | 42 + .../01_usermod-p_no_shadow_file/config/etc/passwd | 20 + .../01_usermod-p_no_shadow_file/config/etc/shadow | 20 + .../01_usermod-p_no_shadow_file/data/passwd | 20 + .../01_usermod-p_no_shadow_file/usermod.test | 43 + .../02_usermod-p_no_shadow_entry/config.txt | 2 + .../config/etc/default/useradd | 36 + .../02_usermod-p_no_shadow_entry/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../02_usermod-p_no_shadow_entry/config/etc/passwd | 20 + .../02_usermod-p_no_shadow_entry/config/etc/shadow | 19 + .../02_usermod-p_no_shadow_entry/data/passwd | 20 + .../02_usermod-p_no_shadow_entry/usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/shadow | 20 + .../usermod.test | 39 + .../config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../usermod.test | 39 + .../usertools/usermod/10_usermod_usage/config.txt | 10 + .../10_usermod_usage/config/etc/default/useradd | 36 + .../usermod/10_usermod_usage/config/etc/group | 41 + .../usermod/10_usermod_usage/config/etc/gshadow | 41 + .../usermod/10_usermod_usage/config/etc/passwd | 19 + .../usermod/10_usermod_usage/config/etc/shadow | 19 + .../usermod/10_usermod_usage/data/usage.out | 30 + .../usermod/10_usermod_usage/usermod.test | 48 + .../usermod/11_usermod_usage_bad_option/config.txt | 10 + .../config/etc/default/useradd | 36 + .../11_usermod_usage_bad_option/config/etc/group | 41 + .../11_usermod_usage_bad_option/config/etc/gshadow | 41 + .../11_usermod_usage_bad_option/config/etc/passwd | 19 + .../11_usermod_usage_bad_option/config/etc/shadow | 19 + .../11_usermod_usage_bad_option/data/usage.out | 31 + .../11_usermod_usage_bad_option/usermod.test | 54 + .../usermod/12_usermod_usage_bad-f/config.txt | 10 + .../config/etc/default/useradd | 36 + .../12_usermod_usage_bad-f/config/etc/group | 41 + .../12_usermod_usage_bad-f/config/etc/gshadow | 41 + .../12_usermod_usage_bad-f/config/etc/passwd | 19 + .../12_usermod_usage_bad-f/config/etc/shadow | 19 + .../12_usermod_usage_bad-f/data/usermod.err | 1 + .../usermod/12_usermod_usage_bad-f/usermod.test | 54 + .../13_usermod_usage_bad-f_negativ/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 19 + .../config/etc/shadow | 19 + .../data/usermod.err | 1 + .../13_usermod_usage_bad-f_negative/usermod.test | 54 + .../usermod/14_usermod_usage_no_options/config.txt | 10 + .../config/etc/default/useradd | 36 + .../14_usermod_usage_no_options/config/etc/group | 41 + .../14_usermod_usage_no_options/config/etc/gshadow | 41 + .../14_usermod_usage_no_options/config/etc/passwd | 20 + .../14_usermod_usage_no_options/config/etc/shadow | 19 + .../14_usermod_usage_no_options/data/usage.out | 31 + .../14_usermod_usage_no_options/usermod.test | 54 + .../usermod/15_usermod_usage_no_user/config.txt | 10 + .../config/etc/default/useradd | 36 + .../15_usermod_usage_no_user/config/etc/group | 41 + .../15_usermod_usage_no_user/config/etc/gshadow | 41 + .../15_usermod_usage_no_user/config/etc/passwd | 20 + .../15_usermod_usage_no_user/config/etc/shadow | 19 + .../15_usermod_usage_no_user/data/usage.out | 30 + .../usermod/15_usermod_usage_no_user/usermod.test | 54 + .../16_usermod_usage_-e_no_shadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../usermod.test | 58 + .../17_usermod_usage_-f_no_shadow_file/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../usermod.test | 58 + .../18_usermod_usage-L-p_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../18_usermod_usage-L-p_exclusive/data/usage.out | 31 + .../18_usermod_usage-L-p_exclusive/usermod.test | 54 + .../19_usermod_usage-L-U_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../19_usermod_usage-L-U_exclusive/data/usage.out | 31 + .../19_usermod_usage-L-U_exclusive/usermod.test | 54 + .../20_usermod_usage-p-U_exclusive/config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../20_usermod_usage-p-U_exclusive/data/usage.out | 31 + .../20_usermod_usage-p-U_exclusive/usermod.test | 54 + .../config.txt | 6 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../usermod.test | 43 + .../config.txt | 10 + .../config/etc/default/useradd | 36 + .../config/etc/group | 41 + .../config/etc/gshadow | 41 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../data/usage.out | 1 + .../usermod.test | 54 + .../usertools/usermod/23_usermod-e_date/config.txt | 2 + .../23_usermod-e_date/config/etc/default/useradd | 36 + .../usermod/23_usermod-e_date/config/etc/group | 42 + .../usermod/23_usermod-e_date/config/etc/gshadow | 42 + .../usermod/23_usermod-e_date/config/etc/passwd | 20 + .../usermod/23_usermod-e_date/config/etc/shadow | 20 + .../usermod/23_usermod-e_date/data/shadow | 20 + .../usermod/23_usermod-e_date/usermod.test | 39 + .../usertools/usermod/24_usermod-e_date/config.txt | 2 + .../24_usermod-e_date/config/etc/default/useradd | 36 + .../usermod/24_usermod-e_date/config/etc/group | 42 + .../usermod/24_usermod-e_date/config/etc/gshadow | 42 + .../usermod/24_usermod-e_date/config/etc/passwd | 20 + .../usermod/24_usermod-e_date/config/etc/shadow | 20 + .../usermod/24_usermod-e_date/data/shadow | 20 + .../usermod/24_usermod-e_date/usermod.test | 39 + .../usermod/25_usermod-e_empty_arg/config.txt | 2 + .../config/etc/default/useradd | 36 + .../25_usermod-e_empty_arg/config/etc/group | 42 + .../25_usermod-e_empty_arg/config/etc/gshadow | 42 + .../25_usermod-e_empty_arg/config/etc/passwd | 20 + .../25_usermod-e_empty_arg/config/etc/shadow | 20 + .../usermod/25_usermod-e_empty_arg/data/shadow | 20 + .../usermod/25_usermod-e_empty_arg/usermod.test | 39 + .../usertools/usermod/26_usermod-e-1/config.txt | 2 + .../26_usermod-e-1/config/etc/default/useradd | 36 + .../usermod/26_usermod-e-1/config/etc/group | 42 + .../usermod/26_usermod-e-1/config/etc/gshadow | 42 + .../usermod/26_usermod-e-1/config/etc/passwd | 20 + .../usermod/26_usermod-e-1/config/etc/shadow | 20 + .../usertools/usermod/26_usermod-e-1/data/shadow | 20 + .../usertools/usermod/26_usermod-e-1/usermod.test | 39 + .../usermod/27_usermod-e_invalid1/config.txt | 2 + .../config/etc/default/useradd | 36 + .../usermod/27_usermod-e_invalid1/config/etc/group | 42 + .../27_usermod-e_invalid1/config/etc/gshadow | 42 + .../27_usermod-e_invalid1/config/etc/passwd | 20 + .../27_usermod-e_invalid1/config/etc/shadow | 20 + .../usermod/27_usermod-e_invalid1/data/usermod.err | 1 + .../usermod/27_usermod-e_invalid1/usermod.test | 54 + .../usermod/28_usermod-e_invalid2/config.txt | 2 + .../config/etc/default/useradd | 36 + .../usermod/28_usermod-e_invalid2/config/etc/group | 42 + .../28_usermod-e_invalid2/config/etc/gshadow | 42 + .../28_usermod-e_invalid2/config/etc/passwd | 20 + .../28_usermod-e_invalid2/config/etc/shadow | 20 + .../usermod/28_usermod-e_invalid2/data/usermod.err | 1 + .../usermod/28_usermod-e_invalid2/usermod.test | 54 + .../usermod/29_usermod_no_changes/config.txt | 10 + .../config/etc/default/useradd | 36 + .../usermod/29_usermod_no_changes/config/etc/group | 41 + .../29_usermod_no_changes/config/etc/gshadow | 41 + .../29_usermod_no_changes/config/etc/passwd | 20 + .../29_usermod_no_changes/config/etc/shadow | 20 + .../usermod/29_usermod_no_changes/data/usermod.err | 1 + .../usermod/29_usermod_no_changes/usermod.test | 48 + .../30_usermod_usage-a_without-G/config.txt | 10 + .../config/etc/default/useradd | 36 + .../30_usermod_usage-a_without-G/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../30_usermod_usage-a_without-G/config/etc/passwd | 20 + .../30_usermod_usage-a_without-G/config/etc/shadow | 19 + .../30_usermod_usage-a_without-G/data/usage.out | 31 + .../30_usermod_usage-a_without-G/usermod.test | 54 + .../31_usermod_usage-o_without-u/config.txt | 10 + .../config/etc/default/useradd | 36 + .../31_usermod_usage-o_without-u/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../31_usermod_usage-o_without-u/config/etc/passwd | 20 + .../31_usermod_usage-o_without-u/config/etc/shadow | 19 + .../31_usermod_usage-o_without-u/data/usage.out | 31 + .../31_usermod_usage-o_without-u/usermod.test | 55 + .../32_usermod_usage-m_without-d/config.txt | 10 + .../config/etc/default/useradd | 36 + .../32_usermod_usage-m_without-d/config/etc/group | 41 + .../config/etc/gshadow | 41 + .../32_usermod_usage-m_without-d/config/etc/passwd | 20 + .../32_usermod_usage-m_without-d/config/etc/shadow | 19 + .../32_usermod_usage-m_without-d/data/usage.out | 31 + .../32_usermod_usage-m_without-d/usermod.test | 54 + .../usermod/33_usermod_change_shell/config.txt | 2 + .../config/etc/default/useradd | 36 + .../33_usermod_change_shell/config/etc/group | 42 + .../33_usermod_change_shell/config/etc/gshadow | 42 + .../33_usermod_change_shell/config/etc/passwd | 20 + .../33_usermod_change_shell/config/etc/shadow | 20 + .../usermod/33_usermod_change_shell/data/passwd | 20 + .../usermod/33_usermod_change_shell/usermod.test | 39 + .../34_usermod-e_date_no_shadow_entry/config.txt | 2 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 19 + .../34_usermod-e_date_no_shadow_entry/data/shadow | 20 + .../34_usermod-e_date_no_shadow_entry/usermod.test | 39 + .../35_usermod-f_no_shadow_entry/config.txt | 2 + .../config/etc/default/useradd | 36 + .../35_usermod-f_no_shadow_entry/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../35_usermod-f_no_shadow_entry/config/etc/passwd | 20 + .../35_usermod-f_no_shadow_entry/config/etc/shadow | 19 + .../35_usermod-f_no_shadow_entry/data/shadow | 20 + .../35_usermod-f_no_shadow_entry/usermod.test | 39 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/home_ls-a | 3 + .../data/home_ls-a2 | 2 + .../data/passwd | 20 + .../data/usermod.err | 1 + .../usermod.test | 84 + .../37_usermod_move_nonexistent_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/passwd | 20 + .../usermod.test | 47 + .../38_usermod-u_lastlog_not_created/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../38_usermod-u_lastlog_not_created/data/passwd | 20 + .../38_usermod-u_lastlog_not_created/usermod.test | 48 + .../39_usermod-u_copy_lastlog_entry/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../39_usermod-u_copy_lastlog_entry/data/passwd | 20 + .../39_usermod-u_copy_lastlog_entry/login.exp | 13 + .../39_usermod-u_copy_lastlog_entry/usermod.test | 66 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../40_usermod-u_reset_new_lastlog_entry/login.exp | 13 + .../usermod.test | 74 + .../41_usermod-u_faillog_not_created/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../41_usermod-u_faillog_not_created/data/passwd | 20 + .../41_usermod-u_faillog_not_created/usermod.test | 48 + .../42_usermod-u_copy_faillog_entry/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../42_usermod-u_copy_faillog_entry/data/passwd | 20 + .../42_usermod-u_copy_faillog_entry/login.exp | 17 + .../42_usermod-u_copy_faillog_entry/usermod.test | 66 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 42 + .../config/etc/pam.d/login | 111 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/group | 42 + .../data/passwd | 20 + .../data/shadow | 20 + .../43_usermod-u_reset_new_faillog_entry/login.exp | 17 + .../usermod.test | 75 + .../usermod/44_usermod-l_move_mailbox/config.txt | 1 + .../config/etc/default/useradd | 36 + .../44_usermod-l_move_mailbox/config/etc/group | 42 + .../44_usermod-l_move_mailbox/config/etc/gshadow | 42 + .../44_usermod-l_move_mailbox/config/etc/passwd | 20 + .../44_usermod-l_move_mailbox/config/etc/shadow | 20 + .../44_usermod-l_move_mailbox/data/mailbox.perms | 1 + .../usermod/44_usermod-l_move_mailbox/data/passwd | 20 + .../usermod/44_usermod-l_move_mailbox/data/shadow | 20 + .../usermod/44_usermod-l_move_mailbox/test | 1 + .../usermod/44_usermod-l_move_mailbox/usermod.test | 57 + .../45_usermod-u_change_mailbox_owner/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/mailbox.perms | 1 + .../45_usermod-u_change_mailbox_owner/data/passwd | 20 + .../45_usermod-u_change_mailbox_owner/usermod.test | 54 + .../46_usermod-u_checks_mailbox_owner/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 21 + .../config/etc/shadow | 21 + .../data/mailbox.perms | 1 + .../46_usermod-u_checks_mailbox_owner/data/passwd | 21 + .../data/usermod.err | 1 + .../46_usermod-u_checks_mailbox_owner/usermod.test | 63 + .../47_usermod-u_default_maildir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../47_usermod-u_default_maildir/config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/login.defs | 334 + .../47_usermod-u_default_maildir/config/etc/passwd | 20 + .../47_usermod-u_default_maildir/config/etc/shadow | 20 + .../data/mailbox.perms | 1 + .../47_usermod-u_default_maildir/data/passwd | 20 + .../47_usermod-u_default_maildir/usermod.test | 54 + .../usermod/48_usermod-u_MAIL_FILE/config.txt | 1 + .../config/etc/default/useradd | 36 + .../48_usermod-u_MAIL_FILE/config/etc/group | 42 + .../48_usermod-u_MAIL_FILE/config/etc/gshadow | 42 + .../48_usermod-u_MAIL_FILE/config/etc/login.defs | 334 + .../48_usermod-u_MAIL_FILE/config/etc/passwd | 20 + .../48_usermod-u_MAIL_FILE/config/etc/shadow | 20 + .../48_usermod-u_MAIL_FILE/data/mailbox.perms | 1 + .../usermod/48_usermod-u_MAIL_FILE/data/passwd | 20 + .../usermod/48_usermod-u_MAIL_FILE/usermod.test | 54 + .../config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/home_ls-a | 12 + .../data/passwd | 20 + .../usermod.test | 87 + .../50_usermod_change_uid+move_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/home_ls-a | 5 + .../50_usermod_change_uid+move_homedir/data/passwd | 20 + .../usermod.test | 62 + .../51_usermod_change_gid+move_homedir/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 43 + .../config/etc/gshadow | 43 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../data/home_ls-a | 3 + .../51_usermod_change_gid+move_homedir/data/passwd | 20 + .../usermod.test | 58 + .../52_usermod_move_homedir_symlink/config.txt | 1 + .../config/etc/default/useradd | 36 + .../config/etc/group | 42 + .../config/etc/gshadow | 42 + .../config/etc/passwd | 20 + .../config/etc/shadow | 20 + .../52_usermod_move_homedir_symlink/data/home_ls-a | 3 + .../data/home_ls-a2 | 2 + .../52_usermod_move_homedir_symlink/data/passwd | 20 + .../data/usermod.err | 1 + .../52_usermod_move_homedir_symlink/usermod.test | 75 + tests/unit/Makefile.am | 145 + tests/unit/Makefile.in | 1702 +++++ tests/unit/test_adds.c | 105 + tests/unit/test_atoi_strtoi.c | 157 + tests/unit/test_chkname.c | 149 + tests/unit/test_logind.c | 69 + tests/unit/test_sprintf.c | 66 + tests/unit/test_strncpy.c | 85 + tests/unit/test_strtcpy.c | 67 + tests/unit/test_xasprintf.c | 114 + tests/unit/test_zustr2stp.c | 53 + 10962 files changed, 445540 insertions(+), 53306 deletions(-) delete mode 100644 TODO delete mode 100644 contrib/groupmems.shar delete mode 100644 contrib/pwdauth.c delete mode 100644 contrib/shadow-anonftp.patch delete mode 100644 contrib/udbachk.tgz delete mode 100644 doc/README.platforms delete mode 100644 doc/WISHLIST delete mode 100644 doc/console.c.spec.txt delete mode 100644 doc/cracklib26.diff create mode 100644 etc/shadow-maint/Makefile.am create mode 100644 etc/shadow-maint/Makefile.in create mode 100644 etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh create mode 100755 etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh create mode 100644 lib/addgrps.c create mode 100644 lib/adds.c create mode 100644 lib/adds.h create mode 100644 lib/age.c create mode 100644 lib/agetpass.c create mode 100644 lib/agetpass.h create mode 100644 lib/alloc.c create mode 100644 lib/alloc.h create mode 100644 lib/atoi/a2i.c create mode 100644 lib/atoi/a2i.h create mode 100644 lib/atoi/str2i.c create mode 100644 lib/atoi/str2i.h create mode 100644 lib/atoi/strtoi.c create mode 100644 lib/atoi/strtoi.h create mode 100644 lib/atoi/strtou_noneg.c create mode 100644 lib/atoi/strtou_noneg.h create mode 100644 lib/attr.h create mode 100644 lib/audit_help.c create mode 100644 lib/basename.c create mode 100644 lib/bit.c create mode 100644 lib/bit.h create mode 100644 lib/btrfs.c create mode 100644 lib/cast.h create mode 100644 lib/chkname.c create mode 100644 lib/chkname.h create mode 100644 lib/chowndir.c create mode 100644 lib/chowntty.c create mode 100644 lib/cleanup.c create mode 100644 lib/cleanup_group.c create mode 100644 lib/cleanup_user.c create mode 100644 lib/console.c create mode 100644 lib/copydir.c create mode 100644 lib/csrand.c create mode 100644 lib/env.c create mode 100644 lib/failure.c create mode 100644 lib/failure.h create mode 100644 lib/fd.c create mode 100644 lib/find_new_gid.c create mode 100644 lib/find_new_sub_gids.c create mode 100644 lib/find_new_sub_uids.c create mode 100644 lib/find_new_uid.c create mode 100644 lib/freezero.c create mode 100644 lib/freezero.h create mode 100644 lib/getdate.c create mode 100644 lib/getdate.h create mode 100644 lib/getdate.y create mode 100644 lib/getgr_nam_gid.c delete mode 100644 lib/getlong.c create mode 100644 lib/getrange.c create mode 100644 lib/gettime.c delete mode 100644 lib/getulong.c create mode 100644 lib/hushed.c create mode 100644 lib/idmapping.c create mode 100644 lib/idmapping.h create mode 100644 lib/isexpired.c create mode 100644 lib/limits.c create mode 100644 lib/list.c create mode 100644 lib/log.c create mode 100644 lib/logind.c create mode 100644 lib/loginprompt.c create mode 100644 lib/mail.c create mode 100644 lib/memzero.c create mode 100644 lib/memzero.h create mode 100644 lib/motd.c create mode 100644 lib/must_be.h create mode 100644 lib/myname.c create mode 100644 lib/obscure.c create mode 100644 lib/pam_pass.c create mode 100644 lib/pam_pass_non_interactive.c create mode 100644 lib/prefix_flag.c create mode 100644 lib/pwd2spwd.c create mode 100644 lib/pwd_init.c create mode 100644 lib/pwdcheck.c create mode 100644 lib/readpassphrase.c create mode 100644 lib/readpassphrase.h create mode 100644 lib/remove_tree.c create mode 100644 lib/rlogin.c create mode 100644 lib/root_flag.c create mode 100644 lib/salt.c create mode 100644 lib/setugid.c create mode 100644 lib/setupenv.c create mode 100644 lib/shell.c create mode 100644 lib/sizeof.h create mode 100644 lib/string/sprintf.c create mode 100644 lib/string/sprintf.h create mode 100644 lib/string/stpecpy.c create mode 100644 lib/string/stpecpy.h create mode 100644 lib/string/stpeprintf.c create mode 100644 lib/string/stpeprintf.h create mode 100644 lib/string/strftime.c create mode 100644 lib/string/strftime.h create mode 100644 lib/string/strncpy.h create mode 100644 lib/string/strtcpy.c create mode 100644 lib/string/strtcpy.h create mode 100644 lib/string/zustr2stp.h create mode 100644 lib/strtoday.c create mode 100644 lib/sub.c create mode 100644 lib/sulog.c create mode 100644 lib/time/day_to_str.c create mode 100644 lib/time/day_to_str.h create mode 100644 lib/ttytype.c create mode 100644 lib/tz.c create mode 100644 lib/ulimit.c create mode 100644 lib/user_busy.c delete mode 100644 lib/utent.c create mode 100644 lib/utmp.c create mode 100644 lib/valid.c create mode 100644 lib/write_full.c create mode 100644 lib/xgetXXbyYY.c create mode 100644 lib/xgetgrgid.c create mode 100644 lib/xgetgrnam.c create mode 100644 lib/xgetpwnam.c create mode 100644 lib/xgetpwuid.c create mode 100644 lib/xgetspnam.c create mode 100644 lib/xprefix_getpwnam.c create mode 100644 lib/yesno.c delete mode 100644 libmisc/.indent.pro delete mode 100644 libmisc/Makefile.am delete mode 100644 libmisc/Makefile.in delete mode 100644 libmisc/addgrps.c delete mode 100644 libmisc/age.c delete mode 100644 libmisc/audit_help.c delete mode 100644 libmisc/basename.c delete mode 100644 libmisc/btrfs.c delete mode 100644 libmisc/chkname.c delete mode 100644 libmisc/chkname.h delete mode 100644 libmisc/chowndir.c delete mode 100644 libmisc/chowntty.c delete mode 100644 libmisc/cleanup.c delete mode 100644 libmisc/cleanup_group.c delete mode 100644 libmisc/cleanup_user.c delete mode 100644 libmisc/console.c delete mode 100644 libmisc/copydir.c delete mode 100644 libmisc/date_to_str.c delete mode 100644 libmisc/entry.c delete mode 100644 libmisc/env.c delete mode 100644 libmisc/failure.c delete mode 100644 libmisc/failure.h delete mode 100644 libmisc/find_new_gid.c delete mode 100644 libmisc/find_new_sub_gids.c delete mode 100644 libmisc/find_new_sub_uids.c delete mode 100644 libmisc/find_new_uid.c delete mode 100644 libmisc/getdate.c delete mode 100644 libmisc/getdate.h delete mode 100644 libmisc/getdate.y delete mode 100644 libmisc/getgr_nam_gid.c delete mode 100644 libmisc/getrange.c delete mode 100644 libmisc/gettime.c delete mode 100644 libmisc/hushed.c delete mode 100644 libmisc/idmapping.c delete mode 100644 libmisc/idmapping.h delete mode 100644 libmisc/isexpired.c delete mode 100644 libmisc/limits.c delete mode 100644 libmisc/list.c delete mode 100644 libmisc/log.c delete mode 100644 libmisc/loginprompt.c delete mode 100644 libmisc/mail.c delete mode 100644 libmisc/motd.c delete mode 100644 libmisc/myname.c delete mode 100644 libmisc/obscure.c delete mode 100644 libmisc/pam_pass.c delete mode 100644 libmisc/pam_pass_non_interactive.c delete mode 100644 libmisc/prefix_flag.c delete mode 100644 libmisc/pwd2spwd.c delete mode 100644 libmisc/pwd_init.c delete mode 100644 libmisc/pwdcheck.c delete mode 100644 libmisc/remove_tree.c delete mode 100644 libmisc/rlogin.c delete mode 100644 libmisc/root_flag.c delete mode 100644 libmisc/salt.c delete mode 100644 libmisc/setugid.c delete mode 100644 libmisc/setupenv.c delete mode 100644 libmisc/shell.c delete mode 100644 libmisc/strtoday.c delete mode 100644 libmisc/sub.c delete mode 100644 libmisc/sulog.c delete mode 100644 libmisc/ttytype.c delete mode 100644 libmisc/tz.c delete mode 100644 libmisc/ulimit.c delete mode 100644 libmisc/user_busy.c delete mode 100644 libmisc/utmp.c delete mode 100644 libmisc/valid.c delete mode 100644 libmisc/xgetXXbyYY.c delete mode 100644 libmisc/xgetgrgid.c delete mode 100644 libmisc/xgetgrnam.c delete mode 100644 libmisc/xgetpwnam.c delete mode 100644 libmisc/xgetpwuid.c delete mode 100644 libmisc/xgetspnam.c delete mode 100644 libmisc/xmalloc.c delete mode 100644 libmisc/yesno.c create mode 100644 man/config.xml create mode 100644 man/its.rules create mode 100644 man/login.defs.d/BCRYPT_MIN_ROUNDS.xml create mode 100644 man/login.defs.d/YESCRYPT_COST_FACTOR.xml create mode 100644 man/shadow-man.xsl delete mode 100644 shadow.spec.in create mode 100755 test-driver create mode 100644 tests/tests/README create mode 100755 tests/tests/bug332198-test.exp create mode 100755 tests/tests/bug334803-test.exp create mode 100644 tests/tests/chage/01/data/chage1 create mode 100644 tests/tests/chage/01/data/chage2 create mode 100644 tests/tests/chage/01/data/chage3 create mode 100644 tests/tests/chage/01/data/chage4 create mode 100644 tests/tests/chage/01/data/chage5 create mode 100644 tests/tests/chage/01/data/chage6 create mode 100644 tests/tests/chage/01/data/chage7 create mode 100644 tests/tests/chage/01/data/chage7b create mode 100644 tests/tests/chage/01/data/chage8 create mode 100644 tests/tests/chage/01/data/group create mode 100644 tests/tests/chage/01/data/gshadow create mode 100644 tests/tests/chage/01/data/passwd create mode 100644 tests/tests/chage/01/data/shadow create mode 100644 tests/tests/chage/01/data/usage create mode 100755 tests/tests/chage/01/run create mode 100755 tests/tests/chage/01/run1.exp create mode 100755 tests/tests/chage/01/run2.exp create mode 100644 tests/tests/chage/02/data/group create mode 100644 tests/tests/chage/02/data/gshadow create mode 100644 tests/tests/chage/02/data/passwd create mode 100644 tests/tests/chage/02/data/shadow create mode 100755 tests/tests/chage/02/run create mode 100755 tests/tests/chage/02/run.exp create mode 100755 tests/tests/chage/03_chsh_usage/chage.test create mode 100644 tests/tests/chage/03_chsh_usage/config.txt create mode 100644 tests/tests/chage/03_chsh_usage/config/etc/group create mode 100644 tests/tests/chage/03_chsh_usage/config/etc/gshadow create mode 100644 tests/tests/chage/03_chsh_usage/config/etc/passwd create mode 100644 tests/tests/chage/03_chsh_usage/config/etc/shadow create mode 100644 tests/tests/chage/03_chsh_usage/data/usage.out create mode 100755 tests/tests/chage/04_chsh_usage_invalid_option/chage.test create mode 100644 tests/tests/chage/04_chsh_usage_invalid_option/config.txt create mode 100644 tests/tests/chage/04_chsh_usage_invalid_option/config/etc/group create mode 100644 tests/tests/chage/04_chsh_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/chage/04_chsh_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/chage/04_chsh_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/chage/04_chsh_usage_invalid_option/data/usage.out create mode 100755 tests/tests/chage/05_chsh_usage_2_users/chage.test create mode 100644 tests/tests/chage/05_chsh_usage_2_users/config.txt create mode 100644 tests/tests/chage/05_chsh_usage_2_users/config/etc/group create mode 100644 tests/tests/chage/05_chsh_usage_2_users/config/etc/gshadow create mode 100644 tests/tests/chage/05_chsh_usage_2_users/config/etc/passwd create mode 100644 tests/tests/chage/05_chsh_usage_2_users/config/etc/shadow create mode 100644 tests/tests/chage/05_chsh_usage_2_users/data/usage.out create mode 100755 tests/tests/chage/06_chsh_usage_no_users/chage.test create mode 100644 tests/tests/chage/06_chsh_usage_no_users/config.txt create mode 100644 tests/tests/chage/06_chsh_usage_no_users/config/etc/group create mode 100644 tests/tests/chage/06_chsh_usage_no_users/config/etc/gshadow create mode 100644 tests/tests/chage/06_chsh_usage_no_users/config/etc/passwd create mode 100644 tests/tests/chage/06_chsh_usage_no_users/config/etc/shadow create mode 100644 tests/tests/chage/06_chsh_usage_no_users/data/usage.out create mode 100755 tests/tests/chage/07_chsh_usage-l_exclusive/chage.test create mode 100644 tests/tests/chage/07_chsh_usage-l_exclusive/config.txt create mode 100644 tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/group create mode 100644 tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/gshadow create mode 100644 tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/passwd create mode 100644 tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/shadow create mode 100644 tests/tests/chage/07_chsh_usage-l_exclusive/data/usage.out create mode 100755 tests/tests/chage/08_chsh_usage_invalid_date/chage.test create mode 100644 tests/tests/chage/08_chsh_usage_invalid_date/config.txt create mode 100644 tests/tests/chage/08_chsh_usage_invalid_date/config/etc/group create mode 100644 tests/tests/chage/08_chsh_usage_invalid_date/config/etc/gshadow create mode 100644 tests/tests/chage/08_chsh_usage_invalid_date/config/etc/passwd create mode 100644 tests/tests/chage/08_chsh_usage_invalid_date/config/etc/shadow create mode 100644 tests/tests/chage/08_chsh_usage_invalid_date/data/usage.out create mode 100755 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/chage.test create mode 100644 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config.txt create mode 100644 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/group create mode 100644 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/gshadow create mode 100644 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/passwd create mode 100644 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/shadow create mode 100644 tests/tests/chage/09_chsh_usage_invalid_numeric_arg/data/usage.out create mode 100755 tests/tests/chage/10_chsh-l/chage.test create mode 100644 tests/tests/chage/10_chsh-l/config.txt create mode 100644 tests/tests/chage/10_chsh-l/config/etc/group create mode 100644 tests/tests/chage/10_chsh-l/config/etc/gshadow create mode 100644 tests/tests/chage/10_chsh-l/config/etc/passwd create mode 100644 tests/tests/chage/10_chsh-l/config/etc/shadow create mode 100644 tests/tests/chage/10_chsh-l/data/myuser1 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser10 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser11 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser2 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser3 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser4 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser5 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser6 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser7 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser8 create mode 100644 tests/tests/chage/10_chsh-l/data/myuser9 create mode 100755 tests/tests/chage/11_chsh_usage_invalid_user/chage.test create mode 100644 tests/tests/chage/11_chsh_usage_invalid_user/config.txt create mode 100644 tests/tests/chage/11_chsh_usage_invalid_user/config/etc/group create mode 100644 tests/tests/chage/11_chsh_usage_invalid_user/config/etc/gshadow create mode 100644 tests/tests/chage/11_chsh_usage_invalid_user/config/etc/passwd create mode 100644 tests/tests/chage/11_chsh_usage_invalid_user/config/etc/shadow create mode 100644 tests/tests/chage/11_chsh_usage_invalid_user/data/usage.out create mode 100755 tests/tests/chage/12_chsh_usage-l_invalid_user2/chage.test create mode 100644 tests/tests/chage/12_chsh_usage-l_invalid_user2/config.txt create mode 100644 tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/group create mode 100644 tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/gshadow create mode 100644 tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/passwd create mode 100644 tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/shadow create mode 100644 tests/tests/chage/12_chsh_usage-l_invalid_user2/data/usage.out create mode 100755 tests/tests/chage/13_chsh_locked_passwd/chage.test create mode 100644 tests/tests/chage/13_chsh_locked_passwd/config.txt create mode 100644 tests/tests/chage/13_chsh_locked_passwd/config/etc/group create mode 100644 tests/tests/chage/13_chsh_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/chage/13_chsh_locked_passwd/config/etc/passwd create mode 100644 tests/tests/chage/13_chsh_locked_passwd/config/etc/shadow create mode 100644 tests/tests/chage/13_chsh_locked_passwd/data/usage.out create mode 100755 tests/tests/chage/14_chsh_locked_shadow/chage.test create mode 100644 tests/tests/chage/14_chsh_locked_shadow/config.txt create mode 100644 tests/tests/chage/14_chsh_locked_shadow/config/etc/group create mode 100644 tests/tests/chage/14_chsh_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/chage/14_chsh_locked_shadow/config/etc/passwd create mode 100644 tests/tests/chage/14_chsh_locked_shadow/config/etc/shadow create mode 100644 tests/tests/chage/14_chsh_locked_shadow/data/usage.out create mode 100755 tests/tests/chage/15_chage-I_no_shadow_entry/chage.test create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/config.txt create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/group create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/data/passwd create mode 100644 tests/tests/chage/15_chage-I_no_shadow_entry/data/shadow create mode 100755 tests/tests/chage/16_chage-m_no_shadow_entry/chage.test create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/config.txt create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/group create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/data/passwd create mode 100644 tests/tests/chage/16_chage-m_no_shadow_entry/data/shadow create mode 100755 tests/tests/chage/17_chage-M_no_shadow_entry/chage.test create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/config.txt create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/group create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/data/passwd create mode 100644 tests/tests/chage/17_chage-M_no_shadow_entry/data/shadow create mode 100755 tests/tests/chage/18_chage-d_no_shadow_entry/chage.test create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/config.txt create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/group create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/data/passwd create mode 100644 tests/tests/chage/18_chage-d_no_shadow_entry/data/shadow create mode 100755 tests/tests/chage/19_chage-W_no_shadow_entry/chage.test create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/config.txt create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/group create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/data/passwd create mode 100644 tests/tests/chage/19_chage-W_no_shadow_entry/data/shadow create mode 100755 tests/tests/chage/20_chage-E_no_shadow_entry/chage.test create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/config.txt create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/group create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/data/passwd create mode 100644 tests/tests/chage/20_chage-E_no_shadow_entry/data/shadow create mode 100755 tests/tests/chage/21_chage_no_shadow_file/chage.test create mode 100644 tests/tests/chage/21_chage_no_shadow_file/config.txt create mode 100644 tests/tests/chage/21_chage_no_shadow_file/config/etc/group create mode 100644 tests/tests/chage/21_chage_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/chage/21_chage_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/chage/21_chage_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/chage/21_chage_no_shadow_file/data/usage.out create mode 100755 tests/tests/chage/22_chage_myuser-l/chage.test create mode 100644 tests/tests/chage/22_chage_myuser-l/config.txt create mode 100644 tests/tests/chage/22_chage_myuser-l/config/etc/group create mode 100644 tests/tests/chage/22_chage_myuser-l/config/etc/gshadow create mode 100644 tests/tests/chage/22_chage_myuser-l/config/etc/passwd create mode 100644 tests/tests/chage/22_chage_myuser-l/config/etc/shadow create mode 100644 tests/tests/chage/22_chage_myuser-l/data/myuser1 create mode 100755 tests/tests/chage/23_chage_myuser-I/chage.test create mode 100644 tests/tests/chage/23_chage_myuser-I/config.txt create mode 100644 tests/tests/chage/23_chage_myuser-I/config/etc/group create mode 100644 tests/tests/chage/23_chage_myuser-I/config/etc/gshadow create mode 100644 tests/tests/chage/23_chage_myuser-I/config/etc/passwd create mode 100644 tests/tests/chage/23_chage_myuser-I/config/etc/shadow create mode 100644 tests/tests/chage/23_chage_myuser-I/data/usage.out create mode 100755 tests/tests/chage/24_chage_myuser-l_other/chage.test create mode 100644 tests/tests/chage/24_chage_myuser-l_other/config.txt create mode 100644 tests/tests/chage/24_chage_myuser-l_other/config/etc/group create mode 100644 tests/tests/chage/24_chage_myuser-l_other/config/etc/gshadow create mode 100644 tests/tests/chage/24_chage_myuser-l_other/config/etc/passwd create mode 100644 tests/tests/chage/24_chage_myuser-l_other/config/etc/shadow create mode 100644 tests/tests/chage/24_chage_myuser-l_other/data/usage.out create mode 100755 tests/tests/chage/25_chage_interactive/chage.test create mode 100644 tests/tests/chage/25_chage_interactive/config.txt create mode 100644 tests/tests/chage/25_chage_interactive/config/etc/group create mode 100644 tests/tests/chage/25_chage_interactive/config/etc/gshadow create mode 100644 tests/tests/chage/25_chage_interactive/config/etc/login.defs create mode 100644 tests/tests/chage/25_chage_interactive/config/etc/passwd create mode 100644 tests/tests/chage/25_chage_interactive/config/etc/shadow create mode 100644 tests/tests/chage/25_chage_interactive/data/shadow create mode 100755 tests/tests/chage/25_chage_interactive/run.exp create mode 100755 tests/tests/chage/26_chage_interactive_date_0/chage.test create mode 100644 tests/tests/chage/26_chage_interactive_date_0/config.txt create mode 100644 tests/tests/chage/26_chage_interactive_date_0/config/etc/group create mode 100644 tests/tests/chage/26_chage_interactive_date_0/config/etc/gshadow create mode 100644 tests/tests/chage/26_chage_interactive_date_0/config/etc/login.defs create mode 100644 tests/tests/chage/26_chage_interactive_date_0/config/etc/passwd create mode 100644 tests/tests/chage/26_chage_interactive_date_0/config/etc/shadow create mode 100644 tests/tests/chage/26_chage_interactive_date_0/data/shadow create mode 100755 tests/tests/chage/26_chage_interactive_date_0/run.exp create mode 100755 tests/tests/chage/27_chage_interactive_date_-1/chage.test create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/config.txt create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/config/etc/group create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/config/etc/gshadow create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/config/etc/login.defs create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/config/etc/passwd create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/config/etc/shadow create mode 100644 tests/tests/chage/27_chage_interactive_date_-1/data/shadow create mode 100755 tests/tests/chage/27_chage_interactive_date_-1/run.exp create mode 100755 tests/tests/chage/28_chage_interactive_date_EPOCH/chage.test create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/config.txt create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/group create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/gshadow create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/login.defs create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/passwd create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/shadow create mode 100644 tests/tests/chage/28_chage_interactive_date_EPOCH/data/shadow create mode 100755 tests/tests/chage/28_chage_interactive_date_EPOCH/run.exp create mode 100755 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/chage.test create mode 100644 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config.txt create mode 100644 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/group create mode 100644 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/gshadow create mode 100644 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/login.defs create mode 100644 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/passwd create mode 100644 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/shadow create mode 100755 tests/tests/chage/29_chage_interactive_date_pre-EPOCH/run.exp create mode 100755 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/chage.test create mode 100644 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config.txt create mode 100644 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/group create mode 100644 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/gshadow create mode 100644 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/login.defs create mode 100644 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/passwd create mode 100644 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/shadow create mode 100755 tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/run.exp create mode 100755 tests/tests/chage/31_chage_interactive_date_invalid/chage.test create mode 100644 tests/tests/chage/31_chage_interactive_date_invalid/config.txt create mode 100644 tests/tests/chage/31_chage_interactive_date_invalid/config/etc/group create mode 100644 tests/tests/chage/31_chage_interactive_date_invalid/config/etc/gshadow create mode 100644 tests/tests/chage/31_chage_interactive_date_invalid/config/etc/login.defs create mode 100644 tests/tests/chage/31_chage_interactive_date_invalid/config/etc/passwd create mode 100644 tests/tests/chage/31_chage_interactive_date_invalid/config/etc/shadow create mode 100755 tests/tests/chage/31_chage_interactive_date_invalid/run.exp create mode 100755 tests/tests/chage/32_chage_interactive_date_invalid2/chage.test create mode 100644 tests/tests/chage/32_chage_interactive_date_invalid2/config.txt create mode 100644 tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/group create mode 100644 tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/gshadow create mode 100644 tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/login.defs create mode 100644 tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/passwd create mode 100644 tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/shadow create mode 100755 tests/tests/chage/32_chage_interactive_date_invalid2/run.exp create mode 100755 tests/tests/chage/33_chage_interactive-W_invalid1/chage.test create mode 100644 tests/tests/chage/33_chage_interactive-W_invalid1/config.txt create mode 100644 tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/group create mode 100644 tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/gshadow create mode 100644 tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/login.defs create mode 100644 tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/passwd create mode 100644 tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/shadow create mode 100755 tests/tests/chage/33_chage_interactive-W_invalid1/run.exp create mode 100755 tests/tests/chage/34_chage_interactive-W_invalid2/chage.test create mode 100644 tests/tests/chage/34_chage_interactive-W_invalid2/config.txt create mode 100644 tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/group create mode 100644 tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/gshadow create mode 100644 tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/login.defs create mode 100644 tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/passwd create mode 100644 tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/shadow create mode 100755 tests/tests/chage/34_chage_interactive-W_invalid2/run.exp create mode 100755 tests/tests/chage/35_chage_interactive-W-1/chage.test create mode 100644 tests/tests/chage/35_chage_interactive-W-1/config.txt create mode 100644 tests/tests/chage/35_chage_interactive-W-1/config/etc/group create mode 100644 tests/tests/chage/35_chage_interactive-W-1/config/etc/gshadow create mode 100644 tests/tests/chage/35_chage_interactive-W-1/config/etc/login.defs create mode 100644 tests/tests/chage/35_chage_interactive-W-1/config/etc/passwd create mode 100644 tests/tests/chage/35_chage_interactive-W-1/config/etc/shadow create mode 100644 tests/tests/chage/35_chage_interactive-W-1/data/shadow create mode 100755 tests/tests/chage/35_chage_interactive-W-1/run.exp create mode 100755 tests/tests/chage/36_chage_interactive-I_invalid1/chage.test create mode 100644 tests/tests/chage/36_chage_interactive-I_invalid1/config.txt create mode 100644 tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/group create mode 100644 tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/gshadow create mode 100644 tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/login.defs create mode 100644 tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/passwd create mode 100644 tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/shadow create mode 100755 tests/tests/chage/36_chage_interactive-I_invalid1/run.exp create mode 100755 tests/tests/chage/37_chage_interactive-I_invalid2/chage.test create mode 100644 tests/tests/chage/37_chage_interactive-I_invalid2/config.txt create mode 100644 tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/group create mode 100644 tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/gshadow create mode 100644 tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/login.defs create mode 100644 tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/passwd create mode 100644 tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/shadow create mode 100755 tests/tests/chage/37_chage_interactive-I_invalid2/run.exp create mode 100755 tests/tests/chage/38_chage_interactive-I-1/chage.test create mode 100644 tests/tests/chage/38_chage_interactive-I-1/config.txt create mode 100644 tests/tests/chage/38_chage_interactive-I-1/config/etc/group create mode 100644 tests/tests/chage/38_chage_interactive-I-1/config/etc/gshadow create mode 100644 tests/tests/chage/38_chage_interactive-I-1/config/etc/login.defs create mode 100644 tests/tests/chage/38_chage_interactive-I-1/config/etc/passwd create mode 100644 tests/tests/chage/38_chage_interactive-I-1/config/etc/shadow create mode 100644 tests/tests/chage/38_chage_interactive-I-1/data/shadow create mode 100755 tests/tests/chage/38_chage_interactive-I-1/run.exp create mode 100755 tests/tests/chage/39_chage_interactive-d-1/chage.test create mode 100644 tests/tests/chage/39_chage_interactive-d-1/config.txt create mode 100644 tests/tests/chage/39_chage_interactive-d-1/config/etc/group create mode 100644 tests/tests/chage/39_chage_interactive-d-1/config/etc/gshadow create mode 100644 tests/tests/chage/39_chage_interactive-d-1/config/etc/login.defs create mode 100644 tests/tests/chage/39_chage_interactive-d-1/config/etc/passwd create mode 100644 tests/tests/chage/39_chage_interactive-d-1/config/etc/shadow create mode 100644 tests/tests/chage/39_chage_interactive-d-1/data/shadow create mode 100755 tests/tests/chage/39_chage_interactive-d-1/run.exp create mode 100755 tests/tests/chroot/chage/01_chage--root/chage.test create mode 100644 tests/tests/chroot/chage/01_chage--root/config.txt create mode 100644 tests/tests/chroot/chage/01_chage--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/chage/01_chage--root/config/etc/group create mode 100644 tests/tests/chroot/chage/01_chage--root/config/etc/gshadow create mode 100644 tests/tests/chroot/chage/01_chage--root/config/etc/passwd create mode 100644 tests/tests/chroot/chage/01_chage--root/config/etc/shadow create mode 100644 tests/tests/chroot/chage/01_chage--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/chage/01_chage--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/chage/01_chage--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/chage/01_chage--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/chage/01_chage--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/chage/01_chage--root/data/shadow create mode 100755 tests/tests/chroot/chgpasswd/01_chgpasswd--root/chgpasswd.test create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config.txt create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/group create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/gshadow create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/passwd create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/shadow create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/chgpasswd/01_chgpasswd--root/data/gshadow create mode 100755 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/chpasswd.test create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config.txt create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/default/useradd create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/group create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/gshadow create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/passwd create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/shadow create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/group create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/data/shadow create mode 100755 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/chpasswd.test create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config.txt create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/default/useradd create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/group create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/gshadow create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/passwd create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/shadow create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/group create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/chpasswd create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/common-password create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/chpasswd/02_chpasswd--root_pam/data/shadow create mode 100755 tests/tests/chroot/chsh/01_chsh--root/chsh.test create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config.txt create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config/etc/group create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config/etc/gshadow create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config/etc/passwd create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config/etc/shadow create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot.list create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/chsh create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-account create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-auth create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-session create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shells create mode 100644 tests/tests/chroot/chsh/01_chsh--root/data/passwd create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config.txt create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/group create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/gshadow create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/passwd create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/shadow create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/data/group create mode 100644 tests/tests/chroot/gpasswd/01_gpasswd--root/data/gshadow create mode 100755 tests/tests/chroot/gpasswd/01_gpasswd--root/gpasswd.test create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config.txt create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config/etc/group create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config/etc/gshadow create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config/etc/passwd create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config/etc/shadow create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/data/group create mode 100644 tests/tests/chroot/groupadd/01_groupadd--root/data/gshadow create mode 100755 tests/tests/chroot/groupadd/01_groupadd--root/groupadd.test create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config.txt create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config/etc/group create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config/etc/gshadow create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config/etc/passwd create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config/etc/shadow create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/data/group create mode 100644 tests/tests/chroot/groupdel/01_groupdel--root/data/gshadow create mode 100755 tests/tests/chroot/groupdel/01_groupdel--root/groupdel.test create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config.txt create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config/etc/group create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config/etc/gshadow create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config/etc/passwd create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config/etc/shadow create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/data/group create mode 100644 tests/tests/chroot/groupmod/01_groupmod--root/data/gshadow create mode 100755 tests/tests/chroot/groupmod/01_groupmod--root/groupmod.test create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config.txt create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config/etc/group create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config/etc/gshadow create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config/etc/passwd create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config/etc/shadow create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/grpck/01_grpck--root/data/group create mode 100644 tests/tests/chroot/grpck/01_grpck--root/data/gshadow create mode 100755 tests/tests/chroot/grpck/01_grpck--root/grpck.test create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config.txt create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config/etc/group create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config/etc/gshadow create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config/etc/passwd create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config/etc/shadow create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/data/group create mode 100644 tests/tests/chroot/grpconv/01_grpconv--root/data/gshadow create mode 100755 tests/tests/chroot/grpconv/01_grpconv--root/grpconv.test create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config.txt create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/group create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/gshadow create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/passwd create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/shadow create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/grpunconv/01_grpunconv--root/data/group create mode 100755 tests/tests/chroot/grpunconv/01_grpunconv--root/grpunconv.test create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config.txt create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config/etc/group create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config/etc/gshadow create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config/etc/passwd create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config/etc/shadow create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/data/group create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/data/gshadow create mode 100644 tests/tests/chroot/lastlog/01_lastlog--root/data/lastlog.list create mode 100755 tests/tests/chroot/lastlog/01_lastlog--root/lastlog.test create mode 100644 tests/tests/chroot/login/01_login_sublogin/config.txt create mode 100644 tests/tests/chroot/login/01_login_sublogin/config/etc/group create mode 100644 tests/tests/chroot/login/01_login_sublogin/config/etc/gshadow create mode 100644 tests/tests/chroot/login/01_login_sublogin/config/etc/login.defs create mode 100644 tests/tests/chroot/login/01_login_sublogin/config/etc/passwd create mode 100644 tests/tests/chroot/login/01_login_sublogin/config/etc/shadow create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot.list create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/group create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-account create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-auth create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-password create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session-noninteractive create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/login create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/other create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/securetty create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/security/limits.conf create mode 100644 tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/shadow create mode 100755 tests/tests/chroot/login/01_login_sublogin/login.exp create mode 100755 tests/tests/chroot/login/01_login_sublogin/login.test create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config.txt create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config/etc/group create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config/etc/gshadow create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config/etc/passwd create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config/etc/shadow create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/pwck/01_pwck--root/data/pwck.out create mode 100755 tests/tests/chroot/pwck/01_pwck--root/pwck.test create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config.txt create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config/etc/group create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config/etc/gshadow create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config/etc/passwd create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config/etc/shadow create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/data/passwd create mode 100644 tests/tests/chroot/pwconv/01_pwconv--root/data/shadow create mode 100755 tests/tests/chroot/pwconv/01_pwconv--root/pwconv.test create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config.txt create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/group create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/gshadow create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/passwd create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/shadow create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/pwunconv/01_pwunconv--root/data/passwd create mode 100755 tests/tests/chroot/pwunconv/01_pwunconv--root/pwunconv.test create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config.txt create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config/etc/group create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config/etc/gshadow create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config/etc/passwd create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config/etc/shadow create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/useradd/01_useradd--root/data/group create mode 100644 tests/tests/chroot/useradd/01_useradd--root/data/gshadow create mode 100644 tests/tests/chroot/useradd/01_useradd--root/data/passwd create mode 100644 tests/tests/chroot/useradd/01_useradd--root/data/shadow create mode 100755 tests/tests/chroot/useradd/01_useradd--root/useradd.test create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config.txt create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/group create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/gshadow create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/passwd create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/shadow create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/group create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/data/group create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/data/gshadow create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/data/passwd create mode 100644 tests/tests/chroot/useradd/02_useradd--root_login.defs/data/shadow create mode 100755 tests/tests/chroot/useradd/02_useradd--root_login.defs/useradd.test create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config.txt create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/group create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/gshadow create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/passwd create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/shadow create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/group create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/group create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/gshadow create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/passwd create mode 100644 tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/shadow create mode 100755 tests/tests/chroot/useradd/03_useradd--root_useradd.default/useradd.test create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config.txt create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/group create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/gshadow create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/passwd create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/shadow create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/group create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/useradd/04_useradd--root_useradd-D/data/useradd.out create mode 100755 tests/tests/chroot/useradd/04_useradd--root_useradd-D/useradd.test create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config.txt create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/group create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/gshadow create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/passwd create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/shadow create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/default/useradd create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/group create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/data/useradd.default create mode 100755 tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/useradd.test create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config.txt create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config/etc/group create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config/etc/gshadow create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config/etc/passwd create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config/etc/shadow create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/userdel/01_userdel--root/data/group create mode 100644 tests/tests/chroot/userdel/01_userdel--root/data/gshadow create mode 100644 tests/tests/chroot/userdel/01_userdel--root/data/passwd create mode 100644 tests/tests/chroot/userdel/01_userdel--root/data/shadow create mode 100755 tests/tests/chroot/userdel/01_userdel--root/userdel.test create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config.txt create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config/etc/default/useradd create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config/etc/group create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config/etc/gshadow create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config/etc/passwd create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config/etc/shadow create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/group create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/gshadow create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/login.defs create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/passwd create mode 100644 tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/shadow create mode 100644 tests/tests/chroot/usermod/01_usermod--root/data/passwd create mode 100755 tests/tests/chroot/usermod/01_usermod--root/usermod.test create mode 100644 tests/tests/chsh/01/data/chsh1 create mode 100644 tests/tests/chsh/01/data/chsh2 create mode 100644 tests/tests/chsh/01/data/group create mode 100644 tests/tests/chsh/01/data/gshadow create mode 100644 tests/tests/chsh/01/data/passwd create mode 100644 tests/tests/chsh/01/data/shadow create mode 100644 tests/tests/chsh/01/data/shells create mode 100755 tests/tests/chsh/01/run create mode 100755 tests/tests/chsh/01/run.exp create mode 100755 tests/tests/chsh/02_chsh_usage/chsh.test create mode 100644 tests/tests/chsh/02_chsh_usage/config.txt create mode 100644 tests/tests/chsh/02_chsh_usage/config/etc/group create mode 100644 tests/tests/chsh/02_chsh_usage/config/etc/gshadow create mode 100644 tests/tests/chsh/02_chsh_usage/config/etc/passwd create mode 100644 tests/tests/chsh/02_chsh_usage/config/etc/shadow create mode 100644 tests/tests/chsh/02_chsh_usage/data/usage.out create mode 100755 tests/tests/chsh/03_chsh_usage_invalid_option/chsh.test create mode 100644 tests/tests/chsh/03_chsh_usage_invalid_option/config.txt create mode 100644 tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/group create mode 100644 tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/chsh/03_chsh_usage_invalid_option/data/usage.out create mode 100755 tests/tests/chsh/04_chsh_usage_2_users/chsh.test create mode 100644 tests/tests/chsh/04_chsh_usage_2_users/config.txt create mode 100644 tests/tests/chsh/04_chsh_usage_2_users/config/etc/group create mode 100644 tests/tests/chsh/04_chsh_usage_2_users/config/etc/gshadow create mode 100644 tests/tests/chsh/04_chsh_usage_2_users/config/etc/passwd create mode 100644 tests/tests/chsh/04_chsh_usage_2_users/config/etc/shadow create mode 100644 tests/tests/chsh/04_chsh_usage_2_users/data/usage.out create mode 100755 tests/tests/chsh/05_chsh_myuser_restricted_shell/chsh.test create mode 100644 tests/tests/chsh/05_chsh_myuser_restricted_shell/config.txt create mode 100644 tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/group create mode 100644 tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/gshadow create mode 100644 tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/passwd create mode 100644 tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shadow create mode 100644 tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shells create mode 100755 tests/tests/chsh/05_chsh_myuser_restricted_shell/run.exp create mode 100755 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/chsh.test create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config.txt create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/group create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/gshadow create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/passwd create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shadow create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shells create mode 100644 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/data/passwd create mode 100755 tests/tests/chsh/06_chsh_myuser_non_restricted_shell/run.exp create mode 100755 tests/tests/chsh/07_chsh_usage_invalid_user/chsh.test create mode 100644 tests/tests/chsh/07_chsh_usage_invalid_user/config.txt create mode 100644 tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/group create mode 100644 tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/gshadow create mode 100644 tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/passwd create mode 100644 tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/shadow create mode 100644 tests/tests/chsh/07_chsh_usage_invalid_user/data/usage.out create mode 100755 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/chsh.test create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config.txt create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/group create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/gshadow create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/passwd create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shadow create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shells create mode 100644 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/data/passwd create mode 100755 tests/tests/chsh/08_chsh_myuser_to_restricted_shell/run.exp create mode 100755 tests/tests/chsh/09_chsh_myuser_to_missing_shell/chsh.test create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/config.txt create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/group create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/gshadow create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/passwd create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shadow create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shells create mode 100644 tests/tests/chsh/09_chsh_myuser_to_missing_shell/data/passwd create mode 100755 tests/tests/chsh/09_chsh_myuser_to_missing_shell/run.exp create mode 100755 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/chsh.test create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config.txt create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/group create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/gshadow create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/passwd create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shadow create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shells create mode 100644 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/data/passwd create mode 100755 tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/run.exp create mode 100755 tests/tests/chsh/11_chsh_auth_failure/chsh.test create mode 100644 tests/tests/chsh/11_chsh_auth_failure/config.txt create mode 100644 tests/tests/chsh/11_chsh_auth_failure/config/etc/group create mode 100644 tests/tests/chsh/11_chsh_auth_failure/config/etc/gshadow create mode 100644 tests/tests/chsh/11_chsh_auth_failure/config/etc/passwd create mode 100644 tests/tests/chsh/11_chsh_auth_failure/config/etc/shadow create mode 100644 tests/tests/chsh/11_chsh_auth_failure/config/etc/shells create mode 100644 tests/tests/chsh/11_chsh_auth_failure/data/passwd create mode 100755 tests/tests/chsh/11_chsh_auth_failure/run.exp create mode 100755 tests/tests/chsh/12_chsh_warning_missing_shell/chsh.test create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config.txt create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/group create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/gshadow create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/pam.d/chsh create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/passwd create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shadow create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shells create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/data/chsh.err create mode 100644 tests/tests/chsh/12_chsh_warning_missing_shell/data/passwd create mode 100755 tests/tests/chsh/13_chsh_warning_non_executable/chsh.test create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config.txt create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config/etc/group create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config/etc/gshadow create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config/etc/pam.d/chsh create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config/etc/passwd create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shadow create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shells create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/data/chsh.err create mode 100644 tests/tests/chsh/13_chsh_warning_non_executable/data/passwd create mode 100755 tests/tests/chsh/14_chsh_locked_passwd/chsh.test create mode 100644 tests/tests/chsh/14_chsh_locked_passwd/config.txt create mode 100644 tests/tests/chsh/14_chsh_locked_passwd/config/etc/group create mode 100644 tests/tests/chsh/14_chsh_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/chsh/14_chsh_locked_passwd/config/etc/passwd create mode 100644 tests/tests/chsh/14_chsh_locked_passwd/config/etc/shadow create mode 100644 tests/tests/chsh/14_chsh_locked_passwd/data/chsh.err create mode 100755 tests/tests/chsh/15_chsh_PAM_error/chsh.test create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config.txt create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config/etc/group create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config/etc/gshadow create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/chsh create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/other create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config/etc/passwd create mode 100644 tests/tests/chsh/15_chsh_PAM_error/config/etc/shadow create mode 100644 tests/tests/chsh/15_chsh_PAM_error/data/chsh.err create mode 100644 tests/tests/cktools/01/data/group create mode 100644 tests/tests/cktools/01/data/gshadow create mode 100644 tests/tests/cktools/01/data/passwd create mode 100644 tests/tests/cktools/01/data/run2.err create mode 100644 tests/tests/cktools/01/data/run2.out create mode 100644 tests/tests/cktools/01/data/shadow create mode 100755 tests/tests/cktools/01/run1 create mode 100755 tests/tests/cktools/01/run2 create mode 100644 tests/tests/cktools/02_pwck_sort/config.txt create mode 100644 tests/tests/cktools/02_pwck_sort/config/etc/group create mode 100644 tests/tests/cktools/02_pwck_sort/config/etc/gshadow create mode 100644 tests/tests/cktools/02_pwck_sort/config/etc/passwd create mode 100644 tests/tests/cktools/02_pwck_sort/config/etc/shadow create mode 100644 tests/tests/cktools/02_pwck_sort/data/passwd create mode 100644 tests/tests/cktools/02_pwck_sort/data/shadow create mode 100755 tests/tests/cktools/02_pwck_sort/pwck.test create mode 100644 tests/tests/cktools/03_grpck_sort/config.txt create mode 100644 tests/tests/cktools/03_grpck_sort/config/etc/group create mode 100644 tests/tests/cktools/03_grpck_sort/config/etc/gshadow create mode 100644 tests/tests/cktools/03_grpck_sort/config/etc/passwd create mode 100644 tests/tests/cktools/03_grpck_sort/config/etc/shadow create mode 100644 tests/tests/cktools/03_grpck_sort/data/group create mode 100644 tests/tests/cktools/03_grpck_sort/data/gshadow create mode 100755 tests/tests/cktools/03_grpck_sort/grpck.test create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/config.txt create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/group create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/gshadow create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/passwd create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/shadow create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/passwd create mode 100644 tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/shadow create mode 100755 tests/tests/cktools/04_pwck_sort_missing_shadow_user/pwck.test create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/config.txt create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/group create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/gshadow create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/passwd create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/shadow create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/group create mode 100644 tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/gshadow create mode 100755 tests/tests/cktools/05_grpck_sort_missing_shadow_group/grpck.test create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/config.txt create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/group create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/gshadow create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/passwd create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/shadow create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/data/passwd create mode 100644 tests/tests/cktools/06_pwck_sort_NIS_server/data/shadow create mode 100755 tests/tests/cktools/06_pwck_sort_NIS_server/pwck.test create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/config.txt create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/group create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/gshadow create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/passwd create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/shadow create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/data/passwd create mode 100644 tests/tests/cktools/07_pwck_sort_NIS_client/data/shadow create mode 100755 tests/tests/cktools/07_pwck_sort_NIS_client/pwck.test create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config.txt create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/group create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/group create mode 100644 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/gshadow create mode 100755 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.exp create mode 100755 tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.test create mode 100644 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config.txt create mode 100644 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/group create mode 100644 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/data/gshadow create mode 100755 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.exp create mode 100755 tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.test create mode 100644 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config.txt create mode 100644 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/group create mode 100644 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.exp create mode 100755 tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.test create mode 100644 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config.txt create mode 100644 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/group create mode 100644 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/data/gshadow create mode 100755 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.exp create mode 100755 tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.test create mode 100644 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config.txt create mode 100644 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/group create mode 100644 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/data/gshadow create mode 100755 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.exp create mode 100755 tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.test create mode 100644 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config.txt create mode 100644 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/group create mode 100644 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.exp create mode 100755 tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.test create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config.txt create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/group create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/group create mode 100644 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/gshadow create mode 100755 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.exp create mode 100755 tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.test create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config.txt create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/group create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/group create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/gshadow create mode 100644 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/shadow create mode 100755 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.exp create mode 100755 tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.test create mode 100644 tests/tests/cktools/grpck/12_grpck_unknown_user_group/config.txt create mode 100644 tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/group create mode 100644 tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/12_grpck_unknown_user_group/data/group create mode 100755 tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.exp create mode 100755 tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.test create mode 100644 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config.txt create mode 100644 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/group create mode 100644 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/data/gshadow create mode 100755 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.exp create mode 100755 tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.test create mode 100644 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config.txt create mode 100644 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/group create mode 100644 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/data/gshadow create mode 100755 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.exp create mode 100755 tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.test create mode 100644 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config.txt create mode 100644 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/group create mode 100644 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/data/group create mode 100755 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.exp create mode 100755 tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.test create mode 100644 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config.txt create mode 100644 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/group create mode 100644 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/data/group create mode 100755 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.exp create mode 100755 tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.test create mode 100644 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config.txt create mode 100644 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/group create mode 100644 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/data/gshadow create mode 100755 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.exp create mode 100755 tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.test create mode 100644 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config.txt create mode 100644 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/group create mode 100644 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.exp create mode 100755 tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.test create mode 100644 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config.txt create mode 100644 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/group create mode 100644 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.exp create mode 100755 tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.test create mode 100644 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config.txt create mode 100644 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/group create mode 100644 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/data/gshadow create mode 100755 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.exp create mode 100755 tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.test create mode 100644 tests/tests/cktools/grpck/21_grpck_invalid_group_name/config.txt create mode 100644 tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/group create mode 100644 tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.exp create mode 100755 tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.test create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config.txt create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/group create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/group create mode 100644 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/gshadow create mode 100755 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.exp create mode 100755 tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.test create mode 100644 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config.txt create mode 100644 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/group create mode 100644 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.exp create mode 100755 tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.test create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config.txt create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/group create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/group create mode 100644 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/gshadow create mode 100755 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.exp create mode 100755 tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.test create mode 100644 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config.txt create mode 100644 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/group create mode 100644 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.exp create mode 100755 tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.test create mode 100644 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config.txt create mode 100644 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/group create mode 100644 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/data/grpck.out create mode 100755 tests/tests/cktools/grpck/26_grpck_no_gshadow_file/grpck.test create mode 100644 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config.txt create mode 100644 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/group create mode 100644 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/data/group create mode 100755 tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/grpck.test create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/config.txt create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/config/etc/default/useradd create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/config/etc/group create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/28_grpck_usage/data/usage.out create mode 100755 tests/tests/cktools/grpck/28_grpck_usage/grpck.test create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/config.txt create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/default/useradd create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/group create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/29_grpck_sort_readonly/data/usage.out create mode 100755 tests/tests/cktools/grpck/29_grpck_sort_readonly/grpck.test create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/config.txt create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/config/etc/default/useradd create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/config/etc/group create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/30_grpck_3_files/data/usage.out create mode 100755 tests/tests/cktools/grpck/30_grpck_3_files/grpck.test create mode 100644 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config.txt create mode 100644 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/group create mode 100644 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/data/group create mode 100755 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.exp create mode 100755 tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.test create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/config.txt create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/group create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/data/group create mode 100644 tests/tests/cktools/grpck/32_grpck_sort_nis/data/gshadow create mode 100755 tests/tests/cktools/grpck/32_grpck_sort_nis/grpck.test create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/config.txt create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/default/useradd create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/group create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/33_grpck_locked_group/data/grpck.err create mode 100755 tests/tests/cktools/grpck/33_grpck_locked_group/grpck.test create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/config.txt create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/group create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/34_grpck_locked_gshadow/data/grpck.err create mode 100755 tests/tests/cktools/grpck/34_grpck_locked_gshadow/grpck.test create mode 100644 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config.txt create mode 100644 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/group create mode 100644 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/data/group create mode 100755 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.exp create mode 100755 tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.test create mode 100644 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config.txt create mode 100644 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/group create mode 100644 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/data/grpck.out create mode 100755 tests/tests/cktools/grpck/36_grpck_password_group_gshadow/grpck.test create mode 100644 tests/tests/cktools/grpck/37_grpck_invalid_option/config.txt create mode 100644 tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/group create mode 100644 tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/gshadow create mode 100644 tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/passwd create mode 100644 tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/shadow create mode 100644 tests/tests/cktools/grpck/37_grpck_invalid_option/data/usage.out create mode 100755 tests/tests/cktools/grpck/37_grpck_invalid_option/grpck.test create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config.txt create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/group create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/passwd create mode 100644 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/shadow create mode 100755 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.exp create mode 100755 tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.test create mode 100644 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config.txt create mode 100644 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/group create mode 100644 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/data/shadow create mode 100755 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.exp create mode 100755 tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.test create mode 100644 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config.txt create mode 100644 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/group create mode 100644 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.exp create mode 100755 tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.test create mode 100644 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config.txt create mode 100644 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/group create mode 100644 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/data/shadow create mode 100755 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.exp create mode 100755 tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.test create mode 100644 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config.txt create mode 100644 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/group create mode 100644 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/data/shadow create mode 100755 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.exp create mode 100755 tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.test create mode 100644 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config.txt create mode 100644 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/group create mode 100644 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.exp create mode 100755 tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.test create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config.txt create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/group create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/passwd create mode 100644 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/shadow create mode 100755 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.exp create mode 100755 tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.test create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config.txt create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/group create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/passwd create mode 100644 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/shadow create mode 100755 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.exp create mode 100755 tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.test create mode 100644 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config.txt create mode 100644 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/group create mode 100644 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.exp create mode 100755 tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.test create mode 100644 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config.txt create mode 100644 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/group create mode 100644 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/data/passwd create mode 100755 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.exp create mode 100755 tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.test create mode 100644 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config.txt create mode 100644 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/group create mode 100644 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/data/shadow create mode 100755 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.exp create mode 100755 tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.test create mode 100644 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config.txt create mode 100644 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/group create mode 100644 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.exp create mode 100755 tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.test create mode 100644 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config.txt create mode 100644 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/group create mode 100644 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.exp create mode 100755 tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.test create mode 100644 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config.txt create mode 100644 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/group create mode 100644 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/data/passwd create mode 100755 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.exp create mode 100755 tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.test create mode 100644 tests/tests/cktools/pwck/18_pwck_invalid_user_name/config.txt create mode 100644 tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/group create mode 100644 tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.exp create mode 100755 tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.test create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config.txt create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/group create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/passwd create mode 100644 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/shadow create mode 100755 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.exp create mode 100755 tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.test create mode 100644 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config.txt create mode 100644 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/group create mode 100644 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/shadow create mode 100755 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.exp create mode 100755 tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.test create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config.txt create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/group create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/passwd create mode 100644 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/shadow create mode 100755 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.exp create mode 100755 tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.test create mode 100644 tests/tests/cktools/pwck/22_pwck_usage/config.txt create mode 100644 tests/tests/cktools/pwck/22_pwck_usage/config/etc/group create mode 100644 tests/tests/cktools/pwck/22_pwck_usage/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/22_pwck_usage/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/22_pwck_usage/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/22_pwck_usage/data/usage.out create mode 100755 tests/tests/cktools/pwck/22_pwck_usage/pwck.test create mode 100644 tests/tests/cktools/pwck/23_pwck_locked_passwd/config.txt create mode 100644 tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/group create mode 100644 tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/23_pwck_locked_passwd/data/pwck.err create mode 100755 tests/tests/cktools/pwck/23_pwck_locked_passwd/pwck.test create mode 100644 tests/tests/cktools/pwck/24_pwck_locked_shadow/config.txt create mode 100644 tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/group create mode 100644 tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/24_pwck_locked_shadow/data/pwck.err create mode 100755 tests/tests/cktools/pwck/24_pwck_locked_shadow/pwck.test create mode 100644 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config.txt create mode 100644 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/group create mode 100644 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/data/pwck.err create mode 100755 tests/tests/cktools/pwck/25_pwck_usage_invalid_option/pwck.test create mode 100644 tests/tests/cktools/pwck/26_pwck_usage-s-r/config.txt create mode 100644 tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/group create mode 100644 tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/26_pwck_usage-s-r/data/pwck.err create mode 100755 tests/tests/cktools/pwck/26_pwck_usage-s-r/pwck.test create mode 100644 tests/tests/cktools/pwck/27_pwck_usage_3_files/config.txt create mode 100644 tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/group create mode 100644 tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/27_pwck_usage_3_files/data/pwck.err create mode 100755 tests/tests/cktools/pwck/27_pwck_usage_3_files/pwck.test create mode 100644 tests/tests/cktools/pwck/28_pwck_no_shadow_file/config.txt create mode 100644 tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/group create mode 100644 tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/28_pwck_no_shadow_file/data/pwck.out create mode 100755 tests/tests/cktools/pwck/28_pwck_no_shadow_file/pwck.test create mode 100644 tests/tests/cktools/pwck/29_pwck_password_change_in_future/config.txt create mode 100644 tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/group create mode 100644 tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/29_pwck_password_change_in_future/data/pwck.out create mode 100755 tests/tests/cktools/pwck/29_pwck_password_change_in_future/pwck.test create mode 100644 tests/tests/cktools/pwck/30_pwck_NIS_entries/config.txt create mode 100644 tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/group create mode 100644 tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/30_pwck_NIS_entries/data/pwck.out create mode 100755 tests/tests/cktools/pwck/30_pwck_NIS_entries/pwck.test create mode 100644 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config.txt create mode 100644 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/group create mode 100644 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/data/pwck.out create mode 100755 tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/pwck.test create mode 100644 tests/tests/cktools/pwck/32_pwck_quiet/config.txt create mode 100644 tests/tests/cktools/pwck/32_pwck_quiet/config/etc/group create mode 100644 tests/tests/cktools/pwck/32_pwck_quiet/config/etc/gshadow create mode 100644 tests/tests/cktools/pwck/32_pwck_quiet/config/etc/passwd create mode 100644 tests/tests/cktools/pwck/32_pwck_quiet/config/etc/shadow create mode 100644 tests/tests/cktools/pwck/32_pwck_quiet/data/pwck.out create mode 100755 tests/tests/cktools/pwck/32_pwck_quiet/pwck.test create mode 100755 tests/tests/cleanup.sh create mode 100644 tests/tests/common/Makefile create mode 100755 tests/tests/common/compare_file.pl create mode 100644 tests/tests/common/config.sh create mode 100644 tests/tests/common/config_chroot-i386.list create mode 100644 tests/tests/common/config_chroot-powerpc.list create mode 100644 tests/tests/common/fopen_failure.c create mode 100644 tests/tests/common/link_failure.c create mode 100644 tests/tests/common/log.sh create mode 100644 tests/tests/common/open_RDONLY_failure.c create mode 100644 tests/tests/common/open_RDWR_failure.c create mode 100644 tests/tests/common/rename_failure.c create mode 100644 tests/tests/common/rmdir_failure.c create mode 100644 tests/tests/common/time_0.c create mode 100644 tests/tests/common/time_past.c create mode 100644 tests/tests/common/unlink_failure.c create mode 100644 tests/tests/common/unlinkat_failure.c create mode 100644 tests/tests/convtools/01/data/1/group create mode 100644 tests/tests/convtools/01/data/1/passwd create mode 100644 tests/tests/convtools/01/data/2/group create mode 100644 tests/tests/convtools/01/data/2/gshadow create mode 100644 tests/tests/convtools/01/data/2/passwd create mode 100644 tests/tests/convtools/01/data/2/shadow create mode 100755 tests/tests/convtools/01/run create mode 100644 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/config.txt create mode 100644 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/config/etc/group create mode 100644 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/config/etc/gshadow create mode 100644 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/config/etc/passwd create mode 100644 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/config/etc/shadow create mode 100644 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/data/gshadow create mode 100755 tests/tests/convtools/02_grpconv_remove_gshadow_only_entries/grpconv.test create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/config.txt create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/config/etc/group create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/config/etc/gshadow create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/config/etc/passwd create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/config/etc/shadow create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/data/group create mode 100644 tests/tests/convtools/03_grpconv_copy_passwd/data/gshadow create mode 100755 tests/tests/convtools/03_grpconv_copy_passwd/grpconv.test create mode 100644 tests/tests/convtools/04_grpconv_no_password/config.txt create mode 100644 tests/tests/convtools/04_grpconv_no_password/config/etc/group create mode 100644 tests/tests/convtools/04_grpconv_no_password/config/etc/gshadow create mode 100644 tests/tests/convtools/04_grpconv_no_password/config/etc/passwd create mode 100644 tests/tests/convtools/04_grpconv_no_password/config/etc/shadow create mode 100644 tests/tests/convtools/04_grpconv_no_password/data/group create mode 100644 tests/tests/convtools/04_grpconv_no_password/data/gshadow create mode 100755 tests/tests/convtools/04_grpconv_no_password/grpconv.test create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/config.txt create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/config/etc/group create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/config/etc/gshadow create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/config/etc/passwd create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/config/etc/shadow create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/data/group create mode 100644 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/data/gshadow create mode 100755 tests/tests/convtools/05_grpconv_copy_passwd_existing_gshadow/grpconv.test create mode 100644 tests/tests/convtools/06_grpconv_error_group_locked/config.txt create mode 100644 tests/tests/convtools/06_grpconv_error_group_locked/config/etc/group create mode 100644 tests/tests/convtools/06_grpconv_error_group_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/06_grpconv_error_group_locked/config/etc/passwd create mode 100644 tests/tests/convtools/06_grpconv_error_group_locked/config/etc/shadow create mode 100644 tests/tests/convtools/06_grpconv_error_group_locked/data/grpconv.err create mode 100755 tests/tests/convtools/06_grpconv_error_group_locked/grpconv.test create mode 100644 tests/tests/convtools/07_grpconv_error_gshadow_locked/config.txt create mode 100644 tests/tests/convtools/07_grpconv_error_gshadow_locked/config/etc/group create mode 100644 tests/tests/convtools/07_grpconv_error_gshadow_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/07_grpconv_error_gshadow_locked/config/etc/passwd create mode 100644 tests/tests/convtools/07_grpconv_error_gshadow_locked/config/etc/shadow create mode 100644 tests/tests/convtools/07_grpconv_error_gshadow_locked/data/grpconv.err create mode 100755 tests/tests/convtools/07_grpconv_error_gshadow_locked/grpconv.test create mode 100644 tests/tests/convtools/08_grpunconv_no_gshadow_file/config.txt create mode 100644 tests/tests/convtools/08_grpunconv_no_gshadow_file/config/etc/group create mode 100644 tests/tests/convtools/08_grpunconv_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/convtools/08_grpunconv_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/convtools/08_grpunconv_no_gshadow_file/config/etc/shadow create mode 100755 tests/tests/convtools/08_grpunconv_no_gshadow_file/grpunconv.test create mode 100644 tests/tests/convtools/09_grpunconv_error_group_locked/config.txt create mode 100644 tests/tests/convtools/09_grpunconv_error_group_locked/config/etc/group create mode 100644 tests/tests/convtools/09_grpunconv_error_group_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/09_grpunconv_error_group_locked/config/etc/passwd create mode 100644 tests/tests/convtools/09_grpunconv_error_group_locked/config/etc/shadow create mode 100644 tests/tests/convtools/09_grpunconv_error_group_locked/data/grpunconv.err create mode 100755 tests/tests/convtools/09_grpunconv_error_group_locked/grpunconv.test create mode 100644 tests/tests/convtools/10_grpunconv_error_gshadow_locked/config.txt create mode 100644 tests/tests/convtools/10_grpunconv_error_gshadow_locked/config/etc/group create mode 100644 tests/tests/convtools/10_grpunconv_error_gshadow_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/10_grpunconv_error_gshadow_locked/config/etc/passwd create mode 100644 tests/tests/convtools/10_grpunconv_error_gshadow_locked/config/etc/shadow create mode 100644 tests/tests/convtools/10_grpunconv_error_gshadow_locked/data/grpunconv.err create mode 100755 tests/tests/convtools/10_grpunconv_error_gshadow_locked/grpunconv.test create mode 100644 tests/tests/convtools/11_pwconv_error_passwd_locked/config.txt create mode 100644 tests/tests/convtools/11_pwconv_error_passwd_locked/config/etc/group create mode 100644 tests/tests/convtools/11_pwconv_error_passwd_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/11_pwconv_error_passwd_locked/config/etc/passwd create mode 100644 tests/tests/convtools/11_pwconv_error_passwd_locked/config/etc/shadow create mode 100644 tests/tests/convtools/11_pwconv_error_passwd_locked/data/pwconv.err create mode 100755 tests/tests/convtools/11_pwconv_error_passwd_locked/pwconv.test create mode 100644 tests/tests/convtools/12_pwconv_error_shadow_locked/config.txt create mode 100644 tests/tests/convtools/12_pwconv_error_shadow_locked/config/etc/group create mode 100644 tests/tests/convtools/12_pwconv_error_shadow_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/12_pwconv_error_shadow_locked/config/etc/passwd create mode 100644 tests/tests/convtools/12_pwconv_error_shadow_locked/config/etc/shadow create mode 100644 tests/tests/convtools/12_pwconv_error_shadow_locked/data/pwconv.err create mode 100755 tests/tests/convtools/12_pwconv_error_shadow_locked/pwconv.test create mode 100644 tests/tests/convtools/13_pwunconv_error_passwd_locked/config.txt create mode 100644 tests/tests/convtools/13_pwunconv_error_passwd_locked/config/etc/group create mode 100644 tests/tests/convtools/13_pwunconv_error_passwd_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/13_pwunconv_error_passwd_locked/config/etc/passwd create mode 100644 tests/tests/convtools/13_pwunconv_error_passwd_locked/config/etc/shadow create mode 100644 tests/tests/convtools/13_pwunconv_error_passwd_locked/data/pwunconv.err create mode 100755 tests/tests/convtools/13_pwunconv_error_passwd_locked/pwunconv.test create mode 100644 tests/tests/convtools/14_pwunconv_error_shadow_locked/config.txt create mode 100644 tests/tests/convtools/14_pwunconv_error_shadow_locked/config/etc/group create mode 100644 tests/tests/convtools/14_pwunconv_error_shadow_locked/config/etc/gshadow create mode 100644 tests/tests/convtools/14_pwunconv_error_shadow_locked/config/etc/passwd create mode 100644 tests/tests/convtools/14_pwunconv_error_shadow_locked/config/etc/shadow create mode 100644 tests/tests/convtools/14_pwunconv_error_shadow_locked/data/pwunconv.err create mode 100755 tests/tests/convtools/14_pwunconv_error_shadow_locked/pwunconv.test create mode 100644 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/config.txt create mode 100644 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/config/etc/group create mode 100644 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/config/etc/gshadow create mode 100644 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/config/etc/passwd create mode 100644 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/config/etc/shadow create mode 100644 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/data/shadow create mode 100755 tests/tests/convtools/15_pwconv_remove_shadow_only_entries/pwconv.test create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/config.txt create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/config/etc/group create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/config/etc/gshadow create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/config/etc/passwd create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/config/etc/shadow create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/data/passwd create mode 100644 tests/tests/convtools/16_pwconv_copy_passwd/data/shadow create mode 100755 tests/tests/convtools/16_pwconv_copy_passwd/pwconv.test create mode 100644 tests/tests/convtools/17_pwunconv_no_shadow_file/config.txt create mode 100644 tests/tests/convtools/17_pwunconv_no_shadow_file/config/etc/group create mode 100644 tests/tests/convtools/17_pwunconv_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/convtools/17_pwunconv_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/convtools/17_pwunconv_no_shadow_file/config/etc/shadow create mode 100755 tests/tests/convtools/17_pwunconv_no_shadow_file/pwunconv.test create mode 100644 tests/tests/convtools/18_pwunconv_user_not_in_shadow/config.txt create mode 100644 tests/tests/convtools/18_pwunconv_user_not_in_shadow/config/etc/group create mode 100644 tests/tests/convtools/18_pwunconv_user_not_in_shadow/config/etc/gshadow create mode 100644 tests/tests/convtools/18_pwunconv_user_not_in_shadow/config/etc/passwd create mode 100644 tests/tests/convtools/18_pwunconv_user_not_in_shadow/config/etc/shadow create mode 100644 tests/tests/convtools/18_pwunconv_user_not_in_shadow/data/passwd create mode 100755 tests/tests/convtools/18_pwunconv_user_not_in_shadow/pwunconv.test create mode 100644 tests/tests/convtools/19_pwconv_NIS/config.txt create mode 100644 tests/tests/convtools/19_pwconv_NIS/config/etc/group create mode 100644 tests/tests/convtools/19_pwconv_NIS/config/etc/gshadow create mode 100644 tests/tests/convtools/19_pwconv_NIS/config/etc/passwd create mode 100644 tests/tests/convtools/19_pwconv_NIS/config/etc/shadow create mode 100644 tests/tests/convtools/19_pwconv_NIS/data/passwd create mode 100644 tests/tests/convtools/19_pwconv_NIS/data/shadow create mode 100755 tests/tests/convtools/19_pwconv_NIS/pwconv.test create mode 100644 tests/tests/convtools/20_pwunconv_usage_option/config.txt create mode 100644 tests/tests/convtools/20_pwunconv_usage_option/config/etc/group create mode 100644 tests/tests/convtools/20_pwunconv_usage_option/config/etc/gshadow create mode 100644 tests/tests/convtools/20_pwunconv_usage_option/config/etc/passwd create mode 100644 tests/tests/convtools/20_pwunconv_usage_option/config/etc/shadow create mode 100644 tests/tests/convtools/20_pwunconv_usage_option/data/usage.out create mode 100755 tests/tests/convtools/20_pwunconv_usage_option/pwunconv.test create mode 100644 tests/tests/convtools/21_pwunconv_keep_passwd_password/config.txt create mode 100644 tests/tests/convtools/21_pwunconv_keep_passwd_password/config/etc/group create mode 100644 tests/tests/convtools/21_pwunconv_keep_passwd_password/config/etc/gshadow create mode 100644 tests/tests/convtools/21_pwunconv_keep_passwd_password/config/etc/passwd create mode 100644 tests/tests/convtools/21_pwunconv_keep_passwd_password/config/etc/shadow create mode 100644 tests/tests/convtools/21_pwunconv_keep_passwd_password/data/passwd create mode 100755 tests/tests/convtools/21_pwunconv_keep_passwd_password/pwunconv.test create mode 100644 tests/tests/convtools/22_grpunconv_usage_option/config.txt create mode 100644 tests/tests/convtools/22_grpunconv_usage_option/config/etc/group create mode 100644 tests/tests/convtools/22_grpunconv_usage_option/config/etc/gshadow create mode 100644 tests/tests/convtools/22_grpunconv_usage_option/config/etc/passwd create mode 100644 tests/tests/convtools/22_grpunconv_usage_option/config/etc/shadow create mode 100644 tests/tests/convtools/22_grpunconv_usage_option/data/usage.out create mode 100755 tests/tests/convtools/22_grpunconv_usage_option/grpunconv.test create mode 100644 tests/tests/convtools/23_grpunconv_keep_group_password/config.txt create mode 100644 tests/tests/convtools/23_grpunconv_keep_group_password/config/etc/group create mode 100644 tests/tests/convtools/23_grpunconv_keep_group_password/config/etc/gshadow create mode 100644 tests/tests/convtools/23_grpunconv_keep_group_password/config/etc/passwd create mode 100644 tests/tests/convtools/23_grpunconv_keep_group_password/config/etc/shadow create mode 100644 tests/tests/convtools/23_grpunconv_keep_group_password/data/group create mode 100755 tests/tests/convtools/23_grpunconv_keep_group_password/grpunconv.test create mode 100644 tests/tests/convtools/24_grpunconv_no_gshadow_entry/config.txt create mode 100644 tests/tests/convtools/24_grpunconv_no_gshadow_entry/config/etc/group create mode 100644 tests/tests/convtools/24_grpunconv_no_gshadow_entry/config/etc/gshadow create mode 100644 tests/tests/convtools/24_grpunconv_no_gshadow_entry/config/etc/passwd create mode 100644 tests/tests/convtools/24_grpunconv_no_gshadow_entry/config/etc/shadow create mode 100644 tests/tests/convtools/24_grpunconv_no_gshadow_entry/data/group create mode 100755 tests/tests/convtools/24_grpunconv_no_gshadow_entry/grpunconv.test create mode 100644 tests/tests/convtools/25_pwconv_usage_option/config.txt create mode 100644 tests/tests/convtools/25_pwconv_usage_option/config/etc/group create mode 100644 tests/tests/convtools/25_pwconv_usage_option/config/etc/gshadow create mode 100644 tests/tests/convtools/25_pwconv_usage_option/config/etc/passwd create mode 100644 tests/tests/convtools/25_pwconv_usage_option/config/etc/shadow create mode 100644 tests/tests/convtools/25_pwconv_usage_option/data/usage.out create mode 100755 tests/tests/convtools/25_pwconv_usage_option/pwconv.test create mode 100644 tests/tests/convtools/26_grpconv_usage_option/config.txt create mode 100644 tests/tests/convtools/26_grpconv_usage_option/config/etc/group create mode 100644 tests/tests/convtools/26_grpconv_usage_option/config/etc/gshadow create mode 100644 tests/tests/convtools/26_grpconv_usage_option/config/etc/passwd create mode 100644 tests/tests/convtools/26_grpconv_usage_option/config/etc/shadow create mode 100644 tests/tests/convtools/26_grpconv_usage_option/data/usage.out create mode 100755 tests/tests/convtools/26_grpconv_usage_option/grpconv.test create mode 100644 tests/tests/convtools/27_pwunconv_usage/config.txt create mode 100644 tests/tests/convtools/27_pwunconv_usage/config/etc/group create mode 100644 tests/tests/convtools/27_pwunconv_usage/config/etc/gshadow create mode 100644 tests/tests/convtools/27_pwunconv_usage/config/etc/passwd create mode 100644 tests/tests/convtools/27_pwunconv_usage/config/etc/shadow create mode 100644 tests/tests/convtools/27_pwunconv_usage/data/usage.out create mode 100755 tests/tests/convtools/27_pwunconv_usage/pwunconv.test create mode 100644 tests/tests/convtools/28_pwunconv_usage_extra_arg/config.txt create mode 100644 tests/tests/convtools/28_pwunconv_usage_extra_arg/config/etc/group create mode 100644 tests/tests/convtools/28_pwunconv_usage_extra_arg/config/etc/gshadow create mode 100644 tests/tests/convtools/28_pwunconv_usage_extra_arg/config/etc/passwd create mode 100644 tests/tests/convtools/28_pwunconv_usage_extra_arg/config/etc/shadow create mode 100644 tests/tests/convtools/28_pwunconv_usage_extra_arg/data/usage.out create mode 100755 tests/tests/convtools/28_pwunconv_usage_extra_arg/pwunconv.test create mode 100644 tests/tests/convtools/29_grpconv_usage/config.txt create mode 100644 tests/tests/convtools/29_grpconv_usage/config/etc/group create mode 100644 tests/tests/convtools/29_grpconv_usage/config/etc/gshadow create mode 100644 tests/tests/convtools/29_grpconv_usage/config/etc/passwd create mode 100644 tests/tests/convtools/29_grpconv_usage/config/etc/shadow create mode 100644 tests/tests/convtools/29_grpconv_usage/data/usage.out create mode 100755 tests/tests/convtools/29_grpconv_usage/grpconv.test create mode 100644 tests/tests/convtools/30_grpconv_usage_extra_arg/config.txt create mode 100644 tests/tests/convtools/30_grpconv_usage_extra_arg/config/etc/group create mode 100644 tests/tests/convtools/30_grpconv_usage_extra_arg/config/etc/gshadow create mode 100644 tests/tests/convtools/30_grpconv_usage_extra_arg/config/etc/passwd create mode 100644 tests/tests/convtools/30_grpconv_usage_extra_arg/config/etc/shadow create mode 100644 tests/tests/convtools/30_grpconv_usage_extra_arg/data/usage.out create mode 100755 tests/tests/convtools/30_grpconv_usage_extra_arg/grpconv.test create mode 100644 tests/tests/convtools/31_pwconv_usage/config.txt create mode 100644 tests/tests/convtools/31_pwconv_usage/config/etc/group create mode 100644 tests/tests/convtools/31_pwconv_usage/config/etc/gshadow create mode 100644 tests/tests/convtools/31_pwconv_usage/config/etc/passwd create mode 100644 tests/tests/convtools/31_pwconv_usage/config/etc/shadow create mode 100644 tests/tests/convtools/31_pwconv_usage/data/usage.out create mode 100755 tests/tests/convtools/31_pwconv_usage/pwconv.test create mode 100644 tests/tests/convtools/32_pwconv_usage_extra_arg/config.txt create mode 100644 tests/tests/convtools/32_pwconv_usage_extra_arg/config/etc/group create mode 100644 tests/tests/convtools/32_pwconv_usage_extra_arg/config/etc/gshadow create mode 100644 tests/tests/convtools/32_pwconv_usage_extra_arg/config/etc/passwd create mode 100644 tests/tests/convtools/32_pwconv_usage_extra_arg/config/etc/shadow create mode 100644 tests/tests/convtools/32_pwconv_usage_extra_arg/data/usage.out create mode 100755 tests/tests/convtools/32_pwconv_usage_extra_arg/pwconv.test create mode 100644 tests/tests/convtools/33_grpunconv_usage/config.txt create mode 100644 tests/tests/convtools/33_grpunconv_usage/config/etc/group create mode 100644 tests/tests/convtools/33_grpunconv_usage/config/etc/gshadow create mode 100644 tests/tests/convtools/33_grpunconv_usage/config/etc/passwd create mode 100644 tests/tests/convtools/33_grpunconv_usage/config/etc/shadow create mode 100644 tests/tests/convtools/33_grpunconv_usage/data/usage.out create mode 100755 tests/tests/convtools/33_grpunconv_usage/grpunconv.test create mode 100644 tests/tests/convtools/34_grpunconv_usage_extra_arg/config.txt create mode 100644 tests/tests/convtools/34_grpunconv_usage_extra_arg/config/etc/group create mode 100644 tests/tests/convtools/34_grpunconv_usage_extra_arg/config/etc/gshadow create mode 100644 tests/tests/convtools/34_grpunconv_usage_extra_arg/config/etc/passwd create mode 100644 tests/tests/convtools/34_grpunconv_usage_extra_arg/config/etc/shadow create mode 100644 tests/tests/convtools/34_grpunconv_usage_extra_arg/data/usage.out create mode 100755 tests/tests/convtools/34_grpunconv_usage_extra_arg/grpunconv.test create mode 100755 tests/tests/coverage.sh create mode 100644 tests/tests/cptools/01/data/group create mode 100644 tests/tests/cptools/01/data/group.new create mode 100644 tests/tests/cptools/01/data/gshadow create mode 100644 tests/tests/cptools/01/data/gshadow.new create mode 100644 tests/tests/cptools/01/data/passwd create mode 100644 tests/tests/cptools/01/data/passwd.new create mode 100644 tests/tests/cptools/01/data/shadow create mode 100644 tests/tests/cptools/01/data/shadow.new create mode 100755 tests/tests/cptools/01/run1 create mode 100755 tests/tests/cptools/01/run2 create mode 100755 tests/tests/cptools/01/run3 create mode 100755 tests/tests/cptools/01/run4 create mode 100644 tests/tests/cptools/02_cppw_usage/config.txt create mode 100644 tests/tests/cptools/02_cppw_usage/config/etc/group create mode 100644 tests/tests/cptools/02_cppw_usage/config/etc/gshadow create mode 100644 tests/tests/cptools/02_cppw_usage/config/etc/passwd create mode 100644 tests/tests/cptools/02_cppw_usage/config/etc/shadow create mode 100755 tests/tests/cptools/02_cppw_usage/cppw.test create mode 100644 tests/tests/cptools/02_cppw_usage/data/usage.out create mode 100644 tests/tests/cptools/03_cppw_usage_invalid_option/config.txt create mode 100644 tests/tests/cptools/03_cppw_usage_invalid_option/config/etc/group create mode 100644 tests/tests/cptools/03_cppw_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/cptools/03_cppw_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/cptools/03_cppw_usage_invalid_option/config/etc/shadow create mode 100755 tests/tests/cptools/03_cppw_usage_invalid_option/cppw.test create mode 100644 tests/tests/cptools/03_cppw_usage_invalid_option/data/usage.out create mode 100644 tests/tests/cptools/04_cppw_no_file_argument/config.txt create mode 100644 tests/tests/cptools/04_cppw_no_file_argument/config/etc/group create mode 100644 tests/tests/cptools/04_cppw_no_file_argument/config/etc/gshadow create mode 100644 tests/tests/cptools/04_cppw_no_file_argument/config/etc/passwd create mode 100644 tests/tests/cptools/04_cppw_no_file_argument/config/etc/shadow create mode 100755 tests/tests/cptools/04_cppw_no_file_argument/cppw.test create mode 100644 tests/tests/cptools/04_cppw_no_file_argument/data/usage.out create mode 100644 tests/tests/cptools/05_cppw_2_files/config.txt create mode 100644 tests/tests/cptools/05_cppw_2_files/config/etc/group create mode 100644 tests/tests/cptools/05_cppw_2_files/config/etc/gshadow create mode 100644 tests/tests/cptools/05_cppw_2_files/config/etc/passwd create mode 100644 tests/tests/cptools/05_cppw_2_files/config/etc/shadow create mode 100755 tests/tests/cptools/05_cppw_2_files/cppw.test create mode 100644 tests/tests/cptools/05_cppw_2_files/data/passwd create mode 100644 tests/tests/cptools/05_cppw_2_files/data/usage.out create mode 100644 tests/tests/cptools/06_cppw_no_file/config.txt create mode 100644 tests/tests/cptools/06_cppw_no_file/config/etc/group create mode 100644 tests/tests/cptools/06_cppw_no_file/config/etc/gshadow create mode 100644 tests/tests/cptools/06_cppw_no_file/config/etc/passwd create mode 100644 tests/tests/cptools/06_cppw_no_file/config/etc/shadow create mode 100755 tests/tests/cptools/06_cppw_no_file/cppw.test create mode 100644 tests/tests/cptools/06_cppw_no_file/data/usage.out create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/config.txt create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/config/etc/group create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/config/etc/passwd create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/config/etc/shadow create mode 100755 tests/tests/cptools/07_cppw_locked_passwd/cppw.test create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/data/passwd create mode 100644 tests/tests/cptools/07_cppw_locked_passwd/data/usage.out create mode 100644 tests/tests/cptools/08_cppw-p/config.txt create mode 100644 tests/tests/cptools/08_cppw-p/config/etc/group create mode 100644 tests/tests/cptools/08_cppw-p/config/etc/gshadow create mode 100644 tests/tests/cptools/08_cppw-p/config/etc/passwd create mode 100644 tests/tests/cptools/08_cppw-p/config/etc/shadow create mode 100755 tests/tests/cptools/08_cppw-p/cppw.test create mode 100644 tests/tests/cptools/08_cppw-p/data/passwd create mode 100644 tests/tests/cptools/09_cppw-g/config.txt create mode 100644 tests/tests/cptools/09_cppw-g/config/etc/group create mode 100644 tests/tests/cptools/09_cppw-g/config/etc/gshadow create mode 100644 tests/tests/cptools/09_cppw-g/config/etc/passwd create mode 100644 tests/tests/cptools/09_cppw-g/config/etc/shadow create mode 100755 tests/tests/cptools/09_cppw-g/cppw.test create mode 100644 tests/tests/cptools/09_cppw-g/data/group create mode 100644 tests/tests/cptools/10_cppw-g-s/config.txt create mode 100644 tests/tests/cptools/10_cppw-g-s/config/etc/group create mode 100644 tests/tests/cptools/10_cppw-g-s/config/etc/gshadow create mode 100644 tests/tests/cptools/10_cppw-g-s/config/etc/passwd create mode 100644 tests/tests/cptools/10_cppw-g-s/config/etc/shadow create mode 100755 tests/tests/cptools/10_cppw-g-s/cppw.test create mode 100644 tests/tests/cptools/10_cppw-g-s/data/gshadow create mode 100644 tests/tests/cptools/11_cppw-p-s/config.txt create mode 100644 tests/tests/cptools/11_cppw-p-s/config/etc/group create mode 100644 tests/tests/cptools/11_cppw-p-s/config/etc/gshadow create mode 100644 tests/tests/cptools/11_cppw-p-s/config/etc/passwd create mode 100644 tests/tests/cptools/11_cppw-p-s/config/etc/shadow create mode 100755 tests/tests/cptools/11_cppw-p-s/cppw.test create mode 100644 tests/tests/cptools/11_cppw-p-s/data/shadow create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/config.txt create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/config/etc/group create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/config/etc/shadow create mode 100755 tests/tests/cptools/12_cppw-s_no_shadow_file/cppw.test create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/data/cppw.err create mode 100644 tests/tests/cptools/12_cppw-s_no_shadow_file/data/shadow create mode 100755 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/01_chpasswd/group create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/01_chpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/01_chpasswd/passwd create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/01_chpasswd/shadow create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/config/etc/group create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_DES-MD5_CRYPT_ENAB/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_DES/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_DES/01_chpasswd/group create mode 100644 tests/tests/crypt/login.defs_DES/01_chpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/01_chpasswd/passwd create mode 100644 tests/tests/crypt/login.defs_DES/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_DES/02_chpasswd--crypt-method-MD5.test create mode 100644 tests/tests/crypt/login.defs_DES/02_chpasswd--crypt-method-MD5/group create mode 100644 tests/tests/crypt/login.defs_DES/02_chpasswd--crypt-method-MD5/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/02_chpasswd--crypt-method-MD5/passwd create mode 100644 tests/tests/crypt/login.defs_DES/02_chpasswd--crypt-method-MD5/passwd.new create mode 100644 tests/tests/crypt/login.defs_DES/02_chpasswd--crypt-method-MD5/shadow create mode 100755 tests/tests/crypt/login.defs_DES/03_chpasswd--crypt-method-DES.test create mode 100644 tests/tests/crypt/login.defs_DES/03_chpasswd--crypt-method-DES/group create mode 100644 tests/tests/crypt/login.defs_DES/03_chpasswd--crypt-method-DES/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/03_chpasswd--crypt-method-DES/passwd create mode 100644 tests/tests/crypt/login.defs_DES/03_chpasswd--crypt-method-DES/shadow create mode 100755 tests/tests/crypt/login.defs_DES/04_chpasswd--crypt-method-NONE.test create mode 100644 tests/tests/crypt/login.defs_DES/04_chpasswd--crypt-method-NONE/group create mode 100644 tests/tests/crypt/login.defs_DES/04_chpasswd--crypt-method-NONE/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/04_chpasswd--crypt-method-NONE/passwd create mode 100644 tests/tests/crypt/login.defs_DES/04_chpasswd--crypt-method-NONE/shadow create mode 100755 tests/tests/crypt/login.defs_DES/05_chpasswd-e.test create mode 100644 tests/tests/crypt/login.defs_DES/05_chpasswd-e/group create mode 100644 tests/tests/crypt/login.defs_DES/05_chpasswd-e/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/05_chpasswd-e/passwd create mode 100644 tests/tests/crypt/login.defs_DES/05_chpasswd-e/shadow create mode 100755 tests/tests/crypt/login.defs_DES/06_chpasswd-m.test create mode 100644 tests/tests/crypt/login.defs_DES/06_chpasswd-m/group create mode 100644 tests/tests/crypt/login.defs_DES/06_chpasswd-m/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/06_chpasswd-m/passwd create mode 100644 tests/tests/crypt/login.defs_DES/06_chpasswd-m/shadow create mode 100755 tests/tests/crypt/login.defs_DES/07_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_DES/07_chgpasswd/group create mode 100644 tests/tests/crypt/login.defs_DES/07_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/07_chgpasswd/passwd create mode 100644 tests/tests/crypt/login.defs_DES/07_chgpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_DES/08_chgpasswd--crypt-method-MD5.test create mode 100644 tests/tests/crypt/login.defs_DES/08_chgpasswd--crypt-method-MD5/group create mode 100644 tests/tests/crypt/login.defs_DES/08_chgpasswd--crypt-method-MD5/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/08_chgpasswd--crypt-method-MD5/passwd create mode 100644 tests/tests/crypt/login.defs_DES/08_chgpasswd--crypt-method-MD5/shadow create mode 100755 tests/tests/crypt/login.defs_DES/09_chgpasswd--crypt-method-DES.test create mode 100644 tests/tests/crypt/login.defs_DES/09_chgpasswd--crypt-method-DES/group create mode 100644 tests/tests/crypt/login.defs_DES/09_chgpasswd--crypt-method-DES/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/09_chgpasswd--crypt-method-DES/passwd create mode 100644 tests/tests/crypt/login.defs_DES/09_chgpasswd--crypt-method-DES/shadow create mode 100755 tests/tests/crypt/login.defs_DES/10_chgpasswd--crypt-method-NONE.test create mode 100644 tests/tests/crypt/login.defs_DES/10_chgpasswd--crypt-method-NONE/group create mode 100644 tests/tests/crypt/login.defs_DES/10_chgpasswd--crypt-method-NONE/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/10_chgpasswd--crypt-method-NONE/passwd create mode 100644 tests/tests/crypt/login.defs_DES/10_chgpasswd--crypt-method-NONE/shadow create mode 100755 tests/tests/crypt/login.defs_DES/11_chgpasswd-e.test create mode 100644 tests/tests/crypt/login.defs_DES/11_chgpasswd-e/group create mode 100644 tests/tests/crypt/login.defs_DES/11_chgpasswd-e/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/11_chgpasswd-e/passwd create mode 100644 tests/tests/crypt/login.defs_DES/11_chgpasswd-e/shadow create mode 100755 tests/tests/crypt/login.defs_DES/12_chgpasswd-m.test create mode 100644 tests/tests/crypt/login.defs_DES/12_chgpasswd-m/group create mode 100644 tests/tests/crypt/login.defs_DES/12_chgpasswd-m/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/12_chgpasswd-m/passwd create mode 100644 tests/tests/crypt/login.defs_DES/12_chgpasswd-m/shadow create mode 100644 tests/tests/crypt/login.defs_DES/config/etc/group create mode 100644 tests/tests/crypt/login.defs_DES/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_DES/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_DES/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_DES/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_MD5/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_MD5/01_chpasswd/group create mode 100644 tests/tests/crypt/login.defs_MD5/01_chpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_MD5/01_chpasswd/passwd create mode 100644 tests/tests/crypt/login.defs_MD5/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_MD5/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_MD5/02_chgpasswd/group create mode 100644 tests/tests/crypt/login.defs_MD5/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_MD5/02_chgpasswd/passwd create mode 100644 tests/tests/crypt/login.defs_MD5/02_chgpasswd/shadow create mode 100644 tests/tests/crypt/login.defs_MD5/config/etc/group create mode 100644 tests/tests/crypt/login.defs_MD5/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_MD5/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_MD5/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_MD5/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/config/etc/group create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_MD5_CRYPT_ENAB/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256-round-max/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256-round-max/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/config/etc/group create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_SHA256-round-max/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256-round-min-max/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256-round-min-max/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/config/etc/group create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min-max/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256-round-min/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256-round-min/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/config/etc/group create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_SHA256-round-min/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_SHA256/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA256/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256/config/etc/group create mode 100644 tests/tests/crypt/login.defs_SHA256/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA256/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_SHA256/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_SHA256/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_SHA512/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA512/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_SHA512/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_SHA512/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA512/config/etc/group create mode 100644 tests/tests/crypt/login.defs_SHA512/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_SHA512/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_SHA512/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_SHA512/config/etc/shadow create mode 100755 tests/tests/crypt/login.defs_none/01_chpasswd.test create mode 100644 tests/tests/crypt/login.defs_none/01_chpasswd/shadow create mode 100755 tests/tests/crypt/login.defs_none/02_chgpasswd.test create mode 100644 tests/tests/crypt/login.defs_none/02_chgpasswd/gshadow create mode 100644 tests/tests/crypt/login.defs_none/config/etc/group create mode 100644 tests/tests/crypt/login.defs_none/config/etc/gshadow create mode 100644 tests/tests/crypt/login.defs_none/config/etc/login.defs create mode 100644 tests/tests/crypt/login.defs_none/config/etc/passwd create mode 100644 tests/tests/crypt/login.defs_none/config/etc/shadow create mode 100644 tests/tests/debian/01/data/login_files create mode 100644 tests/tests/debian/01/data/passwd_files create mode 100755 tests/tests/debian/01/run create mode 100755 tests/tests/debian/02/run create mode 100644 tests/tests/expiry/01_expiry_-c_no_expiry/config/etc/group create mode 100644 tests/tests/expiry/01_expiry_-c_no_expiry/config/etc/gshadow create mode 100644 tests/tests/expiry/01_expiry_-c_no_expiry/config/etc/passwd create mode 100644 tests/tests/expiry/01_expiry_-c_no_expiry/config/etc/shadow create mode 100755 tests/tests/expiry/01_expiry_-c_no_expiry/expiry.exp create mode 100755 tests/tests/expiry/01_expiry_-c_no_expiry/expiry.test create mode 100644 tests/tests/expiry/02_expiry_-c_expired/config/etc/group create mode 100644 tests/tests/expiry/02_expiry_-c_expired/config/etc/gshadow create mode 100644 tests/tests/expiry/02_expiry_-c_expired/config/etc/passwd create mode 100644 tests/tests/expiry/02_expiry_-c_expired/config/etc/shadow create mode 100755 tests/tests/expiry/02_expiry_-c_expired/expiry.exp create mode 100755 tests/tests/expiry/02_expiry_-c_expired/expiry.test create mode 100644 tests/tests/expiry/03_expiry_-f_expired/config/etc/group create mode 100644 tests/tests/expiry/03_expiry_-f_expired/config/etc/gshadow create mode 100644 tests/tests/expiry/03_expiry_-f_expired/config/etc/pam.d/common-password create mode 100644 tests/tests/expiry/03_expiry_-f_expired/config/etc/passwd create mode 100644 tests/tests/expiry/03_expiry_-f_expired/config/etc/shadow create mode 100644 tests/tests/expiry/03_expiry_-f_expired/data/shadow create mode 100755 tests/tests/expiry/03_expiry_-f_expired/expiry.exp create mode 100755 tests/tests/expiry/03_expiry_-f_expired/expiry.test create mode 100644 tests/tests/expiry/04_expiry_no_options/config/etc/group create mode 100644 tests/tests/expiry/04_expiry_no_options/config/etc/gshadow create mode 100644 tests/tests/expiry/04_expiry_no_options/config/etc/passwd create mode 100644 tests/tests/expiry/04_expiry_no_options/config/etc/shadow create mode 100644 tests/tests/expiry/04_expiry_no_options/data/usage.out create mode 100755 tests/tests/expiry/04_expiry_no_options/expiry.test create mode 100644 tests/tests/expiry/05_expiry_-c_no_shadow_file/config/etc/group create mode 100644 tests/tests/expiry/05_expiry_-c_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/expiry/05_expiry_-c_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/expiry/05_expiry_-c_no_shadow_file/config/etc/shadow create mode 100755 tests/tests/expiry/05_expiry_-c_no_shadow_file/expiry.exp create mode 100755 tests/tests/expiry/05_expiry_-c_no_shadow_file/expiry.test create mode 100644 tests/tests/expiry/06_expiry_-c_no_shadow_entry/config/etc/group create mode 100644 tests/tests/expiry/06_expiry_-c_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/expiry/06_expiry_-c_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/expiry/06_expiry_-c_no_shadow_entry/config/etc/shadow create mode 100755 tests/tests/expiry/06_expiry_-c_no_shadow_entry/expiry.exp create mode 100755 tests/tests/expiry/06_expiry_-c_no_shadow_entry/expiry.test create mode 100644 tests/tests/expiry/07_expiry_-c_expired_account/config/etc/group create mode 100644 tests/tests/expiry/07_expiry_-c_expired_account/config/etc/gshadow create mode 100644 tests/tests/expiry/07_expiry_-c_expired_account/config/etc/passwd create mode 100644 tests/tests/expiry/07_expiry_-c_expired_account/config/etc/shadow create mode 100755 tests/tests/expiry/07_expiry_-c_expired_account/expiry.exp create mode 100755 tests/tests/expiry/07_expiry_-c_expired_account/expiry.test create mode 100644 tests/tests/expiry/08_expiry_-c_expired_max+inact/config/etc/group create mode 100644 tests/tests/expiry/08_expiry_-c_expired_max+inact/config/etc/gshadow create mode 100644 tests/tests/expiry/08_expiry_-c_expired_max+inact/config/etc/passwd create mode 100644 tests/tests/expiry/08_expiry_-c_expired_max+inact/config/etc/shadow create mode 100755 tests/tests/expiry/08_expiry_-c_expired_max+inact/expiry.exp create mode 100755 tests/tests/expiry/08_expiry_-c_expired_max+inact/expiry.test create mode 100644 tests/tests/expiry/09_expiry_-c_expired_not_inactive/config/etc/group create mode 100644 tests/tests/expiry/09_expiry_-c_expired_not_inactive/config/etc/gshadow create mode 100644 tests/tests/expiry/09_expiry_-c_expired_not_inactive/config/etc/passwd create mode 100644 tests/tests/expiry/09_expiry_-c_expired_not_inactive/config/etc/shadow create mode 100755 tests/tests/expiry/09_expiry_-c_expired_not_inactive/expiry.exp create mode 100755 tests/tests/expiry/09_expiry_-c_expired_not_inactive/expiry.test create mode 100644 tests/tests/expiry/10_expiry_bad_option/config/etc/group create mode 100644 tests/tests/expiry/10_expiry_bad_option/config/etc/gshadow create mode 100644 tests/tests/expiry/10_expiry_bad_option/config/etc/passwd create mode 100644 tests/tests/expiry/10_expiry_bad_option/config/etc/shadow create mode 100644 tests/tests/expiry/10_expiry_bad_option/data/usage.out create mode 100755 tests/tests/expiry/10_expiry_bad_option/expiry.test create mode 100644 tests/tests/expiry/11_expiry_usage/config/etc/group create mode 100644 tests/tests/expiry/11_expiry_usage/config/etc/gshadow create mode 100644 tests/tests/expiry/11_expiry_usage/config/etc/passwd create mode 100644 tests/tests/expiry/11_expiry_usage/config/etc/shadow create mode 100644 tests/tests/expiry/11_expiry_usage/data/usage.out create mode 100755 tests/tests/expiry/11_expiry_usage/expiry.test create mode 100644 tests/tests/expiry/12_expiry_extra_arg/config/etc/group create mode 100644 tests/tests/expiry/12_expiry_extra_arg/config/etc/gshadow create mode 100644 tests/tests/expiry/12_expiry_extra_arg/config/etc/passwd create mode 100644 tests/tests/expiry/12_expiry_extra_arg/config/etc/shadow create mode 100644 tests/tests/expiry/12_expiry_extra_arg/data/usage.out create mode 100755 tests/tests/expiry/12_expiry_extra_arg/expiry.test create mode 100644 tests/tests/expiry/13_expiry_usage-c-f/config/etc/group create mode 100644 tests/tests/expiry/13_expiry_usage-c-f/config/etc/gshadow create mode 100644 tests/tests/expiry/13_expiry_usage-c-f/config/etc/passwd create mode 100644 tests/tests/expiry/13_expiry_usage-c-f/config/etc/shadow create mode 100644 tests/tests/expiry/13_expiry_usage-c-f/data/usage.out create mode 100755 tests/tests/expiry/13_expiry_usage-c-f/expiry.test create mode 100755 tests/tests/failures/chage/01_chage_openRW_passwd_failure/chage.test create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/config.txt create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chage/01_chage_openRW_passwd_failure/data/chage.err create mode 100755 tests/tests/failures/chage/02_chage_openRO_passwd_failure/chage.test create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/config.txt create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chage/02_chage_openRO_passwd_failure/data/chage.err create mode 100755 tests/tests/failures/chage/03_chage_openRW_shadow_failure/chage.test create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/config.txt create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chage/03_chage_openRW_shadow_failure/data/chage.err create mode 100755 tests/tests/failures/chage/04_chage_openRO_shadow_failure/chage.test create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/config.txt create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chage/04_chage_openRO_shadow_failure/data/chage.err create mode 100755 tests/tests/failures/chage/05_chage_rename_shadow_failure/chage.test create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/config.txt create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chage/05_chage_rename_shadow_failure/data/chage.err create mode 100755 tests/tests/failures/chage/06_chage_rename_passwd_failure/chage.test create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/data/chage.err create mode 100644 tests/tests/failures/chage/06_chage_rename_passwd_failure/data/shadow create mode 100755 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/chgpasswd.test create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/config.txt create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/chgpasswd/01_chgpasswd-e_open_group_failure/data/chgpasswd.err create mode 100755 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/chgpasswd.test create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chgpasswd/02_chgpasswd-e_open_gshadow_failure/data/chgpasswd.err create mode 100755 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/chgpasswd.test create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/config.txt create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/config/etc/group create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/data/chgpasswd.err create mode 100644 tests/tests/failures/chgpasswd/03_chgpasswd-e_rename_group_failure/data/gshadow create mode 100755 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/chgpasswd.test create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/config.txt create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chgpasswd/04_chgpasswd-e_rename_gshadow_failure/data/chgpasswd.err create mode 100755 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/chpasswd.test create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chpasswd-PAM/01_chpasswd-e_open_passwd_failure/data/chpasswd.err create mode 100755 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/chpasswd.test create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chpasswd-PAM/02_chpasswd-e_open_shadow_failure/data/chpasswd.err create mode 100755 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/chpasswd.test create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/data/chpasswd.err create mode 100644 tests/tests/failures/chpasswd-PAM/03_chpasswd-e_rename_passwd_failure/data/shadow create mode 100755 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/chpasswd.test create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/config.txt create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/chpasswd-PAM/04_chpasswd-e_rename_shadow_failure/data/chpasswd.err create mode 100755 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/chpasswd.test create mode 100644 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/config.txt create mode 100644 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/config/etc/group create mode 100644 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/config/etc/passwd create mode 100644 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/config/etc/shadow create mode 100644 tests/tests/failures/chpasswd-PAM/05_chpasswd-e_time_0/data/shadow create mode 100755 tests/tests/failures/chsh/01_chsh_open_passwd_failure/chsh.test create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chsh/01_chsh_open_passwd_failure/data/chsh.err create mode 100755 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/chsh.test create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/data/chsh.err create mode 100644 tests/tests/failures/chsh/02_chsh_rename_passwd_failure/data/shadow create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/config.txt create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/config/etc/group create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/config/etc/gshadow create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/config/etc/login.defs create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/config/etc/passwd create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/config/etc/shadow create mode 100755 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/cppw.test create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/data/cppw.err create mode 100644 tests/tests/failures/cppw/01_cppw_open_passwd_in_failure/data/passwd create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/config.txt create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/config/etc/group create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/config/etc/gshadow create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/config/etc/login.defs create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/config/etc/passwd create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/config/etc/shadow create mode 100755 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/cppw.test create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/data/cppw.err create mode 100644 tests/tests/failures/cppw/02_cppw_open_passwd_backup_failure/data/passwd create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/config/etc/shadow create mode 100755 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/cppw.test create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/data/cppw.err create mode 100644 tests/tests/failures/cppw/03_cppw_rename_passwd_failure/data/passwd create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/01_gpasswd_group_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/02_gpasswd_gshadow_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/03_gpasswd-a_group_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/04_gpasswd-d_group_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/05_gpasswd-r_group_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/06_gpasswd-R_gshadow_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/07_gpasswd-A_gshadow_open_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/08_gpasswd_group_openRO_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/09_gpasswd_gshadow_openRO_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/data/gpasswd.err create mode 100755 tests/tests/failures/gpasswd/10_gpasswd_group_rename_failure/gpasswd.test create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/data/gpasswd.err create mode 100644 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/data/group create mode 100755 tests/tests/failures/gpasswd/11_gpasswd_gshadow_rename_failure/gpasswd.test create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/data/group create mode 100644 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/data/groupadd.err create mode 100755 tests/tests/failures/groupadd/01_groupadd_gshadow_rename_failure/groupadd.test create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config.txt create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/data/groupadd.err create mode 100755 tests/tests/failures/groupadd/02_groupadd_group_rename_failure/groupadd.test create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/data/groupadd.err create mode 100755 tests/tests/failures/groupadd/03_groupadd_gshadow_open_failure/groupadd.test create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config.txt create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupadd/04_groupadd_group_open_failure/data/groupadd.err create mode 100755 tests/tests/failures/groupadd/04_groupadd_group_open_failure/groupadd.test create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/data/group create mode 100644 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/data/groupdel.err create mode 100755 tests/tests/failures/groupdel/01_groupdel_gshadow_rename_failure/groupdel.test create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config.txt create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/data/groupdel.err create mode 100755 tests/tests/failures/groupdel/02_groupdel_group_rename_failure/groupdel.test create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/data/groupdel.err create mode 100755 tests/tests/failures/groupdel/03_groupdel_gshadow_open_failure/groupdel.test create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config.txt create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupdel/04_groupdel_group_open_failure/data/groupdel.err create mode 100755 tests/tests/failures/groupdel/04_groupdel_group_open_failure/groupdel.test create mode 100644 tests/tests/failures/groupmems/01_groupmems_group_open_failure/config.txt create mode 100644 tests/tests/failures/groupmems/01_groupmems_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmems/01_groupmems_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmems/01_groupmems_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmems/01_groupmems_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmems/01_groupmems_group_open_failure/data/groupmems.err create mode 100755 tests/tests/failures/groupmems/01_groupmems_group_open_failure/groupmems.test create mode 100644 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/data/groupmems.err create mode 100755 tests/tests/failures/groupmems/02_groupmems_gshadow_open_failure/groupmems.test create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/data/group create mode 100644 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/data/groupmod.err create mode 100755 tests/tests/failures/groupmod/01_groupmod_change_group_name_gshadow_rename_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config.txt create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/data/group create mode 100644 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/data/groupmod.err create mode 100755 tests/tests/failures/groupmod/02_groupmod_change_gid_change_primary_group_passwd_rename_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config.txt create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/data/groupmod.err create mode 100755 tests/tests/failures/groupmod/03_groupmod_change_group_name_group_rename_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config.txt create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/04_groupmod_group_open_failure/data/groupmod.err create mode 100755 tests/tests/failures/groupmod/04_groupmod_group_open_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/data/groupmod.err create mode 100755 tests/tests/failures/groupmod/05_groupmod_gshadow_open_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/data/group create mode 100755 tests/tests/failures/groupmod/06_groupmod_-g_no_gshadow_open_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config.txt create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/data/groupmod.err create mode 100755 tests/tests/failures/groupmod/07_groupmod_passwd_open_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config.txt create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/config/etc/shadow create mode 100755 tests/tests/failures/groupmod/08_groupmod_-g_same_gid_no_passwd_open_failure/groupmod.test create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config.txt create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config/etc/group create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/data/group create mode 100644 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/data/gshadow create mode 100755 tests/tests/failures/groupmod/09_groupmod_-n_no_passwd_open_failure/groupmod.test create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config.txt create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpck/01_grpck_system_group_open_failure/data/grpck.err create mode 100755 tests/tests/failures/grpck/01_grpck_system_group_open_failure/grpck.test create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config.txt create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config/etc/group create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpck/02_grpck_group_open_failure/data/grpck.err create mode 100755 tests/tests/failures/grpck/02_grpck_group_open_failure/grpck.test create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/data/grpck.err create mode 100755 tests/tests/failures/grpck/03_grpck_system_gshadow_open_failure/grpck.test create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config.txt create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/data/group create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/data/grpck.err create mode 100644 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/data/gshadow create mode 100755 tests/tests/failures/grpck/04_grpck_gshadow_open_failure/grpck.test create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config.txt create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/data/grpck.err create mode 100755 tests/tests/failures/grpck/05_grpck_sort_group_rename_failure/grpck.test create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/data/group create mode 100644 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/data/grpck.err create mode 100755 tests/tests/failures/grpck/06_grpck_sort_gshadow_rename_failure/grpck.test create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/config.txt create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpconv/01_grpconv_open_group_failure/data/grpconv.err create mode 100755 tests/tests/failures/grpconv/01_grpconv_open_group_failure/grpconv.test create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/data/grpconv.err create mode 100755 tests/tests/failures/grpconv/02_grpconv_open_gshadow_failure/grpconv.test create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/config.txt create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/config/etc/group create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/data/grpconv.err create mode 100644 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/data/gshadow create mode 100755 tests/tests/failures/grpconv/03_grpconv_rename_group_failure/grpconv.test create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/config.txt create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/data/grpconv.err create mode 100755 tests/tests/failures/grpconv/04_grpconv_rename_gshadow_failure/grpconv.test create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/config.txt create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/data/grpunconv.err create mode 100755 tests/tests/failures/grpunconv/01_grpunconv_group_rename_failure/grpunconv.test create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/config.txt create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/data/grpunconv.err create mode 100755 tests/tests/failures/grpunconv/02_grpunconv_open_group_failure/grpunconv.test create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/data/grpunconv.err create mode 100755 tests/tests/failures/grpunconv/03_grpunconv_open_gshadow_failure/grpunconv.test create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/config.txt create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/data/group create mode 100644 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/data/grpunconv.err create mode 100755 tests/tests/failures/grpunconv/04_grpunconv_unlink_gshadow_failure/grpunconv.test create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/01_newusers_open_passwd_failure/data/newusers.list create mode 100755 tests/tests/failures/newusers/01_newusers_open_passwd_failure/newusers.test create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/02_newusers_open_shadow_failure/data/newusers.list create mode 100755 tests/tests/failures/newusers/02_newusers_open_shadow_failure/newusers.test create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config.txt create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/03_newusers_open_group_failure/data/newusers.list create mode 100755 tests/tests/failures/newusers/03_newusers_open_group_failure/newusers.test create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/data/newusers.list create mode 100755 tests/tests/failures/newusers/04_newusers_open_gshadow_failure/newusers.test create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/data/newusers.list create mode 100755 tests/tests/failures/newusers/05_newusers_rename_passwd_failure/newusers.test create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/config.txt create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/data/newusers.list create mode 100644 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/data/passwd create mode 100755 tests/tests/failures/newusers/06_newusers_rename_shadow_failure/newusers.test create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/config.txt create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/data/newusers.list create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/data/passwd create mode 100644 tests/tests/failures/newusers/07_newusers_rename_group_failure/data/shadow create mode 100755 tests/tests/failures/newusers/07_newusers_rename_group_failure/newusers.test create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/config.txt create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/data/group create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/data/newusers.err create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/data/newusers.list create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/data/passwd create mode 100644 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/data/shadow create mode 100755 tests/tests/failures/newusers/08_newusers_rename_gshadow_failure/newusers.test create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/config.txt create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/config/etc/group create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/config/etc/login.defs create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/config/etc/passwd create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/config/etc/shadow create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/data/group create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/data/gshadow create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/data/newusers.err create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/data/newusers.list create mode 100644 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/data/passwd create mode 100755 tests/tests/failures/newusers/09_newusers_rename_shadow_failure_PAM/newusers.test create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config.txt create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config/etc/default/useradd create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config/etc/group create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config/etc/pam.d/common-password create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config/etc/passwd create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/config/etc/shadow create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/data/group create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/data/gshadow create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/data/newusers.list create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/data/passwd create mode 100644 tests/tests/failures/newusers/10_newusers_time_0/data/shadow create mode 100755 tests/tests/failures/newusers/10_newusers_time_0/newusers.test create mode 100644 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/config.txt create mode 100644 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/01_pwck_system_passwd_open_failure/pwck.test create mode 100644 tests/tests/failures/pwck/02_pwck_passwd_open_failure/config.txt create mode 100644 tests/tests/failures/pwck/02_pwck_passwd_open_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/02_pwck_passwd_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/02_pwck_passwd_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/02_pwck_passwd_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/02_pwck_passwd_open_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/02_pwck_passwd_open_failure/pwck.test create mode 100644 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/config.txt create mode 100644 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/03_pwck_system_shadow_open_failure/pwck.test create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/config.txt create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/data/passwd create mode 100644 tests/tests/failures/pwck/04_pwck_shadow_open_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/04_pwck_shadow_open_failure/pwck.test create mode 100644 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/config.txt create mode 100644 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/05_pwck_sort_system_passwd_rename_failure/pwck.test create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/config.txt create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/data/passwd create mode 100644 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/06_pwck_sort_system_shadow_rename_failure/pwck.test create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/config.txt create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/data/passwd create mode 100644 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/data/pwck.err create mode 100755 tests/tests/failures/pwck/07_pwck_sort_passwd_rename_failure/pwck.test create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/config.txt create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/data/passwd create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/data/passwd.out create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/data/pwck.err create mode 100644 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/data/shadow create mode 100755 tests/tests/failures/pwck/08_pwck_sort_shadow_rename_failure/pwck.test create mode 100644 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/config.txt create mode 100644 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/config/etc/group create mode 100644 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/config/etc/passwd create mode 100644 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/config/etc/shadow create mode 100644 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/data/shadow create mode 100755 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/pwck.exp create mode 100755 tests/tests/failures/pwck/09_pwck_create_shadow_entry_time_0/pwck.test create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/data/pwconv.err create mode 100755 tests/tests/failures/pwconv/01_pwconv_open_passwd_failure/pwconv.test create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/data/pwconv.err create mode 100755 tests/tests/failures/pwconv/02_pwconv_open_shadow_failure/pwconv.test create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/data/pwconv.err create mode 100644 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/data/shadow create mode 100755 tests/tests/failures/pwconv/03_pwconv_rename_passwd_failure/pwconv.test create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/config.txt create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/data/pwconv.err create mode 100755 tests/tests/failures/pwconv/04_pwconv_rename_shadow_failure/pwconv.test create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/config.txt create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/config/etc/group create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/config/etc/passwd create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/config/etc/shadow create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/data/passwd create mode 100644 tests/tests/failures/pwconv/05_pwconv_time_0/data/shadow create mode 100755 tests/tests/failures/pwconv/05_pwconv_time_0/pwconv.test create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/config.txt create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/config/etc/group create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/data/pwunconv.err create mode 100755 tests/tests/failures/pwunconv/01_pwunconv_passwd_rename_failure/pwunconv.test create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/data/pwunconv.err create mode 100755 tests/tests/failures/pwunconv/02_pwunconv_open_passwd_failure/pwunconv.test create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/data/pwunconv.err create mode 100755 tests/tests/failures/pwunconv/03_pwunconv_open_shadow_failure/pwunconv.test create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/config.txt create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/data/passwd create mode 100644 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/data/pwunconv.err create mode 100755 tests/tests/failures/pwunconv/04_pwunconv_unlink_shadow_failure/pwunconv.test create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/01_useradd_open_passwd_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/01_useradd_open_passwd_failure/useradd.test create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/02_useradd_open_shadow_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/02_useradd_open_shadow_failure/useradd.test create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config.txt create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/03_useradd_open_group_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/03_useradd_open_group_failure/useradd.test create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/04_useradd_open_gshadow_failure/useradd.test create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config.txt create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/05_useradd_rename_passwd_failure/useradd.test create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config.txt create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/data/passwd create mode 100644 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/06_useradd_rename_shadow_failure/useradd.test create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config.txt create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/data/passwd create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/data/shadow create mode 100644 tests/tests/failures/useradd/07_useradd_rename_group_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/07_useradd_rename_group_failure/useradd.test create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config.txt create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/data/group create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/data/passwd create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/data/shadow create mode 100644 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/08_useradd_rename_gshadow_failure/useradd.test create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config.txt create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/09_useradd_rename_defaults_failure/useradd.test create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config.txt create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/10_useradd_rename_defaults_backup_failure/useradd.test create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config.txt create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config/etc/group create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config/etc/pam.d/common-password create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config/etc/passwd create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/config/etc/shadow create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/data/group create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/data/gshadow create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/data/newusers.list create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/data/passwd create mode 100644 tests/tests/failures/useradd/11_useradd_time_0/data/shadow create mode 100755 tests/tests/failures/useradd/11_useradd_time_0/useradd.test create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config.txt create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/useradd/12_useradd_open_subuid_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/12_useradd_open_subuid_failure/useradd.test create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config.txt create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/useradd/13_useradd_open_subgid_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/13_useradd_open_subgid_failure/useradd.test create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config.txt create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/data/group create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/data/gshadow create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/data/passwd create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/data/shadow create mode 100644 tests/tests/failures/useradd/14_username_rename_subuid_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/14_username_rename_subuid_failure/useradd.test create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config.txt create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/data/group create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/data/gshadow create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/data/passwd create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/data/shadow create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/data/subuid create mode 100644 tests/tests/failures/useradd/15_username_rename_subgid_failure/data/useradd.err create mode 100755 tests/tests/failures/useradd/15_username_rename_subgid_failure/useradd.test create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/data/group create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/data/passwd create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/data/shadow create mode 100644 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/01_userdel_gshadow_rename_failure/userdel.test create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config.txt create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/data/passwd create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/data/shadow create mode 100644 tests/tests/failures/userdel/02_userdel_group_rename_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/02_userdel_group_rename_failure/userdel.test create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config.txt create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/data/passwd create mode 100644 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/03_userdel_shadow_rename_failure/userdel.test create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config.txt create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/04_userdel_passwd_rename_failure/userdel.test create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config.txt create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/etc/group create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/etc/passwd create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/etc/shadow create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/config/var/mail/foo create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/data/group create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/data/gshadow create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/data/passwd create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/data/shadow create mode 100644 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/data/userdel.err create mode 100755 tests/tests/failures/userdel/05_userdel_failure_remove_mailbox/userdel.test create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config.txt create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config/etc/group create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config/etc/passwd create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/config/etc/shadow create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/data/group create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/data/gshadow create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/data/passwd create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/data/shadow create mode 100644 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/data/userdel.err create mode 100755 tests/tests/failures/userdel/06_userdel_failure_remove_file_homedir/userdel.test create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config.txt create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config/etc/group create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config/etc/passwd create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/config/etc/shadow create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/data/group create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/data/gshadow create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/data/passwd create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/data/shadow create mode 100644 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/data/userdel.err create mode 100755 tests/tests/failures/userdel/07_userdel_failure_remove_homedir/userdel.test create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/08_userdel_open_passwd_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/08_userdel_open_passwd_failure/userdel.test create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/09_userdel_open_shadow_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/09_userdel_open_shadow_failure/userdel.test create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config.txt create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/10_userdel_open_group_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/10_userdel_open_group_failure/userdel.test create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/11_userdel_open_gshadow_failure/userdel.test create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config.txt create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/userdel/12_userdel_open_subuid_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/12_userdel_open_subuid_failure/userdel.test create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config.txt create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/userdel/13_userdel_open_subgid_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/13_userdel_open_subgid_failure/userdel.test create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config.txt create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/data/group create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/data/gshadow create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/data/passwd create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/data/shadow create mode 100644 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/14_userdel_rename_subuid_failure/usedel.test create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config.txt create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/data/group create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/data/gshadow create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/data/passwd create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/data/shadow create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/data/subuid create mode 100644 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/data/userdel.err create mode 100755 tests/tests/failures/userdel/15_userdel_rename_subgid_failure/usedel.test create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config.txt create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/data/group create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/data/passwd create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/data/shadow create mode 100644 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/01_usermod_change_user_name_gshadow_rename_failure/usermod.test create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config.txt create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/02_usermod_change_uid_passwd_rename_failure/usermod.test create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config.txt create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/data/passwd create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/data/shadow create mode 100644 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/03_usermod_change_user_name_group_rename_failure/usermod.test create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config.txt create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/data/passwd create mode 100644 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/data/shadow create mode 100755 tests/tests/failures/usermod/04_usermod_change_user_name_gshadow_rename_no_failure/usermod.test create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config.txt create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/data/passwd create mode 100644 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/05_usermod_change_uid_shadow_rename_failure/usermod.test create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config.txt create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/06_usermod_change_user_name_open_passwd_failure/usermod.test create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config.txt create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/07_usermod_change_user_name_open_shadow_failure/usermod.test create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config.txt create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/08_usermod_change_user_name_open_group_failure/usermod.test create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config.txt create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/09_usermod_change_user_name_open_gshadow_failure/usermod.test create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/config.txt create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/config/etc/group create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/config/etc/passwd create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/config/etc/shadow create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/data/passwd create mode 100644 tests/tests/failures/usermod/10_usermod_-p_time_0/data/shadow create mode 100755 tests/tests/failures/usermod/10_usermod_-p_time_0/usermod.test create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/config.txt create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/config/etc/group create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/config/etc/passwd create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/config/etc/shadow create mode 100644 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/data/shadow create mode 100755 tests/tests/failures/usermod/11_usermod-f_no_shadow_entry_time_0/usermod.test create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config.txt create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/12_usermod_change_uid_passwd_unlock_passwd_failure/usermod.test create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config.txt create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/13_usermod_-v_open_subuid_failure/usermod.test create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config.txt create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/14_usermod_-V_open_subuid_failure/usermod.test create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config.txt create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/15_usermod_-w_open_subgid_failure/usermod.test create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config.txt create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/16_usermod_-W_open_subgid_failure/usermod.test create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config.txt create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/subgid create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/config/etc/subuid create mode 100644 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/17_usermod_-v_rename_subuid_failure/usermod.test create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config.txt create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/default/useradd create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/group create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/gshadow create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/login.defs create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/passwd create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/shadow create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/subgid create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/config/etc/subuid create mode 100644 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/data/usermod.err create mode 100755 tests/tests/failures/usermod/18_usermod_-w_rename_subgid_failure/usermod.test create mode 100755 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/01_chgpasswd_invalid_group/data/chgpasswd.err create mode 100755 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/config/etc/login.defs create mode 100644 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/02_chgpasswd_multiple_groups/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/config/etc/login.defs create mode 100644 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/03_chgpasswd_no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/config/etc/login.defs create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/data/group create mode 100644 tests/tests/grouptools/chgpasswd/04_chgpasswd_no_gshadow_entry/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/config/etc/login.defs create mode 100644 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/05_chgpasswd_error_no_password/data/chgpasswd.err create mode 100755 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/06_chgpasswd_usage/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/07_chgpasswd_usage_bad_option/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/08_chgpasswd_usage-e-m_exclusive/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/09_chgpasswd_usage-e-c_exclusive/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/10_chgpasswd_usage-m-c_exclusive/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/11_chgpasswd_usage-s_without-c/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/12_chgpasswd_usage-s_invalid/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/13_chgpasswd_usage-c_invalid/data/usage.out create mode 100755 tests/tests/grouptools/chgpasswd/14_chgpasswd_password_encrypted/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/14_chgpasswd_password_encrypted/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/14_chgpasswd_password_encrypted/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/14_chgpasswd_password_encrypted/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/14_chgpasswd_password_encrypted/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/14_chgpasswd_password_encrypted/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/15_chgpasswd_password_md5/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/15_chgpasswd_password_md5/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/15_chgpasswd_password_md5/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/15_chgpasswd_password_md5/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/15_chgpasswd_password_md5/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/15_chgpasswd_password_md5/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/16_chgpasswd_password_NONE/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/16_chgpasswd_password_NONE/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/16_chgpasswd_password_NONE/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/16_chgpasswd_password_NONE/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/16_chgpasswd_password_NONE/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/16_chgpasswd_password_NONE/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/17_chgpasswd_password_MD5/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/17_chgpasswd_password_MD5/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/17_chgpasswd_password_MD5/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/17_chgpasswd_password_MD5/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/17_chgpasswd_password_MD5/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/17_chgpasswd_password_MD5/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/18_chgpasswd_password_DES/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/18_chgpasswd_password_DES/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/18_chgpasswd_password_DES/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/18_chgpasswd_password_DES/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/18_chgpasswd_password_DES/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/18_chgpasswd_password_DES/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/19_chgpasswd_password_SHA256/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/19_chgpasswd_password_SHA256/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/19_chgpasswd_password_SHA256/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/19_chgpasswd_password_SHA256/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/19_chgpasswd_password_SHA256/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/19_chgpasswd_password_SHA256/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/20_chgpasswd_password_SHA256_rounds_900/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/20_chgpasswd_password_SHA256_rounds_900/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/20_chgpasswd_password_SHA256_rounds_900/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/20_chgpasswd_password_SHA256_rounds_900/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/20_chgpasswd_password_SHA256_rounds_900/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/20_chgpasswd_password_SHA256_rounds_900/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/21_chgpasswd_password_SHA256_rounds_9000/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/21_chgpasswd_password_SHA256_rounds_9000/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/21_chgpasswd_password_SHA256_rounds_9000/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/21_chgpasswd_password_SHA256_rounds_9000/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/21_chgpasswd_password_SHA256_rounds_9000/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/21_chgpasswd_password_SHA256_rounds_9000/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/22_chgpasswd_password_SHA512/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/22_chgpasswd_password_SHA512/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/22_chgpasswd_password_SHA512/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/22_chgpasswd_password_SHA512/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/22_chgpasswd_password_SHA512/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/22_chgpasswd_password_SHA512/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/23_chgpasswd_password_SHA512_rounds_900/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/23_chgpasswd_password_SHA512_rounds_900/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/23_chgpasswd_password_SHA512_rounds_900/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/23_chgpasswd_password_SHA512_rounds_900/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/23_chgpasswd_password_SHA512_rounds_900/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/23_chgpasswd_password_SHA512_rounds_900/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/24_chgpasswd_password_SHA512_rounds_9000/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/24_chgpasswd_password_SHA512_rounds_9000/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/24_chgpasswd_password_SHA512_rounds_9000/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/24_chgpasswd_password_SHA512_rounds_9000/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/24_chgpasswd_password_SHA512_rounds_9000/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/24_chgpasswd_password_SHA512_rounds_9000/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/25_chgpasswd-e_no_gshadow_file/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/25_chgpasswd-e_no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/25_chgpasswd-e_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/25_chgpasswd-e_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/25_chgpasswd-e_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/25_chgpasswd-e_no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/chgpasswd/26_chgpasswd_no_gshadow_file_invalid_group/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/26_chgpasswd_no_gshadow_file_invalid_group/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/26_chgpasswd_no_gshadow_file_invalid_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/26_chgpasswd_no_gshadow_file_invalid_group/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/26_chgpasswd_no_gshadow_file_invalid_group/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/26_chgpasswd_no_gshadow_file_invalid_group/data/group create mode 100755 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/data/group create mode 100644 tests/tests/grouptools/chgpasswd/29_chgpasswd-e_no_gshadow_entry/data/gshadow create mode 100755 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/30_chgpasswd_locked_group/data/chgpasswd.err create mode 100755 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/31_chgpasswd_locked_gshadow/data/chgpasswd.err create mode 100755 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/chgpasswd.test create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/config.txt create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/config/etc/group create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/config/etc/passwd create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/config/etc/shadow create mode 100644 tests/tests/grouptools/chgpasswd/32_chgpasswd_invalid_group/data/chgpasswd.err create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/data/group create mode 100644 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/01_gpasswd_change_member_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/data/group create mode 100644 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/02_gpasswd_change_member_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/data/group create mode 100644 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/03_gpasswd_change_member_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/data/group create mode 100644 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/04_gpasswd_change_member_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/data/group create mode 100644 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/05_gpasswd_change_member_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/data/group create mode 100644 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/06_gpasswd_change_member_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/07_gpasswd_change_member_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/08_gpasswd_change_member_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/09_gpasswd_change_member_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/10_gpasswd_change_member_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/11_gpasswd_change_member_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/12_gpasswd_change_member_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/13_gpasswd_change_member_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/14_gpasswd_change_member_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/15_gpasswd_change_member_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/16_gpasswd_change_member_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/17_gpasswd_change_member_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/18_gpasswd_change_member_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/config.txt create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/19_gpasswd_change_passwd-root/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/20_gpasswd_change_passwd-root-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/21_gpasswd_change_passwd-root-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/config.txt create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/22_gpasswd_change_passwd-myuser/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/config.txt create mode 100644 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/config/etc/shadow create mode 100755 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/23_gpasswd_change_passwd-myuser-denied/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/config/etc/shadow create mode 100755 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/24_gpasswd_change_passwd-myuser-denied-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/config.txt create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/data/group create mode 100644 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/25_gpasswd_remove_password/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/26_gpasswd_remove_password-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/27_gpasswd_remove_password-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/config.txt create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/data/group create mode 100644 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/28_gpasswd_lock_password/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/29_gpasswd_lock_password-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/30_gpasswd_lock_password-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/31_gpasswd_add_user_to_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/32_gpasswd_add_user_to_group-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/33_gpasswd_add_user_to_group-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/34_gpasswd_remove_user_from_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/35_gpasswd_remove_user_from_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/36_gpasswd_remove_user_from_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/37_gpasswd_remove_user_from_group-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/38_gpasswd_remove_user_from_group-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/39_gpasswd_remove_user_from_group-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/40_gpasswd_remove_user_from_group-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/41_gpasswd_remove_user_from_group-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/gpasswd/42_gpasswd_remove_user_from_group-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/43_gpasswd_-r_locked_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/config.txt create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/44_gpasswd_-r_locked_gshadow/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/45_gpasswd_-r_unknown_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/config.txt create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/46_gpasswd_-a_unknown_user/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/config.txt create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/47_gpasswd_-M_unknown_user/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/48_gpasswd_change_admin_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/49_gpasswd_change_admin_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/50_gpasswd_change_admin_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/51_gpasswd_change_admin_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/52_gpasswd_change_admin_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/config.txt create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/53_gpasswd_change_admin_list/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/54_gpasswd_change_admin_list-no_shadow_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/55_gpasswd_change_admin_list-no_gshadow_file/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/config/etc/shadow create mode 100755 tests/tests/grouptools/gpasswd/56_gpasswd_add_user_to_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/config.txt create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/57_gpasswd_remove_user_from_group-not_member/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/config.txt create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/data/group create mode 100755 tests/tests/grouptools/gpasswd/58_gpasswd_remove_user_from_group-not_gshadow_member/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/config.txt create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/59_gpasswd_remove_user_from_group-not_group_member/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/config.txt create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/data/group create mode 100644 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/60_gpasswd_add_long_user_to_group/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/61_gpasswd_usage/config.txt create mode 100644 tests/tests/grouptools/gpasswd/61_gpasswd_usage/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/61_gpasswd_usage/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/61_gpasswd_usage/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/61_gpasswd_usage/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/61_gpasswd_usage/data/usage.out create mode 100755 tests/tests/grouptools/gpasswd/61_gpasswd_usage/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/config.txt create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/config/etc/default/useradd create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/data/gpasswd.err create mode 100755 tests/tests/grouptools/gpasswd/62_gpasswd_-A_unknown_user/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/config.txt create mode 100644 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/data/usage.out create mode 100755 tests/tests/grouptools/gpasswd/63_gpasswd_usage_bad_option/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/config.txt create mode 100644 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/data/usage.out create mode 100755 tests/tests/grouptools/gpasswd/64_gpasswd_usage-a-d/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/config.txt create mode 100644 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/data/usage.out create mode 100755 tests/tests/grouptools/gpasswd/65_gpasswd_usage_no_groups/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/config.txt create mode 100644 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/data/usage.out create mode 100755 tests/tests/grouptools/gpasswd/66_gpasswd_usage_2_groups/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/config.txt create mode 100644 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/config/etc/shadow create mode 100755 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/67_gpasswd-A_myuser/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/config.txt create mode 100644 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/config/etc/shadow create mode 100755 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/68_gpasswd-M_myuser/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/config.txt create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/69_gpasswd_change_passwd_2_tries/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/config.txt create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/70_gpasswd_change_passwd_3_tries/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/config.txt create mode 100644 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/config/etc/login.defs create mode 100644 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/config/etc/shadow create mode 100755 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/gpasswd.exp create mode 100755 tests/tests/grouptools/gpasswd/71_gpasswd_change_passwd_4_tries/gpasswd.test create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/config.txt create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/config/etc/group create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/config/etc/gshadow create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/config/etc/passwd create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/config/etc/shadow create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/data/group create mode 100644 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/data/gshadow create mode 100755 tests/tests/grouptools/gpasswd/72_gpasswd-M-A/gpasswd.test create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config.txt create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/data/group create mode 100644 tests/tests/grouptools/groupadd/01_groupadd_add_group/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/01_groupadd_add_group/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config.txt create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/data/group create mode 100644 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/02_groupadd_add_group_GID_MIN/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config.txt create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/data/group create mode 100644 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/03_groupadd_add_group_-K_GID_MIN/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config.txt create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/data/group create mode 100644 tests/tests/grouptools/groupadd/04_groupadd_set_password/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/04_groupadd_set_password/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/data/group create mode 100644 tests/tests/grouptools/groupadd/05_groupadd_set_GID/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/05_groupadd_set_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config.txt create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupadd/06_groupadd_-f_add_existing_group/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/data/group create mode 100644 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/07_groupadd_-f_add_existing_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/config.txt create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/08_groupadd_locked_group/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/08_groupadd_locked_group/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/config.txt create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/09_groupadd_locked_gshadow/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/data/group create mode 100644 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/10_groupadd_-o_add_existing_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/11_groupadd_invalid_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/12_groupadd_negative_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/config.txt create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/13_groupadd_invalid_name/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/config.txt create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/14_groupadd_invalid_-K_option/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/config.txt create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/15_groupadd_invalid_-K_no_=/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/config.txt create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/16_groupadd_existing_group/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/16_groupadd_existing_group/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config.txt create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/data/group create mode 100644 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/data/gshadow create mode 100755 tests/tests/grouptools/groupadd/17_groupadd_add_systemgroup/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/18_groupadd_no_more_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/19_groupadd_-r_no_more_system_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/config.txt create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/20_groupadd_add_existing_GID/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/config.txt create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/21_groupadd_invalid_GID_4294967295/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/config.txt create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/22_groupadd_usage/data/usage.out create mode 100755 tests/tests/grouptools/groupadd/22_groupadd_usage/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/config.txt create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/23_groupadd_no_groups/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/23_groupadd_no_groups/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/config.txt create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/24_groupadd_2_groups/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/24_groupadd_2_groups/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config.txt create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/data/group create mode 100755 tests/tests/grouptools/groupadd/25_groupadd_no_gshadow/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/config.txt create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/26_groupadd_-o_without_-g/groupadd.test create mode 100644 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/config.txt create mode 100644 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/config/etc/group create mode 100644 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/config/etc/passwd create mode 100644 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/config/etc/shadow create mode 100644 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/data/groupadd.err create mode 100755 tests/tests/grouptools/groupadd/27_groupadd_invalid_option/groupadd.test create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config.txt create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/data/group create mode 100644 tests/tests/grouptools/groupdel/01_groupdel_delete_group/data/gshadow create mode 100755 tests/tests/grouptools/groupdel/01_groupdel_delete_group/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/data/group create mode 100755 tests/tests/grouptools/groupdel/02_groupdel_delete_group_no_gshadow_group/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupdel/03_groupdel_delete_group_no_gshadow_file/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config.txt create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/04_groupdel_delete_group_error_busy_group/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config.txt create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/05_groupdel_delete_group_error_unknown_group/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config.txt create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/06_groupdel_delete_group_error_locked_group/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config.txt create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/07_groupdel_delete_group_error_locked_gshadow/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config.txt create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/08_groupdel_delete_group_error_no_group_parameter/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config.txt create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/09_groupdel_delete_group_error_two_group_parameter/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config.txt create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/10_groupdel_usage/data/usage.out create mode 100755 tests/tests/grouptools/groupdel/10_groupdel_usage/groupdel.test create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config.txt create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config/etc/group create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config/etc/passwd create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/config/etc/shadow create mode 100644 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/data/groupdel.err create mode 100755 tests/tests/grouptools/groupdel/11_groupdel_invalid_option/groupdel.test create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/data/group create mode 100644 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/01_groupmems_root_add_user/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/data/group create mode 100644 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/02_groupmems_root_del_user/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/03_groupmems_root_del_user_admin/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/data/group create mode 100644 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/04_groupmems_root_del_user_admin_and_user/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/data/group create mode 100644 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/05_groupmems_root_add_user_with_other_users/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/06_groupmems_root_add_user_with_other_users_admin/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/data/group create mode 100644 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/07_groupmems_root_del_user_with_other_users/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/08_groupmems_root_del_user_with_other_users_admin/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/data/group create mode 100644 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/09_groupmems_root_purge_user/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/data/group create mode 100644 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/10_groupmems_root_purge_user_with_other_users/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/11_groupmems_root_purge_user_with_other_users_admin/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/data/group create mode 100644 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/12_groupmems_user_add_user/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/data/group create mode 100644 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/13_groupmems_user_del_user/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/14_groupmems_user_del_user_admin/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/data/group create mode 100644 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/15_groupmems_user_del_user_admin_and_user/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/data/group create mode 100644 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/16_groupmems_user_add_user_with_other_users/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/17_groupmems_user_add_user_with_other_users_admin/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/data/group create mode 100644 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/18_groupmems_user_del_user_with_other_users/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/19_groupmems_user_del_user_with_other_users_admin/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/config.txt create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/data/group create mode 100644 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/20_groupmems_user_purge_user/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/data/group create mode 100644 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/21_groupmems_user_purge_user_with_other_users/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/config.txt create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/data/group create mode 100644 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/22_groupmems_user_purge_user_with_other_users_admin/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/config.txt create mode 100644 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/23_groupmems_user_add_user-not_in_groups/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/24_groupmems_user_add_user-not_primary_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/25_groupmems_user_add_user-not_user_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/config.txt create mode 100644 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/26_groupmems_user_add_user-already_member/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/27_groupmems_user_add_user-already_member_in_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/config.txt create mode 100644 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/data/group create mode 100755 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/28_groupmems_user_add_user-already_member_in_gshadow/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/config.txt create mode 100644 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/29_groupmems_user_add_user-user_does_not_exist/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/data/group create mode 100644 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/30_groupmems_user_add_user-no_gshadow_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/31_groupmems_user_add_user-no_gshadow_file/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/config.txt create mode 100644 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/32_groupmems_user_del_user-not_member/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/config.txt create mode 100644 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/data/group create mode 100755 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/33_groupmems_user_del_user-not_member_in_gshadow/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/config.txt create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/data/group create mode 100644 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/34_groupmems_user_del_user-user_does_not_exist/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/data/group create mode 100644 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/35_groupmems_user_del_user-no_gshadow_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/36_groupmems_user_del_user-no_gshadow_file/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/37_groupmems_user_purge_user-empty_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/data/group create mode 100644 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/38_groupmems_user_purge_user-no_gshadow_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/39_groupmems_user_purge_user-no_gshadow_file/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/40_groupmems_user_del_user-not_primary_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/41_groupmems_user_purge_user-not_primary_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/config.txt create mode 100644 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/42_groupmems_user_list_users/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/config.txt create mode 100644 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/43_groupmems_user_list_users-gshadow_ignored/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/config.txt create mode 100644 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/44_groupmems_user_list_users-another_group/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/45_groupmems_user_list_users-group_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/46_groupmems_user_list_users-gshadow_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/47_groupmems_user_add_user-group_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/48_groupmems_user_add_user-gshadow_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/49_groupmems_user_del_user-group_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/50_groupmems_user_del_user-gshadow_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/51_groupmems_user_purge_user-group_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/config.txt create mode 100644 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/52_groupmems_user_purge_user-gshadow_locked/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/53_groupmems_usage/config.txt create mode 100644 tests/tests/grouptools/groupmems/53_groupmems_usage/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/53_groupmems_usage/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/53_groupmems_usage/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/53_groupmems_usage/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/53_groupmems_usage/data/usage.out create mode 100755 tests/tests/grouptools/groupmems/53_groupmems_usage/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/config.txt create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/data/groupmems.err create mode 100755 tests/tests/grouptools/groupmems/54_groupmems_usage_invalid_option/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/config.txt create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/data/groupmems.err create mode 100755 tests/tests/grouptools/groupmems/55_groupmems_usage-a-d/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/config.txt create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/data/groupmems.err create mode 100755 tests/tests/grouptools/groupmems/56_groupmems_usage_extra_arg/groupmems.test create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config.txt create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/pam.d/common-account create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/pam.d/common-auth create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/pam.d/groupmems create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/data/group create mode 100644 tests/tests/grouptools/groupmems/57_groupmems_authentication/data/gshadow create mode 100755 tests/tests/grouptools/groupmems/57_groupmems_authentication/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/57_groupmems_authentication/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config.txt create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/pam.d/common-account create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/pam.d/common-auth create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/pam.d/groupmems create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/58_groupmems_authentication_failure1/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config.txt create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/pam.d/common-account create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/pam.d/common-auth create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/pam.d/groupmems create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/59_groupmems_authentication_failure2/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config.txt create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config/etc/group create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config/etc/pam.d/groupmems create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config/etc/pam.d/other create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/groupmems.test create mode 100755 tests/tests/grouptools/groupmems/60_groupmems_authentication_failure3/run_groupmems.exp create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config.txt create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/01_groupmod_change_gid/data/group create mode 100755 tests/tests/grouptools/groupmod/01_groupmod_change_gid/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/data/group create mode 100644 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/data/passwd create mode 100755 tests/tests/grouptools/groupmod/02_groupmod_change_gid_change_primary_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/data/group create mode 100755 tests/tests/grouptools/groupmod/03_groupmod_change_gid_no_gshadow_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupmod/04_groupmod_change_gid_no_gshadow_file/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config.txt create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/data/group create mode 100755 tests/tests/grouptools/groupmod/05_groupmod_change_gid_-o_override_used_GID/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config.txt create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/data/group create mode 100644 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/06_groupmod_change_group_name/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/data/group create mode 100755 tests/tests/grouptools/groupmod/07_groupmod_change_group_name_no_gshadow_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupmod/08_groupmod_change_group_name_no_gshadow_file/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config.txt create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/09_groupmod_set_password/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/09_groupmod_set_password/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/10_groupmod_set_password_no_gshadow_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config.txt create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/data/group create mode 100755 tests/tests/grouptools/groupmod/11_groupmod_set_password_no_gshadow_file/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/12_groupmod_change_gid_error_unknown_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config.txt create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/13_groupmod_change_gid_error_used_GID/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config.txt create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/14_groupmod_change_group_name_error_used_name/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config.txt create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/15_groupmod_change_group_name_error_invalid_name/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config.txt create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmod/16_groupmod_change_group_name_no_changes/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/17_groupmod_change_gid_error_locked_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config.txt create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/data/group create mode 100755 tests/tests/grouptools/groupmod/18_groupmod_change_gid_no_error_locked_gshadow/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config.txt create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/19_groupmod_change_gid_error_invalid_GID/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config.txt create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/20_groupmod_change_gid_error_negative_GID/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/21_groupmod_change_gid_error_no_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/data/group create mode 100644 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/22_groupmod_change_gid_and_group_name/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/data/group create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/data/gshadow create mode 100644 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/data/passwd create mode 100755 tests/tests/grouptools/groupmod/23_groupmod_change_gid_and_group_name_and_password/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/24_groupmod_change_gid_and_name_error_locked_gshadow/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/25_groupmod_change_gid_change_primary_group_error_locked_passwd/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/data/group create mode 100644 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/26_groupmod_change_group_name_no_error_locked_passwd/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config.txt create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/27_groupmod_change_gid_error_GID_4294967295/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/config.txt create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/28_groupmod_usage/data/usage.out create mode 100755 tests/tests/grouptools/groupmod/28_groupmod_usage/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config.txt create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/data/group create mode 100644 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/29_groupmod_-g_same_gid_new_name/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config.txt create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmod/30_groupmod_-g_same_gid_same_name/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config.txt create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/config/etc/shadow create mode 100755 tests/tests/grouptools/groupmod/31_groupmod_-g_same_gid/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/config.txt create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/32_groupmod_-o_without_-g/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config.txt create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/data/group create mode 100755 tests/tests/grouptools/groupmod/33_groupmod_set_password_no_gshadow_file_with_group_pwd_x/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config.txt create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/data/group create mode 100644 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/34_groupmod_set_password_group_without_shadow_pwd/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/data/group create mode 100755 tests/tests/grouptools/groupmod/35_groupmod_set_password_group_without_shadow_pwd_no_gshadow_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config.txt create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/data/gshadow create mode 100755 tests/tests/grouptools/groupmod/36_groupmod_set_password_group_with_shadow_pwd_no_gshadow_group/groupmod.test create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/config.txt create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/config/etc/group create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/config/etc/gshadow create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/config/etc/login.defs create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/config/etc/passwd create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/config/etc/shadow create mode 100644 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/data/groupmod.err create mode 100755 tests/tests/grouptools/groupmod/37_groupmod_invalid_option/groupmod.test create mode 100644 tests/tests/libsubid/01_list_ranges/config.txt create mode 100644 tests/tests/libsubid/01_list_ranges/config/etc/subgid create mode 100644 tests/tests/libsubid/01_list_ranges/config/etc/subuid create mode 100755 tests/tests/libsubid/01_list_ranges/list_ranges.test create mode 100644 tests/tests/libsubid/02_get_subid_owners/config.txt create mode 100644 tests/tests/libsubid/02_get_subid_owners/config/etc/passwd create mode 100644 tests/tests/libsubid/02_get_subid_owners/config/etc/subgid create mode 100644 tests/tests/libsubid/02_get_subid_owners/config/etc/subuid create mode 100755 tests/tests/libsubid/02_get_subid_owners/get_subid_owners.test create mode 100755 tests/tests/libsubid/03_add_remove/add_remove_subids.test create mode 100644 tests/tests/libsubid/03_add_remove/config.txt create mode 100644 tests/tests/libsubid/03_add_remove/config/etc/passwd create mode 100644 tests/tests/libsubid/03_add_remove/config/etc/subgid create mode 100644 tests/tests/libsubid/03_add_remove/config/etc/subuid create mode 100644 tests/tests/libsubid/04_nss/Makefile create mode 100644 tests/tests/libsubid/04_nss/empty create mode 100644 tests/tests/libsubid/04_nss/libsubid_zzz.c create mode 100644 tests/tests/libsubid/04_nss/nsswitch1.conf create mode 100644 tests/tests/libsubid/04_nss/nsswitch2.conf create mode 100644 tests/tests/libsubid/04_nss/nsswitch3.conf create mode 100755 tests/tests/libsubid/04_nss/subidnss.test create mode 100644 tests/tests/libsubid/04_nss/test_nss.c create mode 100755 tests/tests/libsubid/04_nss/test_range create mode 100644 tests/tests/log/faillog/01_faillog_no_faillog/config.txt create mode 100644 tests/tests/log/faillog/01_faillog_no_faillog/config/etc/group create mode 100644 tests/tests/log/faillog/01_faillog_no_faillog/config/etc/gshadow create mode 100644 tests/tests/log/faillog/01_faillog_no_faillog/config/etc/passwd create mode 100644 tests/tests/log/faillog/01_faillog_no_faillog/config/etc/shadow create mode 100644 tests/tests/log/faillog/01_faillog_no_faillog/data/faillog.err create mode 100755 tests/tests/log/faillog/01_faillog_no_faillog/faillog.test create mode 100644 tests/tests/log/faillog/02_faillog_usage/config.txt create mode 100644 tests/tests/log/faillog/02_faillog_usage/config/etc/group create mode 100644 tests/tests/log/faillog/02_faillog_usage/config/etc/gshadow create mode 100644 tests/tests/log/faillog/02_faillog_usage/config/etc/passwd create mode 100644 tests/tests/log/faillog/02_faillog_usage/config/etc/shadow create mode 100644 tests/tests/log/faillog/02_faillog_usage/data/usage.out create mode 100755 tests/tests/log/faillog/02_faillog_usage/faillog.test create mode 100644 tests/tests/log/faillog/03_faillog_format/config.txt create mode 100644 tests/tests/log/faillog/03_faillog_format/config/etc/group create mode 100644 tests/tests/log/faillog/03_faillog_format/config/etc/gshadow create mode 100644 tests/tests/log/faillog/03_faillog_format/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/03_faillog_format/config/etc/passwd create mode 100644 tests/tests/log/faillog/03_faillog_format/config/etc/shadow create mode 100644 tests/tests/log/faillog/03_faillog_format/data/faillog.out create mode 100644 tests/tests/log/faillog/03_faillog_format/data/lastlog.out create mode 100755 tests/tests/log/faillog/03_faillog_format/faillog.test create mode 100755 tests/tests/log/faillog/03_faillog_format/login.exp create mode 100644 tests/tests/log/faillog/04_faillog_multiple/config.txt create mode 100644 tests/tests/log/faillog/04_faillog_multiple/config/etc/group create mode 100644 tests/tests/log/faillog/04_faillog_multiple/config/etc/gshadow create mode 100644 tests/tests/log/faillog/04_faillog_multiple/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/04_faillog_multiple/config/etc/passwd create mode 100644 tests/tests/log/faillog/04_faillog_multiple/config/etc/shadow create mode 100644 tests/tests/log/faillog/04_faillog_multiple/data/faillog.list create mode 100755 tests/tests/log/faillog/04_faillog_multiple/faillog.test create mode 100755 tests/tests/log/faillog/04_faillog_multiple/login.exp create mode 100644 tests/tests/log/faillog/05_faillog-u_ID/config.txt create mode 100644 tests/tests/log/faillog/05_faillog-u_ID/config/etc/group create mode 100644 tests/tests/log/faillog/05_faillog-u_ID/config/etc/gshadow create mode 100644 tests/tests/log/faillog/05_faillog-u_ID/config/etc/passwd create mode 100644 tests/tests/log/faillog/05_faillog-u_ID/config/etc/shadow create mode 100644 tests/tests/log/faillog/05_faillog-u_ID/data/faillog.list create mode 100755 tests/tests/log/faillog/05_faillog-u_ID/faillog.test create mode 100644 tests/tests/log/faillog/06_faillog-u_name/config.txt create mode 100644 tests/tests/log/faillog/06_faillog-u_name/config/etc/group create mode 100644 tests/tests/log/faillog/06_faillog-u_name/config/etc/gshadow create mode 100644 tests/tests/log/faillog/06_faillog-u_name/config/etc/passwd create mode 100644 tests/tests/log/faillog/06_faillog-u_name/config/etc/shadow create mode 100644 tests/tests/log/faillog/06_faillog-u_name/data/faillog.list create mode 100755 tests/tests/log/faillog/06_faillog-u_name/faillog.test create mode 100644 tests/tests/log/faillog/07_faillog-u_ID_invalid/config.txt create mode 100644 tests/tests/log/faillog/07_faillog-u_ID_invalid/config/etc/group create mode 100644 tests/tests/log/faillog/07_faillog-u_ID_invalid/config/etc/gshadow create mode 100644 tests/tests/log/faillog/07_faillog-u_ID_invalid/config/etc/passwd create mode 100644 tests/tests/log/faillog/07_faillog-u_ID_invalid/config/etc/shadow create mode 100644 tests/tests/log/faillog/07_faillog-u_ID_invalid/data/faillog.list create mode 100755 tests/tests/log/faillog/07_faillog-u_ID_invalid/faillog.test create mode 100644 tests/tests/log/faillog/08_faillog-u_name_invalid/config.txt create mode 100644 tests/tests/log/faillog/08_faillog-u_name_invalid/config/etc/group create mode 100644 tests/tests/log/faillog/08_faillog-u_name_invalid/config/etc/gshadow create mode 100644 tests/tests/log/faillog/08_faillog-u_name_invalid/config/etc/passwd create mode 100644 tests/tests/log/faillog/08_faillog-u_name_invalid/config/etc/shadow create mode 100644 tests/tests/log/faillog/08_faillog-u_name_invalid/data/faillog.err create mode 100755 tests/tests/log/faillog/08_faillog-u_name_invalid/faillog.test create mode 100644 tests/tests/log/faillog/09_faillog-u_range/config.txt create mode 100644 tests/tests/log/faillog/09_faillog-u_range/config/etc/group create mode 100644 tests/tests/log/faillog/09_faillog-u_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/09_faillog-u_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/09_faillog-u_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/09_faillog-u_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/09_faillog-u_range/data/faillog.list create mode 100755 tests/tests/log/faillog/09_faillog-u_range/faillog.test create mode 100755 tests/tests/log/faillog/09_faillog-u_range/login.exp create mode 100644 tests/tests/log/faillog/10_faillog-u_open_range/config.txt create mode 100644 tests/tests/log/faillog/10_faillog-u_open_range/config/etc/group create mode 100644 tests/tests/log/faillog/10_faillog-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/10_faillog-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/10_faillog-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/10_faillog-u_open_range/data/faillog.list create mode 100755 tests/tests/log/faillog/10_faillog-u_open_range/faillog.test create mode 100644 tests/tests/log/faillog/11_faillog-u_range_open/config.txt create mode 100644 tests/tests/log/faillog/11_faillog-u_range_open/config/etc/group create mode 100644 tests/tests/log/faillog/11_faillog-u_range_open/config/etc/gshadow create mode 100644 tests/tests/log/faillog/11_faillog-u_range_open/config/etc/passwd create mode 100644 tests/tests/log/faillog/11_faillog-u_range_open/config/etc/shadow create mode 100644 tests/tests/log/faillog/11_faillog-u_range_open/data/faillog.list create mode 100755 tests/tests/log/faillog/11_faillog-u_range_open/faillog.test create mode 100644 tests/tests/log/faillog/12_faillog-u_range_invalid1/config.txt create mode 100644 tests/tests/log/faillog/12_faillog-u_range_invalid1/config/etc/group create mode 100644 tests/tests/log/faillog/12_faillog-u_range_invalid1/config/etc/gshadow create mode 100644 tests/tests/log/faillog/12_faillog-u_range_invalid1/config/etc/passwd create mode 100644 tests/tests/log/faillog/12_faillog-u_range_invalid1/config/etc/shadow create mode 100644 tests/tests/log/faillog/12_faillog-u_range_invalid1/data/faillog.err create mode 100755 tests/tests/log/faillog/12_faillog-u_range_invalid1/faillog.test create mode 100644 tests/tests/log/faillog/13_faillog-u_range_invalid2/config.txt create mode 100644 tests/tests/log/faillog/13_faillog-u_range_invalid2/config/etc/group create mode 100644 tests/tests/log/faillog/13_faillog-u_range_invalid2/config/etc/gshadow create mode 100644 tests/tests/log/faillog/13_faillog-u_range_invalid2/config/etc/passwd create mode 100644 tests/tests/log/faillog/13_faillog-u_range_invalid2/config/etc/shadow create mode 100644 tests/tests/log/faillog/13_faillog-u_range_invalid2/data/faillog.err create mode 100755 tests/tests/log/faillog/13_faillog-u_range_invalid2/faillog.test create mode 100644 tests/tests/log/faillog/14_faillog-u_range_invalid3/config.txt create mode 100644 tests/tests/log/faillog/14_faillog-u_range_invalid3/config/etc/group create mode 100644 tests/tests/log/faillog/14_faillog-u_range_invalid3/config/etc/gshadow create mode 100644 tests/tests/log/faillog/14_faillog-u_range_invalid3/config/etc/passwd create mode 100644 tests/tests/log/faillog/14_faillog-u_range_invalid3/config/etc/shadow create mode 100644 tests/tests/log/faillog/14_faillog-u_range_invalid3/data/faillog.err create mode 100755 tests/tests/log/faillog/14_faillog-u_range_invalid3/faillog.test create mode 100644 tests/tests/log/faillog/15_faillog_bad_option/config.txt create mode 100644 tests/tests/log/faillog/15_faillog_bad_option/config/etc/group create mode 100644 tests/tests/log/faillog/15_faillog_bad_option/config/etc/gshadow create mode 100644 tests/tests/log/faillog/15_faillog_bad_option/config/etc/passwd create mode 100644 tests/tests/log/faillog/15_faillog_bad_option/config/etc/shadow create mode 100644 tests/tests/log/faillog/15_faillog_bad_option/data/usage.out create mode 100755 tests/tests/log/faillog/15_faillog_bad_option/faillog.test create mode 100644 tests/tests/log/faillog/16_faillog_extra_arg/config.txt create mode 100644 tests/tests/log/faillog/16_faillog_extra_arg/config/etc/group create mode 100644 tests/tests/log/faillog/16_faillog_extra_arg/config/etc/gshadow create mode 100644 tests/tests/log/faillog/16_faillog_extra_arg/config/etc/passwd create mode 100644 tests/tests/log/faillog/16_faillog_extra_arg/config/etc/shadow create mode 100644 tests/tests/log/faillog/16_faillog_extra_arg/data/usage.out create mode 100755 tests/tests/log/faillog/16_faillog_extra_arg/faillog.test create mode 100644 tests/tests/log/faillog/17_faillog-t/config.txt create mode 100644 tests/tests/log/faillog/17_faillog-t/config/etc/group create mode 100644 tests/tests/log/faillog/17_faillog-t/config/etc/gshadow create mode 100644 tests/tests/log/faillog/17_faillog-t/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/17_faillog-t/config/etc/passwd create mode 100644 tests/tests/log/faillog/17_faillog-t/config/etc/shadow create mode 100644 tests/tests/log/faillog/17_faillog-t/data/faillog.list create mode 100755 tests/tests/log/faillog/17_faillog-t/faillog.test create mode 100755 tests/tests/log/faillog/17_faillog-t/login.exp create mode 100644 tests/tests/log/faillog/18_faillog-t_invalid/config.txt create mode 100644 tests/tests/log/faillog/18_faillog-t_invalid/config/etc/group create mode 100644 tests/tests/log/faillog/18_faillog-t_invalid/config/etc/gshadow create mode 100644 tests/tests/log/faillog/18_faillog-t_invalid/config/etc/passwd create mode 100644 tests/tests/log/faillog/18_faillog-t_invalid/config/etc/shadow create mode 100644 tests/tests/log/faillog/18_faillog-t_invalid/data/faillog.err create mode 100755 tests/tests/log/faillog/18_faillog-t_invalid/faillog.test create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/config.txt create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/config/etc/group create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/19_faillog_multiple_same_user/data/faillog.list create mode 100755 tests/tests/log/faillog/19_faillog_multiple_same_user/faillog.test create mode 100755 tests/tests/log/faillog/19_faillog_multiple_same_user/login.exp create mode 100644 tests/tests/log/faillog/20_faillog-r-u/config.txt create mode 100644 tests/tests/log/faillog/20_faillog-r-u/config/etc/group create mode 100644 tests/tests/log/faillog/20_faillog-r-u/config/etc/gshadow create mode 100644 tests/tests/log/faillog/20_faillog-r-u/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/20_faillog-r-u/config/etc/passwd create mode 100644 tests/tests/log/faillog/20_faillog-r-u/config/etc/shadow create mode 100644 tests/tests/log/faillog/20_faillog-r-u/data/faillog.list create mode 100755 tests/tests/log/faillog/20_faillog-r-u/faillog.test create mode 100755 tests/tests/log/faillog/20_faillog-r-u/login.exp create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/config.txt create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/config/etc/group create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/21_faillog-r-u_range/data/faillog.list create mode 100755 tests/tests/log/faillog/21_faillog-r-u_range/faillog.test create mode 100755 tests/tests/log/faillog/21_faillog-r-u_range/login.exp create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/config.txt create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/22_faillog_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/22_faillog_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/22_faillog_removed_user/login.exp create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/config.txt create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/23_faillog-a_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/23_faillog-a_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/23_faillog-a_removed_user/login.exp create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/config.txt create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/24_faillog-u_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/24_faillog-u_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/24_faillog-u_removed_user/login.exp create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/config.txt create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/25_faillog-r-u_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/25_faillog-r-u_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/25_faillog-r-u_removed_user/login.exp create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/config.txt create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/26_faillog-r-u_range_removed_user/login.exp create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/config.txt create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/27_faillog-r-a-u_range_removed_user/login.exp create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/config.txt create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/28_faillog-r-a-u_open_range_removed_user/login.exp create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/config.txt create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/config/etc/group create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/data/faillog.list create mode 100755 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/faillog.test create mode 100755 tests/tests/log/faillog/29_faillog-r-a-u_range_open_removed_user/login.exp create mode 100644 tests/tests/log/faillog/30_faillog-r/config.txt create mode 100644 tests/tests/log/faillog/30_faillog-r/config/etc/group create mode 100644 tests/tests/log/faillog/30_faillog-r/config/etc/gshadow create mode 100644 tests/tests/log/faillog/30_faillog-r/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/30_faillog-r/config/etc/passwd create mode 100644 tests/tests/log/faillog/30_faillog-r/config/etc/shadow create mode 100644 tests/tests/log/faillog/30_faillog-r/data/faillog.list create mode 100755 tests/tests/log/faillog/30_faillog-r/faillog.test create mode 100755 tests/tests/log/faillog/30_faillog-r/login.exp create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/config.txt create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/config/etc/group create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/31_faillog-r-u_open_range/data/faillog.list create mode 100755 tests/tests/log/faillog/31_faillog-r-u_open_range/faillog.test create mode 100755 tests/tests/log/faillog/31_faillog-r-u_open_range/login.exp create mode 100644 tests/tests/log/faillog/32_faillog-l/config.txt create mode 100644 tests/tests/log/faillog/32_faillog-l/config/etc/group create mode 100644 tests/tests/log/faillog/32_faillog-l/config/etc/gshadow create mode 100644 tests/tests/log/faillog/32_faillog-l/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/32_faillog-l/config/etc/passwd create mode 100644 tests/tests/log/faillog/32_faillog-l/config/etc/shadow create mode 100644 tests/tests/log/faillog/32_faillog-l/data/faillog.list create mode 100755 tests/tests/log/faillog/32_faillog-l/faillog.test create mode 100755 tests/tests/log/faillog/32_faillog-l/login.exp create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/config.txt create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/config/etc/group create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/33_faillog-l-u_user/data/faillog.list create mode 100755 tests/tests/log/faillog/33_faillog-l-u_user/faillog.test create mode 100755 tests/tests/log/faillog/33_faillog-l-u_user/login.exp create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/config.txt create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/config/etc/group create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/34_faillog-l-u_range/data/faillog.list create mode 100755 tests/tests/log/faillog/34_faillog-l-u_range/faillog.test create mode 100755 tests/tests/log/faillog/34_faillog-l-u_range/login.exp create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/config.txt create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/config/etc/group create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/35_faillog-l-u_open_range/data/faillog.list create mode 100755 tests/tests/log/faillog/35_faillog-l-u_open_range/faillog.test create mode 100755 tests/tests/log/faillog/35_faillog-l-u_open_range/login.exp create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/config.txt create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/config/etc/group create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/config/etc/gshadow create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/config/etc/passwd create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/config/etc/shadow create mode 100644 tests/tests/log/faillog/36_faillog-l-u_range_open/data/faillog.list create mode 100755 tests/tests/log/faillog/36_faillog-l-u_range_open/faillog.test create mode 100755 tests/tests/log/faillog/36_faillog-l-u_range_open/login.exp create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/config.txt create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/config/etc/group create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/37_faillog-l-a-u_user/data/faillog.list create mode 100755 tests/tests/log/faillog/37_faillog-l-a-u_user/faillog.test create mode 100755 tests/tests/log/faillog/37_faillog-l-a-u_user/login.exp create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/config.txt create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/config/etc/group create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/38_faillog-l-a-u_range/data/faillog.list create mode 100755 tests/tests/log/faillog/38_faillog-l-a-u_range/faillog.test create mode 100755 tests/tests/log/faillog/38_faillog-l-a-u_range/login.exp create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/config.txt create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/config/etc/group create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/39_faillog-l-a-u_open_range/data/faillog.list create mode 100755 tests/tests/log/faillog/39_faillog-l-a-u_open_range/faillog.test create mode 100755 tests/tests/log/faillog/39_faillog-l-a-u_open_range/login.exp create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/config.txt create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/config/etc/group create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/config/etc/gshadow create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/config/etc/passwd create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/config/etc/shadow create mode 100644 tests/tests/log/faillog/40_faillog-l-a-u_range_open/data/faillog.list create mode 100755 tests/tests/log/faillog/40_faillog-l-a-u_range_open/faillog.test create mode 100755 tests/tests/log/faillog/40_faillog-l-a-u_range_open/login.exp create mode 100644 tests/tests/log/faillog/41_faillog-l_invalid/config.txt create mode 100644 tests/tests/log/faillog/41_faillog-l_invalid/config/etc/group create mode 100644 tests/tests/log/faillog/41_faillog-l_invalid/config/etc/gshadow create mode 100644 tests/tests/log/faillog/41_faillog-l_invalid/config/etc/passwd create mode 100644 tests/tests/log/faillog/41_faillog-l_invalid/config/etc/shadow create mode 100644 tests/tests/log/faillog/41_faillog-l_invalid/data/faillog.err create mode 100755 tests/tests/log/faillog/41_faillog-l_invalid/faillog.test create mode 100644 tests/tests/log/faillog/42_faillog-m/config.txt create mode 100644 tests/tests/log/faillog/42_faillog-m/config/etc/group create mode 100644 tests/tests/log/faillog/42_faillog-m/config/etc/gshadow create mode 100644 tests/tests/log/faillog/42_faillog-m/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/42_faillog-m/config/etc/passwd create mode 100644 tests/tests/log/faillog/42_faillog-m/config/etc/shadow create mode 100644 tests/tests/log/faillog/42_faillog-m/data/faillog.list create mode 100755 tests/tests/log/faillog/42_faillog-m/faillog.test create mode 100755 tests/tests/log/faillog/42_faillog-m/login.exp create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/config.txt create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/config/etc/group create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/43_faillog-m-u_user/data/faillog.list create mode 100755 tests/tests/log/faillog/43_faillog-m-u_user/faillog.test create mode 100755 tests/tests/log/faillog/43_faillog-m-u_user/login.exp create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/config.txt create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/config/etc/group create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/44_faillog-m-u_range/data/faillog.list create mode 100755 tests/tests/log/faillog/44_faillog-m-u_range/faillog.test create mode 100755 tests/tests/log/faillog/44_faillog-m-u_range/login.exp create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/config.txt create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/config/etc/group create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/45_faillog-m-u_open_range/data/faillog.list create mode 100755 tests/tests/log/faillog/45_faillog-m-u_open_range/faillog.test create mode 100755 tests/tests/log/faillog/45_faillog-m-u_open_range/login.exp create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/config.txt create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/config/etc/group create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/config/etc/gshadow create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/config/etc/passwd create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/config/etc/shadow create mode 100644 tests/tests/log/faillog/46_faillog-m-u_range_open/data/faillog.list create mode 100755 tests/tests/log/faillog/46_faillog-m-u_range_open/faillog.test create mode 100755 tests/tests/log/faillog/46_faillog-m-u_range_open/login.exp create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/config.txt create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/config/etc/group create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/config/etc/gshadow create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/config/etc/passwd create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/config/etc/shadow create mode 100644 tests/tests/log/faillog/47_faillog-m-a-u_user/data/faillog.list create mode 100755 tests/tests/log/faillog/47_faillog-m-a-u_user/faillog.test create mode 100755 tests/tests/log/faillog/47_faillog-m-a-u_user/login.exp create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/config.txt create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/config/etc/group create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/48_faillog-m-a-u_range/data/faillog.list create mode 100755 tests/tests/log/faillog/48_faillog-m-a-u_range/faillog.test create mode 100755 tests/tests/log/faillog/48_faillog-m-a-u_range/login.exp create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/config.txt create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/config/etc/group create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/faillog/49_faillog-m-a-u_open_range/data/faillog.list create mode 100755 tests/tests/log/faillog/49_faillog-m-a-u_open_range/faillog.test create mode 100755 tests/tests/log/faillog/49_faillog-m-a-u_open_range/login.exp create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/config.txt create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/config/etc/group create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/config/etc/gshadow create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/config/etc/passwd create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/config/etc/shadow create mode 100644 tests/tests/log/faillog/50_faillog-m-a-u_range_open/data/faillog.list create mode 100755 tests/tests/log/faillog/50_faillog-m-a-u_range_open/faillog.test create mode 100755 tests/tests/log/faillog/50_faillog-m-a-u_range_open/login.exp create mode 100644 tests/tests/log/faillog/51_faillog-m_invalid/config.txt create mode 100644 tests/tests/log/faillog/51_faillog-m_invalid/config/etc/group create mode 100644 tests/tests/log/faillog/51_faillog-m_invalid/config/etc/gshadow create mode 100644 tests/tests/log/faillog/51_faillog-m_invalid/config/etc/passwd create mode 100644 tests/tests/log/faillog/51_faillog-m_invalid/config/etc/shadow create mode 100644 tests/tests/log/faillog/51_faillog-m_invalid/data/faillog.err create mode 100755 tests/tests/log/faillog/51_faillog-m_invalid/faillog.test create mode 100644 tests/tests/log/faillog/52_faillog-t-l_exclusive/config.txt create mode 100644 tests/tests/log/faillog/52_faillog-t-l_exclusive/config/etc/group create mode 100644 tests/tests/log/faillog/52_faillog-t-l_exclusive/config/etc/gshadow create mode 100644 tests/tests/log/faillog/52_faillog-t-l_exclusive/config/etc/passwd create mode 100644 tests/tests/log/faillog/52_faillog-t-l_exclusive/config/etc/shadow create mode 100644 tests/tests/log/faillog/52_faillog-t-l_exclusive/data/usage.out create mode 100755 tests/tests/log/faillog/52_faillog-t-l_exclusive/faillog.test create mode 100644 tests/tests/log/faillog/53_faillog-t-m_exclusive/config.txt create mode 100644 tests/tests/log/faillog/53_faillog-t-m_exclusive/config/etc/group create mode 100644 tests/tests/log/faillog/53_faillog-t-m_exclusive/config/etc/gshadow create mode 100644 tests/tests/log/faillog/53_faillog-t-m_exclusive/config/etc/passwd create mode 100644 tests/tests/log/faillog/53_faillog-t-m_exclusive/config/etc/shadow create mode 100644 tests/tests/log/faillog/53_faillog-t-m_exclusive/data/usage.out create mode 100755 tests/tests/log/faillog/53_faillog-t-m_exclusive/faillog.test create mode 100644 tests/tests/log/faillog/54_faillog-t-r_exclusive/config.txt create mode 100644 tests/tests/log/faillog/54_faillog-t-r_exclusive/config/etc/group create mode 100644 tests/tests/log/faillog/54_faillog-t-r_exclusive/config/etc/gshadow create mode 100644 tests/tests/log/faillog/54_faillog-t-r_exclusive/config/etc/passwd create mode 100644 tests/tests/log/faillog/54_faillog-t-r_exclusive/config/etc/shadow create mode 100644 tests/tests/log/faillog/54_faillog-t-r_exclusive/data/usage.out create mode 100755 tests/tests/log/faillog/54_faillog-t-r_exclusive/faillog.test create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/config.txt create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/config/etc/group create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/config/etc/gshadow create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/config/etc/passwd create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/config/etc/shadow create mode 100644 tests/tests/log/faillog/55_faillog_no_changes/data/faillog.stat create mode 100755 tests/tests/log/faillog/55_faillog_no_changes/faillog.test create mode 100755 tests/tests/log/faillog/55_faillog_no_changes/login.exp create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/config.txt create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/config/etc/group create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/config/etc/gshadow create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/config/etc/passwd create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/config/etc/shadow create mode 100644 tests/tests/log/faillog/56_faillog-l-m_empty_file/data/faillog.stat create mode 100755 tests/tests/log/faillog/56_faillog-l-m_empty_file/faillog.test create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/config.txt create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/config/etc/group create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/config/etc/gshadow create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/config/etc/passwd create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/config/etc/shadow create mode 100644 tests/tests/log/faillog/57_faillog-r_empty_file/data/faillog.stat create mode 100755 tests/tests/log/faillog/57_faillog-r_empty_file/faillog.test create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/config.txt create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/config/etc/group create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/config/etc/gshadow create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/config/etc/pam.d/login create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/config/etc/passwd create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/config/etc/shadow create mode 100644 tests/tests/log/faillog/58_faillog-l_no_failcount/data/faillog.list create mode 100755 tests/tests/log/faillog/58_faillog-l_no_failcount/faillog.test create mode 100755 tests/tests/log/faillog/58_faillog-l_no_failcount/login.exp create mode 100644 tests/tests/log/lastlog/01_lastlog_no_lastlog/config.txt create mode 100644 tests/tests/log/lastlog/01_lastlog_no_lastlog/config/etc/group create mode 100644 tests/tests/log/lastlog/01_lastlog_no_lastlog/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/01_lastlog_no_lastlog/config/etc/passwd create mode 100644 tests/tests/log/lastlog/01_lastlog_no_lastlog/config/etc/shadow create mode 100644 tests/tests/log/lastlog/01_lastlog_no_lastlog/data/lastlog.err create mode 100755 tests/tests/log/lastlog/01_lastlog_no_lastlog/lastlog.test create mode 100644 tests/tests/log/lastlog/02_lastlog_usage/config.txt create mode 100644 tests/tests/log/lastlog/02_lastlog_usage/config/etc/group create mode 100644 tests/tests/log/lastlog/02_lastlog_usage/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/02_lastlog_usage/config/etc/passwd create mode 100644 tests/tests/log/lastlog/02_lastlog_usage/config/etc/shadow create mode 100644 tests/tests/log/lastlog/02_lastlog_usage/data/usage.out create mode 100755 tests/tests/log/lastlog/02_lastlog_usage/lastlog.test create mode 100644 tests/tests/log/lastlog/03_lastlog_format/config.txt create mode 100644 tests/tests/log/lastlog/03_lastlog_format/config/etc/group create mode 100644 tests/tests/log/lastlog/03_lastlog_format/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/03_lastlog_format/config/etc/passwd create mode 100644 tests/tests/log/lastlog/03_lastlog_format/config/etc/shadow create mode 100644 tests/tests/log/lastlog/03_lastlog_format/data/lastlog.out create mode 100755 tests/tests/log/lastlog/03_lastlog_format/lastlog.test create mode 100755 tests/tests/log/lastlog/03_lastlog_format/login.exp create mode 100644 tests/tests/log/lastlog/04_lastlog_multiple/config.txt create mode 100644 tests/tests/log/lastlog/04_lastlog_multiple/config/etc/group create mode 100644 tests/tests/log/lastlog/04_lastlog_multiple/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/04_lastlog_multiple/config/etc/passwd create mode 100644 tests/tests/log/lastlog/04_lastlog_multiple/config/etc/shadow create mode 100644 tests/tests/log/lastlog/04_lastlog_multiple/data/lastlog.list create mode 100755 tests/tests/log/lastlog/04_lastlog_multiple/lastlog.test create mode 100755 tests/tests/log/lastlog/04_lastlog_multiple/login.exp create mode 100644 tests/tests/log/lastlog/05_lastlog-u_ID/config.txt create mode 100644 tests/tests/log/lastlog/05_lastlog-u_ID/config/etc/group create mode 100644 tests/tests/log/lastlog/05_lastlog-u_ID/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/05_lastlog-u_ID/config/etc/passwd create mode 100644 tests/tests/log/lastlog/05_lastlog-u_ID/config/etc/shadow create mode 100644 tests/tests/log/lastlog/05_lastlog-u_ID/data/lastlog.list create mode 100755 tests/tests/log/lastlog/05_lastlog-u_ID/lastlog.test create mode 100644 tests/tests/log/lastlog/06_lastlog-u_name/config.txt create mode 100644 tests/tests/log/lastlog/06_lastlog-u_name/config/etc/group create mode 100644 tests/tests/log/lastlog/06_lastlog-u_name/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/06_lastlog-u_name/config/etc/passwd create mode 100644 tests/tests/log/lastlog/06_lastlog-u_name/config/etc/shadow create mode 100644 tests/tests/log/lastlog/06_lastlog-u_name/data/lastlog.list create mode 100755 tests/tests/log/lastlog/06_lastlog-u_name/lastlog.test create mode 100644 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/config.txt create mode 100644 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/config/etc/group create mode 100644 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/config/etc/passwd create mode 100644 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/config/etc/shadow create mode 100644 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/data/lastlog.list create mode 100755 tests/tests/log/lastlog/07_lastlog-u_ID_invalid/lastlog.test create mode 100644 tests/tests/log/lastlog/08_lastlog-u_name_invalid/config.txt create mode 100644 tests/tests/log/lastlog/08_lastlog-u_name_invalid/config/etc/group create mode 100644 tests/tests/log/lastlog/08_lastlog-u_name_invalid/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/08_lastlog-u_name_invalid/config/etc/passwd create mode 100644 tests/tests/log/lastlog/08_lastlog-u_name_invalid/config/etc/shadow create mode 100644 tests/tests/log/lastlog/08_lastlog-u_name_invalid/data/lastlog.err create mode 100755 tests/tests/log/lastlog/08_lastlog-u_name_invalid/lastlog.test create mode 100644 tests/tests/log/lastlog/09_lastlog-u_range/config.txt create mode 100644 tests/tests/log/lastlog/09_lastlog-u_range/config/etc/group create mode 100644 tests/tests/log/lastlog/09_lastlog-u_range/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/09_lastlog-u_range/config/etc/passwd create mode 100644 tests/tests/log/lastlog/09_lastlog-u_range/config/etc/shadow create mode 100644 tests/tests/log/lastlog/09_lastlog-u_range/data/lastlog.list create mode 100755 tests/tests/log/lastlog/09_lastlog-u_range/lastlog.test create mode 100644 tests/tests/log/lastlog/10_lastlog-u_open_range/config.txt create mode 100644 tests/tests/log/lastlog/10_lastlog-u_open_range/config/etc/group create mode 100644 tests/tests/log/lastlog/10_lastlog-u_open_range/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/10_lastlog-u_open_range/config/etc/passwd create mode 100644 tests/tests/log/lastlog/10_lastlog-u_open_range/config/etc/shadow create mode 100644 tests/tests/log/lastlog/10_lastlog-u_open_range/data/lastlog.list create mode 100755 tests/tests/log/lastlog/10_lastlog-u_open_range/lastlog.test create mode 100644 tests/tests/log/lastlog/11_lastlog-u_range_open/config.txt create mode 100644 tests/tests/log/lastlog/11_lastlog-u_range_open/config/etc/group create mode 100644 tests/tests/log/lastlog/11_lastlog-u_range_open/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/11_lastlog-u_range_open/config/etc/passwd create mode 100644 tests/tests/log/lastlog/11_lastlog-u_range_open/config/etc/shadow create mode 100644 tests/tests/log/lastlog/11_lastlog-u_range_open/data/lastlog.list create mode 100755 tests/tests/log/lastlog/11_lastlog-u_range_open/lastlog.test create mode 100644 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/config.txt create mode 100644 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/config/etc/group create mode 100644 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/config/etc/passwd create mode 100644 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/config/etc/shadow create mode 100644 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/data/lastlog.err create mode 100755 tests/tests/log/lastlog/12_lastlog-u_range_invalid1/lastlog.test create mode 100644 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/config.txt create mode 100644 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/config/etc/group create mode 100644 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/config/etc/passwd create mode 100644 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/config/etc/shadow create mode 100644 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/data/lastlog.err create mode 100755 tests/tests/log/lastlog/13_lastlog-u_range_invalid2/lastlog.test create mode 100644 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/config.txt create mode 100644 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/config/etc/group create mode 100644 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/config/etc/passwd create mode 100644 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/config/etc/shadow create mode 100644 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/data/lastlog.err create mode 100755 tests/tests/log/lastlog/14_lastlog-u_range_invalid3/lastlog.test create mode 100644 tests/tests/log/lastlog/15_lastlog_bad_option/config.txt create mode 100644 tests/tests/log/lastlog/15_lastlog_bad_option/config/etc/group create mode 100644 tests/tests/log/lastlog/15_lastlog_bad_option/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/15_lastlog_bad_option/config/etc/passwd create mode 100644 tests/tests/log/lastlog/15_lastlog_bad_option/config/etc/shadow create mode 100644 tests/tests/log/lastlog/15_lastlog_bad_option/data/usage.out create mode 100755 tests/tests/log/lastlog/15_lastlog_bad_option/lastlog.test create mode 100644 tests/tests/log/lastlog/16_lastlog_extra_arg/config.txt create mode 100644 tests/tests/log/lastlog/16_lastlog_extra_arg/config/etc/group create mode 100644 tests/tests/log/lastlog/16_lastlog_extra_arg/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/16_lastlog_extra_arg/config/etc/passwd create mode 100644 tests/tests/log/lastlog/16_lastlog_extra_arg/config/etc/shadow create mode 100644 tests/tests/log/lastlog/16_lastlog_extra_arg/data/usage.out create mode 100755 tests/tests/log/lastlog/16_lastlog_extra_arg/lastlog.test create mode 100644 tests/tests/log/lastlog/17_lastlog-t/config.txt create mode 100644 tests/tests/log/lastlog/17_lastlog-t/config/etc/group create mode 100644 tests/tests/log/lastlog/17_lastlog-t/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/17_lastlog-t/config/etc/passwd create mode 100644 tests/tests/log/lastlog/17_lastlog-t/config/etc/shadow create mode 100644 tests/tests/log/lastlog/17_lastlog-t/data/lastlog.list create mode 100755 tests/tests/log/lastlog/17_lastlog-t/lastlog.test create mode 100755 tests/tests/log/lastlog/17_lastlog-t/login.exp create mode 100644 tests/tests/log/lastlog/18_lastlog-b/config.txt create mode 100644 tests/tests/log/lastlog/18_lastlog-b/config/etc/group create mode 100644 tests/tests/log/lastlog/18_lastlog-b/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/18_lastlog-b/config/etc/passwd create mode 100644 tests/tests/log/lastlog/18_lastlog-b/config/etc/shadow create mode 100644 tests/tests/log/lastlog/18_lastlog-b/data/lastlog.list create mode 100755 tests/tests/log/lastlog/18_lastlog-b/lastlog.test create mode 100755 tests/tests/log/lastlog/18_lastlog-b/login.exp create mode 100644 tests/tests/log/lastlog/19_lastlog-t_invalid/config.txt create mode 100644 tests/tests/log/lastlog/19_lastlog-t_invalid/config/etc/group create mode 100644 tests/tests/log/lastlog/19_lastlog-t_invalid/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/19_lastlog-t_invalid/config/etc/passwd create mode 100644 tests/tests/log/lastlog/19_lastlog-t_invalid/config/etc/shadow create mode 100644 tests/tests/log/lastlog/19_lastlog-t_invalid/data/lastlog.err create mode 100755 tests/tests/log/lastlog/19_lastlog-t_invalid/lastlog.test create mode 100644 tests/tests/log/lastlog/20_lastlog-b_invalid/config.txt create mode 100644 tests/tests/log/lastlog/20_lastlog-b_invalid/config/etc/group create mode 100644 tests/tests/log/lastlog/20_lastlog-b_invalid/config/etc/gshadow create mode 100644 tests/tests/log/lastlog/20_lastlog-b_invalid/config/etc/passwd create mode 100644 tests/tests/log/lastlog/20_lastlog-b_invalid/config/etc/shadow create mode 100644 tests/tests/log/lastlog/20_lastlog-b_invalid/data/lastlog.err create mode 100755 tests/tests/log/lastlog/20_lastlog-b_invalid/lastlog.test create mode 100644 tests/tests/login/01_login_prompt/config.txt create mode 100644 tests/tests/login/01_login_prompt/config/etc/group create mode 100644 tests/tests/login/01_login_prompt/config/etc/gshadow create mode 100644 tests/tests/login/01_login_prompt/config/etc/login.defs create mode 100644 tests/tests/login/01_login_prompt/config/etc/passwd create mode 100644 tests/tests/login/01_login_prompt/config/etc/shadow create mode 100755 tests/tests/login/01_login_prompt/login.exp create mode 100755 tests/tests/login/01_login_prompt/login.test create mode 100644 tests/tests/login/02_login_user/config.txt create mode 100644 tests/tests/login/02_login_user/config/etc/group create mode 100644 tests/tests/login/02_login_user/config/etc/gshadow create mode 100644 tests/tests/login/02_login_user/config/etc/login.defs create mode 100644 tests/tests/login/02_login_user/config/etc/passwd create mode 100644 tests/tests/login/02_login_user/config/etc/shadow create mode 100755 tests/tests/login/02_login_user/login.exp create mode 100755 tests/tests/login/02_login_user/login.test create mode 100644 tests/tests/login/03_login_check_tty/config.txt create mode 100644 tests/tests/login/03_login_check_tty/config/etc/group create mode 100644 tests/tests/login/03_login_check_tty/config/etc/gshadow create mode 100644 tests/tests/login/03_login_check_tty/config/etc/login.defs create mode 100644 tests/tests/login/03_login_check_tty/config/etc/passwd create mode 100644 tests/tests/login/03_login_check_tty/config/etc/shadow create mode 100755 tests/tests/login/03_login_check_tty/login.exp create mode 100755 tests/tests/login/03_login_check_tty/login.test create mode 100644 tests/tests/newgidmap/01_newgidmap/config.txt create mode 100644 tests/tests/newgidmap/01_newgidmap/config/etc/group create mode 100644 tests/tests/newgidmap/01_newgidmap/config/etc/login.defs create mode 100644 tests/tests/newgidmap/01_newgidmap/config/etc/passwd create mode 100644 tests/tests/newgidmap/01_newgidmap/config/etc/subgid create mode 100644 tests/tests/newgidmap/01_newgidmap/config/etc/subuid create mode 100644 tests/tests/newgidmap/01_newgidmap/data/gid_map create mode 100755 tests/tests/newgidmap/01_newgidmap/newgidmap.test create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/config.txt create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/config/etc/group create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/config/etc/login.defs create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/config/etc/passwd create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/config/etc/subgid create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/config/etc/subuid create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/data/gid_map create mode 100644 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/data/gid_map.bar create mode 100755 tests/tests/newgidmap/02_newgidmap_relaxed_gid_check/newgidmap.test create mode 100644 tests/tests/newuidmap/01_newuidmap/config.txt create mode 100644 tests/tests/newuidmap/01_newuidmap/config/etc/group create mode 100644 tests/tests/newuidmap/01_newuidmap/config/etc/login.defs create mode 100644 tests/tests/newuidmap/01_newuidmap/config/etc/passwd create mode 100644 tests/tests/newuidmap/01_newuidmap/config/etc/subgid create mode 100644 tests/tests/newuidmap/01_newuidmap/config/etc/subuid create mode 100644 tests/tests/newuidmap/01_newuidmap/data/uid_map create mode 100755 tests/tests/newuidmap/01_newuidmap/newuidmap.test create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/config.txt create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/config/etc/group create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/config/etc/login.defs create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/config/etc/passwd create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/config/etc/subgid create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/config/etc/subuid create mode 100644 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/data/uid_map create mode 100755 tests/tests/newuidmap/02_newuidmap_relaxed_gid_check/newuidmap.test create mode 100644 tests/tests/newusers/01_create_user/config.txt create mode 100644 tests/tests/newusers/01_create_user/config/etc/group create mode 100644 tests/tests/newusers/01_create_user/config/etc/gshadow create mode 100644 tests/tests/newusers/01_create_user/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/01_create_user/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/01_create_user/config/etc/passwd create mode 100644 tests/tests/newusers/01_create_user/config/etc/shadow create mode 100644 tests/tests/newusers/01_create_user/data/group create mode 100644 tests/tests/newusers/01_create_user/data/gshadow create mode 100644 tests/tests/newusers/01_create_user/data/newusers.list create mode 100644 tests/tests/newusers/01_create_user/data/passwd create mode 100644 tests/tests/newusers/01_create_user/data/shadow create mode 100755 tests/tests/newusers/01_create_user/newusers.test create mode 100644 tests/tests/newusers/02_update_password/config.txt create mode 100644 tests/tests/newusers/02_update_password/config/etc/group create mode 100644 tests/tests/newusers/02_update_password/config/etc/gshadow create mode 100644 tests/tests/newusers/02_update_password/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/02_update_password/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/02_update_password/config/etc/passwd create mode 100644 tests/tests/newusers/02_update_password/config/etc/shadow create mode 100644 tests/tests/newusers/02_update_password/data/newusers.list create mode 100644 tests/tests/newusers/02_update_password/data/shadow create mode 100755 tests/tests/newusers/02_update_password/newusers.test create mode 100644 tests/tests/newusers/03_no_update_pid/config.txt create mode 100644 tests/tests/newusers/03_no_update_pid/config/etc/group create mode 100644 tests/tests/newusers/03_no_update_pid/config/etc/gshadow create mode 100644 tests/tests/newusers/03_no_update_pid/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/03_no_update_pid/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/03_no_update_pid/config/etc/passwd create mode 100644 tests/tests/newusers/03_no_update_pid/config/etc/shadow create mode 100644 tests/tests/newusers/03_no_update_pid/data/newusers.list create mode 100644 tests/tests/newusers/03_no_update_pid/data/shadow create mode 100755 tests/tests/newusers/03_no_update_pid/newusers.test create mode 100644 tests/tests/newusers/04_no_update_gid/config.txt create mode 100644 tests/tests/newusers/04_no_update_gid/config/etc/group create mode 100644 tests/tests/newusers/04_no_update_gid/config/etc/gshadow create mode 100644 tests/tests/newusers/04_no_update_gid/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/04_no_update_gid/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/04_no_update_gid/config/etc/passwd create mode 100644 tests/tests/newusers/04_no_update_gid/config/etc/shadow create mode 100644 tests/tests/newusers/04_no_update_gid/data/newusers.list create mode 100644 tests/tests/newusers/04_no_update_gid/data/shadow create mode 100755 tests/tests/newusers/04_no_update_gid/newusers.test create mode 100644 tests/tests/newusers/05_create_user_pid/config.txt create mode 100644 tests/tests/newusers/05_create_user_pid/config/etc/group create mode 100644 tests/tests/newusers/05_create_user_pid/config/etc/gshadow create mode 100644 tests/tests/newusers/05_create_user_pid/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/05_create_user_pid/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/05_create_user_pid/config/etc/passwd create mode 100644 tests/tests/newusers/05_create_user_pid/config/etc/shadow create mode 100644 tests/tests/newusers/05_create_user_pid/data/group create mode 100644 tests/tests/newusers/05_create_user_pid/data/gshadow create mode 100644 tests/tests/newusers/05_create_user_pid/data/newusers.list create mode 100644 tests/tests/newusers/05_create_user_pid/data/passwd create mode 100644 tests/tests/newusers/05_create_user_pid/data/shadow create mode 100755 tests/tests/newusers/05_create_user_pid/newusers.test create mode 100644 tests/tests/newusers/06_create_user_gid/config.txt create mode 100644 tests/tests/newusers/06_create_user_gid/config/etc/group create mode 100644 tests/tests/newusers/06_create_user_gid/config/etc/gshadow create mode 100644 tests/tests/newusers/06_create_user_gid/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/06_create_user_gid/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/06_create_user_gid/config/etc/passwd create mode 100644 tests/tests/newusers/06_create_user_gid/config/etc/shadow create mode 100644 tests/tests/newusers/06_create_user_gid/data/group create mode 100644 tests/tests/newusers/06_create_user_gid/data/gshadow create mode 100644 tests/tests/newusers/06_create_user_gid/data/newusers.list create mode 100644 tests/tests/newusers/06_create_user_gid/data/passwd create mode 100644 tests/tests/newusers/06_create_user_gid/data/shadow create mode 100755 tests/tests/newusers/06_create_user_gid/newusers.test create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config.txt create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config/etc/group create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config/etc/gshadow create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config/etc/passwd create mode 100644 tests/tests/newusers/07_create_user_pid_gid/config/etc/shadow create mode 100644 tests/tests/newusers/07_create_user_pid_gid/data/group create mode 100644 tests/tests/newusers/07_create_user_pid_gid/data/gshadow create mode 100644 tests/tests/newusers/07_create_user_pid_gid/data/newusers.list create mode 100644 tests/tests/newusers/07_create_user_pid_gid/data/passwd create mode 100644 tests/tests/newusers/07_create_user_pid_gid/data/shadow create mode 100755 tests/tests/newusers/07_create_user_pid_gid/newusers.test create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config.txt create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config/etc/group create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config/etc/gshadow create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config/etc/passwd create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/config/etc/shadow create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/data/group create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/data/gshadow create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/data/newusers.list create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/data/passwd create mode 100644 tests/tests/newusers/08_create_user_pid_other-gid/data/shadow create mode 100755 tests/tests/newusers/08_create_user_pid_other-gid/newusers.test create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config.txt create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config/etc/group create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config/etc/gshadow create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config/etc/passwd create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/config/etc/shadow create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/data/group create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/data/gshadow create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/data/newusers.list create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/data/passwd create mode 100644 tests/tests/newusers/09_create_user_pid-as-user-bar/data/shadow create mode 100755 tests/tests/newusers/09_create_user_pid-as-user-bar/newusers.test create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config.txt create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config/etc/group create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config/etc/gshadow create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config/etc/passwd create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/config/etc/shadow create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/data/newusers.list create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/data/passwd create mode 100644 tests/tests/newusers/10_create_user_gid-as-group-bar/data/shadow create mode 100755 tests/tests/newusers/10_create_user_gid-as-group-bar/newusers.test create mode 100644 tests/tests/newusers/11_update_gecos/config.txt create mode 100644 tests/tests/newusers/11_update_gecos/config/etc/group create mode 100644 tests/tests/newusers/11_update_gecos/config/etc/gshadow create mode 100644 tests/tests/newusers/11_update_gecos/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/11_update_gecos/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/11_update_gecos/config/etc/passwd create mode 100644 tests/tests/newusers/11_update_gecos/config/etc/shadow create mode 100644 tests/tests/newusers/11_update_gecos/data/newusers.list create mode 100644 tests/tests/newusers/11_update_gecos/data/passwd create mode 100644 tests/tests/newusers/11_update_gecos/data/shadow create mode 100755 tests/tests/newusers/11_update_gecos/newusers.test create mode 100644 tests/tests/newusers/12_update_shell/config.txt create mode 100644 tests/tests/newusers/12_update_shell/config/etc/group create mode 100644 tests/tests/newusers/12_update_shell/config/etc/gshadow create mode 100644 tests/tests/newusers/12_update_shell/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/12_update_shell/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/12_update_shell/config/etc/passwd create mode 100644 tests/tests/newusers/12_update_shell/config/etc/shadow create mode 100644 tests/tests/newusers/12_update_shell/data/newusers.list create mode 100644 tests/tests/newusers/12_update_shell/data/passwd create mode 100644 tests/tests/newusers/12_update_shell/data/shadow create mode 100755 tests/tests/newusers/12_update_shell/newusers.test create mode 100644 tests/tests/newusers/13_create_user_new-home/config.txt create mode 100644 tests/tests/newusers/13_create_user_new-home/config/etc/group create mode 100644 tests/tests/newusers/13_create_user_new-home/config/etc/gshadow create mode 100644 tests/tests/newusers/13_create_user_new-home/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/13_create_user_new-home/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/13_create_user_new-home/config/etc/passwd create mode 100644 tests/tests/newusers/13_create_user_new-home/config/etc/shadow create mode 100644 tests/tests/newusers/13_create_user_new-home/data/group create mode 100644 tests/tests/newusers/13_create_user_new-home/data/gshadow create mode 100644 tests/tests/newusers/13_create_user_new-home/data/home_ls-a create mode 100644 tests/tests/newusers/13_create_user_new-home/data/newusers.list create mode 100644 tests/tests/newusers/13_create_user_new-home/data/passwd create mode 100644 tests/tests/newusers/13_create_user_new-home/data/shadow create mode 100755 tests/tests/newusers/13_create_user_new-home/newusers.test create mode 100644 tests/tests/newusers/14_create_user_existing-home/config.txt create mode 100644 tests/tests/newusers/14_create_user_existing-home/config/etc/group create mode 100644 tests/tests/newusers/14_create_user_existing-home/config/etc/gshadow create mode 100644 tests/tests/newusers/14_create_user_existing-home/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/14_create_user_existing-home/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/14_create_user_existing-home/config/etc/passwd create mode 100644 tests/tests/newusers/14_create_user_existing-home/config/etc/shadow create mode 100644 tests/tests/newusers/14_create_user_existing-home/data/group create mode 100644 tests/tests/newusers/14_create_user_existing-home/data/gshadow create mode 100644 tests/tests/newusers/14_create_user_existing-home/data/home_ls-a create mode 100644 tests/tests/newusers/14_create_user_existing-home/data/newusers.list create mode 100644 tests/tests/newusers/14_create_user_existing-home/data/passwd create mode 100644 tests/tests/newusers/14_create_user_existing-home/data/shadow create mode 100755 tests/tests/newusers/14_create_user_existing-home/newusers.test create mode 100644 tests/tests/newusers/15_update_new-home/config.txt create mode 100644 tests/tests/newusers/15_update_new-home/config/etc/group create mode 100644 tests/tests/newusers/15_update_new-home/config/etc/gshadow create mode 100644 tests/tests/newusers/15_update_new-home/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/15_update_new-home/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/15_update_new-home/config/etc/passwd create mode 100644 tests/tests/newusers/15_update_new-home/config/etc/shadow create mode 100644 tests/tests/newusers/15_update_new-home/data/home_ls-a create mode 100644 tests/tests/newusers/15_update_new-home/data/newusers.list create mode 100644 tests/tests/newusers/15_update_new-home/data/passwd create mode 100644 tests/tests/newusers/15_update_new-home/data/shadow create mode 100755 tests/tests/newusers/15_update_new-home/newusers.test create mode 100644 tests/tests/newusers/16_update_existing-home/config.txt create mode 100644 tests/tests/newusers/16_update_existing-home/config/etc/group create mode 100644 tests/tests/newusers/16_update_existing-home/config/etc/gshadow create mode 100644 tests/tests/newusers/16_update_existing-home/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/16_update_existing-home/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/16_update_existing-home/config/etc/passwd create mode 100644 tests/tests/newusers/16_update_existing-home/config/etc/shadow create mode 100644 tests/tests/newusers/16_update_existing-home/data/home_ls-a create mode 100644 tests/tests/newusers/16_update_existing-home/data/newusers.list create mode 100644 tests/tests/newusers/16_update_existing-home/data/passwd create mode 100644 tests/tests/newusers/16_update_existing-home/data/shadow create mode 100755 tests/tests/newusers/16_update_existing-home/newusers.test create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config.txt create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config/etc/group create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config/etc/gshadow create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config/etc/passwd create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/config/etc/shadow create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/data/group create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/data/gshadow create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/data/newusers.list create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/data/passwd create mode 100644 tests/tests/newusers/17_create_user_pid-already-used/data/shadow create mode 100755 tests/tests/newusers/17_create_user_pid-already-used/newusers.test create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config.txt create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config/etc/group create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config/etc/gshadow create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config/etc/passwd create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/config/etc/shadow create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/data/newusers.list create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/data/passwd create mode 100644 tests/tests/newusers/18_create_user_gid-already-used/data/shadow create mode 100755 tests/tests/newusers/18_create_user_gid-already-used/newusers.test create mode 100644 tests/tests/newusers/19_update_keep-old-home/config.txt create mode 100644 tests/tests/newusers/19_update_keep-old-home/config/etc/group create mode 100644 tests/tests/newusers/19_update_keep-old-home/config/etc/gshadow create mode 100644 tests/tests/newusers/19_update_keep-old-home/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/19_update_keep-old-home/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/19_update_keep-old-home/config/etc/passwd create mode 100644 tests/tests/newusers/19_update_keep-old-home/config/etc/shadow create mode 100644 tests/tests/newusers/19_update_keep-old-home/data/home_ls-a create mode 100644 tests/tests/newusers/19_update_keep-old-home/data/home_ls-a.old create mode 100644 tests/tests/newusers/19_update_keep-old-home/data/newusers.list create mode 100644 tests/tests/newusers/19_update_keep-old-home/data/passwd create mode 100644 tests/tests/newusers/19_update_keep-old-home/data/shadow create mode 100755 tests/tests/newusers/19_update_keep-old-home/newusers.test create mode 100644 tests/tests/newusers/20_multiple_users/config.txt create mode 100644 tests/tests/newusers/20_multiple_users/config/etc/group create mode 100644 tests/tests/newusers/20_multiple_users/config/etc/gshadow create mode 100644 tests/tests/newusers/20_multiple_users/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/20_multiple_users/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/20_multiple_users/config/etc/passwd create mode 100644 tests/tests/newusers/20_multiple_users/config/etc/shadow create mode 100644 tests/tests/newusers/20_multiple_users/data/group create mode 100644 tests/tests/newusers/20_multiple_users/data/gshadow create mode 100644 tests/tests/newusers/20_multiple_users/data/newusers.list create mode 100644 tests/tests/newusers/20_multiple_users/data/passwd create mode 100644 tests/tests/newusers/20_multiple_users/data/shadow create mode 100755 tests/tests/newusers/20_multiple_users/newusers.test create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config.txt create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config/etc/group create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config/etc/gshadow create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config/etc/passwd create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/config/etc/shadow create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/data/group create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/data/gshadow create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/data/newusers.list create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/data/passwd create mode 100644 tests/tests/newusers/21_create_user_UID_MAX/data/shadow create mode 100755 tests/tests/newusers/21_create_user_UID_MAX/newusers.test create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config.txt create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config/etc/group create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config/etc/gshadow create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config/etc/passwd create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/config/etc/shadow create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/data/group create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/data/gshadow create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/data/newusers.list create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/data/passwd create mode 100644 tests/tests/newusers/22_create_user_GID_MAX/data/shadow create mode 100755 tests/tests/newusers/22_create_user_GID_MAX/newusers.test create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/config.txt create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/config/etc/group create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/config/etc/gshadow create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/config/etc/passwd create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/config/etc/shadow create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/data/newusers.err create mode 100644 tests/tests/newusers/23_create_user_error_negative_UID/data/newusers.list create mode 100755 tests/tests/newusers/23_create_user_error_negative_UID/newusers.test create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/config.txt create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/config/etc/group create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/config/etc/gshadow create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/config/etc/passwd create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/config/etc/shadow create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/data/newusers.err create mode 100644 tests/tests/newusers/24_create_user_error_invalid_UID/data/newusers.list create mode 100755 tests/tests/newusers/24_create_user_error_invalid_UID/newusers.test create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/config.txt create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/config/etc/group create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/config/etc/gshadow create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/config/etc/login.defs create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/config/etc/passwd create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/config/etc/shadow create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/data/newusers.err create mode 100644 tests/tests/newusers/25_create_user_error_no_remaining_UID/data/newusers.list create mode 100755 tests/tests/newusers/25_create_user_error_no_remaining_UID/newusers.test create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/config.txt create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/config/etc/group create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/config/etc/gshadow create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/config/etc/login.defs create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/config/etc/passwd create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/config/etc/shadow create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/data/newusers.err create mode 100644 tests/tests/newusers/26_create_user_error_no_remaining_GID/data/newusers.list create mode 100755 tests/tests/newusers/26_create_user_error_no_remaining_GID/newusers.test create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/config.txt create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/config/etc/group create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/config/etc/gshadow create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/config/etc/passwd create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/config/etc/shadow create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/data/newusers.err create mode 100644 tests/tests/newusers/27_create_user_error_invalid_username/data/newusers.list create mode 100755 tests/tests/newusers/27_create_user_error_invalid_username/newusers.test create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/config.txt create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/config/etc/group create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/config/etc/gshadow create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/config/etc/passwd create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/config/etc/shadow create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/data/newusers.err create mode 100644 tests/tests/newusers/28_create_user_error_invalid_groupname/data/newusers.list create mode 100755 tests/tests/newusers/28_create_user_error_invalid_groupname/newusers.test create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/config.txt create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/config/etc/group create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/config/etc/gshadow create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/config/etc/passwd create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/config/etc/shadow create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/data/newusers.err create mode 100644 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/data/newusers.list create mode 100755 tests/tests/newusers/29_create_user_error_invalid_username_valid_groupname/newusers.test create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config.txt create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config/etc/group create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config/etc/gshadow create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config/etc/passwd create mode 100644 tests/tests/newusers/30_create_user_different_groupname/config/etc/shadow create mode 100644 tests/tests/newusers/30_create_user_different_groupname/data/group create mode 100644 tests/tests/newusers/30_create_user_different_groupname/data/gshadow create mode 100644 tests/tests/newusers/30_create_user_different_groupname/data/newusers.list create mode 100644 tests/tests/newusers/30_create_user_different_groupname/data/passwd create mode 100644 tests/tests/newusers/30_create_user_different_groupname/data/shadow create mode 100755 tests/tests/newusers/30_create_user_different_groupname/newusers.test create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/config.txt create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/config/etc/group create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/config/etc/gshadow create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/config/etc/passwd create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/config/etc/shadow create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/data/newusers.err create mode 100644 tests/tests/newusers/31_create_user_error_invalid_GID/data/newusers.list create mode 100755 tests/tests/newusers/31_create_user_error_invalid_GID/newusers.test create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/config.txt create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/config/etc/group create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/config/etc/gshadow create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/config/etc/passwd create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/config/etc/shadow create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/data/newusers.err create mode 100644 tests/tests/newusers/32_create_user_error_gshadow_group_exists/data/newusers.list create mode 100755 tests/tests/newusers/32_create_user_error_gshadow_group_exists/newusers.test create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config.txt create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config/etc/group create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config/etc/gshadow create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config/etc/passwd create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/config/etc/shadow create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/data/newusers.list create mode 100644 tests/tests/newusers/33_update_password_no_shadow_password/data/passwd create mode 100755 tests/tests/newusers/33_update_password_no_shadow_password/newusers.test create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config.txt create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config/etc/group create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config/etc/gshadow create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config/etc/passwd create mode 100644 tests/tests/newusers/34_update_password_no_shadow/config/etc/shadow create mode 100644 tests/tests/newusers/34_update_password_no_shadow/data/newusers.list create mode 100644 tests/tests/newusers/34_update_password_no_shadow/data/passwd create mode 100755 tests/tests/newusers/34_update_password_no_shadow/newusers.test create mode 100644 tests/tests/newusers/35_read_from_stdin/config.txt create mode 100644 tests/tests/newusers/35_read_from_stdin/config/etc/group create mode 100644 tests/tests/newusers/35_read_from_stdin/config/etc/gshadow create mode 100644 tests/tests/newusers/35_read_from_stdin/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/35_read_from_stdin/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/35_read_from_stdin/config/etc/passwd create mode 100644 tests/tests/newusers/35_read_from_stdin/config/etc/shadow create mode 100644 tests/tests/newusers/35_read_from_stdin/data/group create mode 100644 tests/tests/newusers/35_read_from_stdin/data/gshadow create mode 100644 tests/tests/newusers/35_read_from_stdin/data/newusers.list create mode 100644 tests/tests/newusers/35_read_from_stdin/data/passwd create mode 100644 tests/tests/newusers/35_read_from_stdin/data/shadow create mode 100755 tests/tests/newusers/35_read_from_stdin/newusers.test create mode 100644 tests/tests/newusers/36_create_user_encrypted/config.txt create mode 100644 tests/tests/newusers/36_create_user_encrypted/config/etc/group create mode 100644 tests/tests/newusers/36_create_user_encrypted/config/etc/gshadow create mode 100644 tests/tests/newusers/36_create_user_encrypted/config/etc/passwd create mode 100644 tests/tests/newusers/36_create_user_encrypted/config/etc/shadow create mode 100644 tests/tests/newusers/36_create_user_encrypted/data/group create mode 100644 tests/tests/newusers/36_create_user_encrypted/data/gshadow create mode 100644 tests/tests/newusers/36_create_user_encrypted/data/newusers.list create mode 100644 tests/tests/newusers/36_create_user_encrypted/data/passwd create mode 100644 tests/tests/newusers/36_create_user_encrypted/data/shadow create mode 100755 tests/tests/newusers/36_create_user_encrypted/newusers.test create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config.txt create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config/etc/group create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config/etc/gshadow create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config/etc/passwd create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/config/etc/shadow create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/data/group create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/data/gshadow create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/data/newusers.list create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/data/passwd create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/data/shadow create mode 100755 tests/tests/newusers/37_create_user_encrypt_MD5-PAM/newusers.test create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/config.txt create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/config/etc/group create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/config/etc/gshadow create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/config/etc/passwd create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/config/etc/shadow create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/data/group create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/data/gshadow create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/data/newusers.list create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/data/passwd create mode 100644 tests/tests/newusers/37_create_user_encrypt_MD5/data/shadow create mode 100755 tests/tests/newusers/37_create_user_encrypt_MD5/newusers.test create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/config.txt create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/config/etc/group create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/config/etc/gshadow create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/config/etc/passwd create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/config/etc/shadow create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/data/newusers.list create mode 100644 tests/tests/newusers/38_update_password_no_shadow_encrypted/data/passwd create mode 100755 tests/tests/newusers/38_update_password_no_shadow_encrypted/newusers.test create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/config.txt create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/config/etc/group create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/config/etc/gshadow create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/config/etc/passwd create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/config/etc/shadow create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/data/newusers.list create mode 100644 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/data/passwd create mode 100755 tests/tests/newusers/39_update_password_no_shadow_password_encrypted/newusers.test create mode 100644 tests/tests/newusers/40_update_password_encrypted/config.txt create mode 100644 tests/tests/newusers/40_update_password_encrypted/config/etc/group create mode 100644 tests/tests/newusers/40_update_password_encrypted/config/etc/gshadow create mode 100644 tests/tests/newusers/40_update_password_encrypted/config/etc/passwd create mode 100644 tests/tests/newusers/40_update_password_encrypted/config/etc/shadow create mode 100644 tests/tests/newusers/40_update_password_encrypted/data/newusers.list create mode 100644 tests/tests/newusers/40_update_password_encrypted/data/shadow create mode 100755 tests/tests/newusers/40_update_password_encrypted/newusers.test create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config.txt create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config/etc/group create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config/etc/gshadow create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config/etc/passwd create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/config/etc/shadow create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/data/group create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/data/gshadow create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/data/newusers.list create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/data/passwd create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/data/shadow create mode 100755 tests/tests/newusers/41_create_user_encrypt_SHA256-PAM/newusers.test create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/config.txt create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/config/etc/group create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/config/etc/gshadow create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/config/etc/passwd create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/config/etc/shadow create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/data/group create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/data/gshadow create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/data/newusers.list create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/data/passwd create mode 100644 tests/tests/newusers/41_create_user_encrypt_SHA256/data/shadow create mode 100755 tests/tests/newusers/41_create_user_encrypt_SHA256/newusers.test create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config.txt create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config/etc/group create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config/etc/gshadow create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config/etc/passwd create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/config/etc/shadow create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/data/group create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/data/gshadow create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/data/newusers.list create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/data/passwd create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/data/shadow create mode 100755 tests/tests/newusers/42_create_user_encrypt_SHA512-PAM/newusers.test create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/config.txt create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/config/etc/group create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/config/etc/gshadow create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/config/etc/passwd create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/config/etc/shadow create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/data/group create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/data/gshadow create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/data/newusers.list create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/data/passwd create mode 100644 tests/tests/newusers/42_create_user_encrypt_SHA512/data/shadow create mode 100755 tests/tests/newusers/42_create_user_encrypt_SHA512/newusers.test create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config.txt create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config/etc/group create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config/etc/gshadow create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config/etc/passwd create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/config/etc/shadow create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/data/group create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/data/gshadow create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/data/newusers.list create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/data/passwd create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/data/shadow create mode 100755 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000-PAM/newusers.test create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/config.txt create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/config/etc/group create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/config/etc/gshadow create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/config/etc/passwd create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/config/etc/shadow create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/data/group create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/data/gshadow create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/data/newusers.list create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/data/passwd create mode 100644 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/data/shadow create mode 100755 tests/tests/newusers/43_create_user_encrypt_SHA256_rounds_3000/newusers.test create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config.txt create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config/etc/group create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config/etc/gshadow create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config/etc/passwd create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/config/etc/shadow create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/data/group create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/data/gshadow create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/data/newusers.list create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/data/passwd create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/data/shadow create mode 100755 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300-PAM/newusers.test create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/config.txt create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/config/etc/group create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/config/etc/gshadow create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/config/etc/passwd create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/config/etc/shadow create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/data/group create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/data/gshadow create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/data/newusers.list create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/data/passwd create mode 100644 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/data/shadow create mode 100755 tests/tests/newusers/44_create_user_encrypt_SHA256_rounds_300/newusers.test create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/config.txt create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/config/etc/group create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/config/etc/gshadow create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/config/etc/passwd create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/config/etc/shadow create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/data/newusers.err create mode 100644 tests/tests/newusers/45_create_user_encrypt_rounds_3000/data/newusers.list create mode 100755 tests/tests/newusers/45_create_user_encrypt_rounds_3000/newusers.test create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/config.txt create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/config/etc/group create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/config/etc/gshadow create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/config/etc/passwd create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/config/etc/shadow create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/data/group create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/data/gshadow create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/data/newusers.list create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/data/passwd create mode 100644 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/data/shadow create mode 100755 tests/tests/newusers/46_create_user_encrypt_MD5_ignore_rounds_3000/newusers.test create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/config.txt create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/config/etc/group create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/config/etc/gshadow create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/config/etc/passwd create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/config/etc/shadow create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/data/newusers.err create mode 100644 tests/tests/newusers/47_create_user_error_UID_4294967295/data/newusers.list create mode 100755 tests/tests/newusers/47_create_user_error_UID_4294967295/newusers.test create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/config.txt create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/config/etc/group create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/config/etc/gshadow create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/config/etc/passwd create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/config/etc/shadow create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/data/newusers.err create mode 100644 tests/tests/newusers/48_create_user_error_GID_4294967295/data/newusers.list create mode 100755 tests/tests/newusers/48_create_user_error_GID_4294967295/newusers.test create mode 100644 tests/tests/newusers/49_multiple_system_users/config.txt create mode 100644 tests/tests/newusers/49_multiple_system_users/config/etc/group create mode 100644 tests/tests/newusers/49_multiple_system_users/config/etc/gshadow create mode 100644 tests/tests/newusers/49_multiple_system_users/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/49_multiple_system_users/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/49_multiple_system_users/config/etc/passwd create mode 100644 tests/tests/newusers/49_multiple_system_users/config/etc/shadow create mode 100644 tests/tests/newusers/49_multiple_system_users/data/group create mode 100644 tests/tests/newusers/49_multiple_system_users/data/gshadow create mode 100644 tests/tests/newusers/49_multiple_system_users/data/newusers.list create mode 100644 tests/tests/newusers/49_multiple_system_users/data/passwd create mode 100644 tests/tests/newusers/49_multiple_system_users/data/shadow create mode 100755 tests/tests/newusers/49_multiple_system_users/newusers.test create mode 100644 tests/tests/newusers/50_usage/config.txt create mode 100644 tests/tests/newusers/50_usage/config/etc/group create mode 100644 tests/tests/newusers/50_usage/config/etc/gshadow create mode 100644 tests/tests/newusers/50_usage/config/etc/passwd create mode 100644 tests/tests/newusers/50_usage/config/etc/shadow create mode 100644 tests/tests/newusers/50_usage/data/usage.out create mode 100755 tests/tests/newusers/50_usage/newusers.test create mode 100644 tests/tests/newusers/51_usage_invalid_option/config.txt create mode 100644 tests/tests/newusers/51_usage_invalid_option/config/etc/group create mode 100644 tests/tests/newusers/51_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/newusers/51_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/newusers/51_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/newusers/51_usage_invalid_option/data/usage.out create mode 100755 tests/tests/newusers/51_usage_invalid_option/newusers.test create mode 100644 tests/tests/newusers/52_usage_2_input_files/config.txt create mode 100644 tests/tests/newusers/52_usage_2_input_files/config/etc/group create mode 100644 tests/tests/newusers/52_usage_2_input_files/config/etc/gshadow create mode 100644 tests/tests/newusers/52_usage_2_input_files/config/etc/passwd create mode 100644 tests/tests/newusers/52_usage_2_input_files/config/etc/shadow create mode 100644 tests/tests/newusers/52_usage_2_input_files/data/usage.out create mode 100755 tests/tests/newusers/52_usage_2_input_files/newusers.test create mode 100644 tests/tests/newusers/53_locked_passwd/config.txt create mode 100644 tests/tests/newusers/53_locked_passwd/config/etc/group create mode 100644 tests/tests/newusers/53_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/newusers/53_locked_passwd/config/etc/passwd create mode 100644 tests/tests/newusers/53_locked_passwd/config/etc/shadow create mode 100644 tests/tests/newusers/53_locked_passwd/data/newusers.list create mode 100644 tests/tests/newusers/53_locked_passwd/data/usage.out create mode 100755 tests/tests/newusers/53_locked_passwd/newusers.test create mode 100644 tests/tests/newusers/54_locked_shadow/config.txt create mode 100644 tests/tests/newusers/54_locked_shadow/config/etc/group create mode 100644 tests/tests/newusers/54_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/newusers/54_locked_shadow/config/etc/passwd create mode 100644 tests/tests/newusers/54_locked_shadow/config/etc/shadow create mode 100644 tests/tests/newusers/54_locked_shadow/data/newusers.list create mode 100644 tests/tests/newusers/54_locked_shadow/data/usage.out create mode 100755 tests/tests/newusers/54_locked_shadow/newusers.test create mode 100644 tests/tests/newusers/55_locked_group/config.txt create mode 100644 tests/tests/newusers/55_locked_group/config/etc/group create mode 100644 tests/tests/newusers/55_locked_group/config/etc/gshadow create mode 100644 tests/tests/newusers/55_locked_group/config/etc/passwd create mode 100644 tests/tests/newusers/55_locked_group/config/etc/shadow create mode 100644 tests/tests/newusers/55_locked_group/data/newusers.list create mode 100644 tests/tests/newusers/55_locked_group/data/usage.out create mode 100755 tests/tests/newusers/55_locked_group/newusers.test create mode 100644 tests/tests/newusers/56_locked_gshadow/config.txt create mode 100644 tests/tests/newusers/56_locked_gshadow/config/etc/group create mode 100644 tests/tests/newusers/56_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/newusers/56_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/newusers/56_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/newusers/56_locked_gshadow/data/newusers.list create mode 100644 tests/tests/newusers/56_locked_gshadow/data/usage.out create mode 100755 tests/tests/newusers/56_locked_gshadow/newusers.test create mode 100644 tests/tests/newusers/57_missing_input_file/config.txt create mode 100644 tests/tests/newusers/57_missing_input_file/config/etc/group create mode 100644 tests/tests/newusers/57_missing_input_file/config/etc/gshadow create mode 100644 tests/tests/newusers/57_missing_input_file/config/etc/passwd create mode 100644 tests/tests/newusers/57_missing_input_file/config/etc/shadow create mode 100644 tests/tests/newusers/57_missing_input_file/data/usage.out create mode 100755 tests/tests/newusers/57_missing_input_file/newusers.test create mode 100644 tests/tests/newusers/58_invalid_input_file/config.txt create mode 100644 tests/tests/newusers/58_invalid_input_file/config/etc/group create mode 100644 tests/tests/newusers/58_invalid_input_file/config/etc/gshadow create mode 100644 tests/tests/newusers/58_invalid_input_file/config/etc/passwd create mode 100644 tests/tests/newusers/58_invalid_input_file/config/etc/shadow create mode 100644 tests/tests/newusers/58_invalid_input_file/data/newusers.err create mode 100644 tests/tests/newusers/58_invalid_input_file/data/newusers.list create mode 100755 tests/tests/newusers/58_invalid_input_file/newusers.test create mode 100644 tests/tests/newusers/59_no_gshadow_file/config.txt create mode 100644 tests/tests/newusers/59_no_gshadow_file/config/etc/group create mode 100644 tests/tests/newusers/59_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/newusers/59_no_gshadow_file/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/59_no_gshadow_file/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/59_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/newusers/59_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/newusers/59_no_gshadow_file/data/group create mode 100644 tests/tests/newusers/59_no_gshadow_file/data/newusers.list create mode 100644 tests/tests/newusers/59_no_gshadow_file/data/passwd create mode 100644 tests/tests/newusers/59_no_gshadow_file/data/shadow create mode 100755 tests/tests/newusers/59_no_gshadow_file/newusers.test create mode 100644 tests/tests/newusers/60_update_no_gecos/config.txt create mode 100644 tests/tests/newusers/60_update_no_gecos/config/etc/group create mode 100644 tests/tests/newusers/60_update_no_gecos/config/etc/gshadow create mode 100644 tests/tests/newusers/60_update_no_gecos/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/60_update_no_gecos/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/60_update_no_gecos/config/etc/passwd create mode 100644 tests/tests/newusers/60_update_no_gecos/config/etc/shadow create mode 100644 tests/tests/newusers/60_update_no_gecos/data/newusers.list create mode 100644 tests/tests/newusers/60_update_no_gecos/data/passwd create mode 100644 tests/tests/newusers/60_update_no_gecos/data/shadow create mode 100755 tests/tests/newusers/60_update_no_gecos/newusers.test create mode 100644 tests/tests/newusers/61_update_no_shell/config.txt create mode 100644 tests/tests/newusers/61_update_no_shell/config/etc/group create mode 100644 tests/tests/newusers/61_update_no_shell/config/etc/gshadow create mode 100644 tests/tests/newusers/61_update_no_shell/config/etc/pam.d/common-password create mode 100644 tests/tests/newusers/61_update_no_shell/config/etc/pam.d/newusers create mode 100644 tests/tests/newusers/61_update_no_shell/config/etc/passwd create mode 100644 tests/tests/newusers/61_update_no_shell/config/etc/shadow create mode 100644 tests/tests/newusers/61_update_no_shell/data/newusers.list create mode 100644 tests/tests/newusers/61_update_no_shell/data/passwd create mode 100644 tests/tests/newusers/61_update_no_shell/data/shadow create mode 100755 tests/tests/newusers/61_update_no_shell/newusers.test create mode 100644 tests/tests/passwd/01_passwd_-S_root_locked_account/config/etc/group create mode 100644 tests/tests/passwd/01_passwd_-S_root_locked_account/config/etc/gshadow create mode 100644 tests/tests/passwd/01_passwd_-S_root_locked_account/config/etc/passwd create mode 100644 tests/tests/passwd/01_passwd_-S_root_locked_account/config/etc/shadow create mode 100644 tests/tests/passwd/01_passwd_-S_root_locked_account/data/passwd.out create mode 100755 tests/tests/passwd/01_passwd_-S_root_locked_account/passwd.test create mode 100644 tests/tests/passwd/02_passwd_-S_root_valid_account/config/etc/group create mode 100644 tests/tests/passwd/02_passwd_-S_root_valid_account/config/etc/gshadow create mode 100644 tests/tests/passwd/02_passwd_-S_root_valid_account/config/etc/passwd create mode 100644 tests/tests/passwd/02_passwd_-S_root_valid_account/config/etc/shadow create mode 100644 tests/tests/passwd/02_passwd_-S_root_valid_account/data/passwd.out create mode 100755 tests/tests/passwd/02_passwd_-S_root_valid_account/passwd.test create mode 100644 tests/tests/passwd/03_passwd_-S_root_empty_password/config/etc/group create mode 100644 tests/tests/passwd/03_passwd_-S_root_empty_password/config/etc/gshadow create mode 100644 tests/tests/passwd/03_passwd_-S_root_empty_password/config/etc/passwd create mode 100644 tests/tests/passwd/03_passwd_-S_root_empty_password/config/etc/shadow create mode 100644 tests/tests/passwd/03_passwd_-S_root_empty_password/data/passwd.out create mode 100755 tests/tests/passwd/03_passwd_-S_root_empty_password/passwd.test create mode 100644 tests/tests/passwd/04_passwd_-S_root_valid_account_no_shadow_file/config/etc/group create mode 100644 tests/tests/passwd/04_passwd_-S_root_valid_account_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/passwd/04_passwd_-S_root_valid_account_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/passwd/04_passwd_-S_root_valid_account_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/passwd/04_passwd_-S_root_valid_account_no_shadow_file/data/passwd.out create mode 100755 tests/tests/passwd/04_passwd_-S_root_valid_account_no_shadow_file/passwd.test create mode 100644 tests/tests/passwd/05_passwd_-S_root_valid_account_no_shadow_entry/config/etc/group create mode 100644 tests/tests/passwd/05_passwd_-S_root_valid_account_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/passwd/05_passwd_-S_root_valid_account_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/passwd/05_passwd_-S_root_valid_account_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/passwd/05_passwd_-S_root_valid_account_no_shadow_entry/data/passwd.out create mode 100755 tests/tests/passwd/05_passwd_-S_root_valid_account_no_shadow_entry/passwd.test create mode 100644 tests/tests/passwd/06_passwd_-l_root_lock_account/config/etc/group create mode 100644 tests/tests/passwd/06_passwd_-l_root_lock_account/config/etc/gshadow create mode 100644 tests/tests/passwd/06_passwd_-l_root_lock_account/config/etc/passwd create mode 100644 tests/tests/passwd/06_passwd_-l_root_lock_account/config/etc/shadow create mode 100644 tests/tests/passwd/06_passwd_-l_root_lock_account/data/passwd.out create mode 100644 tests/tests/passwd/06_passwd_-l_root_lock_account/data/shadow create mode 100755 tests/tests/passwd/06_passwd_-l_root_lock_account/passwd.test create mode 100644 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/config/etc/group create mode 100644 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/data/passwd create mode 100644 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/data/passwd.out create mode 100755 tests/tests/passwd/07_passwd_-l_root_lock_account_no_shadow_entry/passwd.test create mode 100644 tests/tests/passwd/08_passwd_-u_root_unlock_account/config/etc/group create mode 100644 tests/tests/passwd/08_passwd_-u_root_unlock_account/config/etc/gshadow create mode 100644 tests/tests/passwd/08_passwd_-u_root_unlock_account/config/etc/passwd create mode 100644 tests/tests/passwd/08_passwd_-u_root_unlock_account/config/etc/shadow create mode 100644 tests/tests/passwd/08_passwd_-u_root_unlock_account/data/passwd.out create mode 100644 tests/tests/passwd/08_passwd_-u_root_unlock_account/data/shadow create mode 100755 tests/tests/passwd/08_passwd_-u_root_unlock_account/passwd.test create mode 100644 tests/tests/passwd/09_passwd_-u_root_unlock_to_empty/config/etc/group create mode 100644 tests/tests/passwd/09_passwd_-u_root_unlock_to_empty/config/etc/gshadow create mode 100644 tests/tests/passwd/09_passwd_-u_root_unlock_to_empty/config/etc/passwd create mode 100644 tests/tests/passwd/09_passwd_-u_root_unlock_to_empty/config/etc/shadow create mode 100644 tests/tests/passwd/09_passwd_-u_root_unlock_to_empty/data/passwd.err create mode 100755 tests/tests/passwd/09_passwd_-u_root_unlock_to_empty/passwd.test create mode 100644 tests/tests/passwd/10_passwd_-d_root/config/etc/group create mode 100644 tests/tests/passwd/10_passwd_-d_root/config/etc/gshadow create mode 100644 tests/tests/passwd/10_passwd_-d_root/config/etc/passwd create mode 100644 tests/tests/passwd/10_passwd_-d_root/config/etc/shadow create mode 100644 tests/tests/passwd/10_passwd_-d_root/data/passwd.out create mode 100644 tests/tests/passwd/10_passwd_-d_root/data/shadow create mode 100755 tests/tests/passwd/10_passwd_-d_root/passwd.test create mode 100644 tests/tests/passwd/11_passwd_--mindays_root/config/etc/group create mode 100644 tests/tests/passwd/11_passwd_--mindays_root/config/etc/gshadow create mode 100644 tests/tests/passwd/11_passwd_--mindays_root/config/etc/passwd create mode 100644 tests/tests/passwd/11_passwd_--mindays_root/config/etc/shadow create mode 100644 tests/tests/passwd/11_passwd_--mindays_root/data/passwd.out create mode 100644 tests/tests/passwd/11_passwd_--mindays_root/data/shadow create mode 100755 tests/tests/passwd/11_passwd_--mindays_root/passwd.test create mode 100644 tests/tests/passwd/12_passwd_--maxdays_root/config/etc/group create mode 100644 tests/tests/passwd/12_passwd_--maxdays_root/config/etc/gshadow create mode 100644 tests/tests/passwd/12_passwd_--maxdays_root/config/etc/passwd create mode 100644 tests/tests/passwd/12_passwd_--maxdays_root/config/etc/shadow create mode 100644 tests/tests/passwd/12_passwd_--maxdays_root/data/passwd.out create mode 100644 tests/tests/passwd/12_passwd_--maxdays_root/data/shadow create mode 100755 tests/tests/passwd/12_passwd_--maxdays_root/passwd.test create mode 100644 tests/tests/passwd/13_passwd_--warndays_root/config/etc/group create mode 100644 tests/tests/passwd/13_passwd_--warndays_root/config/etc/gshadow create mode 100644 tests/tests/passwd/13_passwd_--warndays_root/config/etc/passwd create mode 100644 tests/tests/passwd/13_passwd_--warndays_root/config/etc/shadow create mode 100644 tests/tests/passwd/13_passwd_--warndays_root/data/passwd.out create mode 100644 tests/tests/passwd/13_passwd_--warndays_root/data/shadow create mode 100755 tests/tests/passwd/13_passwd_--warndays_root/passwd.test create mode 100644 tests/tests/passwd/14_passwd_--inactive_root/config/etc/group create mode 100644 tests/tests/passwd/14_passwd_--inactive_root/config/etc/gshadow create mode 100644 tests/tests/passwd/14_passwd_--inactive_root/config/etc/passwd create mode 100644 tests/tests/passwd/14_passwd_--inactive_root/config/etc/shadow create mode 100644 tests/tests/passwd/14_passwd_--inactive_root/data/passwd.out create mode 100644 tests/tests/passwd/14_passwd_--inactive_root/data/shadow create mode 100755 tests/tests/passwd/14_passwd_--inactive_root/passwd.test create mode 100644 tests/tests/passwd/15_passwd_--expire_root/config/etc/group create mode 100644 tests/tests/passwd/15_passwd_--expire_root/config/etc/gshadow create mode 100644 tests/tests/passwd/15_passwd_--expire_root/config/etc/passwd create mode 100644 tests/tests/passwd/15_passwd_--expire_root/config/etc/shadow create mode 100644 tests/tests/passwd/15_passwd_--expire_root/data/passwd.out create mode 100644 tests/tests/passwd/15_passwd_--expire_root/data/shadow create mode 100755 tests/tests/passwd/15_passwd_--expire_root/passwd.test create mode 100644 tests/tests/passwd/16_passwd_-S-a_root/config/etc/group create mode 100644 tests/tests/passwd/16_passwd_-S-a_root/config/etc/gshadow create mode 100644 tests/tests/passwd/16_passwd_-S-a_root/config/etc/passwd create mode 100644 tests/tests/passwd/16_passwd_-S-a_root/config/etc/shadow create mode 100644 tests/tests/passwd/16_passwd_-S-a_root/data/passwd.out create mode 100755 tests/tests/passwd/16_passwd_-S-a_root/passwd.test create mode 100644 tests/tests/passwd/17_passwd_root_change_password/config/etc/group create mode 100644 tests/tests/passwd/17_passwd_root_change_password/config/etc/gshadow create mode 100644 tests/tests/passwd/17_passwd_root_change_password/config/etc/pam.d/common-password create mode 100644 tests/tests/passwd/17_passwd_root_change_password/config/etc/passwd create mode 100644 tests/tests/passwd/17_passwd_root_change_password/config/etc/shadow create mode 100644 tests/tests/passwd/17_passwd_root_change_password/data/shadow create mode 100755 tests/tests/passwd/17_passwd_root_change_password/passwd.exp create mode 100755 tests/tests/passwd/17_passwd_root_change_password/passwd.test create mode 100644 tests/tests/passwd/18_passwd_root_change_password_user/config/etc/group create mode 100644 tests/tests/passwd/18_passwd_root_change_password_user/config/etc/gshadow create mode 100644 tests/tests/passwd/18_passwd_root_change_password_user/config/etc/pam.d/common-password create mode 100644 tests/tests/passwd/18_passwd_root_change_password_user/config/etc/passwd create mode 100644 tests/tests/passwd/18_passwd_root_change_password_user/config/etc/shadow create mode 100644 tests/tests/passwd/18_passwd_root_change_password_user/data/shadow create mode 100755 tests/tests/passwd/18_passwd_root_change_password_user/passwd.exp create mode 100755 tests/tests/passwd/18_passwd_root_change_password_user/passwd.test create mode 100644 tests/tests/passwd/19_passwd_user_change_password/config/etc/group create mode 100644 tests/tests/passwd/19_passwd_user_change_password/config/etc/gshadow create mode 100644 tests/tests/passwd/19_passwd_user_change_password/config/etc/pam.d/common-password create mode 100644 tests/tests/passwd/19_passwd_user_change_password/config/etc/passwd create mode 100644 tests/tests/passwd/19_passwd_user_change_password/config/etc/shadow create mode 100644 tests/tests/passwd/19_passwd_user_change_password/data/shadow create mode 100755 tests/tests/passwd/19_passwd_user_change_password/passwd.exp create mode 100755 tests/tests/passwd/19_passwd_user_change_password/passwd.test create mode 100644 tests/tests/passwd/20_passwd_user_change_password_same_user/config/etc/group create mode 100644 tests/tests/passwd/20_passwd_user_change_password_same_user/config/etc/gshadow create mode 100644 tests/tests/passwd/20_passwd_user_change_password_same_user/config/etc/pam.d/common-password create mode 100644 tests/tests/passwd/20_passwd_user_change_password_same_user/config/etc/passwd create mode 100644 tests/tests/passwd/20_passwd_user_change_password_same_user/config/etc/shadow create mode 100644 tests/tests/passwd/20_passwd_user_change_password_same_user/data/shadow create mode 100755 tests/tests/passwd/20_passwd_user_change_password_same_user/passwd.exp create mode 100755 tests/tests/passwd/20_passwd_user_change_password_same_user/passwd.test create mode 100644 tests/tests/passwd/21_passwd_user_change_password_other_user/config/etc/group create mode 100644 tests/tests/passwd/21_passwd_user_change_password_other_user/config/etc/gshadow create mode 100644 tests/tests/passwd/21_passwd_user_change_password_other_user/config/etc/passwd create mode 100644 tests/tests/passwd/21_passwd_user_change_password_other_user/config/etc/shadow create mode 100644 tests/tests/passwd/21_passwd_user_change_password_other_user/data/passwd.err create mode 100755 tests/tests/passwd/21_passwd_user_change_password_other_user/passwd.test create mode 100644 tests/tests/passwd/22_passwd_usage/config.txt create mode 100644 tests/tests/passwd/22_passwd_usage/config/etc/group create mode 100644 tests/tests/passwd/22_passwd_usage/config/etc/gshadow create mode 100644 tests/tests/passwd/22_passwd_usage/config/etc/passwd create mode 100644 tests/tests/passwd/22_passwd_usage/config/etc/shadow create mode 100644 tests/tests/passwd/22_passwd_usage/data/usage.out create mode 100755 tests/tests/passwd/22_passwd_usage/passwd.test create mode 100755 tests/tests/run_all create mode 100755 tests/tests/run_all.coverage create mode 100755 tests/tests/run_some create mode 100644 tests/tests/split_groups/01_useradd_split_group/config.txt create mode 100644 tests/tests/split_groups/01_useradd_split_group/config/etc/default/useradd create mode 100644 tests/tests/split_groups/01_useradd_split_group/config/etc/group create mode 100644 tests/tests/split_groups/01_useradd_split_group/config/etc/gshadow create mode 100644 tests/tests/split_groups/01_useradd_split_group/config/etc/login.defs create mode 100644 tests/tests/split_groups/01_useradd_split_group/config/etc/passwd create mode 100644 tests/tests/split_groups/01_useradd_split_group/config/etc/shadow create mode 100644 tests/tests/split_groups/01_useradd_split_group/data/group create mode 100644 tests/tests/split_groups/01_useradd_split_group/data/gshadow create mode 100644 tests/tests/split_groups/01_useradd_split_group/data/passwd create mode 100644 tests/tests/split_groups/01_useradd_split_group/data/shadow create mode 100755 tests/tests/split_groups/01_useradd_split_group/useradd.test create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config.txt create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config/etc/default/useradd create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config/etc/group create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config/etc/gshadow create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config/etc/login.defs create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config/etc/passwd create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/config/etc/shadow create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/data/group create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/data/gshadow create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/data/passwd create mode 100644 tests/tests/split_groups/02_useradd_no_split_group/data/shadow create mode 100755 tests/tests/split_groups/02_useradd_no_split_group/useradd.test create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config.txt create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config/etc/default/useradd create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config/etc/group create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config/etc/gshadow create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config/etc/login.defs create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config/etc/passwd create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/config/etc/shadow create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/data/group create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/data/gshadow create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/data/passwd create mode 100644 tests/tests/split_groups/03_useradd_split_group_already_split/data/shadow create mode 100755 tests/tests/split_groups/03_useradd_split_group_already_split/useradd.test create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config.txt create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config/etc/default/useradd create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config/etc/group create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config/etc/gshadow create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config/etc/login.defs create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config/etc/passwd create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/config/etc/shadow create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/data/group create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/data/gshadow create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/data/passwd create mode 100644 tests/tests/split_groups/04_useradd_split_group_already_full/data/shadow create mode 100755 tests/tests/split_groups/04_useradd_split_group_already_full/useradd.test create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/config.txt create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/config/etc/group create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/config/etc/gshadow create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/config/etc/login.defs create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/config/etc/passwd create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/config/etc/shadow create mode 100644 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/data/useradd.err create mode 100755 tests/tests/split_groups/05_useradd_split_group_already_split_passwd_differ/useradd.test create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/config.txt create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/config/etc/group create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/config/etc/gshadow create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/config/etc/login.defs create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/config/etc/passwd create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/config/etc/shadow create mode 100644 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/data/useradd.err create mode 100755 tests/tests/split_groups/06_useradd_split_group_already_split_GID_differ/useradd.test create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config.txt create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config/etc/default/useradd create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config/etc/group create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config/etc/gshadow create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config/etc/login.defs create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config/etc/passwd create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/config/etc/shadow create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/data/group create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/data/gshadow create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/data/passwd create mode 100644 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/data/shadow create mode 100755 tests/tests/split_groups/07_useradd_split_group_already_split_user_in_both_lines/useradd.test create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/config.txt create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/config/etc/group create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/config/etc/gshadow create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/config/etc/login.defs create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/config/etc/passwd create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/config/etc/shadow create mode 100644 tests/tests/split_groups/08_useradd_no_split_group_already_split/data/useradd.err create mode 100755 tests/tests/split_groups/08_useradd_no_split_group_already_split/useradd.test create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/config.txt create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/config/etc/group create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/config/etc/gshadow create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/config/etc/login.defs create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/config/etc/passwd create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/config/etc/shadow create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/data/group create mode 100644 tests/tests/split_groups/09_groupdel_split_group_already_split/data/gshadow create mode 100755 tests/tests/split_groups/09_groupdel_split_group_already_split/groupdel.test create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/config.txt create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/config/etc/group create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/config/etc/gshadow create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/config/etc/login.defs create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/config/etc/passwd create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/config/etc/shadow create mode 100644 tests/tests/split_groups/10_groupdel_no_split_group_already_split/data/groupdel.err create mode 100755 tests/tests/split_groups/10_groupdel_no_split_group_already_split/groupdel.test create mode 100644 tests/tests/su/01/config.txt create mode 100644 tests/tests/su/01/config/etc/group create mode 100644 tests/tests/su/01/config/etc/gshadow create mode 100644 tests/tests/su/01/config/etc/passwd create mode 100644 tests/tests/su/01/config/etc/shadow create mode 100755 tests/tests/su/01/run_su.exp create mode 100755 tests/tests/su/01/su_root.test create mode 100755 tests/tests/su/01/su_user.test create mode 100644 tests/tests/su/02/config.txt create mode 100644 tests/tests/su/02/config/etc/group create mode 100644 tests/tests/su/02/config/etc/gshadow create mode 100644 tests/tests/su/02/config/etc/passwd create mode 100644 tests/tests/su/02/config/etc/profile create mode 100644 tests/tests/su/02/config/etc/shadow create mode 100755 tests/tests/su/02/env_FOO-options_ create mode 100755 tests/tests/su/02/env_FOO-options_- create mode 100755 tests/tests/su/02/env_FOO-options_--login create mode 100755 tests/tests/su/02/env_FOO-options_--login.exp create mode 100755 tests/tests/su/02/env_FOO-options_--login_bash create mode 100755 tests/tests/su/02/env_FOO-options_--preserve-environment create mode 100755 tests/tests/su/02/env_FOO-options_--preserve-environment.exp create mode 100755 tests/tests/su/02/env_FOO-options_--preserve-environment_bash create mode 100755 tests/tests/su/02/env_FOO-options_-.exp create mode 100755 tests/tests/su/02/env_FOO-options_-_bash create mode 100755 tests/tests/su/02/env_FOO-options_-l create mode 100755 tests/tests/su/02/env_FOO-options_-l-m create mode 100755 tests/tests/su/02/env_FOO-options_-l-m.exp create mode 100755 tests/tests/su/02/env_FOO-options_-l-m_bash create mode 100755 tests/tests/su/02/env_FOO-options_-l.exp create mode 100755 tests/tests/su/02/env_FOO-options_-l_bash create mode 100755 tests/tests/su/02/env_FOO-options_-m create mode 100755 tests/tests/su/02/env_FOO-options_-m.exp create mode 100755 tests/tests/su/02/env_FOO-options_-m_bash create mode 100755 tests/tests/su/02/env_FOO-options_-p create mode 100755 tests/tests/su/02/env_FOO-options_-p- create mode 100755 tests/tests/su/02/env_FOO-options_-p-.exp create mode 100755 tests/tests/su/02/env_FOO-options_-p-_bash create mode 100755 tests/tests/su/02/env_FOO-options_-p.exp create mode 100755 tests/tests/su/02/env_FOO-options_-p_bash create mode 100755 tests/tests/su/02/env_FOO-options_.exp create mode 100755 tests/tests/su/02/env_FOO-options__bash create mode 100755 tests/tests/su/02/env_special-options_ create mode 100755 tests/tests/su/02/env_special-options_-l create mode 100755 tests/tests/su/02/env_special-options_-l-p create mode 100755 tests/tests/su/02/env_special-options_-l-p.exp create mode 100755 tests/tests/su/02/env_special-options_-l-p_bash create mode 100755 tests/tests/su/02/env_special-options_-l.exp create mode 100755 tests/tests/su/02/env_special-options_-l_bash create mode 100755 tests/tests/su/02/env_special-options_-p create mode 100755 tests/tests/su/02/env_special-options_-p.exp create mode 100755 tests/tests/su/02/env_special-options_-p_bash create mode 100755 tests/tests/su/02/env_special-options_.exp create mode 100755 tests/tests/su/02/env_special-options__bash create mode 100755 tests/tests/su/02/env_special_root-options_ create mode 100755 tests/tests/su/02/env_special_root-options_-l create mode 100755 tests/tests/su/02/env_special_root-options_-l-p create mode 100755 tests/tests/su/02/env_special_root-options_-l-p.exp create mode 100755 tests/tests/su/02/env_special_root-options_-l-p_bash create mode 100755 tests/tests/su/02/env_special_root-options_-l.exp create mode 100755 tests/tests/su/02/env_special_root-options_-l_bash create mode 100755 tests/tests/su/02/env_special_root-options_-p create mode 100755 tests/tests/su/02/env_special_root-options_-p.exp create mode 100755 tests/tests/su/02/env_special_root-options_-p_bash create mode 100755 tests/tests/su/02/env_special_root-options_.exp create mode 100755 tests/tests/su/02/env_special_root-options__bash create mode 100755 tests/tests/su/02/run_env_test.sh create mode 100644 tests/tests/su/03/config/etc/group create mode 100644 tests/tests/su/03/config/etc/gshadow create mode 100644 tests/tests/su/03/config/etc/passwd create mode 100644 tests/tests/su/03/config/etc/shadow create mode 100644 tests/tests/su/03/data/ls.out create mode 100755 tests/tests/su/03/su_run_command01.test create mode 100755 tests/tests/su/03/su_run_command02.test create mode 100755 tests/tests/su/03/su_run_command03.test create mode 100755 tests/tests/su/03/su_run_command04.test create mode 100755 tests/tests/su/03/su_run_command05.test create mode 100755 tests/tests/su/03/su_run_command06.test create mode 100755 tests/tests/su/03/su_run_command07.test create mode 100755 tests/tests/su/03/su_run_command08.test create mode 100755 tests/tests/su/03/su_run_command09.test create mode 100755 tests/tests/su/03/su_run_command10.test create mode 100755 tests/tests/su/03/su_run_command11.test create mode 100755 tests/tests/su/03/su_run_command12.test create mode 100755 tests/tests/su/03/su_run_command13.test create mode 100755 tests/tests/su/03/su_run_command14.test create mode 100755 tests/tests/su/03/su_run_command15.test create mode 100755 tests/tests/su/03/su_run_command16.test create mode 100755 tests/tests/su/03/su_run_command17.test create mode 100644 tests/tests/su/04/config.txt create mode 100644 tests/tests/su/04/config/etc/group create mode 100644 tests/tests/su/04/config/etc/gshadow create mode 100644 tests/tests/su/04/config/etc/login.defs create mode 100644 tests/tests/su/04/config/etc/passwd create mode 100644 tests/tests/su/04/config/etc/shadow create mode 100644 tests/tests/su/04/config/var/log/auth.log create mode 100644 tests/tests/su/04/data/wrong_user.err create mode 100755 tests/tests/su/04/run_su_failed.exp create mode 100755 tests/tests/su/04/su_user_wrong_passwd.test create mode 100755 tests/tests/su/04/su_user_wrong_passwd_syslog.test create mode 100755 tests/tests/su/04/su_wrong_user.test create mode 100644 tests/tests/su/05/config.txt create mode 100644 tests/tests/su/05/config/etc/group create mode 100644 tests/tests/su/05/config/etc/gshadow create mode 100644 tests/tests/su/05/config/etc/login.defs create mode 100644 tests/tests/su/05/config/etc/passwd create mode 100644 tests/tests/su/05/config/etc/shadow create mode 100644 tests/tests/su/05/config/var/log/auth.log create mode 100755 tests/tests/su/05/run_su_failed.exp create mode 100755 tests/tests/su/05/su_user_wrong_passwd_syslog.test create mode 100644 tests/tests/su/06/config.txt create mode 100644 tests/tests/su/06/config/etc/group create mode 100644 tests/tests/su/06/config/etc/gshadow create mode 100644 tests/tests/su/06/config/etc/login.defs create mode 100644 tests/tests/su/06/config/etc/passwd create mode 100644 tests/tests/su/06/config/etc/shadow create mode 100644 tests/tests/su/06/config/var/log/auth.log create mode 100755 tests/tests/su/06/run_su.exp create mode 100755 tests/tests/su/06/su_user_syslog.test create mode 100644 tests/tests/su/07/config.txt create mode 100644 tests/tests/su/07/config/etc/group create mode 100644 tests/tests/su/07/config/etc/gshadow create mode 100644 tests/tests/su/07/config/etc/login.defs create mode 100644 tests/tests/su/07/config/etc/passwd create mode 100644 tests/tests/su/07/config/etc/shadow create mode 100644 tests/tests/su/07/config/var/log/auth.log create mode 100755 tests/tests/su/07/run_su.exp create mode 100755 tests/tests/su/07/su_user_syslog.test create mode 100644 tests/tests/su/08/config.txt create mode 100644 tests/tests/su/08/config/etc/group create mode 100644 tests/tests/su/08/config/etc/gshadow create mode 100644 tests/tests/su/08/config/etc/login.defs create mode 100644 tests/tests/su/08/config/etc/passwd create mode 100644 tests/tests/su/08/config/etc/shadow create mode 100755 tests/tests/su/08/env_special-options_ create mode 100755 tests/tests/su/08/env_special-options_.exp create mode 100755 tests/tests/su/08/env_special_root-options_ create mode 100755 tests/tests/su/08/env_special_root-options_.exp create mode 100644 tests/tests/su/09/config.txt create mode 100644 tests/tests/su/09/config/etc/group create mode 100644 tests/tests/su/09/config/etc/gshadow create mode 100644 tests/tests/su/09/config/etc/login.defs create mode 100644 tests/tests/su/09/config/etc/passwd create mode 100644 tests/tests/su/09/config/etc/shadow create mode 100755 tests/tests/su/09/env_special-options_ create mode 100755 tests/tests/su/09/env_special-options_.exp create mode 100755 tests/tests/su/09/env_special_root-options_ create mode 100755 tests/tests/su/09/env_special_root-options_.exp create mode 100644 tests/tests/su/10_su_sulog_success/config.txt create mode 100644 tests/tests/su/10_su_sulog_success/config/etc/group create mode 100644 tests/tests/su/10_su_sulog_success/config/etc/gshadow create mode 100644 tests/tests/su/10_su_sulog_success/config/etc/login.defs create mode 100644 tests/tests/su/10_su_sulog_success/config/etc/passwd create mode 100644 tests/tests/su/10_su_sulog_success/config/etc/shadow create mode 100644 tests/tests/su/10_su_sulog_success/config/var/log/sulog create mode 100644 tests/tests/su/10_su_sulog_success/data/sulog create mode 100755 tests/tests/su/10_su_sulog_success/run_su.exp create mode 100755 tests/tests/su/10_su_sulog_success/su.test create mode 100644 tests/tests/su/11_su_sulog_failure/config.txt create mode 100644 tests/tests/su/11_su_sulog_failure/config/etc/group create mode 100644 tests/tests/su/11_su_sulog_failure/config/etc/gshadow create mode 100644 tests/tests/su/11_su_sulog_failure/config/etc/login.defs create mode 100644 tests/tests/su/11_su_sulog_failure/config/etc/passwd create mode 100644 tests/tests/su/11_su_sulog_failure/config/etc/shadow create mode 100644 tests/tests/su/11_su_sulog_failure/config/var/log/sulog create mode 100644 tests/tests/su/11_su_sulog_failure/data/sulog create mode 100755 tests/tests/su/11_su_sulog_failure/run_su.exp create mode 100755 tests/tests/su/11_su_sulog_failure/su.test create mode 100644 tests/tests/su/12_su_child_failure/config.txt create mode 100644 tests/tests/su/12_su_child_failure/config/etc/group create mode 100644 tests/tests/su/12_su_child_failure/config/etc/gshadow create mode 100644 tests/tests/su/12_su_child_failure/config/etc/login.defs create mode 100644 tests/tests/su/12_su_child_failure/config/etc/passwd create mode 100644 tests/tests/su/12_su_child_failure/config/etc/shadow create mode 100644 tests/tests/su/12_su_child_failure/config/var/log/sulog create mode 100755 tests/tests/su/12_su_child_failure/su.test create mode 100644 tests/tests/su/13_su_child_success/config.txt create mode 100644 tests/tests/su/13_su_child_success/config/etc/group create mode 100644 tests/tests/su/13_su_child_success/config/etc/gshadow create mode 100644 tests/tests/su/13_su_child_success/config/etc/login.defs create mode 100644 tests/tests/su/13_su_child_success/config/etc/passwd create mode 100644 tests/tests/su/13_su_child_success/config/etc/shadow create mode 100644 tests/tests/su/13_su_child_success/config/var/log/sulog create mode 100755 tests/tests/su/13_su_child_success/su.test create mode 100644 tests/tests/subids/01_useradd_no_subids/config.txt create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/default/useradd create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/group create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/gshadow create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/passwd create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/shadow create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/subgid create mode 100644 tests/tests/subids/01_useradd_no_subids/config/etc/subuid create mode 100644 tests/tests/subids/01_useradd_no_subids/data/group create mode 100644 tests/tests/subids/01_useradd_no_subids/data/gshadow create mode 100644 tests/tests/subids/01_useradd_no_subids/data/passwd create mode 100644 tests/tests/subids/01_useradd_no_subids/data/shadow create mode 100755 tests/tests/subids/01_useradd_no_subids/useradd.test create mode 100644 tests/tests/subids/02_useradd_with_subids/config.txt create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/default/useradd create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/group create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/gshadow create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/passwd create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/shadow create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/subgid create mode 100644 tests/tests/subids/02_useradd_with_subids/config/etc/subuid create mode 100644 tests/tests/subids/02_useradd_with_subids/data/group create mode 100644 tests/tests/subids/02_useradd_with_subids/data/gshadow create mode 100644 tests/tests/subids/02_useradd_with_subids/data/passwd create mode 100644 tests/tests/subids/02_useradd_with_subids/data/shadow create mode 100644 tests/tests/subids/02_useradd_with_subids/data/subgid create mode 100644 tests/tests/subids/02_useradd_with_subids/data/subuid create mode 100755 tests/tests/subids/02_useradd_with_subids/useradd.test create mode 100644 tests/tests/subids/03_useradd_no_subgid/config.txt create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/group create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/03_useradd_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/03_useradd_no_subgid/data/group create mode 100644 tests/tests/subids/03_useradd_no_subgid/data/gshadow create mode 100644 tests/tests/subids/03_useradd_no_subgid/data/passwd create mode 100644 tests/tests/subids/03_useradd_no_subgid/data/shadow create mode 100644 tests/tests/subids/03_useradd_no_subgid/data/subuid create mode 100755 tests/tests/subids/03_useradd_no_subgid/useradd.test create mode 100644 tests/tests/subids/04_useradd_no_subuid/config.txt create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/default/useradd create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/group create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/gshadow create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/passwd create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/shadow create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/subgid create mode 100644 tests/tests/subids/04_useradd_no_subuid/config/etc/subuid create mode 100644 tests/tests/subids/04_useradd_no_subuid/data/group create mode 100644 tests/tests/subids/04_useradd_no_subuid/data/gshadow create mode 100644 tests/tests/subids/04_useradd_no_subuid/data/passwd create mode 100644 tests/tests/subids/04_useradd_no_subuid/data/shadow create mode 100644 tests/tests/subids/04_useradd_no_subuid/data/subgid create mode 100755 tests/tests/subids/04_useradd_no_subuid/useradd.test create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config.txt create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/default/useradd create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/group create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/gshadow create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/passwd create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/shadow create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/subgid create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/config/etc/subuid create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/data/group create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/data/gshadow create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/data/passwd create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/data/shadow create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/data/subgid create mode 100644 tests/tests/subids/05_useradd_fill_gap_start/data/subuid create mode 100755 tests/tests/subids/05_useradd_fill_gap_start/useradd.test create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config.txt create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/default/useradd create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/group create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/gshadow create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/passwd create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/shadow create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/subgid create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/config/etc/subuid create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/data/group create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/data/gshadow create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/data/passwd create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/data/shadow create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/data/subgid create mode 100644 tests/tests/subids/06_useradd_fill_gap_middle/data/subuid create mode 100755 tests/tests/subids/06_useradd_fill_gap_middle/useradd.test create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config.txt create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/default/useradd create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/group create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/gshadow create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/passwd create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/shadow create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/subgid create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/config/etc/subuid create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/data/group create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/data/gshadow create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/data/passwd create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/data/shadow create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/data/subgid create mode 100644 tests/tests/subids/07_useradd_fill_gap_end/data/subuid create mode 100755 tests/tests/subids/07_useradd_fill_gap_end/useradd.test create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config.txt create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/default/useradd create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/group create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/gshadow create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/passwd create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/shadow create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/subgid create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/config/etc/subuid create mode 100644 tests/tests/subids/08_useradd_no_more_subuids_start/data/useradd.err create mode 100755 tests/tests/subids/08_useradd_no_more_subuids_start/useradd.test create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config.txt create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/default/useradd create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/group create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/gshadow create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/passwd create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/shadow create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/subgid create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/config/etc/subuid create mode 100644 tests/tests/subids/09_useradd_no_more_subgids_start/data/useradd.err create mode 100755 tests/tests/subids/09_useradd_no_more_subgids_start/useradd.test create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config.txt create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/default/useradd create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/group create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/gshadow create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/passwd create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/shadow create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/subgid create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/config/etc/subuid create mode 100644 tests/tests/subids/10_useradd_no_more_subuids_end/data/useradd.err create mode 100755 tests/tests/subids/10_useradd_no_more_subuids_end/useradd.test create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config.txt create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/default/useradd create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/group create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/gshadow create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/passwd create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/shadow create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/subgid create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/config/etc/subuid create mode 100644 tests/tests/subids/11_useradd_no_more_subgids_end/data/useradd.err create mode 100755 tests/tests/subids/11_useradd_no_more_subgids_end/useradd.test create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config.txt create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/default/useradd create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/group create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/gshadow create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/login.defs create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/passwd create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/shadow create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/subgid create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/config/etc/subuid create mode 100644 tests/tests/subids/12_useradd_invalid_subuid_configuration1/data/useradd.err create mode 100755 tests/tests/subids/12_useradd_invalid_subuid_configuration1/useradd.test create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config.txt create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/default/useradd create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/group create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/gshadow create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/login.defs create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/passwd create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/shadow create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/subgid create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/config/etc/subuid create mode 100644 tests/tests/subids/13_useradd_invalid_subuid_configuration2/data/useradd.err create mode 100755 tests/tests/subids/13_useradd_invalid_subuid_configuration2/useradd.test create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config.txt create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/default/useradd create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/group create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/gshadow create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/login.defs create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/passwd create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/shadow create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/subgid create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/config/etc/subuid create mode 100644 tests/tests/subids/14_useradd_invalid_subuid_configuration3/data/useradd.err create mode 100755 tests/tests/subids/14_useradd_invalid_subuid_configuration3/useradd.test create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config.txt create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/default/useradd create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/group create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/gshadow create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/login.defs create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/passwd create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/shadow create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/subgid create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/config/etc/subuid create mode 100644 tests/tests/subids/15_useradd_invalid_subgid_configuration1/data/useradd.err create mode 100755 tests/tests/subids/15_useradd_invalid_subgid_configuration1/useradd.test create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config.txt create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/default/useradd create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/group create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/gshadow create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/login.defs create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/passwd create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/shadow create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/subgid create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/config/etc/subuid create mode 100644 tests/tests/subids/16_useradd_invalid_subgid_configuration2/data/useradd.err create mode 100755 tests/tests/subids/16_useradd_invalid_subgid_configuration2/useradd.test create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config.txt create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/default/useradd create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/group create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/gshadow create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/login.defs create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/passwd create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/shadow create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/subgid create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/config/etc/subuid create mode 100644 tests/tests/subids/17_useradd_invalid_subgid_configuration3/data/useradd.err create mode 100755 tests/tests/subids/17_useradd_invalid_subgid_configuration3/useradd.test create mode 100644 tests/tests/subids/18_useradd_min=max/config.txt create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/default/useradd create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/group create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/gshadow create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/login.defs create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/passwd create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/shadow create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/subgid create mode 100644 tests/tests/subids/18_useradd_min=max/config/etc/subuid create mode 100644 tests/tests/subids/18_useradd_min=max/data/group create mode 100644 tests/tests/subids/18_useradd_min=max/data/gshadow create mode 100644 tests/tests/subids/18_useradd_min=max/data/passwd create mode 100644 tests/tests/subids/18_useradd_min=max/data/shadow create mode 100644 tests/tests/subids/18_useradd_min=max/data/subgid create mode 100644 tests/tests/subids/18_useradd_min=max/data/subuid create mode 100755 tests/tests/subids/18_useradd_min=max/useradd.test create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config.txt create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/default/useradd create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/group create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/gshadow create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/passwd create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/shadow create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/subgid create mode 100644 tests/tests/subids/19_useradd_locked_subuid/config/etc/subuid create mode 100644 tests/tests/subids/19_useradd_locked_subuid/data/useradd.err create mode 100755 tests/tests/subids/19_useradd_locked_subuid/useradd.test create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config.txt create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/group create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/passwd create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/shadow create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/subgid create mode 100644 tests/tests/subids/20_useradd_locked_subgid/config/etc/subuid create mode 100644 tests/tests/subids/20_useradd_locked_subgid/data/useradd.err create mode 100755 tests/tests/subids/20_useradd_locked_subgid/useradd.test create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config.txt create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/group create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/gshadow create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/passwd create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/shadow create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/subgid create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/config/etc/subuid create mode 100644 tests/tests/subids/21_usermod_create_subuid_range/data/subuid create mode 100755 tests/tests/subids/21_usermod_create_subuid_range/usermod.test create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config.txt create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/group create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/gshadow create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/passwd create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/shadow create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/subgid create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/config/etc/subuid create mode 100644 tests/tests/subids/22_usermod_create_subgid_range/data/subgid create mode 100755 tests/tests/subids/22_usermod_create_subgid_range/usermod.test create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config.txt create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/default/useradd create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/group create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/gshadow create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/passwd create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/shadow create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/subgid create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/config/etc/subuid create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/data/subgid create mode 100644 tests/tests/subids/23_usermod_create_subids_ranges/data/subuid create mode 100755 tests/tests/subids/23_usermod_create_subids_ranges/usermod.test create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config.txt create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/default/useradd create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/group create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/gshadow create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/passwd create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/shadow create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/subgid create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/config/etc/subuid create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/data/subgid create mode 100644 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/data/subuid create mode 100755 tests/tests/subids/24_usermod_create_subids_overlapping_ranges/usermod.test create mode 100644 tests/tests/subids/25_usermod_add_range/config.txt create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/default/useradd create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/group create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/gshadow create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/passwd create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/shadow create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/subgid create mode 100644 tests/tests/subids/25_usermod_add_range/config/etc/subuid create mode 100644 tests/tests/subids/25_usermod_add_range/data/subgid create mode 100644 tests/tests/subids/25_usermod_add_range/data/subuid create mode 100755 tests/tests/subids/25_usermod_add_range/usermod.test create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config.txt create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/default/useradd create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/group create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/gshadow create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/passwd create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/shadow create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/subgid create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/config/etc/subuid create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/data/subgid create mode 100644 tests/tests/subids/26_usermod_add_overlapping_ranges/data/subuid create mode 100755 tests/tests/subids/26_usermod_add_overlapping_ranges/usermod.test create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config.txt create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/default/useradd create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/group create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/gshadow create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/passwd create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/shadow create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/subgid create mode 100644 tests/tests/subids/27_usermod_remove_range_all/config/etc/subuid create mode 100644 tests/tests/subids/27_usermod_remove_range_all/data/subgid create mode 100644 tests/tests/subids/27_usermod_remove_range_all/data/subuid create mode 100755 tests/tests/subids/27_usermod_remove_range_all/usermod.test create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config.txt create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/default/useradd create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/group create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/gshadow create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/passwd create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/shadow create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/subgid create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/config/etc/subuid create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/data/subgid create mode 100644 tests/tests/subids/28_usermod_remove_range_partial_begin/data/subuid create mode 100755 tests/tests/subids/28_usermod_remove_range_partial_begin/usermod.test create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config.txt create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/default/useradd create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/group create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/gshadow create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/passwd create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/shadow create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/subgid create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/config/etc/subuid create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/data/subgid create mode 100644 tests/tests/subids/29_usermod_remove_range_partial_middle/data/subuid create mode 100755 tests/tests/subids/29_usermod_remove_range_partial_middle/usermod.test create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config.txt create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/default/useradd create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/group create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/gshadow create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/passwd create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/shadow create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/subgid create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/config/etc/subuid create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/data/subgid create mode 100644 tests/tests/subids/30_usermod_remove_range_partial_end/data/subuid create mode 100755 tests/tests/subids/30_usermod_remove_range_partial_end/usermod.test create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config.txt create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/default/useradd create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/group create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/gshadow create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/passwd create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/shadow create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/subgid create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/config/etc/subuid create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/data/subgid create mode 100644 tests/tests/subids/31_usermod_remove_outside_range/data/subuid create mode 100755 tests/tests/subids/31_usermod_remove_outside_range/usermod.test create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config.txt create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/default/useradd create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/group create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/gshadow create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/passwd create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/shadow create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/subgid create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/config/etc/subuid create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/data/subgid create mode 100644 tests/tests/subids/32_usermod_remove_overlapping_range_begin/data/subuid create mode 100755 tests/tests/subids/32_usermod_remove_overlapping_range_begin/usermod.test create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config.txt create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/default/useradd create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/group create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/gshadow create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/passwd create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/shadow create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/subgid create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/config/etc/subuid create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/data/subgid create mode 100644 tests/tests/subids/33_usermod_remove_overlapping_range_end/data/subuid create mode 100755 tests/tests/subids/33_usermod_remove_overlapping_range_end/usermod.test create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config.txt create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/default/useradd create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/group create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/gshadow create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/passwd create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/shadow create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/subgid create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/config/etc/subuid create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/data/subgid create mode 100644 tests/tests/subids/34_usermod_remove_overlapping_range_all/data/subuid create mode 100755 tests/tests/subids/34_usermod_remove_overlapping_range_all/usermod.test create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config.txt create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/default/useradd create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/group create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/gshadow create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/passwd create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/shadow create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/subgid create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/config/etc/subuid create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/data/subgid create mode 100644 tests/tests/subids/35_usermod_remove_only_user_ranges/data/subuid create mode 100755 tests/tests/subids/35_usermod_remove_only_user_ranges/usermod.test create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config.txt create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/default/useradd create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/group create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/gshadow create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/passwd create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/shadow create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/subgid create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/config/etc/subuid create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/data/subgid create mode 100644 tests/tests/subids/36_usermod_remove_with_comment/data/subuid create mode 100755 tests/tests/subids/36_usermod_remove_with_comment/usermod.test create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config.txt create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/group create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/gshadow create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/passwd create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/shadow create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/subgid create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/config/etc/subuid create mode 100644 tests/tests/subids/37_usermod_-v_invalid_range/data/usermod.err create mode 100755 tests/tests/subids/37_usermod_-v_invalid_range/usermod.test create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config.txt create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/group create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/gshadow create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/passwd create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/shadow create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/subgid create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/config/etc/subuid create mode 100644 tests/tests/subids/38_usermod_-V_invalid_range/data/usermod.err create mode 100755 tests/tests/subids/38_usermod_-V_invalid_range/usermod.test create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config.txt create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/group create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/gshadow create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/passwd create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/shadow create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/subgid create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/config/etc/subuid create mode 100644 tests/tests/subids/39_usermod_-w_invalid_range/data/usermod.err create mode 100755 tests/tests/subids/39_usermod_-w_invalid_range/usermod.test create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config.txt create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/group create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/gshadow create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/passwd create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/shadow create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/subgid create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/config/etc/subuid create mode 100644 tests/tests/subids/40_usermod_-W_invalid_range/data/usermod.err create mode 100755 tests/tests/subids/40_usermod_-W_invalid_range/usermod.test create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config.txt create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/default/useradd create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/group create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/gshadow create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/passwd create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/shadow create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/subgid create mode 100644 tests/tests/subids/41_usermod_locked_subuid/config/etc/subuid create mode 100644 tests/tests/subids/41_usermod_locked_subuid/data/usermod.err create mode 100755 tests/tests/subids/41_usermod_locked_subuid/usermod.test create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config.txt create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/group create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/passwd create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/shadow create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/subgid create mode 100644 tests/tests/subids/42_usermod_locked_subgid/config/etc/subuid create mode 100644 tests/tests/subids/42_usermod_locked_subgid/data/usermod.err create mode 100755 tests/tests/subids/42_usermod_locked_subgid/usermod.test create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config.txt create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/group create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/43_usermod_-w_no_subgid/data/usermod.err create mode 100755 tests/tests/subids/43_usermod_-w_no_subgid/usermod.test create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config.txt create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/group create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/44_usermod_-W_no_subgid/data/usermod.err create mode 100755 tests/tests/subids/44_usermod_-W_no_subgid/usermod.test create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config.txt create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/group create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/45_usermod_-v_no_subgid/data/usermod.err create mode 100755 tests/tests/subids/45_usermod_-v_no_subgid/usermod.test create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config.txt create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/group create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/46_usermod_-V_no_subgid/data/usermod.err create mode 100755 tests/tests/subids/46_usermod_-V_no_subgid/usermod.test create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config.txt create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/default/useradd create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/group create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/gshadow create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/passwd create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/shadow create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/subgid create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/config/etc/subuid create mode 100644 tests/tests/subids/47_usermod_-v_invalid_range2/data/usermod.err create mode 100755 tests/tests/subids/47_usermod_-v_invalid_range2/usermod.test create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config.txt create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/default/useradd create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/group create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/gshadow create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/passwd create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/shadow create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/subgid create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/config/etc/subuid create mode 100644 tests/tests/subids/48_usermod_-v_invalid_range3/data/usermod.err create mode 100755 tests/tests/subids/48_usermod_-v_invalid_range3/usermod.test create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config.txt create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/default/useradd create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/group create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/gshadow create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/passwd create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/shadow create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/subgid create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/config/etc/subuid create mode 100644 tests/tests/subids/49_usermod_-v_invalid_range4/data/usermod.err create mode 100755 tests/tests/subids/49_usermod_-v_invalid_range4/usermod.test create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config.txt create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/default/useradd create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/group create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/gshadow create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/passwd create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/shadow create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/subgid create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/config/etc/subuid create mode 100644 tests/tests/subids/50_usermod_-v_invalid_range5/data/usermod.err create mode 100755 tests/tests/subids/50_usermod_-v_invalid_range5/usermod.test create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config.txt create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/default/useradd create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/group create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/gshadow create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/passwd create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/shadow create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/subgid create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/config/etc/subuid create mode 100644 tests/tests/subids/51_usermod_-v_invalid_range6/data/usermod.err create mode 100755 tests/tests/subids/51_usermod_-v_invalid_range6/usermod.test create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config.txt create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/default/useradd create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/group create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/gshadow create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/passwd create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/shadow create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/subgid create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/config/etc/subuid create mode 100644 tests/tests/subids/52_usermod_-v_invalid_range7/data/usermod.err create mode 100755 tests/tests/subids/52_usermod_-v_invalid_range7/usermod.test create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config.txt create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/group create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/gshadow create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/passwd create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/shadow create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/subgid create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/config/etc/subuid create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/data/group create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/data/gshadow create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/data/passwd create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/data/shadow create mode 100644 tests/tests/subids/53_userdel_one_subuid_range/data/subuid create mode 100755 tests/tests/subids/53_userdel_one_subuid_range/userdel.test create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config.txt create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/default/useradd create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/group create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/gshadow create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/passwd create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/shadow create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/subgid create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/config/etc/subuid create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/data/group create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/data/gshadow create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/data/passwd create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/data/shadow create mode 100644 tests/tests/subids/54_userdel_one_subgid_range/data/subgid create mode 100755 tests/tests/subids/54_userdel_one_subgid_range/userdel.test create mode 100644 tests/tests/subids/55_userdel_no_subuid/config.txt create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/default/useradd create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/group create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/gshadow create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/passwd create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/shadow create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/subgid create mode 100644 tests/tests/subids/55_userdel_no_subuid/config/etc/subuid create mode 100644 tests/tests/subids/55_userdel_no_subuid/data/group create mode 100644 tests/tests/subids/55_userdel_no_subuid/data/gshadow create mode 100644 tests/tests/subids/55_userdel_no_subuid/data/passwd create mode 100644 tests/tests/subids/55_userdel_no_subuid/data/shadow create mode 100644 tests/tests/subids/55_userdel_no_subuid/data/subgid create mode 100755 tests/tests/subids/55_userdel_no_subuid/userdel.test create mode 100644 tests/tests/subids/56_userdel_no_subgid/config.txt create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/default/useradd create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/group create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/56_userdel_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/56_userdel_no_subgid/data/group create mode 100644 tests/tests/subids/56_userdel_no_subgid/data/gshadow create mode 100644 tests/tests/subids/56_userdel_no_subgid/data/passwd create mode 100644 tests/tests/subids/56_userdel_no_subgid/data/shadow create mode 100644 tests/tests/subids/56_userdel_no_subgid/data/subuid create mode 100755 tests/tests/subids/56_userdel_no_subgid/userdel.test create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config.txt create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/default/useradd create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/group create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/gshadow create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/passwd create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/shadow create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/subgid create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/config/etc/subuid create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/data/group create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/data/gshadow create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/data/passwd create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/data/shadow create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/data/subgid create mode 100644 tests/tests/subids/57_userdel_multiple_ranges/data/subuid create mode 100755 tests/tests/subids/57_userdel_multiple_ranges/userdel.test create mode 100644 tests/tests/subids/58_newusers_with_subids/config.txt create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/group create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/gshadow create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/pam.d/common-password create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/pam.d/newusers create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/passwd create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/shadow create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/subgid create mode 100644 tests/tests/subids/58_newusers_with_subids/config/etc/subuid create mode 100644 tests/tests/subids/58_newusers_with_subids/data/group create mode 100644 tests/tests/subids/58_newusers_with_subids/data/gshadow create mode 100644 tests/tests/subids/58_newusers_with_subids/data/newusers.list create mode 100644 tests/tests/subids/58_newusers_with_subids/data/passwd create mode 100644 tests/tests/subids/58_newusers_with_subids/data/shadow create mode 100644 tests/tests/subids/58_newusers_with_subids/data/subgid create mode 100644 tests/tests/subids/58_newusers_with_subids/data/subuid create mode 100755 tests/tests/subids/58_newusers_with_subids/newusers.test create mode 100644 tests/tests/subids/59_newusers_no_subuid/config.txt create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/group create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/gshadow create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/pam.d/common-password create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/pam.d/newusers create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/passwd create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/shadow create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/subgid create mode 100644 tests/tests/subids/59_newusers_no_subuid/config/etc/subuid create mode 100644 tests/tests/subids/59_newusers_no_subuid/data/group create mode 100644 tests/tests/subids/59_newusers_no_subuid/data/gshadow create mode 100644 tests/tests/subids/59_newusers_no_subuid/data/newusers.list create mode 100644 tests/tests/subids/59_newusers_no_subuid/data/passwd create mode 100644 tests/tests/subids/59_newusers_no_subuid/data/shadow create mode 100644 tests/tests/subids/59_newusers_no_subuid/data/subgid create mode 100755 tests/tests/subids/59_newusers_no_subuid/newusers.test create mode 100644 tests/tests/subids/60_newusers_no_subgid/config.txt create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/group create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/gshadow create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/pam.d/common-password create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/pam.d/newusers create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/passwd create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/shadow create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/subgid create mode 100644 tests/tests/subids/60_newusers_no_subgid/config/etc/subuid create mode 100644 tests/tests/subids/60_newusers_no_subgid/data/group create mode 100644 tests/tests/subids/60_newusers_no_subgid/data/gshadow create mode 100644 tests/tests/subids/60_newusers_no_subgid/data/newusers.list create mode 100644 tests/tests/subids/60_newusers_no_subgid/data/passwd create mode 100644 tests/tests/subids/60_newusers_no_subgid/data/shadow create mode 100644 tests/tests/subids/60_newusers_no_subgid/data/subuid create mode 100755 tests/tests/subids/60_newusers_no_subgid/newusers.test create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config.txt create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/group create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/gshadow create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/pam.d/common-password create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/pam.d/newusers create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/passwd create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/shadow create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/subgid create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/config/etc/subuid create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/data/group create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/data/gshadow create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/data/newusers.list create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/data/passwd create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/data/shadow create mode 100644 tests/tests/subids/61_newusers_user_already_has_subgids/data/subuid create mode 100755 tests/tests/subids/61_newusers_user_already_has_subgids/newusers.test create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config.txt create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/group create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/gshadow create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/pam.d/common-password create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/pam.d/newusers create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/passwd create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/shadow create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/subgid create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/config/etc/subuid create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/data/group create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/data/gshadow create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/data/newusers.list create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/data/passwd create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/data/shadow create mode 100644 tests/tests/subids/62_newusers_user_already_has_subuids/data/subgid create mode 100755 tests/tests/subids/62_newusers_user_already_has_subuids/newusers.test create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config.txt create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/default/useradd create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/group create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/gshadow create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/passwd create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/shadow create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/subgid create mode 100644 tests/tests/subids/63_useradd_fill_gap4/config/etc/subuid create mode 100644 tests/tests/subids/63_useradd_fill_gap4/data/group create mode 100644 tests/tests/subids/63_useradd_fill_gap4/data/gshadow create mode 100644 tests/tests/subids/63_useradd_fill_gap4/data/passwd create mode 100644 tests/tests/subids/63_useradd_fill_gap4/data/shadow create mode 100644 tests/tests/subids/63_useradd_fill_gap4/data/subgid create mode 100644 tests/tests/subids/63_useradd_fill_gap4/data/subuid create mode 100755 tests/tests/subids/63_useradd_fill_gap4/useradd.test create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config.txt create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/default/useradd create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/group create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/gshadow create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/passwd create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/shadow create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/subgid create mode 100644 tests/tests/subids/64_useradd_fill_gap5/config/etc/subuid create mode 100644 tests/tests/subids/64_useradd_fill_gap5/data/group create mode 100644 tests/tests/subids/64_useradd_fill_gap5/data/gshadow create mode 100644 tests/tests/subids/64_useradd_fill_gap5/data/passwd create mode 100644 tests/tests/subids/64_useradd_fill_gap5/data/shadow create mode 100644 tests/tests/subids/64_useradd_fill_gap5/data/subgid create mode 100644 tests/tests/subids/64_useradd_fill_gap5/data/subuid create mode 100755 tests/tests/subids/64_useradd_fill_gap5/useradd.test create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config.txt create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/default/useradd create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/group create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/gshadow create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/passwd create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/shadow create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/subgid create mode 100644 tests/tests/subids/65_useradd_fill_gap6/config/etc/subuid create mode 100644 tests/tests/subids/65_useradd_fill_gap6/data/group create mode 100644 tests/tests/subids/65_useradd_fill_gap6/data/gshadow create mode 100644 tests/tests/subids/65_useradd_fill_gap6/data/passwd create mode 100644 tests/tests/subids/65_useradd_fill_gap6/data/shadow create mode 100644 tests/tests/subids/65_useradd_fill_gap6/data/subgid create mode 100644 tests/tests/subids/65_useradd_fill_gap6/data/subuid create mode 100755 tests/tests/subids/65_useradd_fill_gap6/useradd.test create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config.txt create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/default/useradd create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/group create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/gshadow create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/passwd create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/shadow create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/subgid create mode 100644 tests/tests/subids/66_subordinate_range_cmp/config/etc/subuid create mode 100644 tests/tests/subids/66_subordinate_range_cmp/data/group create mode 100644 tests/tests/subids/66_subordinate_range_cmp/data/gshadow create mode 100644 tests/tests/subids/66_subordinate_range_cmp/data/passwd create mode 100644 tests/tests/subids/66_subordinate_range_cmp/data/shadow create mode 100644 tests/tests/subids/66_subordinate_range_cmp/data/subgid create mode 100644 tests/tests/subids/66_subordinate_range_cmp/data/subuid create mode 100755 tests/tests/subids/66_subordinate_range_cmp/useradd.test create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config.txt create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/default/useradd create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/group create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/gshadow create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/passwd create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/shadow create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/subgid create mode 100644 tests/tests/subids/67_invalid_subuid_file1/config/etc/subuid create mode 100644 tests/tests/subids/67_invalid_subuid_file1/data/group create mode 100644 tests/tests/subids/67_invalid_subuid_file1/data/gshadow create mode 100644 tests/tests/subids/67_invalid_subuid_file1/data/passwd create mode 100644 tests/tests/subids/67_invalid_subuid_file1/data/shadow create mode 100644 tests/tests/subids/67_invalid_subuid_file1/data/subgid create mode 100644 tests/tests/subids/67_invalid_subuid_file1/data/subuid create mode 100755 tests/tests/subids/67_invalid_subuid_file1/useradd.test create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config.txt create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/default/useradd create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/group create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/gshadow create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/passwd create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/shadow create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/subgid create mode 100644 tests/tests/subids/68_invalid_subuid_file2/config/etc/subuid create mode 100644 tests/tests/subids/68_invalid_subuid_file2/data/group create mode 100644 tests/tests/subids/68_invalid_subuid_file2/data/gshadow create mode 100644 tests/tests/subids/68_invalid_subuid_file2/data/passwd create mode 100644 tests/tests/subids/68_invalid_subuid_file2/data/shadow create mode 100644 tests/tests/subids/68_invalid_subuid_file2/data/subgid create mode 100644 tests/tests/subids/68_invalid_subuid_file2/data/subuid create mode 100755 tests/tests/subids/68_invalid_subuid_file2/useradd.test create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config.txt create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/default/useradd create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/group create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/gshadow create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/passwd create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/shadow create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/subgid create mode 100644 tests/tests/subids/69_invalid_subuid_file3/config/etc/subuid create mode 100644 tests/tests/subids/69_invalid_subuid_file3/data/group create mode 100644 tests/tests/subids/69_invalid_subuid_file3/data/gshadow create mode 100644 tests/tests/subids/69_invalid_subuid_file3/data/passwd create mode 100644 tests/tests/subids/69_invalid_subuid_file3/data/shadow create mode 100644 tests/tests/subids/69_invalid_subuid_file3/data/subgid create mode 100644 tests/tests/subids/69_invalid_subuid_file3/data/subuid create mode 100755 tests/tests/subids/69_invalid_subuid_file3/useradd.test create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config.txt create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/default/useradd create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/group create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/gshadow create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/passwd create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/shadow create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/subgid create mode 100644 tests/tests/subids/70_invalid_subuid_file4/config/etc/subuid create mode 100644 tests/tests/subids/70_invalid_subuid_file4/data/group create mode 100644 tests/tests/subids/70_invalid_subuid_file4/data/gshadow create mode 100644 tests/tests/subids/70_invalid_subuid_file4/data/passwd create mode 100644 tests/tests/subids/70_invalid_subuid_file4/data/shadow create mode 100644 tests/tests/subids/70_invalid_subuid_file4/data/subgid create mode 100644 tests/tests/subids/70_invalid_subuid_file4/data/subuid create mode 100755 tests/tests/subids/70_invalid_subuid_file4/useradd.test create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config.txt create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/default/useradd create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/group create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/gshadow create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/passwd create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/shadow create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/subgid create mode 100644 tests/tests/subids/71_useradd_subids_for_system/config/etc/subuid create mode 100644 tests/tests/subids/71_useradd_subids_for_system/data/subgid create mode 100644 tests/tests/subids/71_useradd_subids_for_system/data/subuid create mode 100755 tests/tests/subids/71_useradd_subids_for_system/useradd.test create mode 100644 tests/tests/unit/.deps/test_adds-test_adds.Po create mode 100644 tests/tests/unit/.deps/test_atoi_strtoi-test_atoi_strtoi.Po create mode 100644 tests/tests/unit/.deps/test_chkname-test_chkname.Po create mode 100644 tests/tests/unit/.deps/test_logind-test_logind.Po create mode 100644 tests/tests/unit/.deps/test_sprintf-test_sprintf.Po create mode 100644 tests/tests/unit/.deps/test_strncpy-test_strncpy.Po create mode 100644 tests/tests/unit/.deps/test_strtcpy-test_strtcpy.Po create mode 100644 tests/tests/unit/.deps/test_xasprintf-test_xasprintf.Po create mode 100644 tests/tests/unit/.deps/test_zustr2stp-test_zustr2stp.Po create mode 100644 tests/tests/unit/.gitignore create mode 100644 tests/tests/unit/Makefile create mode 100644 tests/tests/unit/Makefile.am create mode 100644 tests/tests/unit/Makefile.in create mode 100644 tests/tests/unit/test_adds.c create mode 100644 tests/tests/unit/test_atoi_strtoi.c create mode 100644 tests/tests/unit/test_chkname.c create mode 100644 tests/tests/unit/test_logind.c create mode 100644 tests/tests/unit/test_sprintf.c create mode 100644 tests/tests/unit/test_strncpy.c create mode 100644 tests/tests/unit/test_strtcpy.c create mode 100644 tests/tests/unit/test_xasprintf.c create mode 100644 tests/tests/unit/test_zustr2stp.c create mode 100755 tests/tests/usertools/01/01_useradd_add_user.test create mode 100644 tests/tests/usertools/01/01_useradd_add_user/group create mode 100644 tests/tests/usertools/01/01_useradd_add_user/gshadow create mode 100644 tests/tests/usertools/01/01_useradd_add_user/passwd create mode 100644 tests/tests/usertools/01/01_useradd_add_user/shadow create mode 100755 tests/tests/usertools/01/01_userdel_delete_user.test create mode 100755 tests/tests/usertools/01/02_useradd_recreate_deleted_user.test create mode 100644 tests/tests/usertools/01/02_useradd_recreate_deleted_user/group create mode 100644 tests/tests/usertools/01/02_useradd_recreate_deleted_user/gshadow create mode 100644 tests/tests/usertools/01/02_useradd_recreate_deleted_user/passwd create mode 100644 tests/tests/usertools/01/02_useradd_recreate_deleted_user/shadow create mode 100755 tests/tests/usertools/01/03_useradd_additional_options.test create mode 100644 tests/tests/usertools/01/03_useradd_additional_options/group create mode 100644 tests/tests/usertools/01/03_useradd_additional_options/gshadow create mode 100644 tests/tests/usertools/01/03_useradd_additional_options/passwd create mode 100644 tests/tests/usertools/01/03_useradd_additional_options/shadow create mode 100755 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_fail.test create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_fail/group create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_fail/gshadow create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_fail/passwd create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_fail/shadow create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_fail/useradd.err create mode 100755 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_with_-o.test create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_with_-o/group create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_with_-o/gshadow create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_with_-o/passwd create mode 100644 tests/tests/usertools/01/04_useradd_add_user_with_existing_UID_with_-o/shadow create mode 100755 tests/tests/usertools/01/04_useradd_specified_UID.test create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID/group create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID/gshadow create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID/passwd create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID/shadow create mode 100755 tests/tests/usertools/01/04_useradd_specified_UID_and_GID.test create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID_and_GID/group create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID_and_GID/gshadow create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID_and_GID/passwd create mode 100644 tests/tests/usertools/01/04_useradd_specified_UID_and_GID/shadow create mode 100755 tests/tests/usertools/01/04_userdel_delete_user_with_non_unique_UID.test create mode 100644 tests/tests/usertools/01/04_userdel_delete_user_with_non_unique_UID/group create mode 100644 tests/tests/usertools/01/04_userdel_delete_user_with_non_unique_UID/gshadow create mode 100644 tests/tests/usertools/01/04_userdel_delete_user_with_non_unique_UID/passwd create mode 100644 tests/tests/usertools/01/04_userdel_delete_user_with_non_unique_UID/shadow create mode 100755 tests/tests/usertools/01/05_useradd_invalid_numeric_primary_group.test create mode 100644 tests/tests/usertools/01/05_useradd_invalid_numeric_primary_group/useradd.err create mode 100755 tests/tests/usertools/01/06_useradd_invalid_named_primary_group.test create mode 100644 tests/tests/usertools/01/06_useradd_invalid_named_primary_group/useradd.err create mode 100755 tests/tests/usertools/01/07_useradd_numerical_primary_group.test create mode 100644 tests/tests/usertools/01/07_useradd_numerical_primary_group/group create mode 100644 tests/tests/usertools/01/07_useradd_numerical_primary_group/gshadow create mode 100644 tests/tests/usertools/01/07_useradd_numerical_primary_group/passwd create mode 100644 tests/tests/usertools/01/07_useradd_numerical_primary_group/shadow create mode 100755 tests/tests/usertools/01/08_useradd_named_primary_group.test create mode 100644 tests/tests/usertools/01/08_useradd_named_primary_group/group create mode 100644 tests/tests/usertools/01/08_useradd_named_primary_group/gshadow create mode 100644 tests/tests/usertools/01/08_useradd_named_primary_group/passwd create mode 100644 tests/tests/usertools/01/08_useradd_named_primary_group/shadow create mode 100755 tests/tests/usertools/01/09_usermod_change_user_info.test create mode 100644 tests/tests/usertools/01/09_usermod_change_user_info/group create mode 100644 tests/tests/usertools/01/09_usermod_change_user_info/gshadow create mode 100644 tests/tests/usertools/01/09_usermod_change_user_info/passwd create mode 100644 tests/tests/usertools/01/09_usermod_change_user_info/shadow create mode 100755 tests/tests/usertools/01/10_usermod_rename_user.test create mode 100644 tests/tests/usertools/01/10_usermod_rename_user/group create mode 100644 tests/tests/usertools/01/10_usermod_rename_user/gshadow create mode 100644 tests/tests/usertools/01/10_usermod_rename_user/passwd create mode 100644 tests/tests/usertools/01/10_usermod_rename_user/shadow create mode 100755 tests/tests/usertools/01/10_usermod_rename_user_in_group.test create mode 100644 tests/tests/usertools/01/10_usermod_rename_user_in_group/group create mode 100644 tests/tests/usertools/01/10_usermod_rename_user_in_group/gshadow create mode 100644 tests/tests/usertools/01/10_usermod_rename_user_in_group/passwd create mode 100644 tests/tests/usertools/01/10_usermod_rename_user_in_group/shadow create mode 100755 tests/tests/usertools/01/11_usermod_change_password.test create mode 100644 tests/tests/usertools/01/11_usermod_change_password/group create mode 100644 tests/tests/usertools/01/11_usermod_change_password/gshadow create mode 100644 tests/tests/usertools/01/11_usermod_change_password/passwd create mode 100644 tests/tests/usertools/01/11_usermod_change_password/shadow create mode 100755 tests/tests/usertools/01/11_usermod_lock_password.test create mode 100644 tests/tests/usertools/01/11_usermod_lock_password/group create mode 100644 tests/tests/usertools/01/11_usermod_lock_password/gshadow create mode 100644 tests/tests/usertools/01/11_usermod_lock_password/passwd create mode 100644 tests/tests/usertools/01/11_usermod_lock_password/shadow create mode 100755 tests/tests/usertools/01/11_usermod_unlock_empty_password.test create mode 100644 tests/tests/usertools/01/11_usermod_unlock_empty_password/group create mode 100644 tests/tests/usertools/01/11_usermod_unlock_empty_password/gshadow create mode 100644 tests/tests/usertools/01/11_usermod_unlock_empty_password/passwd create mode 100644 tests/tests/usertools/01/11_usermod_unlock_empty_password/shadow create mode 100644 tests/tests/usertools/01/11_usermod_unlock_empty_password/usermod.err create mode 100755 tests/tests/usertools/01/11_usermod_unlock_password.test create mode 100644 tests/tests/usertools/01/11_usermod_unlock_password/group create mode 100644 tests/tests/usertools/01/11_usermod_unlock_password/gshadow create mode 100644 tests/tests/usertools/01/11_usermod_unlock_password/passwd create mode 100644 tests/tests/usertools/01/11_usermod_unlock_password/shadow create mode 100755 tests/tests/usertools/01/12_usermod_change_gid_name.test create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_name/group create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_name/gshadow create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_name/passwd create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_name/shadow create mode 100755 tests/tests/usertools/01/12_usermod_change_gid_number.test create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_number/group create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_number/gshadow create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_number/passwd create mode 100644 tests/tests/usertools/01/12_usermod_change_gid_number/shadow create mode 100755 tests/tests/usertools/01/13_useradd_negative_UID.test create mode 100644 tests/tests/usertools/01/13_useradd_negative_UID/group create mode 100644 tests/tests/usertools/01/13_useradd_negative_UID/gshadow create mode 100644 tests/tests/usertools/01/13_useradd_negative_UID/passwd create mode 100644 tests/tests/usertools/01/13_useradd_negative_UID/shadow create mode 100755 tests/tests/usertools/01/14_useradd_out_of_range_UID.test create mode 100644 tests/tests/usertools/01/14_useradd_out_of_range_UID/group create mode 100644 tests/tests/usertools/01/14_useradd_out_of_range_UID/gshadow create mode 100644 tests/tests/usertools/01/14_useradd_out_of_range_UID/passwd create mode 100644 tests/tests/usertools/01/14_useradd_out_of_range_UID/shadow create mode 100755 tests/tests/usertools/01/15_useradd_specified_large_UID.test create mode 100644 tests/tests/usertools/01/15_useradd_specified_large_UID/group create mode 100644 tests/tests/usertools/01/15_useradd_specified_large_UID/gshadow create mode 100644 tests/tests/usertools/01/15_useradd_specified_large_UID/passwd create mode 100644 tests/tests/usertools/01/15_useradd_specified_large_UID/shadow create mode 100755 tests/tests/usertools/01/16_useradd_add_user_to_multiple_groups.test create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_multiple_groups/group create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_multiple_groups/gshadow create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_multiple_groups/passwd create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_multiple_groups/shadow create mode 100755 tests/tests/usertools/01/16_useradd_add_user_to_one_group.test create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_one_group/group create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_one_group/gshadow create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_one_group/passwd create mode 100644 tests/tests/usertools/01/16_useradd_add_user_to_one_group/shadow create mode 100755 tests/tests/usertools/01/17_useradd_create_homedir.test create mode 100644 tests/tests/usertools/01/17_useradd_create_homedir/group create mode 100644 tests/tests/usertools/01/17_useradd_create_homedir/gshadow create mode 100644 tests/tests/usertools/01/17_useradd_create_homedir/passwd create mode 100644 tests/tests/usertools/01/17_useradd_create_homedir/shadow create mode 100755 tests/tests/usertools/01/18_userdel_remove_homedir.test create mode 100644 tests/tests/usertools/01/18_userdel_remove_homedir/group create mode 100644 tests/tests/usertools/01/18_userdel_remove_homedir/gshadow create mode 100644 tests/tests/usertools/01/18_userdel_remove_homedir/passwd create mode 100644 tests/tests/usertools/01/18_userdel_remove_homedir/shadow create mode 100644 tests/tests/usertools/01/18_userdel_remove_homedir/userdel.err create mode 100755 tests/tests/usertools/01/19_userdel_delete_user_in_group.test create mode 100755 tests/tests/usertools/01/20_usermod_change_homedir.test create mode 100755 tests/tests/usertools/01/21_usermod_change_and_move_homedir.test create mode 100755 tests/tests/usertools/01/22_usermod_new_groups.test create mode 100644 tests/tests/usertools/01/22_usermod_new_groups/group create mode 100644 tests/tests/usertools/01/22_usermod_new_groups/gshadow create mode 100644 tests/tests/usertools/01/22_usermod_new_groups/passwd create mode 100644 tests/tests/usertools/01/22_usermod_new_groups/shadow create mode 100755 tests/tests/usertools/01/23_usermod_add_groups.test create mode 100644 tests/tests/usertools/01/23_usermod_add_groups/group create mode 100644 tests/tests/usertools/01/23_usermod_add_groups/gshadow create mode 100644 tests/tests/usertools/01/23_usermod_add_groups/passwd create mode 100644 tests/tests/usertools/01/23_usermod_add_groups/shadow create mode 100755 tests/tests/usertools/01/24_usermod_new_groups_remove_old_groups.test create mode 100644 tests/tests/usertools/01/24_usermod_new_groups_remove_old_groups/group create mode 100644 tests/tests/usertools/01/24_usermod_new_groups_remove_old_groups/gshadow create mode 100644 tests/tests/usertools/01/24_usermod_new_groups_remove_old_groups/passwd create mode 100644 tests/tests/usertools/01/24_usermod_new_groups_remove_old_groups/shadow create mode 100755 tests/tests/usertools/01/25_useradd_specified_large_UID2.test create mode 100644 tests/tests/usertools/01/25_useradd_specified_large_UID2/group create mode 100644 tests/tests/usertools/01/25_useradd_specified_large_UID2/gshadow create mode 100644 tests/tests/usertools/01/25_useradd_specified_large_UID2/passwd create mode 100644 tests/tests/usertools/01/25_useradd_specified_large_UID2/shadow create mode 100755 tests/tests/usertools/01/26_useradd_UID_-1.test create mode 100644 tests/tests/usertools/01/26_useradd_UID_-1/group create mode 100644 tests/tests/usertools/01/26_useradd_UID_-1/gshadow create mode 100644 tests/tests/usertools/01/26_useradd_UID_-1/passwd create mode 100644 tests/tests/usertools/01/26_useradd_UID_-1/shadow create mode 100644 tests/tests/usertools/01/config/etc/default/useradd create mode 100644 tests/tests/usertools/01/config/etc/group create mode 100644 tests/tests/usertools/01/config/etc/gshadow create mode 100644 tests/tests/usertools/01/config/etc/passwd create mode 100644 tests/tests/usertools/01/config/etc/shadow create mode 100644 tests/tests/usertools/02/config.txt create mode 100644 tests/tests/usertools/02/config/etc/default/useradd create mode 100644 tests/tests/usertools/02/config/etc/group create mode 100644 tests/tests/usertools/02/config/etc/gshadow create mode 100644 tests/tests/usertools/02/config/etc/passwd create mode 100644 tests/tests/usertools/02/config/etc/shadow create mode 100644 tests/tests/usertools/02/data/useradd-D.out create mode 100644 tests/tests/usertools/02/data/useradd-D_default_values.out create mode 100755 tests/tests/usertools/02/useradd_change_default_EXPIRE.test create mode 100644 tests/tests/usertools/02/useradd_change_default_EXPIRE/useradd.default create mode 100755 tests/tests/usertools/02/useradd_change_default_GROUP.test create mode 100644 tests/tests/usertools/02/useradd_change_default_GROUP/useradd.default create mode 100755 tests/tests/usertools/02/useradd_change_default_HOME.test create mode 100644 tests/tests/usertools/02/useradd_change_default_HOME/useradd.default create mode 100755 tests/tests/usertools/02/useradd_change_default_INACTIVE.test create mode 100644 tests/tests/usertools/02/useradd_change_default_INACTIVE/useradd.default create mode 100755 tests/tests/usertools/02/useradd_change_default_SHELL.test create mode 100644 tests/tests/usertools/02/useradd_change_default_SHELL/useradd.default create mode 100755 tests/tests/usertools/02/useradd_change_defaults.test create mode 100644 tests/tests/usertools/02/useradd_change_defaults/useradd.default create mode 100755 tests/tests/usertools/02/useradd_default_default_values.test create mode 100755 tests/tests/usertools/02/useradd_get_default_values.test create mode 100644 tests/tests/usertools/03/config.txt create mode 100644 tests/tests/usertools/03/config/etc/default/useradd create mode 100644 tests/tests/usertools/03/config/etc/group create mode 100644 tests/tests/usertools/03/config/etc/gshadow create mode 100644 tests/tests/usertools/03/config/etc/passwd create mode 100644 tests/tests/usertools/03/config/etc/shadow create mode 100755 tests/tests/usertools/03/useradd_change_defaults.test create mode 100644 tests/tests/usertools/03/useradd_change_defaults/useradd.default create mode 100755 tests/tests/usertools/04/01_useradd_add_user.test create mode 100644 tests/tests/usertools/04/01_useradd_add_user/group create mode 100644 tests/tests/usertools/04/01_useradd_add_user/gshadow create mode 100644 tests/tests/usertools/04/01_useradd_add_user/passwd create mode 100644 tests/tests/usertools/04/01_useradd_add_user/shadow create mode 100644 tests/tests/usertools/04/config.txt create mode 100644 tests/tests/usertools/04/config/etc/default/useradd create mode 100644 tests/tests/usertools/04/config/etc/group create mode 100644 tests/tests/usertools/04/config/etc/gshadow create mode 100644 tests/tests/usertools/04/config/etc/passwd create mode 100644 tests/tests/usertools/04/config/etc/shadow create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/config.txt create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/config/etc/default/useradd create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/config/etc/group create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/config/etc/gshadow create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/config/etc/passwd create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/config/etc/shadow create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/data/group create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/data/gshadow create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/data/passwd create mode 100644 tests/tests/usertools/05_userdel_del_from_group_members/data/shadow create mode 100755 tests/tests/usertools/05_userdel_del_from_group_members/userdel.test create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/config.txt create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/config/etc/default/useradd create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/config/etc/group create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/config/etc/gshadow create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/config/etc/passwd create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/config/etc/shadow create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/data/group create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/data/gshadow create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/data/passwd create mode 100644 tests/tests/usertools/06_userdel_del_from_gshadow_members/data/shadow create mode 100755 tests/tests/usertools/06_userdel_del_from_gshadow_members/userdel.test create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/config.txt create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/config/etc/default/useradd create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/config/etc/group create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/config/etc/gshadow create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/config/etc/passwd create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/config/etc/shadow create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/data/group create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/data/gshadow create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/data/passwd create mode 100644 tests/tests/usertools/07_userdel_del_from_gshadow_admins/data/shadow create mode 100755 tests/tests/usertools/07_userdel_del_from_gshadow_admins/userdel.test create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/config.txt create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/config/etc/group create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/data/group create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/data/gshadow create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/data/passwd create mode 100644 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/data/shadow create mode 100755 tests/tests/usertools/08_userdel_del_from_group_and_gshadow/userdel.test create mode 100644 tests/tests/usertools/09_userdel_del_homedir/config.txt create mode 100644 tests/tests/usertools/09_userdel_del_homedir/config/etc/default/useradd create mode 100644 tests/tests/usertools/09_userdel_del_homedir/config/etc/group create mode 100644 tests/tests/usertools/09_userdel_del_homedir/config/etc/gshadow create mode 100644 tests/tests/usertools/09_userdel_del_homedir/config/etc/passwd create mode 100644 tests/tests/usertools/09_userdel_del_homedir/config/etc/shadow create mode 100644 tests/tests/usertools/09_userdel_del_homedir/data/group create mode 100644 tests/tests/usertools/09_userdel_del_homedir/data/gshadow create mode 100644 tests/tests/usertools/09_userdel_del_homedir/data/passwd create mode 100644 tests/tests/usertools/09_userdel_del_homedir/data/shadow create mode 100755 tests/tests/usertools/09_userdel_del_homedir/userdel.test create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/config.txt create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/config/etc/default/useradd create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/config/etc/group create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/config/etc/gshadow create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/config/etc/passwd create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/config/etc/shadow create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/data/group create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/data/gshadow create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/data/passwd create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/data/shadow create mode 100644 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/data/userdel.err create mode 100755 tests/tests/usertools/10_userdel_del_homedir_wrong_owner/userdel.test create mode 100644 tests/tests/usertools/11_usermod_move_homedir/config.txt create mode 100644 tests/tests/usertools/11_usermod_move_homedir/config/etc/default/useradd create mode 100644 tests/tests/usertools/11_usermod_move_homedir/config/etc/group create mode 100644 tests/tests/usertools/11_usermod_move_homedir/config/etc/gshadow create mode 100644 tests/tests/usertools/11_usermod_move_homedir/config/etc/passwd create mode 100644 tests/tests/usertools/11_usermod_move_homedir/config/etc/shadow create mode 100644 tests/tests/usertools/11_usermod_move_homedir/data/home_ls-a create mode 100644 tests/tests/usertools/11_usermod_move_homedir/data/passwd create mode 100755 tests/tests/usertools/11_usermod_move_homedir/usermod.test create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/config.txt create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/config/etc/default/useradd create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/config/etc/group create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/config/etc/gshadow create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/config/etc/passwd create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/config/etc/shadow create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/data/passwd create mode 100644 tests/tests/usertools/12_usermod_move_homedir_dev_null/data/usermod.err create mode 100755 tests/tests/usertools/12_usermod_move_homedir_dev_null/usermod.test create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/config.txt create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/config/etc/group create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/config/etc/gshadow create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/config/etc/passwd create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/config/etc/shadow create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/data/passwd create mode 100644 tests/tests/usertools/13_usermod_move_homedir_file/data/usermod.err create mode 100755 tests/tests/usertools/13_usermod_move_homedir_file/usermod.test create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/config.txt create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/config/etc/default/useradd create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/config/etc/group create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/config/etc/gshadow create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/config/etc/passwd create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/config/etc/shadow create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/data/home_ls-a create mode 100644 tests/tests/usertools/14_usermod_move_homedir_other_device/data/passwd create mode 100755 tests/tests/usertools/14_usermod_move_homedir_other_device/usermod.test create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/config.txt create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/config/etc/default/useradd create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/config/etc/group create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/config/etc/gshadow create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/config/etc/passwd create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/config/etc/shadow create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/data/group create mode 100644 tests/tests/usertools/15_usermod_change_supplementary_groups/data/gshadow create mode 100755 tests/tests/usertools/15_usermod_change_supplementary_groups/usermod.test create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/config.txt create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/config/etc/default/useradd create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/config/etc/group create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/config/etc/gshadow create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/config/etc/passwd create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/config/etc/shadow create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/data/group create mode 100644 tests/tests/usertools/16_usermod_clear_supplementary_groups/data/gshadow create mode 100755 tests/tests/usertools/16_usermod_clear_supplementary_groups/usermod.test create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/config.txt create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/config/etc/default/useradd create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/config/etc/group create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/config/etc/gshadow create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/config/etc/passwd create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/config/etc/shadow create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/data/group create mode 100644 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/data/gshadow create mode 100755 tests/tests/usertools/17_usermod_change_supplementary_groups_numerical/usermod.test create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/config.txt create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/config/etc/group create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/config/etc/gshadow create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/config/etc/passwd create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/config/etc/shadow create mode 100644 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/data/usermod.err create mode 100755 tests/tests/usertools/18_usermod_change_supplementary_groups-unknown_group/usermod.test create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/config.txt create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/config/etc/group create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/config/etc/gshadow create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/config/etc/passwd create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/config/etc/shadow create mode 100644 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/data/usermod.err create mode 100755 tests/tests/usertools/19_usermod_change_supplementary_groups-unknown_numerical_group/usermod.test create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/config.txt create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/config/etc/default/useradd create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/config/etc/group create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/config/etc/gshadow create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/config/etc/passwd create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/config/etc/shadow create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/data/group create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/data/gshadow create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/data/passwd create mode 100644 tests/tests/usertools/20_usermod_rename_user_in_member_lists/data/shadow create mode 100755 tests/tests/usertools/20_usermod_rename_user_in_member_lists/usermod.test create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/config.txt create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/config/etc/default/useradd create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/config/etc/group create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/config/etc/gshadow create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/config/etc/passwd create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/config/etc/shadow create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/data/group create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/data/gshadow create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/data/passwd create mode 100644 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/data/shadow create mode 100755 tests/tests/usertools/21_usermod_rename_user_in_member_lists-and-add_supplementary_groups/usermod.test create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/config.txt create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/config/etc/group create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/config/etc/gshadow create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/config/etc/passwd create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/config/etc/shadow create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/data/group create mode 100644 tests/tests/usertools/22_usermod-a_existing_supplementary_group/data/gshadow create mode 100755 tests/tests/usertools/22_usermod-a_existing_supplementary_group/usermod.test create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/config.txt create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/config/etc/default/useradd create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/config/etc/group create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/config/etc/gshadow create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/config/etc/passwd create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/config/etc/shadow create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/data/group create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/data/gshadow create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/data/passwd create mode 100644 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/data/shadow create mode 100755 tests/tests/usertools/23_usermod-a_existing_supplementary_group+rename/usermod.test create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/config.txt create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/config/etc/default/useradd create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/config/etc/group create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/24_usermod_locked_passwd/data/usermod.err create mode 100755 tests/tests/usertools/24_usermod_locked_passwd/usermod.test create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/config.txt create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/config/etc/group create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/config/etc/gshadow create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/config/etc/passwd create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/config/etc/shadow create mode 100644 tests/tests/usertools/25_usermod-G_locked_group/data/usermod.err create mode 100755 tests/tests/usertools/25_usermod-G_locked_group/usermod.test create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/config.txt create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/config/etc/group create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/config/etc/passwd create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/config/etc/shadow create mode 100644 tests/tests/usertools/26_usermod_locked_shadow/data/usermod.err create mode 100755 tests/tests/usertools/26_usermod_locked_shadow/usermod.test create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/config.txt create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/config/etc/group create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/27_usermod-G_locked_gshadow/data/usermod.err create mode 100755 tests/tests/usertools/27_usermod-G_locked_gshadow/usermod.test create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/config.txt create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/config/etc/group create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/config/etc/gshadow create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/config/etc/passwd create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/config/etc/shadow create mode 100644 tests/tests/usertools/28_usermod-c_locked_group/data/passwd create mode 100755 tests/tests/usertools/28_usermod-c_locked_group/usermod.test create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/config.txt create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/config/etc/group create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/29_usermod-c_locked_gshadow/data/passwd create mode 100755 tests/tests/usertools/29_usermod-c_locked_gshadow/usermod.test create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/config.txt create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/config/etc/group create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/config/etc/gshadow create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/config/etc/passwd create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/config/etc/shadow create mode 100644 tests/tests/usertools/30_usermod-l_locked_group/data/usermod.err create mode 100755 tests/tests/usertools/30_usermod-l_locked_group/usermod.test create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/config.txt create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/config/etc/group create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/31_usermod-l_locked_gshadow/data/usermod.err create mode 100755 tests/tests/usertools/31_usermod-l_locked_gshadow/usermod.test create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/config.txt create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/config/etc/default/useradd create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/config/etc/group create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/config/etc/gshadow create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/config/etc/passwd create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/config/etc/shadow create mode 100644 tests/tests/usertools/32_usermod-u_new_UID/data/passwd create mode 100755 tests/tests/usertools/32_usermod-u_new_UID/usermod.test create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/config.txt create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/config/etc/default/useradd create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/config/etc/group create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/config/etc/gshadow create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/config/etc/passwd create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/config/etc/shadow create mode 100644 tests/tests/usertools/33_usermod-u_existing_UID/data/usermod.err create mode 100755 tests/tests/usertools/33_usermod-u_existing_UID/usermod.test create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/config.txt create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/config/etc/default/useradd create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/config/etc/group create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/config/etc/gshadow create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/config/etc/passwd create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/config/etc/shadow create mode 100644 tests/tests/usertools/34_usermod-u-o_existing_UID/data/passwd create mode 100755 tests/tests/usertools/34_usermod-u-o_existing_UID/usermod.test create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/config.txt create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/config/etc/default/useradd create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/config/etc/group create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/config/etc/gshadow create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/config/etc/passwd create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/config/etc/shadow create mode 100644 tests/tests/usertools/35_usermod-u_invalid_UID/data/usermod.err create mode 100755 tests/tests/usertools/35_usermod-u_invalid_UID/usermod.test create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/config.txt create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/config/etc/default/useradd create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/config/etc/group create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/config/etc/gshadow create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/config/etc/passwd create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/config/etc/shadow create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/data/home_ls-a create mode 100644 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/data/passwd create mode 100755 tests/tests/usertools/36_usermod_change_uid+move_homedir_other_device/usermod.test create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/config.txt create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/config/etc/default/useradd create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/config/etc/group create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/config/etc/gshadow create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/config/etc/passwd create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/config/etc/shadow create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/data/group create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/data/gshadow create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/data/passwd create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/data/shadow create mode 100644 tests/tests/usertools/37_Debian_Bug_470745/data/usermod.err create mode 100755 tests/tests/usertools/37_Debian_Bug_470745/usermod.test create mode 100644 tests/tests/usertools/38_usermod_invalid_user/config.txt create mode 100644 tests/tests/usertools/38_usermod_invalid_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/38_usermod_invalid_user/config/etc/group create mode 100644 tests/tests/usertools/38_usermod_invalid_user/config/etc/gshadow create mode 100644 tests/tests/usertools/38_usermod_invalid_user/config/etc/passwd create mode 100644 tests/tests/usertools/38_usermod_invalid_user/config/etc/shadow create mode 100644 tests/tests/usertools/38_usermod_invalid_user/data/usermod.err create mode 100755 tests/tests/usertools/38_usermod_invalid_user/usermod.test create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/config.txt create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/config/etc/default/useradd create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/config/etc/group create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/config/etc/gshadow create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/config/etc/passwd create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/config/etc/shadow create mode 100644 tests/tests/usertools/39_usermod_-c_invalid_comment/data/usermod.err create mode 100755 tests/tests/usertools/39_usermod_-c_invalid_comment/usermod.test create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/config.txt create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/config/etc/default/useradd create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/config/etc/group create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/config/etc/gshadow create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/config/etc/passwd create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/config/etc/shadow create mode 100644 tests/tests/usertools/40_usermod_-d_invalid_homedir/data/usermod.err create mode 100755 tests/tests/usertools/40_usermod_-d_invalid_homedir/usermod.test create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/config.txt create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/config/etc/default/useradd create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/config/etc/group create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/config/etc/gshadow create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/config/etc/passwd create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/config/etc/shadow create mode 100644 tests/tests/usertools/41_usermod_-d_invalid_shell/data/usermod.err create mode 100755 tests/tests/usertools/41_usermod_-d_invalid_shell/usermod.test create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/config.txt create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/config/etc/default/useradd create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/config/etc/group create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/config/etc/gshadow create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/config/etc/passwd create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/config/etc/shadow create mode 100644 tests/tests/usertools/42_usermod_-g_invalid_group_name/data/usermod.err create mode 100755 tests/tests/usertools/42_usermod_-g_invalid_group_name/usermod.test create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/config.txt create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/config/etc/default/useradd create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/config/etc/group create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/config/etc/gshadow create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/config/etc/passwd create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/config/etc/shadow create mode 100644 tests/tests/usertools/43_usermod_-g_invalid_group_ID/data/usermod.err create mode 100755 tests/tests/usertools/43_usermod_-g_invalid_group_ID/usermod.test create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/config.txt create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/config/etc/default/useradd create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/config/etc/group create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/config/etc/gshadow create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/config/etc/passwd create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/config/etc/shadow create mode 100644 tests/tests/usertools/44_usermod-l_existing_username/data/usermod.err create mode 100755 tests/tests/usertools/44_usermod-l_existing_username/usermod.test create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/config.txt create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/config/etc/default/useradd create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/config/etc/group create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/45_usermod-l_existing_username_passwd/data/usermod.err create mode 100755 tests/tests/usertools/45_usermod-l_existing_username_passwd/usermod.test create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/config.txt create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/config/etc/group create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/config/etc/gshadow create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/config/etc/passwd create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/config/etc/shadow create mode 100644 tests/tests/usertools/46_usermod-l_existing_username_shadow/data/usermod.err create mode 100755 tests/tests/usertools/46_usermod-l_existing_username_shadow/usermod.test create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/data/group create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/data/gshadow create mode 100644 tests/tests/usertools/47_usermod-l_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/47_usermod-l_no_shadow_file/usermod.test create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/config.txt create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/config/etc/group create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/config/etc/gshadow create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/config/etc/passwd create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/config/etc/shadow create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/data/group create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/data/passwd create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/data/shadow create mode 100644 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/data/userdel.err create mode 100755 tests/tests/usertools/48_userdel_keep_group_if_primary_other_user/userdel.test create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/config.txt create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/config/etc/group create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/config/etc/gshadow create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/config/etc/passwd create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/config/etc/shadow create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/data/group create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/data/gshadow create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/data/passwd create mode 100644 tests/tests/usertools/49_userdel_delete_users_group/data/shadow create mode 100755 tests/tests/usertools/49_userdel_delete_users_group/userdel.test create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/config.txt create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/config/etc/group create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/config/etc/gshadow create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/config/etc/passwd create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/config/etc/shadow create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/data/group create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/data/passwd create mode 100644 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/data/shadow create mode 100755 tests/tests/usertools/50_userdel_delete_users_group_no_gshadow_group/userdel.test create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/config.txt create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/config/etc/group create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/data/group create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/data/passwd create mode 100644 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/data/shadow create mode 100755 tests/tests/usertools/51_userdel_delete_users_group_no_gshadow_file/userdel.test create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/config.txt create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/data/group create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/data/gshadow create mode 100644 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/data/passwd create mode 100755 tests/tests/usertools/52_userdel_delete_user_no_shadow_entry/userdel.test create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/data/group create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/data/gshadow create mode 100644 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/53_userdel_delete_user_no_shadow_file/userdel.test create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/config.txt create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/config/etc/default/useradd create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/config/etc/group create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/config/etc/gshadow create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/config/etc/passwd create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/config/etc/shadow create mode 100644 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/data/usermod.err create mode 100755 tests/tests/usertools/54_usermod-u_invalid_UID_4294967295/usermod.test create mode 100644 tests/tests/usertools/55_userdel_busy_user/config.txt create mode 100644 tests/tests/usertools/55_userdel_busy_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/55_userdel_busy_user/config/etc/group create mode 100644 tests/tests/usertools/55_userdel_busy_user/config/etc/gshadow create mode 100644 tests/tests/usertools/55_userdel_busy_user/config/etc/passwd create mode 100644 tests/tests/usertools/55_userdel_busy_user/config/etc/shadow create mode 100644 tests/tests/usertools/55_userdel_busy_user/data/userdel.err create mode 100755 tests/tests/usertools/55_userdel_busy_user/userdel.test create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/config.txt create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/config/etc/default/useradd create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/config/etc/group create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/56_userdel_locked_passwd/data/userdel.err create mode 100755 tests/tests/usertools/56_userdel_locked_passwd/userdel.test create mode 100644 tests/tests/usertools/57_userdel_locked_group/config.txt create mode 100644 tests/tests/usertools/57_userdel_locked_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/57_userdel_locked_group/config/etc/group create mode 100644 tests/tests/usertools/57_userdel_locked_group/config/etc/gshadow create mode 100644 tests/tests/usertools/57_userdel_locked_group/config/etc/passwd create mode 100644 tests/tests/usertools/57_userdel_locked_group/config/etc/shadow create mode 100644 tests/tests/usertools/57_userdel_locked_group/data/userdel.err create mode 100755 tests/tests/usertools/57_userdel_locked_group/userdel.test create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/config.txt create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/config/etc/group create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/config/etc/passwd create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/config/etc/shadow create mode 100644 tests/tests/usertools/58_userdel_locked_shadow/data/userdel.err create mode 100755 tests/tests/usertools/58_userdel_locked_shadow/userdel.test create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/config.txt create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/config/etc/group create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/59_userdel_locked_gshadow/data/userdel.err create mode 100755 tests/tests/usertools/59_userdel_locked_gshadow/userdel.test create mode 100644 tests/tests/usertools/60_userdel_invalid_user/config.txt create mode 100644 tests/tests/usertools/60_userdel_invalid_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/60_userdel_invalid_user/config/etc/group create mode 100644 tests/tests/usertools/60_userdel_invalid_user/config/etc/gshadow create mode 100644 tests/tests/usertools/60_userdel_invalid_user/config/etc/passwd create mode 100644 tests/tests/usertools/60_userdel_invalid_user/config/etc/shadow create mode 100644 tests/tests/usertools/60_userdel_invalid_user/data/userdel.err create mode 100755 tests/tests/usertools/60_userdel_invalid_user/userdel.test create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/config.txt create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/config/etc/default/useradd create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/config/etc/group create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/config/etc/gshadow create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/config/etc/passwd create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/config/etc/shadow create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/data/group create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/data/gshadow create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/data/passwd create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/data/shadow create mode 100644 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/data/userdel.err create mode 100755 tests/tests/usertools/61_userdel_del_homedir_with_symlinks/userdel.test create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/config.txt create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/config/etc/default/useradd create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/config/etc/group create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/config/etc/gshadow create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/config/etc/passwd create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/config/etc/shadow create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/data/group create mode 100644 tests/tests/usertools/62_usermod_remove_supplementary_groups/data/gshadow create mode 100755 tests/tests/usertools/62_usermod_remove_supplementary_groups/usermod.test create mode 100755 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/data/chpasswd.err create mode 100644 tests/tests/usertools/chpasswd-PAM/01_chpasswd_invalid_user/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/02_chpasswd_multiple_users/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/03_chpasswd_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/data/chpasswd.err create mode 100644 tests/tests/usertools/chpasswd-PAM/05_chpasswd_error_no_password/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/06_chpasswd_usage/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/07_chpasswd_usage_bad_option/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/08_chpasswd_usage-e-m_exclusive/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/09_chpasswd_usage-e-c_exclusive/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/10_chpasswd_usage-m-c_exclusive/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/11_chpasswd_usage-s_without-c/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/12_chpasswd_usage-s_invalid/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/13_chpasswd_usage-c_invalid/data/usage.out create mode 100755 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/14_chpasswd_password_encrypted/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/15_chpasswd_password_md5/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/16_chpasswd_password_NONE/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/17_chpasswd_password_MD5/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/18_chpasswd_password_DES/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/19_chpasswd_password_SHA256/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/20_chpasswd_password_SHA256_rounds_900/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/21_chpasswd_password_SHA256_rounds_9000/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/22_chpasswd_password_SHA512/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/23_chpasswd_password_SHA512_rounds_900/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/24_chpasswd_password_SHA512_rounds_9000/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/25_chpasswd-e_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/26_chpasswd_no_shadow_file_invalid_passwd/data/chpasswd.err create mode 100755 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/data/chpasswd.err create mode 100644 tests/tests/usertools/chpasswd-PAM/27_chpasswd_no_shadow_file_1st_invalid_passwd_entry/data/passwd create mode 100755 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/data/chpasswd.err create mode 100644 tests/tests/usertools/chpasswd-PAM/28_chpasswd_no_shadow_file_2nd_invalid_passwd_entry/data/passwd create mode 100755 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/data/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/30_chpasswd_locked_passwd/data/chpasswd.err create mode 100755 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/31_chpasswd_locked_shadow/data/chpasswd.err create mode 100755 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/data/chpasswd.err create mode 100644 tests/tests/usertools/chpasswd-PAM/32_chpasswd_invalid_user/data/shadow create mode 100755 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/config.txt create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/33_chpasswd-e_invalid_user/data/chpasswd.err create mode 100755 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/config/etc/group create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/config/etc/pam.d/chpasswd create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/config/etc/pam.d/common-password create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/data/passwd create mode 100644 tests/tests/usertools/chpasswd-PAM/34_chpasswd-e_password_shadow_and_passwd/data/shadow create mode 100755 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/config/etc/group create mode 100644 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/config/etc/login.defs create mode 100644 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd/01_chpasswd_invalid_user/data/chpasswd.err create mode 100755 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/config/etc/group create mode 100644 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/config/etc/login.defs create mode 100644 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd/02_chpasswd_multiple_users/data/shadow create mode 100755 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/config/etc/login.defs create mode 100644 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd/03_chpasswd_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/config/etc/login.defs create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/data/passwd create mode 100644 tests/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/data/shadow create mode 100755 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/chpasswd.test create mode 100644 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/config/etc/group create mode 100644 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/config/etc/gshadow create mode 100644 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/config/etc/login.defs create mode 100644 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/config/etc/passwd create mode 100644 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/config/etc/shadow create mode 100644 tests/tests/usertools/chpasswd/05_chpasswd_error_no_password/data/chpasswd.err create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/config.txt create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/config/etc/group create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/01_useradd_usage/data/usage.out create mode 100755 tests/tests/usertools/useradd/01_useradd_usage/useradd.test create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/config.txt create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/config/etc/group create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/data/usage.out create mode 100755 tests/tests/usertools/useradd/02_useradd_usage_invalid_option/useradd.test create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/config.txt create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/config/etc/group create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/03_useradd_usage_no_users/data/usage.out create mode 100755 tests/tests/usertools/useradd/03_useradd_usage_no_users/useradd.test create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/config.txt create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/config/etc/group create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/04_useradd_usage_2_users/data/usage.out create mode 100755 tests/tests/usertools/useradd/04_useradd_usage_2_users/useradd.test create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/05_useradd_usage-b_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/06_useradd_usage-b_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/config.txt create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/config/etc/group create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/data/usage.out create mode 100755 tests/tests/usertools/useradd/07_useradd_usage-b_invalid3/useradd.test create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/08_useradd_usage-c_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/09_useradd_usage-c_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/10_useradd_usage-d_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/11_useradd_usage-d_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/config.txt create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/config/etc/group create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/data/usage.out create mode 100755 tests/tests/usertools/useradd/12_useradd_usage-d_invalid3/useradd.test create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/13_useradd_usage-e_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/14_useradd_usage-e_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/data/usage.out create mode 100755 tests/tests/usertools/useradd/15_useradd_usage-e_no_shadow_file/useradd.test create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/16_useradd_usage-f_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/17_useradd_usage-f_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/data/usage.out create mode 100755 tests/tests/usertools/useradd/18_useradd_usage-f_no_shadow_file/useradd.test create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/19_useradd_usage-K_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/20_useradd_usage-O_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/21_useradd_usage-p_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/22_useradd_usage-p_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/23_useradd_usage-s_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/24_useradd_usage-s_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/config.txt create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/config/etc/group create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/data/usage.out create mode 100755 tests/tests/usertools/useradd/25_useradd_usage-s_invalid3/useradd.test create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/config.txt create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/config/etc/group create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/data/usage.out create mode 100755 tests/tests/usertools/useradd/26_useradd_usage-o_without-u/useradd.test create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/config.txt create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/config/etc/group create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/data/usage.out create mode 100755 tests/tests/usertools/useradd/27_useradd_usage-k_without-m/useradd.test create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/config.txt create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/config/etc/group create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/data/usage.out create mode 100755 tests/tests/usertools/useradd/28_useradd_usage-U_with-g/useradd.test create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/config.txt create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/config/etc/group create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/data/usage.out create mode 100755 tests/tests/usertools/useradd/29_useradd_usage-U_with-N/useradd.test create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/config.txt create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/config/etc/group create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/data/usage.out create mode 100755 tests/tests/usertools/useradd/30_useradd_usage-m_with-M/useradd.test create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/config.txt create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/config/etc/group create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/data/usage.out create mode 100755 tests/tests/usertools/useradd/31_useradd_usage_user_with-D/useradd.test create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/config.txt create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/config/etc/group create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/data/usage.out create mode 100755 tests/tests/usertools/useradd/32_useradd_usage-D_with_other/useradd.test create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/config.txt create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/config/etc/group create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/data/usage.out create mode 100755 tests/tests/usertools/useradd/33_useradd_usage_invalid_username/useradd.test create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/config.txt create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/config/etc/group create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/data/passwd create mode 100644 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/data/shadow create mode 100755 tests/tests/usertools/useradd/34_useradd_default_GROUP_GID/useradd.test create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/config.txt create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/config/etc/group create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/data/passwd create mode 100644 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/data/shadow create mode 100755 tests/tests/usertools/useradd/35_useradd_default_GROUP_name/useradd.test create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/config.txt create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/config/etc/group create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/data/passwd create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/data/shadow create mode 100644 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/data/usage.out create mode 100755 tests/tests/usertools/useradd/36_useradd_default_GROUP_invalid_GID/useradd.test create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/config.txt create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/config/etc/group create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/data/passwd create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/data/shadow create mode 100644 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/data/usage.out create mode 100755 tests/tests/usertools/useradd/37_useradd_default_GROUP_invalid_name/useradd.test create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/config.txt create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/config/etc/group create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/data/passwd create mode 100644 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/data/shadow create mode 100755 tests/tests/usertools/useradd/38_useradd_default_INACTIVE/useradd.test create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/config.txt create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/config/etc/group create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/data/passwd create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/data/shadow create mode 100644 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/data/usage.out create mode 100755 tests/tests/usertools/useradd/39_useradd_default_INACTIVE_invalid1/useradd.test create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/config.txt create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/config/etc/group create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/data/passwd create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/data/shadow create mode 100644 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/data/usage.out create mode 100755 tests/tests/usertools/useradd/40_useradd_default_INACTIVE_invalid2/useradd.test create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/config.txt create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/config/etc/group create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/data/defaults create mode 100755 tests/tests/usertools/useradd/41_useradd_default_default_SKEL/useradd.test create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/config.txt create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/config/etc/group create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/data/defaults create mode 100755 tests/tests/usertools/useradd/42_useradd_default_default_CREATE_MAIL_SPOOL/useradd.test create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/config.txt create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/config/etc/group create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/data/useradd create mode 100755 tests/tests/usertools/useradd/43_useradd_default_no_final_eol/useradd.test create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/config.txt create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/config/etc/group create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/44_useradd_default_no_file/data/useradd create mode 100755 tests/tests/usertools/useradd/44_useradd_default_no_file/useradd.test create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/config.txt create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/config/etc/group create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/data/group create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/data/gshadow create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/data/passwd create mode 100644 tests/tests/usertools/useradd/45_useradd-G_UID_name/data/shadow create mode 100755 tests/tests/usertools/useradd/45_useradd-G_UID_name/useradd.test create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/config.txt create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/config/etc/group create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/data/group create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/data/gshadow create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/data/passwd create mode 100644 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/data/shadow create mode 100755 tests/tests/usertools/useradd/46_useradd-G_UID_duplicate/useradd.test create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/config.txt create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/config/etc/group create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/data/group create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/data/gshadow create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/data/passwd create mode 100644 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/data/shadow create mode 100755 tests/tests/usertools/useradd/47_useradd-G_UID_name_duplicate/useradd.test create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/config.txt create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/config/etc/group create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/data/group create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/data/gshadow create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/data/passwd create mode 100644 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/data/shadow create mode 100755 tests/tests/usertools/useradd/48_useradd-G_name_duplicate/useradd.test create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/config.txt create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/config/etc/group create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/49_useradd-G_invalid_group/data/usage.out create mode 100755 tests/tests/usertools/useradd/49_useradd-G_invalid_group/useradd.test create mode 100644 tests/tests/usertools/useradd/50_useradd-r/config.txt create mode 100644 tests/tests/usertools/useradd/50_useradd-r/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/50_useradd-r/config/etc/group create mode 100644 tests/tests/usertools/useradd/50_useradd-r/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/50_useradd-r/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/50_useradd-r/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/50_useradd-r/data/group create mode 100644 tests/tests/usertools/useradd/50_useradd-r/data/gshadow create mode 100644 tests/tests/usertools/useradd/50_useradd-r/data/passwd create mode 100644 tests/tests/usertools/useradd/50_useradd-r/data/shadow create mode 100755 tests/tests/usertools/useradd/50_useradd-r/useradd.test create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/config.txt create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/config/etc/group create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/51_useradd_already_exist/data/usage.out create mode 100755 tests/tests/usertools/useradd/51_useradd_already_exist/useradd.test create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/config.txt create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/config/etc/group create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/data/usage.out create mode 100755 tests/tests/usertools/useradd/52_useradd-U_group_already_exist/useradd.test create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/config.txt create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/config/etc/group create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/data/group create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/data/gshadow create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/data/passwd create mode 100644 tests/tests/usertools/useradd/53_useradd-G_empty/data/shadow create mode 100755 tests/tests/usertools/useradd/53_useradd-G_empty/useradd.test create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/data/group create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/data/gshadow create mode 100644 tests/tests/usertools/useradd/54_useradd_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/useradd/54_useradd_no_shadow_file/useradd.test create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/config.txt create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/config/etc/group create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/data/group create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/data/passwd create mode 100644 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/data/shadow create mode 100755 tests/tests/usertools/useradd/55_useradd_no_gshadow_file/useradd.test create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/config.txt create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/config/etc/group create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/data/group create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/data/gshadow create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/data/passwd create mode 100644 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/data/shadow create mode 100755 tests/tests/usertools/useradd/56_useradd_gshadow_entry_without_group_entry/useradd.test create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/config.txt create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/config/etc/group create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/data/usage.out create mode 100755 tests/tests/usertools/useradd/57_useradd_usage-D_not_first_option/useradd.test create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/config.txt create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/config/etc/group create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/data/group create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/data/gshadow create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/data/passwd create mode 100644 tests/tests/usertools/useradd/58_useradd-e_empty/data/shadow create mode 100755 tests/tests/usertools/useradd/58_useradd-e_empty/useradd.test create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/config.txt create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/config/etc/group create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/data/group create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/data/gshadow create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/data/passwd create mode 100644 tests/tests/usertools/useradd/59_useradd-e-1-f-1/data/shadow create mode 100755 tests/tests/usertools/useradd/59_useradd-e-1-f-1/useradd.test create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/data/group create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/data/gshadow create mode 100644 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/useradd/60_useradd-e-1-f-1_no_shadow_file/useradd.test create mode 100644 tests/tests/usertools/useradd/61_useradd-K/config.txt create mode 100644 tests/tests/usertools/useradd/61_useradd-K/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/61_useradd-K/config/etc/group create mode 100644 tests/tests/usertools/useradd/61_useradd-K/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/61_useradd-K/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/61_useradd-K/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/61_useradd-K/data/group create mode 100644 tests/tests/usertools/useradd/61_useradd-K/data/gshadow create mode 100644 tests/tests/usertools/useradd/61_useradd-K/data/passwd create mode 100644 tests/tests/usertools/useradd/61_useradd-K/data/shadow create mode 100755 tests/tests/usertools/useradd/61_useradd-K/useradd.test create mode 100644 tests/tests/usertools/useradd/62_useradd-p/config.txt create mode 100644 tests/tests/usertools/useradd/62_useradd-p/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/62_useradd-p/config/etc/group create mode 100644 tests/tests/usertools/useradd/62_useradd-p/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/62_useradd-p/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/62_useradd-p/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/62_useradd-p/data/group create mode 100644 tests/tests/usertools/useradd/62_useradd-p/data/gshadow create mode 100644 tests/tests/usertools/useradd/62_useradd-p/data/passwd create mode 100644 tests/tests/usertools/useradd/62_useradd-p/data/shadow create mode 100755 tests/tests/usertools/useradd/62_useradd-p/useradd.test create mode 100644 tests/tests/usertools/useradd/63_useradd-s/config.txt create mode 100644 tests/tests/usertools/useradd/63_useradd-s/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/63_useradd-s/config/etc/group create mode 100644 tests/tests/usertools/useradd/63_useradd-s/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/63_useradd-s/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/63_useradd-s/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/63_useradd-s/data/group create mode 100644 tests/tests/usertools/useradd/63_useradd-s/data/gshadow create mode 100644 tests/tests/usertools/useradd/63_useradd-s/data/passwd create mode 100644 tests/tests/usertools/useradd/63_useradd-s/data/shadow create mode 100755 tests/tests/usertools/useradd/63_useradd-s/useradd.test create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/config.txt create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/config/etc/group create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/64_useradd_locked_passwd/data/useradd.err create mode 100755 tests/tests/usertools/useradd/64_useradd_locked_passwd/useradd.test create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/config.txt create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/config/etc/group create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/65_useradd_locked_group/data/useradd.err create mode 100755 tests/tests/usertools/useradd/65_useradd_locked_group/useradd.test create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/config.txt create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/config/etc/group create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/66_useradd_locked_shadow/data/useradd.err create mode 100755 tests/tests/usertools/useradd/66_useradd_locked_shadow/useradd.test create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/config.txt create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/config/etc/group create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/67_useradd_locked_gshadow/data/useradd.err create mode 100755 tests/tests/usertools/useradd/67_useradd_locked_gshadow/useradd.test create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/config.txt create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/config/etc/group create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/config/etc/gshadow create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/config/etc/passwd create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/config/etc/shadow create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/data/group create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/data/gshadow create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/data/passwd create mode 100644 tests/tests/usertools/useradd/68_useradd-s_empty/data/shadow create mode 100755 tests/tests/usertools/useradd/68_useradd-s_empty/useradd.test create mode 100644 tests/tests/usertools/useradd/69_useradd_default_GROUPS_name/config.txt create mode 100644 tests/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/default/useradd create mode 100644 tests/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/group create mode 100644 tests/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/group create mode 100755 tests/tests/usertools/useradd/69_useradd_default_GROUPS_name/useradd.test create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/config.txt create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/config/etc/group create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/01_userdel_usage/data/usage.out create mode 100755 tests/tests/usertools/userdel/01_userdel_usage/userdel.test create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/config.txt create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/config/etc/group create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/data/usage.out create mode 100755 tests/tests/usertools/userdel/02_userdel_usage_invalid_option/userdel.test create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/config.txt create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/config/etc/group create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/03_userdel_usage_no_users/data/usage.out create mode 100755 tests/tests/usertools/userdel/03_userdel_usage_no_users/userdel.test create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/config.txt create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/config/etc/group create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/04_userdel_usage_2_users/data/usage.out create mode 100755 tests/tests/usertools/userdel/04_userdel_usage_2_users/userdel.test create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config.txt create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config/etc/group create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config/etc/login.defs create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/data/group create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/data/gshadow create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/data/passwd create mode 100644 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/data/shadow create mode 100755 tests/tests/usertools/userdel/05_userdel_no_USERGROUPS_ENAB/userdel.test create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config.txt create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config/etc/group create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config/etc/login.defs create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/data/group create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/data/gshadow create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/data/passwd create mode 100644 tests/tests/usertools/userdel/06_userdel_no_usergroup/data/shadow create mode 100755 tests/tests/usertools/userdel/06_userdel_no_usergroup/userdel.test create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config.txt create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config/etc/group create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config/etc/login.defs create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/data/group create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/data/gshadow create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/data/passwd create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/data/shadow create mode 100644 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/data/userdel.out create mode 100755 tests/tests/usertools/userdel/07_userdel_usergroup_not_primary/userdel.test create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config.txt create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config/etc/group create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config/etc/login.defs create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/data/group create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/data/gshadow create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/data/passwd create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/data/shadow create mode 100644 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/data/userdel.out create mode 100755 tests/tests/usertools/userdel/08_userdel_usergroup_with_other_members/userdel.test create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config.txt create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config/etc/group create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config/etc/login.defs create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/data/group create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/data/gshadow create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/data/passwd create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/data/shadow create mode 100644 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/data/userdel.out create mode 100755 tests/tests/usertools/userdel/09_userdel_usergroup_no_other_members_in_gshadow/userdel.test create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/config.txt create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/config/etc/default/useradd create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/config/etc/group create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/config/etc/gshadow create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/config/etc/passwd create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/config/etc/shadow create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/data/group create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/data/gshadow create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/data/passwd create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/data/shadow create mode 100644 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/data/userdel.err create mode 100755 tests/tests/usertools/userdel/10_userdel_del_homedir_symlink/userdel.test create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/data/passwd create mode 100755 tests/tests/usertools/usermod/01_usermod-p_no_shadow_file/usermod.test create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/config.txt create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/data/passwd create mode 100755 tests/tests/usertools/usermod/02_usermod-p_no_shadow_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/config.txt create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/config/etc/group create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/data/shadow create mode 100755 tests/tests/usertools/usermod/03_usermod-p_no_shadow_entry_but_shadow_enabled/usermod.test create mode 100644 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/config.txt create mode 100644 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/config/etc/group create mode 100644 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/config/etc/shadow create mode 100755 tests/tests/usertools/usermod/04_usermod_lock_already_locked_password1/usermod.test create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/config.txt create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/config/etc/group create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/data/shadow create mode 100755 tests/tests/usertools/usermod/05_usermod_lock_already_locked_password2/usermod.test create mode 100644 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/config.txt create mode 100644 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/config/etc/group create mode 100644 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/config/etc/shadow create mode 100755 tests/tests/usertools/usermod/06_usermod_lock_already_locked_password3/usermod.test create mode 100644 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/config.txt create mode 100644 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/config/etc/group create mode 100644 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/config/etc/shadow create mode 100755 tests/tests/usertools/usermod/07_usermod_unlock_already_unlocked_password1/usermod.test create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/config.txt create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/config/etc/group create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/data/shadow create mode 100755 tests/tests/usertools/usermod/08_usermod_unlock_already_unlocked_password2/usermod.test create mode 100644 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/config.txt create mode 100644 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/config/etc/group create mode 100644 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/config/etc/shadow create mode 100755 tests/tests/usertools/usermod/09_usermod_unlock_already_unlocked_password3/usermod.test create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/config.txt create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/config/etc/group create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/10_usermod_usage/data/usage.out create mode 100755 tests/tests/usertools/usermod/10_usermod_usage/usermod.test create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/config.txt create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/config/etc/group create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/11_usermod_usage_bad_option/data/usage.out create mode 100755 tests/tests/usertools/usermod/11_usermod_usage_bad_option/usermod.test create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/config.txt create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/config/etc/group create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/12_usermod_usage_bad-f/data/usermod.err create mode 100755 tests/tests/usertools/usermod/12_usermod_usage_bad-f/usermod.test create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/config.txt create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/config/etc/group create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negativ/data/usermod.err create mode 100755 tests/tests/usertools/usermod/13_usermod_usage_bad-f_negative/usermod.test create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/config.txt create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/config/etc/group create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/14_usermod_usage_no_options/data/usage.out create mode 100755 tests/tests/usertools/usermod/14_usermod_usage_no_options/usermod.test create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/config.txt create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/config/etc/group create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/15_usermod_usage_no_user/data/usage.out create mode 100755 tests/tests/usertools/usermod/15_usermod_usage_no_user/usermod.test create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/data/usage.out create mode 100755 tests/tests/usertools/usermod/16_usermod_usage_-e_no_shadow_file/usermod.test create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/config.txt create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/config/etc/group create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/data/usage.out create mode 100755 tests/tests/usertools/usermod/17_usermod_usage_-f_no_shadow_file/usermod.test create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/config.txt create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/config/etc/group create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/data/usage.out create mode 100755 tests/tests/usertools/usermod/18_usermod_usage-L-p_exclusive/usermod.test create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/config.txt create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/config/etc/group create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/data/usage.out create mode 100755 tests/tests/usertools/usermod/19_usermod_usage-L-U_exclusive/usermod.test create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/config.txt create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/config/etc/group create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/data/usage.out create mode 100755 tests/tests/usertools/usermod/20_usermod_usage-p-U_exclusive/usermod.test create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/config.txt create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/config/etc/group create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/data/group create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/data/passwd create mode 100644 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/data/shadow create mode 100755 tests/tests/usertools/usermod/21_usermod_rename_user_no_gshadow_file/usermod.test create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/config.txt create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/config/etc/group create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/data/usage.out create mode 100755 tests/tests/usertools/usermod/22_usermod_usage_rename_invalid_username/usermod.test create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/config.txt create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/config/etc/group create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/23_usermod-e_date/data/shadow create mode 100755 tests/tests/usertools/usermod/23_usermod-e_date/usermod.test create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/config.txt create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/config/etc/group create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/24_usermod-e_date/data/shadow create mode 100755 tests/tests/usertools/usermod/24_usermod-e_date/usermod.test create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/config.txt create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/config/etc/group create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/25_usermod-e_empty_arg/data/shadow create mode 100755 tests/tests/usertools/usermod/25_usermod-e_empty_arg/usermod.test create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/config.txt create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/config/etc/group create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/26_usermod-e-1/data/shadow create mode 100755 tests/tests/usertools/usermod/26_usermod-e-1/usermod.test create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/config.txt create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/config/etc/group create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/27_usermod-e_invalid1/data/usermod.err create mode 100755 tests/tests/usertools/usermod/27_usermod-e_invalid1/usermod.test create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/config.txt create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/config/etc/group create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/28_usermod-e_invalid2/data/usermod.err create mode 100755 tests/tests/usertools/usermod/28_usermod-e_invalid2/usermod.test create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/config.txt create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/config/etc/group create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/29_usermod_no_changes/data/usermod.err create mode 100755 tests/tests/usertools/usermod/29_usermod_no_changes/usermod.test create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/config.txt create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/config/etc/group create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/data/usage.out create mode 100755 tests/tests/usertools/usermod/30_usermod_usage-a_without-G/usermod.test create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/config.txt create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/config/etc/group create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/data/usage.out create mode 100755 tests/tests/usertools/usermod/31_usermod_usage-o_without-u/usermod.test create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/config.txt create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/config/etc/group create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/data/usage.out create mode 100755 tests/tests/usertools/usermod/32_usermod_usage-m_without-d/usermod.test create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/config.txt create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/config/etc/group create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/33_usermod_change_shell/data/passwd create mode 100755 tests/tests/usertools/usermod/33_usermod_change_shell/usermod.test create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/config.txt create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/data/shadow create mode 100755 tests/tests/usertools/usermod/34_usermod-e_date_no_shadow_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/config.txt create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/data/shadow create mode 100755 tests/tests/usertools/usermod/35_usermod-f_no_shadow_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/config.txt create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/config/etc/group create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/data/home_ls-a create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/data/home_ls-a2 create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/data/passwd create mode 100644 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/data/usermod.err create mode 100755 tests/tests/usertools/usermod/36_usermod_move_homedir_existing_dir/usermod.test create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/config.txt create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/config/etc/group create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/data/passwd create mode 100755 tests/tests/usertools/usermod/37_usermod_move_nonexistent_homedir/usermod.test create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/config.txt create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/config/etc/group create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/data/passwd create mode 100755 tests/tests/usertools/usermod/38_usermod-u_lastlog_not_created/usermod.test create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/config.txt create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/data/passwd create mode 100755 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/login.exp create mode 100755 tests/tests/usertools/usermod/39_usermod-u_copy_lastlog_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/config.txt create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/data/group create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/data/passwd create mode 100644 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/data/shadow create mode 100755 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/login.exp create mode 100755 tests/tests/usertools/usermod/40_usermod-u_reset_new_lastlog_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/config.txt create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/config/etc/group create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/data/passwd create mode 100755 tests/tests/usertools/usermod/41_usermod-u_faillog_not_created/usermod.test create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config.txt create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config/etc/pam.d/login create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/data/passwd create mode 100755 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/login.exp create mode 100755 tests/tests/usertools/usermod/42_usermod-u_copy_faillog_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config.txt create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config/etc/group create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config/etc/pam.d/login create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/data/group create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/data/passwd create mode 100644 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/data/shadow create mode 100755 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/login.exp create mode 100755 tests/tests/usertools/usermod/43_usermod-u_reset_new_faillog_entry/usermod.test create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/config.txt create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/config/etc/group create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/data/mailbox.perms create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/data/passwd create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/data/shadow create mode 100644 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/test create mode 100755 tests/tests/usertools/usermod/44_usermod-l_move_mailbox/usermod.test create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/config.txt create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/config/etc/group create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/data/mailbox.perms create mode 100644 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/data/passwd create mode 100755 tests/tests/usertools/usermod/45_usermod-u_change_mailbox_owner/usermod.test create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/config.txt create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/config/etc/group create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/data/mailbox.perms create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/data/passwd create mode 100644 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/data/usermod.err create mode 100755 tests/tests/usertools/usermod/46_usermod-u_checks_mailbox_owner/usermod.test create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config.txt create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config/etc/group create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config/etc/login.defs create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/data/mailbox.perms create mode 100644 tests/tests/usertools/usermod/47_usermod-u_default_maildir/data/passwd create mode 100755 tests/tests/usertools/usermod/47_usermod-u_default_maildir/usermod.test create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config.txt create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config/etc/group create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config/etc/login.defs create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/data/mailbox.perms create mode 100644 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/data/passwd create mode 100755 tests/tests/usertools/usermod/48_usermod-u_MAIL_FILE/usermod.test create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/config.txt create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/config/etc/group create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/data/home_ls-a create mode 100644 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/data/passwd create mode 100755 tests/tests/usertools/usermod/49_usermod_change_gid+move_homedir_other_device/usermod.test create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/config.txt create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/config/etc/group create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/data/home_ls-a create mode 100644 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/data/passwd create mode 100755 tests/tests/usertools/usermod/50_usermod_change_uid+move_homedir/usermod.test create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/config.txt create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/config/etc/group create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/data/home_ls-a create mode 100644 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/data/passwd create mode 100755 tests/tests/usertools/usermod/51_usermod_change_gid+move_homedir/usermod.test create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/config.txt create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/config/etc/default/useradd create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/config/etc/group create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/config/etc/gshadow create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/config/etc/passwd create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/config/etc/shadow create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/data/home_ls-a create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/data/home_ls-a2 create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/data/passwd create mode 100644 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/data/usermod.err create mode 100755 tests/tests/usertools/usermod/52_usermod_move_homedir_symlink/usermod.test create mode 100644 tests/unit/Makefile.am create mode 100644 tests/unit/Makefile.in create mode 100644 tests/unit/test_adds.c create mode 100644 tests/unit/test_atoi_strtoi.c create mode 100644 tests/unit/test_chkname.c create mode 100644 tests/unit/test_logind.c create mode 100644 tests/unit/test_sprintf.c create mode 100644 tests/unit/test_strncpy.c create mode 100644 tests/unit/test_strtcpy.c create mode 100644 tests/unit/test_xasprintf.c create mode 100644 tests/unit/test_zustr2stp.c diff --git a/AUTHORS.md b/AUTHORS.md index 288768d..ef05732 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -3,11 +3,20 @@ reports and various comments. This list may be incomplete, I received a lot of mail... # Maintainers +* Marek Michałkiewicz (1995-2000) * Tomasz Kłoczko (2000-2007) * Nicolas François (2007-2014) * Serge E. Hallyn (2014-now) * Christian Brauner (2019-now) * Iker Pedrosa (2022-now) +* Alejandro Colomar (2023-now) (4.14 stable) + +To verify signatures on releases, use the following keys under keys/ : + +* Serge Hallyn: keys/66D0387DB85D320F8408166DB175CFA98F192AF2.asc +* Christian Brauner: keys/4880B8C9BD0E5106FC070F4F7B3C391EFEA93624.asc +* Iker Pedrosa: keys/4E80EF49C7987B6DE2F81F5005079C6C3A653E57.asc +* Alejandro Colomar: keys/A9348594CE31283A826FBDD8D57633D441E25BB5.asc # Authors and contributors * Adam Rudnicki diff --git a/ChangeLog b/ChangeLog index cee7dfd..3c96dde 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9558,7 +9558,7 @@ * NEWS: release date corrected. * NEWS, src/su.c: - fixed set enviroment too early when using PAM, so move it to !USE_PAM + fixed set environment too early when using PAM, so move it to !USE_PAM (patch submitted by Mike Frysinger ). 2006-07-30 Tomasz Kłoczko @@ -10245,7 +10245,7 @@ * NEWS: cleanups. * autogen.sh: - by default in development enviroment use CFLAGS="-O2 -Wall". + by default in development environment use CFLAGS="-O2 -Wall". * src/chgpasswd.c (main): remove two unused variables (newgr and now). @@ -11654,7 +11654,7 @@ in OPTIONS section). Describe -a and -k options. * NEWS, src/su.c: - fixed twice copy enviroment which causes auth problems (bug was introduced in 4.0.12; + fixed twice copy environment which causes auth problems (bug was introduced in 4.0.12; fix by Nicolas François ). * src/passwd.c, po/ja.po, po/ko.po, po/nb.po, po/nl.po, po/nn.po, po/pl.po, po/pt.po, po/pt_BR.po, po/ro.po, po/ru.po, po/sk.po, po/sq.po, po/sv.po, po/tl.po, po/tr.po, po/uk.po, po/vi.po, po/zh_CN.po, po/zh_TW.po, po/bs.po, po/ca.po, po/cs.po, po/da.po, po/de.po, po/el.po, po/es.po, po/eu.po, po/fi.po, po/fr.po, po/he.po, po/id.po, po/it.po: @@ -12584,7 +12584,7 @@ http://bugs.debian.org/48002 * src/login.c, NEWS: - fixed loggin of username on succesful login (was using the normal username, + fixed loggin of username on successful login (was using the normal username, when it should have used pam_user) http://bugs.debian.org/47819 2005-06-02 Tomasz Kłoczko @@ -13029,7 +13029,7 @@ * man/pl/usermod.8: finish sync with english version. * man/hu/login.1, man/pl/login.1, NEWS, man/Attic/login.1, man/de/login.1: - removed fragment about abilities pass enviroment variables in login prompt. + removed fragment about abilities pass environment variables in login prompt. * man/Attic/gpasswd.1, man/Attic/newgrp.1: fixes by Nicolas Nicolas François (not all @@ -13508,7 +13508,7 @@ removed not used translations. * NEWS, src/su.c: - fix adding of pam_env env variables to enviroment (Martin Schlemmer ). + fix adding of pam_env env variables to environment (Martin Schlemmer ). * NEWS, configure.in: fixed filling MAIL_SPOOL_DIR and MAIL_SPOOL_FILE variables which was allways @@ -13605,7 +13605,7 @@ * NEWS, src/su.c: add pam_open_session() support. If builded without PAM support - propagate $DISPLAY and $XAUTHORITY enviroment variables. + propagate $DISPLAY and $XAUTHORITY environment 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 2004-10-23 Tomasz Kłoczko diff --git a/Makefile.am b/Makefile.am index 630e2aa..22bbd56 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,15 +1,18 @@ ## Process this file with automake to produce Makefile.in -EXTRA_DIST = NEWS README TODO shadow.spec.in +EXTRA_DIST = NEWS README -SUBDIRS = libmisc lib +SUBDIRS = lib if ENABLE_SUBIDS SUBDIRS += libsubid endif -SUBDIRS += src po contrib doc etc +SUBDIRS += src po contrib doc etc tests/unit if ENABLE_REGENERATE_MAN SUBDIRS += man endif + +CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo +EXTRA_DIST = tests/ diff --git a/Makefile.in b/Makefile.in index f4de2e3..66aa6b1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -108,7 +108,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = man/po/Makefile shadow.spec +CONFIG_CLEAN_FILES = man/po/Makefile CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) @@ -163,12 +163,11 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -DIST_SUBDIRS = libmisc lib libsubid src po contrib doc etc man +DIST_SUBDIRS = lib libsubid src po contrib doc etc tests/unit man am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(srcdir)/shadow.spec.in $(top_srcdir)/man/po/Makefile.in \ - ABOUT-NLS AUTHORS.md COPYING ChangeLog NEWS README TODO \ - compile config.guess config.rpath config.sub install-sh \ - ltmain.sh missing + $(top_srcdir)/man/po/Makefile.in ABOUT-NLS AUTHORS.md COPYING \ + ChangeLog NEWS README compile config.guess config.rpath \ + config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -224,6 +223,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -242,6 +243,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -257,9 +259,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -275,6 +283,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -283,6 +292,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -305,6 +316,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -376,9 +390,10 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -EXTRA_DIST = NEWS README TODO shadow.spec.in -SUBDIRS = libmisc lib $(am__append_1) src po contrib doc etc \ +EXTRA_DIST = tests/ +SUBDIRS = lib $(am__append_1) src po contrib doc etc tests/unit \ $(am__append_2) +CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -433,8 +448,6 @@ distclean-hdr: -rm -f config.h stamp-h1 man/po/Makefile: $(top_builddir)/config.status $(top_srcdir)/man/po/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ -shadow.spec: $(top_builddir)/config.status $(srcdir)/shadow.spec.in - cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo @@ -773,6 +786,7 @@ install-strip: mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) diff --git a/NEWS b/NEWS index 7cfd1b7..4b2cd99 100644 --- a/NEWS +++ b/NEWS @@ -696,7 +696,7 @@ shadow-4.0.18 -> shadow-4.0.18.1 03-08-2006 shadow-4.0.17 -> shadow-4.0.18 01-08-2006 *** general: -- su: fixed set enviroment too early when using PAM, so move it to !USE_PAM +- su: fixed set environment too early when using PAM, so move it to !USE_PAM (patch submitted by Mike Frysinger ), - groupadd, groupmod, useradd, usermod: fixed UID/GID overflow (fixed http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=198920) @@ -855,7 +855,7 @@ shadow-4.0.14 -> shadow-4.0.15 13-03-2006 - 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 enviroment in su on using -p, (patch by + which allow fix preserving environment in su on using -p, (patch by Alexander Gattin ), - su: added handle -c,--command option for GNU su compliance (merge 437_su_-c_option Debian patch), @@ -966,7 +966,7 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005 to example described in ident(1) man page (modern compilers like latest GCC removes not used functions by global optimization). So "ident /usr/bin/passwd" will show again some useable informations -- su: fixed twice copy enviroment which causes auth problems +- su: fixed twice copy environment which causes auth problems (bug was introduced in 4.0.12; fix by Nicolas François ), - chage: differentiate the different failure causes by the exit value This will permit to adduser Debian script to detect if chage failed because the @@ -1133,7 +1133,7 @@ shadow-4.0.9 -> shadow-4.0.10 28-06-2005 http://bugs.debian.org/53702 - login: check for hushed login and pass PAM_SILENT if true, http://bugs.debian.org/48002 -- login: fixed username on succesful login (was using the normal username, +- login: fixed username on successful 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 always built with shadow password support, @@ -1212,7 +1212,7 @@ shadow-4.0.7 -> shadow-4.0.8 26-04-2005 (without gshadow) doesn't permit to use newgrp, - newgrp(1): newgrp uses /bin/sh (not bash), - faillog(8): updated after rewritten faillog command for use getopt_long(), -- login(1): removed fragment about abilities pass enviroment variables in login prompt, +- login(1): removed fragment about abilities pass environment variables in login prompt, - gshadow(5): new file (by Nicolas Nicolas François ), - usermod(8): fixed #302388 Debian bug: added separated -o option description, @@ -1242,7 +1242,7 @@ shadow-4.0.6 -> shadow-4.0.7 26-01-2005 shadow-4.0.5 -> shadow-4.0.6 08-11-2004 -- su: fixed adding of pam_env env variables to enviroment +- su: fixed adding of pam_env env variables to environment (Martin Schlemmer ), - autoconf: fixed filling MAIL_SPOOL_DIR and MAIL_SPOOL_FILE variables which was always empty (Gregorio Guidi ), @@ -1275,7 +1275,7 @@ shadow-4.0.4.1 -> shadow-4.0.5 27-10-2004 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 built without PAM support - propagate $DISPLAY and $XAUTHORITY enviroment variables. + propagate $DISPLAY and $XAUTHORITY environment 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 Torkelsson : add support for PAM account diff --git a/README b/README index 3c035ef..1f79c8f 100644 --- a/README +++ b/README @@ -17,6 +17,12 @@ are used for managing group accounts. * [Issue tracker](https://github.com/shadow-maint/shadow/issues) * [Releases](https://github.com/shadow-maint/shadow/releases) +## Code + +The main development branch is at [https://github.com/shadow-maint/shadow.git](https://github.com/shadow-maint/shadow) + +See [STABLE.md](https://github.com/shadow-maint/shadow/blob/master/STABLE.md) for a list of supported stable branches. + ## Contacts There are several ways to contact us: * [the general discussion mailing list]( @@ -31,6 +37,11 @@ There are several ways to contact us: https://alioth-lists-archive.debian.net/pipermail/pkg-shadow-commits/), only used for historical purposes +## Contributions + +Contributions are welcome. Follow the +[guidelines](doc/contributions/introduction.md) before posting any patches. + ## Authors and maintainers Authors and maintainers are listed in [AUTHORS.md]( https://github.com/shadow-maint/shadow/blob/master/AUTHORS.md). diff --git a/TODO b/TODO deleted file mode 100644 index 8783ccd..0000000 --- a/TODO +++ /dev/null @@ -1,127 +0,0 @@ - * Create a common usage function that'd take the array of - long options and an array of descriptions and output that so things would - be standardized across the utils. - Usage strings should be normalized and split first. - Investigate optparse. - - -/etc/default/useradd - * GROUP=1000 should accept a group name. - -Check when RLOGIN is enabled if ruserok() exists - -Move selinux_file_context out of libmisc/copydir.c - -Review hardcoded root account? - -review all call to strto - -libmisc/cleanup_user.c - cleanup needed (cleanup_report_add_user* not used) - - -libxcrypt support - * http://wiki.linuxfromscratch.org/patches/browser/trunk/shadow/shadow-4.0.18.1-owl_blowfish-1.patch - -implement getlong, getulong. - avoid atoi, atol, atoul, strtol, strtoul, ... - -manpages: comment the RLOGIN parts - -Replace build_list (in lib/gshadow.c) and list (in lib/sgetgrent.c) by -comma_to_list() - -Revert the modified files if all files could not be changed. - * or warn and indicate which files were modified and which were not. - * check the order the files are modified. - -report nscd_flush_cache failures? -call nscd from the programs or from lib (commonio?) - -PAM: check if a non-interactive conversation function could be used to set -the password in chpasswd and newusers - -WITH_SELINUX - - review all tools to check that the strategies are consistent - -chage, chfn, chsh: same change needed as in passwd. - - probably need moving check_selinux_access to a separate file. - -testsuite - - newgrp - - test with unknown user's GID - -newusers - - add logging to SYSLOG & AUDIT - - use CREATE_HOME - - Add a -Z option (see useradd / usermod) - -Document when/where option appeared, document whether an option is standard -or not. - -Check all the expiry semantics - -ALL: -- move base passwd/shadow/group/gshadow operation to module for allow write - different backend modules for db, NIS, LDAP and others. Default backend it - will be goot if will be chosen depending on /etc/nsswitch.conf and allow - override this by -r options (where the can be - file, db, nis nisplus, ldap .. like on /etc/nsswitch.conf in service column). - passwd have old piece of code with handling -r option and it will be good - finish this and propagate on other shadow tools for allow operate on other - user databases by well known tools. -- Protect against signals. Register do_cleanups in a signal handler. - -- login.defs - - generate depending on configuration - -- useradd: - - add handle create user mail spool in maildir format. - - Add support for -k in -D mode - - Add support for -K in -D mode - - Add option to create or not the mail spool (and set the default in -D - mode) - - Change -l to reset the entry if an entry was already there - - set the mask in mkdir? - -- userdel: - - add backup option for the removal of user resources, - - user_busy: check that the user is not running any processes. - - missing "deleting group" FAILED - - home dir removed, but userdel may fail and may leave the user - => warning needed - -- usermod - - add an option equivalent to useradd's -l (only when uid is changed) - - the mode of new home directories should be set according to the - original mode. Does copy_tree does this? - - user renamed, order is not kept in /etc/group (see - 47_usermod-l_no_shadow_file). This is a problem when the first user is - considered as the admin. - - see mail "user ID change" on April, 15 - + fix call to chown (combination of -m and -u/-g) - + add tests - -- passwd: - - check combination of options (e.g. -u/-l) - - when -u refuse to unlock because it would create an empty password, it - should not display "Password changed." - exit instead? - -- newgrp: check the USE_PAM section. - -- pwck - - Add check to move passwd passwords to shadow if there is a shadow - entry (with a password). - - Add check to move passwd passwords to shadow if there is a shadow - file. - - Support an alternative /etc/tcb directory as second parameter. - - add options -g / -G to specify alternative group / gshadow files - -- su - - add a login.defs configuration parameter to add variables to keep in - the environment with "su -l" (TERM/TERMCOLOR/...) - -- vipw - - set ACLs and XATTRs on the temporary file (and backups?) - - vipw + selinux -> use lib/selinux.c diff --git a/aclocal.m4 b/aclocal.m4 index ea764bc..3aa89a3 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -20,6 +20,1261 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) +# ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- +# +# Copyright (C) 1999-2008, 2011-2019, 2021-2022 Free Software +# Foundation, Inc. +# Written by Thomas Tanner, 1999 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 21 LTDL_INIT + +# LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) +# ------------------------------------------ +# DIRECTORY contains the libltdl sources. It is okay to call this +# function multiple times, as long as the same DIRECTORY is always given. +AC_DEFUN([LT_CONFIG_LTDL_DIR], +[AC_BEFORE([$0], [LTDL_INIT]) +_$0($*) +])# LT_CONFIG_LTDL_DIR + +# We break this out into a separate macro, so that we can call it safely +# internally without being caught accidentally by the sed scan in libtoolize. +m4_defun([_LT_CONFIG_LTDL_DIR], +[dnl remove trailing slashes +m4_pushdef([_ARG_DIR], m4_bpatsubst([$1], [/*$])) +m4_case(_LTDL_DIR, + [], [dnl only set lt_ltdl_dir if _ARG_DIR is not simply '.' + m4_if(_ARG_DIR, [.], + [], + [m4_define([_LTDL_DIR], _ARG_DIR) + _LT_SHELL_INIT([lt_ltdl_dir=']_ARG_DIR['])])], + [m4_if(_ARG_DIR, _LTDL_DIR, + [], + [m4_fatal([multiple libltdl directories: ']_LTDL_DIR[', ']_ARG_DIR['])])]) +m4_popdef([_ARG_DIR]) +])# _LT_CONFIG_LTDL_DIR + +# Initialise: +m4_define([_LTDL_DIR], []) + + +# _LT_BUILD_PREFIX +# ---------------- +# If Autoconf is new enough, expand to '$(top_build_prefix)', otherwise +# to '$(top_builddir)/'. +m4_define([_LT_BUILD_PREFIX], +[m4_ifdef([AC_AUTOCONF_VERSION], + [m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.62]), + [-1], [m4_ifdef([_AC_HAVE_TOP_BUILD_PREFIX], + [$(top_build_prefix)], + [$(top_builddir)/])], + [$(top_build_prefix)])], + [$(top_builddir)/])[]dnl +]) + + +# LTDL_CONVENIENCE +# ---------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. LIBLTDL will be prefixed with +# '$(top_build_prefix)' if available, otherwise with '$(top_builddir)/', +# and LTDLINCL will be prefixed with '$(top_srcdir)/' (note the single +# quotes!). If your package is not flat and you're not using automake, +# define top_build_prefix, top_builddir, and top_srcdir appropriately +# in your Makefiles. +AC_DEFUN([LTDL_CONVENIENCE], +[AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +])# LTDL_CONVENIENCE + +# AC_LIBLTDL_CONVENIENCE accepted a directory argument in older libtools, +# now we have LT_CONFIG_LTDL_DIR: +AU_DEFUN([AC_LIBLTDL_CONVENIENCE], +[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBLTDL_CONVENIENCE], []) + + +# _LTDL_CONVENIENCE +# ----------------- +# Code shared by LTDL_CONVENIENCE and LTDL_INIT([convenience]). +m4_defun([_LTDL_CONVENIENCE], +[case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; +esac +LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdlc.la" +LTDLDEPS=$LIBLTDL +LTDLINCL='-I$(top_srcdir)'"${lt_ltdl_dir+/$lt_ltdl_dir}" + +AC_SUBST([LIBLTDL]) +AC_SUBST([LTDLDEPS]) +AC_SUBST([LTDLINCL]) + +# For backwards non-gettext consistent compatibility... +INCLTDL=$LTDLINCL +AC_SUBST([INCLTDL]) +])# _LTDL_CONVENIENCE + + +# LTDL_INSTALLABLE +# ---------------- +# sets LIBLTDL to the link flags for the libltdl installable library +# and LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called from here. If an installed libltdl +# is not found, LIBLTDL will be prefixed with '$(top_build_prefix)' if +# available, otherwise with '$(top_builddir)/', and LTDLINCL will be +# prefixed with '$(top_srcdir)/' (note the single quotes!). If your +# package is not flat and you're not using automake, define top_build_prefix, +# top_builddir, and top_srcdir appropriately in your Makefiles. +# In the future, this macro may have to be called after LT_INIT. +AC_DEFUN([LTDL_INSTALLABLE], +[AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +])# LTDL_INSTALLABLE + +# AC_LIBLTDL_INSTALLABLE accepted a directory argument in older libtools, +# now we have LT_CONFIG_LTDL_DIR: +AU_DEFUN([AC_LIBLTDL_INSTALLABLE], +[_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBLTDL_INSTALLABLE], []) + + +# _LTDL_INSTALLABLE +# ----------------- +# Code shared by LTDL_INSTALLABLE and LTDL_INIT([installable]). +m4_defun([_LTDL_INSTALLABLE], +[if test -f "$prefix/lib/libltdl.la"; then + lt_save_LDFLAGS=$LDFLAGS + LDFLAGS="-L$prefix/lib $LDFLAGS" + AC_CHECK_LIB([ltdl], [lt_dlinit], [lt_lib_ltdl=yes]) + LDFLAGS=$lt_save_LDFLAGS + if test yes = "${lt_lib_ltdl-no}"; then + if test yes != "$enable_ltdl_install"; then + # Don't overwrite $prefix/lib/libltdl.la without --enable-ltdl-install + AC_MSG_WARN([not overwriting libltdl at $prefix, force with '--enable-ltdl-install']) + enable_ltdl_install=no + fi + elif test no = "$enable_ltdl_install"; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + fi +fi + +# If configure.ac declared an installable ltdl, and the user didn't override +# with --disable-ltdl-install, we will install the shipped libltdl. +case $enable_ltdl_install in + no) ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL=-lltdl + LTDLDEPS= + LTDLINCL= + ;; + *) enable_ltdl_install=yes + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='_LT_BUILD_PREFIX'"${lt_ltdl_dir+$lt_ltdl_dir/}libltdl.la" + LTDLDEPS=$LIBLTDL + LTDLINCL='-I$(top_srcdir)'"${lt_ltdl_dir+/$lt_ltdl_dir}" + ;; +esac + +AC_SUBST([LIBLTDL]) +AC_SUBST([LTDLDEPS]) +AC_SUBST([LTDLINCL]) + +# For backwards non-gettext consistent compatibility... +INCLTDL=$LTDLINCL +AC_SUBST([INCLTDL]) +])# LTDL_INSTALLABLE + + +# _LTDL_MODE_DISPATCH +# ------------------- +m4_define([_LTDL_MODE_DISPATCH], +[dnl If _LTDL_DIR is '.', then we are configuring libltdl itself: +m4_if(_LTDL_DIR, [], + [], + dnl if _LTDL_MODE was not set already, the default value is 'subproject': + [m4_case(m4_default(_LTDL_MODE, [subproject]), + [subproject], [AC_CONFIG_SUBDIRS(_LTDL_DIR) + _LT_SHELL_INIT([lt_dlopen_dir=$lt_ltdl_dir])], + [nonrecursive], [_LT_SHELL_INIT([lt_dlopen_dir=$lt_ltdl_dir; lt_libobj_prefix=$lt_ltdl_dir/])], + [recursive], [], + [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])])dnl +dnl Be careful not to expand twice: +m4_define([$0], []) +])# _LTDL_MODE_DISPATCH + + +# _LT_LIBOBJ(MODULE_NAME) +# ----------------------- +# Like AC_LIBOBJ, except that MODULE_NAME goes into _LT_LIBOBJS instead +# of into LIBOBJS. +AC_DEFUN([_LT_LIBOBJ], [ + m4_pattern_allow([^_LT_LIBOBJS$]) + _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" +])# _LT_LIBOBJS + + +# LTDL_INIT([OPTIONS]) +# -------------------- +# Clients of libltdl can use this macro to allow the installer to +# choose between a shipped copy of the ltdl sources or a preinstalled +# version of the library. If the shipped ltdl sources are not in a +# subdirectory named libltdl, the directory name must be given by +# LT_CONFIG_LTDL_DIR. +AC_DEFUN([LTDL_INIT], +[dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +dnl We need to keep our own list of libobjs separate from our parent project, +dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while +dnl we look for our own LIBOBJs. +m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) +m4_pushdef([AC_LIBSOURCES]) + +dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: +m4_if(_LTDL_MODE, [], + [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) + m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], + [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) + +AC_ARG_WITH([included_ltdl], + [AS_HELP_STRING([--with-included-ltdl], + [use the GNU ltdl sources included here])]) + +if test yes != "$with_included_ltdl"; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_DECL([lt_dlinterface_register], + [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], + [with_included_ltdl=no], + [with_included_ltdl=yes])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT + #include ])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT] + ) +fi + +dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE +dnl was called yet, then for old times' sake, we assume libltdl is in an +dnl eponymous directory: +AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) + +AC_ARG_WITH([ltdl_include], + [AS_HELP_STRING([--with-ltdl-include=DIR], + [use the ltdl headers installed in DIR])]) + +if test -n "$with_ltdl_include"; then + if test -f "$with_ltdl_include/ltdl.h"; then : + else + AC_MSG_ERROR([invalid ltdl include directory: '$with_ltdl_include']) + fi +else + with_ltdl_include=no +fi + +AC_ARG_WITH([ltdl_lib], + [AS_HELP_STRING([--with-ltdl-lib=DIR], + [use the libltdl.la installed in DIR])]) + +if test -n "$with_ltdl_lib"; then + if test -f "$with_ltdl_lib/libltdl.la"; then : + else + AC_MSG_ERROR([invalid ltdl library directory: '$with_ltdl_lib']) + fi +else + with_ltdl_lib=no +fi + +case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in + ,yes,no,no,) + m4_case(m4_default(_LTDL_TYPE, [convenience]), + [convenience], [_LTDL_CONVENIENCE], + [installable], [_LTDL_INSTALLABLE], + [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) + ;; + ,no,no,no,) + # If the included ltdl is not to be used, then use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], [1], + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl + LTDLDEPS= + LTDLINCL= + ;; + ,no*,no,*) + AC_MSG_ERROR(['--with-ltdl-include' and '--with-ltdl-lib' options must be used together]) + ;; + *) with_included_ltdl=no + LIBLTDL="-L$with_ltdl_lib -lltdl" + LTDLDEPS= + LTDLINCL=-I$with_ltdl_include + ;; +esac +INCLTDL=$LTDLINCL + +# Report our decision... +AC_MSG_CHECKING([where to find libltdl headers]) +AC_MSG_RESULT([$LTDLINCL]) +AC_MSG_CHECKING([where to find libltdl library]) +AC_MSG_RESULT([$LIBLTDL]) + +_LTDL_SETUP + +dnl restore autoconf definition. +m4_popdef([AC_LIBOBJ]) +m4_popdef([AC_LIBSOURCES]) + +AC_CONFIG_COMMANDS_PRE([ + _ltdl_libobjs= + _ltdl_ltlibobjs= + if test -n "$_LT_LIBOBJS"; then + # Remove the extension. + _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | $SED "$_lt_sed_drop_objext" | sort -u`; do + _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" + _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" + done + fi + AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) + AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) +]) + +# Only expand once: +m4_define([LTDL_INIT]) +])# LTDL_INIT + +# Old names: +AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) +AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) +AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIB_LTDL], []) +dnl AC_DEFUN([AC_WITH_LTDL], []) +dnl AC_DEFUN([LT_WITH_LTDL], []) + + +# _LTDL_SETUP +# ----------- +# Perform all the checks necessary for compilation of the ltdl objects +# -- including compiler checks and header checks. This is a public +# interface mainly for the benefit of libltdl's own configure.ac, most +# other users should call LTDL_INIT instead. +AC_DEFUN([_LTDL_SETUP], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_SYS_MODULE_EXT])dnl +AC_REQUIRE([LT_SYS_MODULE_PATH])dnl +AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl +AC_REQUIRE([LT_LIB_DLLOAD])dnl +AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl +AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl +AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl +AC_REQUIRE([LT_FUNC_ARGZ])dnl + +m4_require([_LT_CHECK_OBJDIR])dnl +m4_require([_LT_HEADER_DLFCN])dnl +m4_require([_LT_CHECK_DLPREOPEN])dnl +m4_require([_LT_DECL_SED])dnl + +dnl Don't require this, or it will be expanded earlier than the code +dnl that sets the variables it relies on: +_LT_ENABLE_INSTALL + +dnl _LTDL_MODE specific code must be called at least once: +_LTDL_MODE_DISPATCH + +# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS +# the user used. This is so that ltdl.h can pick up the parent projects +# config.h file, The first file in AC_CONFIG_HEADERS must contain the +# definitions required by ltdl.c. +# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). +AC_CONFIG_COMMANDS_PRE([dnl +m4_pattern_allow([^LT_CONFIG_H$])dnl +m4_ifset([AH_HEADER], + [LT_CONFIG_H=AH_HEADER], + [m4_ifset([AC_LIST_HEADERS], + [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's|^[[ ]]*||;s|[[ :]].*$||'`], + [])])]) +AC_SUBST([LT_CONFIG_H]) + +AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], + [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) +AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) + +m4_pattern_allow([LT_LIBEXT])dnl +AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) + +name= +eval "lt_libprefix=\"$libname_spec\"" +m4_pattern_allow([LT_LIBPREFIX])dnl +AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) + +name=ltdl +eval "LTDLOPEN=\"$libname_spec\"" +AC_SUBST([LTDLOPEN]) +])# _LTDL_SETUP + + +# _LT_ENABLE_INSTALL +# ------------------ +m4_define([_LT_ENABLE_INSTALL], +[AC_ARG_ENABLE([ltdl-install], + [AS_HELP_STRING([--enable-ltdl-install], [install libltdl])]) + +case ,$enable_ltdl_install,$enable_ltdl_convenience in + *yes*) ;; + *) enable_ltdl_convenience=yes ;; +esac + +m4_ifdef([AM_CONDITIONAL], +[AM_CONDITIONAL(INSTALL_LTDL, test no != "${enable_ltdl_install-no}") + AM_CONDITIONAL(CONVENIENCE_LTDL, test no != "${enable_ltdl_convenience-no}")]) +])# _LT_ENABLE_INSTALL + + +# LT_SYS_DLOPEN_DEPLIBS +# --------------------- +AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + [lt_cv_sys_dlopen_deplibs], + [# PORTME does your system automatically load deplibs for dlopen? + # or its logical equivalent (e.g. shl_load for HP-UX < 11) + # For now, we just catch OSes we know something about -- in the + # future, we'll try test this programmatically. + lt_cv_sys_dlopen_deplibs=unknown + case $host_os in + aix3*|aix4.1.*|aix4.2.*) + # Unknown whether this is true for these versions of AIX, but + # we want this 'case' here to explicitly catch those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + aix[[4-9]]*) + lt_cv_sys_dlopen_deplibs=yes + ;; + amigaos*) + case $host_cpu in + powerpc) + lt_cv_sys_dlopen_deplibs=no + ;; + esac + ;; + bitrig*) + lt_cv_sys_dlopen_deplibs=yes + ;; + darwin*) + # Assuming the user has installed a libdl from somewhere, this is true + # If you are looking for one http://www.opendarwin.org/projects/dlcompat + lt_cv_sys_dlopen_deplibs=yes + ;; + freebsd* | dragonfly* | midnightbsd*) + lt_cv_sys_dlopen_deplibs=yes + ;; + gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) + # GNU and its variants, using gnu ld.so (Glibc) + lt_cv_sys_dlopen_deplibs=yes + ;; + hpux10*|hpux11*) + lt_cv_sys_dlopen_deplibs=yes + ;; + interix*) + lt_cv_sys_dlopen_deplibs=yes + ;; + irix[[12345]]*|irix6.[[01]]*) + # Catch all versions of IRIX before 6.2, and indicate that we don't + # know how it worked for any of those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + irix*) + # The case above catches anything before 6.2, and it's known that + # at 6.2 and later dlopen does load deplibs. + lt_cv_sys_dlopen_deplibs=yes + ;; + netbsd* | netbsdelf*-gnu) + lt_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + lt_cv_sys_dlopen_deplibs=yes + ;; + osf[[1234]]*) + # dlopen did load deplibs (at least at 4.x), but until the 5.x series, + # it did *not* use an RPATH in a shared library to find objects the + # library depends on, so we explicitly say 'no'. + lt_cv_sys_dlopen_deplibs=no + ;; + osf5.0|osf5.0a|osf5.1) + # dlopen *does* load deplibs and with the right loader patch applied + # it even uses RPATH in a shared library to search for shared objects + # that the library depends on, but there's no easy way to know if that + # patch is installed. Since this is the case, all we can really + # say is unknown -- it depends on the patch being installed. If + # it is, this changes to 'yes'. Without it, it would be 'no'. + lt_cv_sys_dlopen_deplibs=unknown + ;; + osf*) + # the two cases above should catch all versions of osf <= 5.1. Read + # the comments above for what we know about them. + # At > 5.1, deplibs are loaded *and* any RPATH in a shared library + # is used to find them so we can finally say 'yes'. + lt_cv_sys_dlopen_deplibs=yes + ;; + qnx*) + lt_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + lt_cv_sys_dlopen_deplibs=yes + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac + ]) +if test yes != "$lt_cv_sys_dlopen_deplibs"; then + AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], + [Define if the OS needs help to load dependent libraries for dlopen().]) +fi +])# LT_SYS_DLOPEN_DEPLIBS + +# Old name: +AU_ALIAS([AC_LTDL_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], []) + + +# LT_SYS_MODULE_EXT +# ----------------- +AC_DEFUN([LT_SYS_MODULE_EXT], +[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([what extension is used for runtime loadable modules], + [libltdl_cv_shlibext], +[ +module=yes +eval libltdl_cv_shlibext=$shrext_cmds +module=no +eval libltdl_cv_shrext=$shrext_cmds + ]) +if test -n "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_MODULE_EXT])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], + [Define to the extension used for runtime loadable modules, say, ".so".]) +fi +if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_SHARED_EXT])dnl + AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], + [Define to the shared library suffix, say, ".dylib".]) +fi +if test -n "$shared_archive_member_spec"; then + m4_pattern_allow([LT_SHARED_LIB_MEMBER])dnl + AC_DEFINE_UNQUOTED([LT_SHARED_LIB_MEMBER], ["($shared_archive_member_spec.o)"], + [Define to the shared archive member specification, say "(shr.o)".]) +fi +])# LT_SYS_MODULE_EXT + +# Old name: +AU_ALIAS([AC_LTDL_SHLIBEXT], [LT_SYS_MODULE_EXT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_SHLIBEXT], []) + + +# LT_SYS_MODULE_PATH +# ------------------ +AC_DEFUN([LT_SYS_MODULE_PATH], +[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([what variable specifies run-time module search path], + [lt_cv_module_path_var], [lt_cv_module_path_var=$shlibpath_var]) +if test -n "$lt_cv_module_path_var"; then + m4_pattern_allow([LT_MODULE_PATH_VAR])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], + [Define to the name of the environment variable that determines the run-time module search path.]) +fi +])# LT_SYS_MODULE_PATH + +# Old name: +AU_ALIAS([AC_LTDL_SHLIBPATH], [LT_SYS_MODULE_PATH]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_SHLIBPATH], []) + + +# LT_SYS_DLSEARCH_PATH +# -------------------- +AC_DEFUN([LT_SYS_DLSEARCH_PATH], +[m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([for the default library search path], + [lt_cv_sys_dlsearch_path], + [lt_cv_sys_dlsearch_path=$sys_lib_dlsearch_path_spec]) +if test -n "$lt_cv_sys_dlsearch_path"; then + sys_dlsearch_path= + for dir in $lt_cv_sys_dlsearch_path; do + if test -z "$sys_dlsearch_path"; then + sys_dlsearch_path=$dir + else + sys_dlsearch_path=$sys_dlsearch_path$PATH_SEPARATOR$dir + fi + done + m4_pattern_allow([LT_DLSEARCH_PATH])dnl + AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], + [Define to the system default library search path.]) +fi +])# LT_SYS_DLSEARCH_PATH + +# Old name: +AU_ALIAS([AC_LTDL_SYSSEARCHPATH], [LT_SYS_DLSEARCH_PATH]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_SYSSEARCHPATH], []) + + +# _LT_CHECK_DLPREOPEN +# ------------------- +m4_defun([_LT_CHECK_DLPREOPEN], +[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen], + [libltdl_cv_preloaded_symbols], + [if test -n "$lt_cv_sys_global_symbol_pipe"; then + libltdl_cv_preloaded_symbols=yes + else + libltdl_cv_preloaded_symbols=no + fi + ]) +if test yes = "$libltdl_cv_preloaded_symbols"; then + AC_DEFINE([HAVE_PRELOADED_SYMBOLS], [1], + [Define if libtool can extract symbol lists from object files.]) +fi +])# _LT_CHECK_DLPREOPEN + + +# LT_LIB_DLLOAD +# ------------- +AC_DEFUN([LT_LIB_DLLOAD], +[m4_pattern_allow([^LT_DLLOADERS$]) +LT_DLLOADERS= +AC_SUBST([LT_DLLOADERS]) + +AC_LANG_PUSH([C]) +lt_dlload_save_LIBS=$LIBS + +LIBADD_DLOPEN= +AC_SEARCH_LIBS([dlopen], [dl], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + if test "$ac_cv_search_dlopen" != "none required"; then + LIBADD_DLOPEN=-ldl + fi + libltdl_cv_lib_dl_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H +# include +#endif + ]], [[dlopen(0, 0);]])], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + libltdl_cv_func_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) +if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen" +then + lt_save_LIBS=$LIBS + LIBS="$LIBS $LIBADD_DLOPEN" + AC_CHECK_FUNCS([dlerror]) + LIBS=$lt_save_LIBS +fi +AC_SUBST([LIBADD_DLOPEN]) + +LIBADD_SHL_LOAD= +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" + LIBADD_SHL_LOAD=-ldld])]) +AC_SUBST([LIBADD_SHL_LOAD]) + +case $host_os in +darwin[[1567]].*) +# We only want this for pre-Mac OS X 10.4. + AC_CHECK_FUNC([_dyld_func_lookup], + [AC_DEFINE([HAVE_DYLD], [1], + [Define if you have the _dyld_func_lookup function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) + ;; +beos*) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" + ;; +cygwin* | mingw* | pw32*) + AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" + ;; +esac + +AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) +AC_SUBST([LIBADD_DLD_LINK]) + +m4_pattern_allow([^LT_DLPREOPEN$]) +LT_DLPREOPEN= +if test -n "$LT_DLLOADERS" +then + for lt_loader in $LT_DLLOADERS; do + LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " + done + AC_DEFINE([HAVE_LIBDLLOADER], [1], + [Define if libdlloader will be built on this platform]) +fi +AC_SUBST([LT_DLPREOPEN]) + +dnl This isn't used anymore, but set it for backwards compatibility +LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" +AC_SUBST([LIBADD_DL]) + +LIBS=$lt_dlload_save_LIBS +AC_LANG_POP +])# LT_LIB_DLLOAD + +# Old name: +AU_ALIAS([AC_LTDL_DLLIB], [LT_LIB_DLLOAD]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_DLLIB], []) + + +# LT_SYS_SYMBOL_USCORE +# -------------------- +# does the compiler prefix global symbols with an underscore? +AC_DEFUN([LT_SYS_SYMBOL_USCORE], +[m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +AC_CACHE_CHECK([for _ prefix in compiled symbols], + [lt_cv_sys_symbol_underscore], + [lt_cv_sys_symbol_underscore=no + cat > conftest.$ac_ext <<_LT_EOF +void nm_test_func(){} +int main(){nm_test_func;return 0;} +_LT_EOF + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + ac_nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + lt_cv_sys_symbol_underscore=yes + else + if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD + fi + fi + else + echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.c >&AS_MESSAGE_LOG_FD + fi + rm -rf conftest* + ]) + sys_symbol_underscore=$lt_cv_sys_symbol_underscore + AC_SUBST([sys_symbol_underscore]) +])# LT_SYS_SYMBOL_USCORE + +# Old name: +AU_ALIAS([AC_LTDL_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_SYMBOL_USCORE], []) + + +# LT_FUNC_DLSYM_USCORE +# -------------------- +AC_DEFUN([LT_FUNC_DLSYM_USCORE], +[AC_REQUIRE([_LT_COMPILER_PIC])dnl for lt_prog_compiler_wl +AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl for lt_cv_sys_symbol_underscore +AC_REQUIRE([LT_SYS_MODULE_EXT])dnl for libltdl_cv_shlibext +if test yes = "$lt_cv_sys_symbol_underscore"; then + if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + [libltdl_cv_need_uscore], + [libltdl_cv_need_uscore=unknown + dlsym_uscore_save_LIBS=$LIBS + LIBS="$LIBS $LIBADD_DLOPEN" + libname=conftmod # stay within 8.3 filename limits! + cat >$libname.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif +int fnord () { return 42; }] +_LT_EOF + + # ltfn_module_cmds module_cmds + # Execute tilde-delimited MODULE_CMDS with environment primed for + # $module_cmds or $archive_cmds type content. + ltfn_module_cmds () + {( # subshell avoids polluting parent global environment + module_cmds_save_ifs=$IFS; IFS='~' + for cmd in @S|@1; do + IFS=$module_cmds_save_ifs + libobjs=$libname.$ac_objext; lib=$libname$libltdl_cv_shlibext + rpath=/not-exists; soname=$libname$libltdl_cv_shlibext; output_objdir=. + major=; versuffix=; verstring=; deplibs= + ECHO=echo; wl=$lt_prog_compiler_wl; allow_undefined_flag= + eval $cmd + done + IFS=$module_cmds_save_ifs + )} + + # Compile a loadable module using libtool macro expansion results. + $CC $pic_flag -c $libname.$ac_ext + ltfn_module_cmds "${module_cmds:-$archive_cmds}" + + # Try to fetch fnord with dlsym(). + libltdl_dlunknown=0; libltdl_dlnouscore=1; libltdl_dluscore=2 + cat >conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" +#if HAVE_DLFCN_H +#include +#endif +#include +#ifndef RTLD_GLOBAL +# ifdef DL_GLOBAL +# define RTLD_GLOBAL DL_GLOBAL +# else +# define RTLD_GLOBAL 0 +# endif +#endif +#ifndef RTLD_NOW +# ifdef DL_NOW +# define RTLD_NOW DL_NOW +# else +# define RTLD_NOW 0 +# endif +#endif +int main () { + void *handle = dlopen ("`pwd`/$libname$libltdl_cv_shlibext", RTLD_GLOBAL|RTLD_NOW); + int status = $libltdl_dlunknown; + if (handle) { + if (dlsym (handle, "fnord")) + status = $libltdl_dlnouscore; + else { + if (dlsym (handle, "_fnord")) + status = $libltdl_dluscore; + else + puts (dlerror ()); + } + dlclose (handle); + } else + puts (dlerror ()); + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + libltdl_status=$? + case x$libltdl_status in + x$libltdl_dlnouscore) libltdl_cv_need_uscore=no ;; + x$libltdl_dluscore) libltdl_cv_need_uscore=yes ;; + x*) libltdl_cv_need_uscore=unknown ;; + esac + fi + rm -rf conftest* $libname* + LIBS=$dlsym_uscore_save_LIBS + ]) + fi +fi + +if test yes = "$libltdl_cv_need_uscore"; then + AC_DEFINE([NEED_USCORE], [1], + [Define if dlsym() requires a leading underscore in symbol names.]) +fi +])# LT_FUNC_DLSYM_USCORE + +# Old name: +AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) + +# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- +# serial 12 (pkg-config-0.29.2) + +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29.2]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurrence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $2]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------ +dnl +dnl Prepare a "--with-" configure option using the lowercase +dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and +dnl PKG_CHECK_MODULES in a single macro. +AC_DEFUN([PKG_WITH_MODULES], +[ +m4_pushdef([with_arg], m4_tolower([$1])) + +m4_pushdef([description], + [m4_default([$5], [build with ]with_arg[ support])]) + +m4_pushdef([def_arg], [m4_default([$6], [auto])]) +m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) +m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) + +m4_case(def_arg, + [yes],[m4_pushdef([with_without], [--without-]with_arg)], + [m4_pushdef([with_without],[--with-]with_arg)]) + +AC_ARG_WITH(with_arg, + AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, + [AS_TR_SH([with_]with_arg)=def_arg]) + +AS_CASE([$AS_TR_SH([with_]with_arg)], + [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], + [auto],[PKG_CHECK_MODULES([$1],[$2], + [m4_n([def_action_if_found]) $3], + [m4_n([def_action_if_not_found]) $4])]) + +m4_popdef([with_arg]) +m4_popdef([description]) +m4_popdef([def_arg]) + +])dnl PKG_WITH_MODULES + +dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ----------------------------------------------- +dnl +dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES +dnl check._[VARIABLE-PREFIX] is exported as make variable. +AC_DEFUN([PKG_HAVE_WITH_MODULES], +[ +PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) + +AM_CONDITIONAL([HAVE_][$1], + [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) +])dnl PKG_HAVE_WITH_MODULES + +dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, +dnl [DESCRIPTION], [DEFAULT]) +dnl ------------------------------------------------------ +dnl +dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after +dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make +dnl and preprocessor variable. +AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], +[ +PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) + +AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], + [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) +])dnl PKG_HAVE_DEFINE_WITH_MODULES + # Copyright (C) 2002-2021 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation diff --git a/config.h.in b/config.h.in index 9990868..37a15b3 100644 --- a/config.h.in +++ b/config.h.in @@ -4,6 +4,12 @@ authenticate the callers */ #undef ACCT_TOOLS_SETUID +/* Define to support lastlog. */ +#undef ENABLE_LASTLOG + +/* Define to manage session support with logind. */ +#undef ENABLE_LOGIND + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS @@ -54,6 +60,10 @@ */ #undef HAVE_DCGETTEXT +/* Define to 1 if you have the declaration of `cygwin_conv_path', and to 0 if + you don't. */ +#undef HAVE_DECL_CYGWIN_CONV_PATH + /* Define to 1 if you have the declaration of `PAM_DATA_SILENT', and to 0 if you don't. */ #undef HAVE_DECL_PAM_DATA_SILENT @@ -70,26 +80,23 @@ if you don't. */ #undef HAVE_DECL_PAM_NEW_AUTHTOK_REQD +/* Define if you have the GNU dld library. */ +#undef HAVE_DLD + +/* Define to 1 if you have the `dlerror' function. */ +#undef HAVE_DLERROR + /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H -/* Define to 1 if you have the header file. */ -#undef HAVE_ERRNO_H +/* Define if you have the _dyld_func_lookup function. */ +#undef HAVE_DYLD /* Define to 1 if you have the `explicit_bzero' function. */ #undef HAVE_EXPLICIT_BZERO -/* Define to 1 if you have the `fchmod' function. */ -#undef HAVE_FCHMOD - -/* Define to 1 if you have the `fchown' function. */ -#undef HAVE_FCHOWN - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the `fsync' function. */ -#undef HAVE_FSYNC +/* Defined to 1 if you have the declaration of 'fgetpwent_r' */ +#undef HAVE_FGETPWENT_R /* Define to 1 if you have the `futimes' function. */ #undef HAVE_FUTIMES @@ -97,18 +104,6 @@ /* Define to 1 if you have the `getentropy' function. */ #undef HAVE_GETENTROPY -/* Define to 1 if you have the `getgrgid_r' function. */ -#undef HAVE_GETGRGID_R - -/* Define to 1 if you have the `getgrnam_r' function. */ -#undef HAVE_GETGRNAM_R - -/* Define to 1 if you have the `getpwnam_r' function. */ -#undef HAVE_GETPWNAM_R - -/* Define to 1 if you have the `getpwuid_r' function. */ -#undef HAVE_GETPWUID_R - /* Define to 1 if you have the `getrandom' function. */ #undef HAVE_GETRANDOM @@ -124,9 +119,6 @@ /* Define to 1 if you have the `getusershell' function. */ #undef HAVE_GETUSERSHELL -/* Define to 1 if you have the `getutent' function. */ -#undef HAVE_GETUTENT - /* Define to 1 if you have the header file. */ #undef HAVE_GSHADOW_H @@ -142,26 +134,17 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the `l64a' function. */ -#undef HAVE_L64A - /* Define to 1 if you have the header file. */ #undef HAVE_LASTLOG_H /* Define to 1 if you have the `lckpwdf' function. */ #undef HAVE_LCKPWDF -/* Defined if you have libcrack. */ -#undef HAVE_LIBCRACK - -/* Defined if you have the ts&szs cracklib. */ -#undef HAVE_LIBCRACK_HIST +/* Define if you have the libdl library or equivalent. */ +#undef HAVE_LIBDL -/* Defined if it includes *Pw functions. */ -#undef HAVE_LIBCRACK_PW - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIMITS_H +/* Define if libdlloader will be built on this platform */ +#undef HAVE_LIBDLLOADER /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_BTRFS_TREE_H @@ -172,24 +155,15 @@ /* Define if struct lastlog has ll_host */ #undef HAVE_LL_HOST -/* Define to 1 if you have the header file. */ -#undef HAVE_LOCALE_H - /* Define to 1 if you have the `lutimes' function. */ #undef HAVE_LUTIMES -/* Define to 1 if you have the `memset_s' function. */ -#undef HAVE_MEMSET_S +/* Define to 1 if you have the `memset_explicit' function. */ +#undef HAVE_MEMSET_EXPLICIT /* Define to 1 if you have the header file. */ #undef HAVE_MINIX_CONFIG_H -/* Define to 1 if you have the `mkdir' function. */ -#undef HAVE_MKDIR - -/* Define to 1 if you have the header file. */ -#undef HAVE_NETDB_H - /* Define to 1 if you have the header file. */ #undef HAVE_PATHS_H @@ -202,15 +176,15 @@ /* Define to 1 if you have the `putspent' function. */ #undef HAVE_PUTSPENT -/* Define to 1 if you have the `rename' function. */ -#undef HAVE_RENAME - -/* Define to 1 if you have the `rmdir' function. */ -#undef HAVE_RMDIR +/* Define to 1 if you have the header file. */ +#undef HAVE_READPASSPHRASE_H /* Define to 1 if you have the header file. */ #undef HAVE_RPC_KEY_PROT_H +/* Define to 1 if you have the `rpmatch' function. */ +#undef HAVE_RPMATCH + /* Define to 1 if you have the header file. */ #undef HAVE_SECURITY_OPENPAM_H @@ -241,11 +215,8 @@ /* Have working shadow group support in libc */ #undef HAVE_SHADOWGRP -/* Define to 1 if you have the `snprintf' function. */ -#undef HAVE_SNPRINTF - -/* Define to 1 if stdbool.h conforms to C99. */ -#undef HAVE_STDBOOL_H +/* Define if you have the shl_load function. */ +#undef HAVE_SHL_LOAD /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H @@ -256,14 +227,11 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H -/* Define to 1 if you have the `strcasecmp' function. */ -#undef HAVE_STRCASECMP - -/* Define to 1 if you have the `strdup' function. */ -#undef HAVE_STRDUP +/* Define to 1 if you have the `stpecpy' function. */ +#undef HAVE_STPECPY -/* Define to 1 if you have the `strerror' function. */ -#undef HAVE_STRERROR +/* Define to 1 if you have the `stpeprintf' function. */ +#undef HAVE_STPEPRINTF /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H @@ -271,21 +239,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define to 1 if you have the `strstr' function. */ -#undef HAVE_STRSTR - -/* Define to 1 if `st_atim' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_ATIM - -/* Define to 1 if `st_atimensec' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_ATIMENSEC - -/* Define to 1 if `st_mtim' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_MTIM - -/* Define to 1 if `st_mtimensec' is a member of `struct stat'. */ -#undef HAVE_STRUCT_STAT_ST_MTIMENSEC - /* Define to 1 if `ut_addr' is a member of `struct utmpx'. */ #undef HAVE_STRUCT_UTMPX_UT_ADDR @@ -307,42 +260,6 @@ /* Define to 1 if `ut_xtime' is a member of `struct utmpx'. */ #undef HAVE_STRUCT_UTMPX_UT_XTIME -/* Define to 1 if `ut_addr' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_ADDR - -/* Define to 1 if `ut_addr_v6' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_ADDR_V6 - -/* Define to 1 if `ut_host' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_HOST - -/* Define to 1 if `ut_id' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_ID - -/* Define to 1 if `ut_name' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_NAME - -/* Define to 1 if `ut_syslen' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_SYSLEN - -/* Define to 1 if `ut_time' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_TIME - -/* Define to 1 if `ut_tv' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_TV - -/* Define to 1 if `ut_type' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_TYPE - -/* Define to 1 if `ut_user' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_USER - -/* Define to 1 if `ut_xtime' is a member of `struct utmp'. */ -#undef HAVE_STRUCT_UTMP_UT_XTIME - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYSLOG_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_CAPABILITY_H @@ -352,39 +269,24 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RANDOM_H -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_TCB_H -/* Define to 1 if you have the header file. */ -#undef HAVE_TERMIOS_H - /* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H -/* Define to 1 if you have the header file. */ -#undef HAVE_ULIMIT_H - /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the `updwtmp' function. */ -#undef HAVE_UPDWTMP - /* Define to 1 if you have the `updwtmpx' function. */ #undef HAVE_UPDWTMPX @@ -394,18 +296,15 @@ /* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */ #undef HAVE_UTIME_NULL -/* Define to 1 if you have the header file. */ -#undef HAVE_UTMPX_H - /* Define to 1 if you have the header file. */ #undef HAVE_UTMP_H +/* Define to support vendor settings. */ +#undef HAVE_VENDORDIR + /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H -/* Define to 1 if the system has the type `_Bool'. */ -#undef HAVE__BOOL - /* Path for lastlog file. */ #undef LASTLOG_FILE @@ -477,9 +376,6 @@ /* Define to support /etc/suauth su access control. */ #undef SU_ACCESS -/* Define to 1 if your declares `struct tm'. */ -#undef TM_IN_SYS_TIME - /* Define to allow the bcrypt password encryption algorithm */ #undef USE_BCRYPT @@ -495,9 +391,6 @@ /* Define to support flushing of sssd caches */ #undef USE_SSSD -/* Define to use syslog(). */ -#undef USE_SYSLOG - /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE @@ -586,12 +479,12 @@ #endif -/* Define if utmpx should be used */ -#undef USE_UTMPX - /* Define to allow the yescrypt password encryption algorithm */ #undef USE_YESCRYPT +/* Directory for distribution provided configuration files */ +#undef VENDORDIR + /* Version number of package */ #undef VERSION @@ -607,6 +500,9 @@ /* Build shadow with BtrFS support */ #undef WITH_BTRFS +/* Build shadow without libbsd support */ +#undef WITH_LIBBSD + /* Build shadow with SELinux support */ #undef WITH_SELINUX diff --git a/configure b/configure index 58c90c1..e23e2ea 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for shadow 4.13. +# Generated by GNU Autoconf 2.71 for shadow 4.15.2. # # Report bugs to . # @@ -621,8 +621,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='shadow' PACKAGE_TARNAME='shadow' -PACKAGE_VERSION='4.13' -PACKAGE_STRING='shadow 4.13' +PACKAGE_VERSION='4.15.2' +PACKAGE_STRING='shadow 4.15.2' PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org' PACKAGE_URL='https://github.com/shadow-maint/shadow' @@ -698,12 +698,21 @@ LIBSEMANAGE LIBSELINUX WITH_BTRFS_FALSE WITH_BTRFS_TRUE -LIBCRACK LIBAUDIT LIBATTR LIBACL +WITH_LIBBSD_FALSE +WITH_LIBBSD_TRUE +LIBBSD_LIBS +LIBBSD_CFLAGS +LIBBSD LIYESCRYPT LIBCRYPT +ENABLE_LOGIND_FALSE +ENABLE_LOGIND_TRUE +LIBSYSTEMD +ENABLE_LASTLOG_FALSE +ENABLE_LASTLOG_TRUE ENABLE_SUBIDS_FALSE ENABLE_SUBIDS_TRUE ENABLE_REGENERATE_MAN_FALSE @@ -718,6 +727,13 @@ HAVE_VENDORDIR_TRUE VENDORDIR LIBECONF ECONF_CPPFLAGS +HAVE_CMOCKA_FALSE +HAVE_CMOCKA_TRUE +CMOCKA_LIBS +CMOCKA_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG WITH_SU_FALSE WITH_SU_TRUE USE_YESCRYPT_FALSE @@ -729,6 +745,12 @@ USE_SHA_CRYPT_TRUE GROUP_NAME_MAX_LENGTH LIBOBJS CPP +LIBADD_DL +LT_DLPREOPEN +LIBADD_DLD_LINK +LIBADD_SHL_LOAD +LIBADD_DLOPEN +LT_DLLOADERS LT_SYS_LIBRARY_PATH OTOOL64 OTOOL @@ -741,6 +763,7 @@ ac_ct_AR AR DLLTOOL OBJDUMP +FILECMD NM ac_ct_DUMPBIN DUMPBIN @@ -872,8 +895,9 @@ enable_largefile enable_shadowgrp enable_man enable_account_tools_setuid -enable_utmpx enable_subordinate_ids +enable_lastlog +enable_logind with_audit with_libpam with_btrfs @@ -882,7 +906,6 @@ with_acl with_attr with_skey with_tcb -with_libcrack with_sha_crypt with_bcrypt with_yescrypt @@ -890,6 +913,7 @@ with_nscd with_sssd with_group_name_max_length with_su +with_libbsd enable_vendordir with_xml_catalog with_fcaps @@ -909,7 +933,14 @@ CPPFLAGS YACC YFLAGS LT_SYS_LIBRARY_PATH -CPP' +CPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +CMOCKA_CFLAGS +CMOCKA_LIBS +LIBBSD_CFLAGS +LIBBSD_LIBS' # Initialize some variables set by options. @@ -1458,7 +1489,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures shadow 4.13 to adapt to many kinds of systems. +\`configure' configures shadow 4.15.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1529,7 +1560,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of shadow 4.13:";; + short | recursive ) echo "Configuration of shadow 4.15.2:";; esac cat <<\_ACEOF @@ -1558,9 +1589,10 @@ Optional Features: Install the user and group management tools setuid and authenticate the callers. This requires --with-libpam. - --enable-utmpx enable loggin in utmpx / wtmpx [default=no] --enable-subordinate-ids support subordinate ids [default=yes] + --enable-lastlog enable lastlog [default=no] + --enable-logind enable logind [default=yes] --enable-vendordir=DIR Directory for distribution provided configuration files --disable-nls do not use Native Language Support @@ -1586,7 +1618,6 @@ Optional Packages: found] --with-skey use S/Key support [default=no] --with-tcb use tcb support (incomplete) [default=yes if found] - --with-libcrack use libcrack [default=no] --with-sha-crypt allow the SHA256 and SHA512 password encryption algorithms [default=yes] --with-bcrypt allow the bcrypt password encryption algorithm @@ -1600,6 +1631,7 @@ Optional Packages: set max group name length [default=32] --with-su build and install su program and man page [default=yes] + --with-libbsd use libbsd support [default=yes if found] --with-xml-catalog=CATALOG path to xml catalog to use --with-fcaps use file capabilities instead of suid binaries for @@ -1627,6 +1659,17 @@ Some influential environment variables: LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + CMOCKA_CFLAGS + C compiler flags for CMOCKA, overriding pkg-config + CMOCKA_LIBS linker flags for CMOCKA, overriding pkg-config + LIBBSD_CFLAGS + C compiler flags for LIBBSD, overriding pkg-config + LIBBSD_LIBS linker flags for LIBBSD, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1696,7 +1739,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -shadow configure 4.13 +shadow configure 4.15.2 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1891,62 +1934,57 @@ printf "%s\n" "$ac_res" >&6; } } # ac_fn_c_check_func -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } + as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 else $as_nop - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main (void) { -if (sizeof (($2))) - return 0; +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO" then : - -else $as_nop eval "$3=yes" +else $as_nop + eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_type +} # ac_fn_check_decl # ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES # ---------------------------------------------------- @@ -2277,58 +2315,6 @@ rm -f conftest.val as_fn_set_status $ac_retval } # ac_fn_c_compute_int - -# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR -# ------------------------------------------------------------------ -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. -ac_fn_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -printf %s "checking whether $as_decl_name is declared... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - eval ac_save_FLAGS=\$$6 - as_fn_append $6 " $5" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main (void) -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else $as_nop - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - eval $6=\$ac_save_FLAGS - -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_check_decl ac_configure_args_raw= for ac_arg do @@ -2353,7 +2339,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by shadow $as_me 4.13, which was +It was created by shadow $as_me 4.15.2, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3626,7 +3612,7 @@ fi # Define the identity of the package. PACKAGE='shadow' - VERSION='4.13' + VERSION='4.15.2' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -3666,7 +3652,93 @@ AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a pax tar archive" >&5 +printf %s "checking how to create a pax tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_pax-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x pax -w "$$tardir"' + am__tar_='pax -L -x pax -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H pax -L' + am__tar_='find "$tardir" -print | cpio -o -H pax -L' + am__untar='cpio -i -H pax -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_pax}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_pax+y} +then : + printf %s "(cached) " >&6 +else $as_nop + am_cv_prog_tar_pax=$_am_tool +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_pax" >&5 +printf "%s\n" "$am_cv_prog_tar_pax" >&6; } @@ -6285,8 +6357,8 @@ esac -macro_version='2.4.6' -macro_revision='2.4.6' +macro_version='2.4.7' +macro_revision='2.4.7' @@ -6914,13 +6986,13 @@ else mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 @@ -7058,7 +7130,7 @@ esac fi fi - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; @@ -7151,7 +7223,7 @@ else $as_nop lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -7194,7 +7266,7 @@ else $as_nop sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi @@ -7399,6 +7471,114 @@ esac +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. +set dummy ${ac_tool_prefix}file; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_FILECMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$FILECMD"; then + ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_FILECMD="${ac_tool_prefix}file" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +FILECMD=$ac_cv_prog_FILECMD +if test -n "$FILECMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 +printf "%s\n" "$FILECMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_FILECMD"; then + ac_ct_FILECMD=$FILECMD + # Extract the first word of "file", so it can be a program name with args. +set dummy file; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_FILECMD+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_FILECMD"; then + ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_FILECMD="file" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD +if test -n "$ac_ct_FILECMD"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 +printf "%s\n" "$ac_ct_FILECMD" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_FILECMD" = x; then + FILECMD=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + FILECMD=$ac_ct_FILECMD + fi +else + FILECMD="$ac_cv_prog_FILECMD" +fi + + + + + + + if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 @@ -7542,7 +7722,7 @@ beos*) bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -7576,14 +7756,14 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -7597,7 +7777,7 @@ haiku*) ;; hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' @@ -7644,7 +7824,7 @@ netbsd* | netbsdelf*-gnu) newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; @@ -8017,13 +8197,29 @@ esac fi : ${AR=ar} -: ${AR_FLAGS=cr} +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because thats what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS + + + + + + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. + @@ -8440,7 +8636,7 @@ esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" @@ -8458,20 +8654,20 @@ fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ @@ -8495,7 +8691,7 @@ for ac_symprfx in "" "_"; do if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, + # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ @@ -8513,9 +8709,9 @@ for ac_symprfx in "" "_"; do " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -8715,7 +8911,7 @@ case $with_sysroot in #( fi ;; #( /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( @@ -8840,7 +9036,7 @@ ia64-*-hpux*) ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; @@ -8861,7 +9057,7 @@ ia64-*-hpux*) printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; @@ -8873,7 +9069,7 @@ ia64-*-hpux*) ;; esac else - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -8899,7 +9095,7 @@ mips64*-*linux*) printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; @@ -8907,7 +9103,7 @@ mips64*-*linux*) emul="${emul}64" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; @@ -8915,7 +9111,7 @@ mips64*-*linux*) emul="${emul}ltsmip" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; @@ -8939,14 +9135,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; @@ -9054,7 +9250,7 @@ printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) @@ -9837,8 +10033,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cr libconftest.a conftest.o" >&5 - $AR cr libconftest.a conftest.o 2>&5 + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 + $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -9865,17 +10061,12 @@ printf "%s\n" "$lt_cv_ld_force_load" >&6; } _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[912]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*|11.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[012],*|,*powerpc*-darwin[5-8]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac @@ -10172,8 +10363,8 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld @@ -10691,7 +10882,7 @@ lt_prog_compiler_static= lt_prog_compiler_static='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' @@ -11114,15 +11305,15 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) @@ -11177,7 +11368,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries whole_archive_flag_spec= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -11289,6 +11480,7 @@ _LT_EOF emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes + file_list_spec='@' ;; interix[3-9]*) @@ -11303,7 +11495,7 @@ _LT_EOF # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) @@ -11346,7 +11538,7 @@ _LT_EOF compiler_needs_object=yes ;; esac - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes @@ -11358,13 +11550,14 @@ _LT_EOF if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) @@ -11374,7 +11567,7 @@ _LT_EOF archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi @@ -11506,7 +11699,7 @@ _LT_EOF if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -11777,12 +11970,12 @@ fi cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in - cl*) - # Native MSVC + cl* | icl*) + # Native MSVC or ICC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes @@ -11823,7 +12016,7 @@ fi fi' ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. @@ -11864,8 +12057,8 @@ fi output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no @@ -11899,7 +12092,7 @@ fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -12080,6 +12273,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; @@ -12151,6 +12345,7 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes + file_list_spec='@' ;; osf3*) @@ -12843,7 +13038,7 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; @@ -12853,14 +13048,14 @@ cygwin* | mingw* | pw32* | cegcc*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; - *,cl*) - # Native MSVC + *,cl* | *,icl*) + # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' @@ -12879,7 +13074,7 @@ cygwin* | mingw* | pw32* | cegcc*) done IFS=$lt_save_ifs # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form @@ -12916,7 +13111,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; @@ -12949,7 +13144,7 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then @@ -14114,30 +14309,41 @@ striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +if test -z "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - fi - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + fi + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - ;; - esac + ;; + esac + fi fi @@ -14226,128 +14432,50 @@ CC=$lt_save_CC # Only expand once: - - -ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" -if test "x$ac_cv_type__Bool" = xyes -then : - -printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h - - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 -printf %s "checking for stdbool.h that conforms to C99... " >&6; } -if test ${ac_cv_header_stdbool_h+y} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - - #ifndef __bool_true_false_are_defined - #error "__bool_true_false_are_defined is not defined" - #endif - char a[__bool_true_false_are_defined == 1 ? 1 : -1]; - - /* Regardless of whether this is C++ or "_Bool" is a - valid type name, "true" and "false" should be usable - in #if expressions and integer constant expressions, - and "bool" should be a valid type name. */ - - #if !true - #error "'true' is not true" - #endif - #if true != 1 - #error "'true' is not equal to 1" - #endif - char b[true == 1 ? 1 : -1]; - char c[true]; - - #if false - #error "'false' is not false" - #endif - #if false != 0 - #error "'false' is not equal to 0" - #endif - char d[false == 0 ? 1 : -1]; - - enum { e = false, f = true, g = false * true, h = true * 256 }; - - char i[(bool) 0.5 == true ? 1 : -1]; - char j[(bool) 0.0 == false ? 1 : -1]; - char k[sizeof (bool) > 0 ? 1 : -1]; - - struct sb { bool s: 1; bool t; } s; - char l[sizeof s.t > 0 ? 1 : -1]; - - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - bool m[h]; - char n[sizeof m == h * sizeof m[0] ? 1 : -1]; - char o[-1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - https://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - bool p = true; - bool *pp = &p; - - /* C 1999 specifies that bool, true, and false are to be - macros, but C++ 2011 and later overrule this. */ - #if __cplusplus < 201103 - #ifndef bool - #error "bool is not defined" - #endif - #ifndef false - #error "false is not defined" - #endif - #ifndef true - #error "true is not defined" - #endif - #endif - - /* If _Bool is available, repeat with it all the tests - above that used bool. */ - #ifdef HAVE__BOOL - struct sB { _Bool s: 1; _Bool t; } t; - - char q[(_Bool) 0.5 == true ? 1 : -1]; - char r[(_Bool) 0.0 == false ? 1 : -1]; - char u[sizeof (_Bool) > 0 ? 1 : -1]; - char v[sizeof t.t > 0 ? 1 : -1]; - - _Bool w[h]; - char x[sizeof m == h * sizeof m[0] ? 1 : -1]; - char y[-1 - (_Bool) 0 < 0 ? 1 : -1]; - _Bool z = true; - _Bool *pz = &p; - #endif int main (void) { +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); - bool ps = &s; - *pp |= p; - *pp |= ! p; - - #ifdef HAVE__BOOL - _Bool pt = &t; - *pz |= z; - *pz |= ! z; - #endif - - /* Refer to every declared value, so they cannot be - discarded as unused. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k - + !l + !m + !n + !o + !p + !pp + !ps - #ifdef HAVE__BOOL - + !q + !r + !u + !v + !w + !x + !y + !z + !pt - #endif - ); +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; ; return 0; @@ -14355,74 +14483,368 @@ main (void) _ACEOF if ac_fn_c_try_compile "$LINENO" then : - ac_cv_header_stdbool_h=yes + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' else $as_nop - ac_cv_header_stdbool_h=no + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 -printf "%s\n" "$ac_cv_header_stdbool_h" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac + + +LT_DLLOADERS= + -if test $ac_cv_header_stdbool_h = yes; then +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +lt_dlload_save_LIBS=$LIBS + +LIBADD_DLOPEN= +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_dlopen+y} +then : + break +fi +done +if test ${ac_cv_search_dlopen+y} +then : +else $as_nop + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h -ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default" -if test "x$ac_cv_header_crypt_h" = xyes + if test "$ac_cv_search_dlopen" != "none required"; then + LIBADD_DLOPEN=-ldl + fi + libltdl_cv_lib_dl_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la" +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if HAVE_DLFCN_H +# include +#endif + +int +main (void) +{ +dlopen(0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" then : - printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h + + libltdl_cv_func_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +printf %s "checking for dlopen in -lsvld... " >&6; } +if test ${ac_cv_lib_svld_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main (void) +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_svld_dlopen=yes +else $as_nop + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default" -if test "x$ac_cv_header_errno_h" = xyes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes then : - printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_LIBDL 1" >>confdefs.h + + LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la" +fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext fi -ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" -if test "x$ac_cv_header_fcntl_h" = xyes + +if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen" +then + lt_save_LIBS=$LIBS + LIBS="$LIBS $LIBADD_DLOPEN" + ac_fn_c_check_func "$LINENO" "dlerror" "ac_cv_func_dlerror" +if test "x$ac_cv_func_dlerror" = xyes then : - printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + printf "%s\n" "#define HAVE_DLERROR 1" >>confdefs.h fi -ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" -if test "x$ac_cv_header_limits_h" = xyes + + LIBS=$lt_save_LIBS +fi + + +LIBADD_SHL_LOAD= +ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes then : - printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_SHL_LOAD 1" >>confdefs.h + + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main (void) +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_shl_load=yes +else $as_nop + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes then : - printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +printf "%s\n" "#define HAVE_SHL_LOAD 1" >>confdefs.h + + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" + LIBADD_SHL_LOAD=-ldld +fi fi -ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes + + + +case $host_os in +darwin[1567].*) +# We only want this for pre-Mac OS X 10.4. + ac_fn_c_check_func "$LINENO" "_dyld_func_lookup" "ac_cv_func__dyld_func_lookup" +if test "x$ac_cv_func__dyld_func_lookup" = xyes then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_DYLD 1" >>confdefs.h + + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la" fi -ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default" -if test "x$ac_cv_header_utmp_h" = xyes + + ;; +beos*) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" + ;; +cygwin* | mingw* | pw32*) + ac_fn_check_decl "$LINENO" "cygwin_conv_path" "ac_cv_have_decl_cygwin_conv_path" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_cygwin_conv_path" = xyes then : - printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h + ac_have_decl=1 +else $as_nop + ac_have_decl=0 +fi +printf "%s\n" "#define HAVE_DECL_CYGWIN_CONV_PATH $ac_have_decl" >>confdefs.h + + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" + ;; +esac + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +printf %s "checking for dld_link in -ldld... " >&6; } +if test ${ac_cv_lib_dld_dld_link+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main (void) +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_dld_dld_link=yes +else $as_nop + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes +then : + +printf "%s\n" "#define HAVE_DLD 1" >>confdefs.h + + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la" +fi + + + + +LT_DLPREOPEN= +if test -n "$LT_DLLOADERS" +then + for lt_loader in $LT_DLLOADERS; do + LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " + done + +printf "%s\n" "#define HAVE_LIBDLLOADER 1" >>confdefs.h fi -ac_fn_c_check_header_compile "$LINENO" "utmpx.h" "ac_cv_header_utmpx_h" "$ac_includes_default" -if test "x$ac_cv_header_utmpx_h" = xyes + + +LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" + + +LIBS=$lt_dlload_save_LIBS +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +ac_fn_c_check_header_compile "$LINENO" "crypt.h" "ac_cv_header_crypt_h" "$ac_includes_default" +if test "x$ac_cv_header_crypt_h" = xyes then : - printf "%s\n" "#define HAVE_UTMPX_H 1" >>confdefs.h + printf "%s\n" "#define HAVE_CRYPT_H 1" >>confdefs.h fi -ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" -if test "x$ac_cv_header_termios_h" = xyes +ac_fn_c_check_header_compile "$LINENO" "utmp.h" "ac_cv_header_utmp_h" "$ac_includes_default" +if test "x$ac_cv_header_utmp_h" = xyes then : - printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h + printf "%s\n" "#define HAVE_UTMP_H 1" >>confdefs.h fi ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default" @@ -14442,30 +14864,12 @@ if test "x$ac_cv_header_sys_ioctl_h" = xyes then : printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h -fi -ac_fn_c_check_header_compile "$LINENO" "syslog.h" "ac_cv_header_syslog_h" "$ac_includes_default" -if test "x$ac_cv_header_syslog_h" = xyes -then : - printf "%s\n" "#define HAVE_SYSLOG_H 1" >>confdefs.h - fi ac_fn_c_check_header_compile "$LINENO" "paths.h" "ac_cv_header_paths_h" "$ac_includes_default" if test "x$ac_cv_header_paths_h" = xyes then : printf "%s\n" "#define HAVE_PATHS_H 1" >>confdefs.h -fi -ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default" -if test "x$ac_cv_header_utime_h" = xyes -then : - printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ulimit.h" "ac_cv_header_ulimit_h" "$ac_includes_default" -if test "x$ac_cv_header_ulimit_h" = xyes -then : - printf "%s\n" "#define HAVE_ULIMIT_H 1" >>confdefs.h - fi ac_fn_c_check_header_compile "$LINENO" "sys/capability.h" "ac_cv_header_sys_capability_h" "$ac_includes_default" if test "x$ac_cv_header_sys_capability_h" = xyes @@ -14478,12 +14882,6 @@ if test "x$ac_cv_header_sys_random_h" = xyes then : printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h -fi -ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_resource_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h - fi ac_fn_c_check_header_compile "$LINENO" "gshadow.h" "ac_cv_header_gshadow_h" "$ac_includes_default" if test "x$ac_cv_header_gshadow_h" = xyes @@ -14496,24 +14894,12 @@ if test "x$ac_cv_header_lastlog_h" = xyes then : printf "%s\n" "#define HAVE_LASTLOG_H 1" >>confdefs.h -fi -ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" -if test "x$ac_cv_header_locale_h" = xyes -then : - printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h - fi ac_fn_c_check_header_compile "$LINENO" "rpc/key_prot.h" "ac_cv_header_rpc_key_prot_h" "$ac_includes_default" if test "x$ac_cv_header_rpc_key_prot_h" = xyes then : printf "%s\n" "#define HAVE_RPC_KEY_PROT_H 1" >>confdefs.h -fi -ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" -if test "x$ac_cv_header_netdb_h" = xyes -then : - printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h - fi ac_fn_c_check_header_compile "$LINENO" "acl/libacl.h" "ac_cv_header_acl_libacl_h" "$ac_includes_default" if test "x$ac_cv_header_acl_libacl_h" = xyes @@ -14549,30 +14935,6 @@ if test "x$ac_cv_func_arc4random_buf" = xyes then : printf "%s\n" "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h -fi -ac_fn_c_check_func "$LINENO" "l64a" "ac_cv_func_l64a" -if test "x$ac_cv_func_l64a" = xyes -then : - printf "%s\n" "#define HAVE_L64A 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod" -if test "x$ac_cv_func_fchmod" = xyes -then : - printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown" -if test "x$ac_cv_func_fchown" = xyes -then : - printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "fsync" "ac_cv_func_fsync" -if test "x$ac_cv_func_fsync" = xyes -then : - printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h - fi ac_fn_c_check_func "$LINENO" "futimes" "ac_cv_func_futimes" if test "x$ac_cv_func_futimes" = xyes @@ -14603,12 +14965,6 @@ if test "x$ac_cv_func_getusershell" = xyes then : printf "%s\n" "#define HAVE_GETUSERSHELL 1" >>confdefs.h -fi -ac_fn_c_check_func "$LINENO" "getutent" "ac_cv_func_getutent" -if test "x$ac_cv_func_getutent" = xyes -then : - printf "%s\n" "#define HAVE_GETUTENT 1" >>confdefs.h - fi ac_fn_c_check_func "$LINENO" "initgroups" "ac_cv_func_initgroups" if test "x$ac_cv_func_initgroups" = xyes @@ -14633,12 +14989,6 @@ if test "x$ac_cv_func_setgroups" = xyes then : printf "%s\n" "#define HAVE_SETGROUPS 1" >>confdefs.h -fi -ac_fn_c_check_func "$LINENO" "updwtmp" "ac_cv_func_updwtmp" -if test "x$ac_cv_func_updwtmp" = xyes -then : - printf "%s\n" "#define HAVE_UPDWTMP 1" >>confdefs.h - fi ac_fn_c_check_func "$LINENO" "updwtmpx" "ac_cv_func_updwtmpx" if test "x$ac_cv_func_updwtmpx" = xyes @@ -14652,46 +15002,40 @@ then : printf "%s\n" "#define HAVE_INNETGR 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "getpwnam_r" "ac_cv_func_getpwnam_r" -if test "x$ac_cv_func_getpwnam_r" = xyes -then : - printf "%s\n" "#define HAVE_GETPWNAM_R 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "getpwuid_r" "ac_cv_func_getpwuid_r" -if test "x$ac_cv_func_getpwuid_r" = xyes +ac_fn_c_check_func "$LINENO" "getspnam_r" "ac_cv_func_getspnam_r" +if test "x$ac_cv_func_getspnam_r" = xyes then : - printf "%s\n" "#define HAVE_GETPWUID_R 1" >>confdefs.h + printf "%s\n" "#define HAVE_GETSPNAM_R 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "getgrnam_r" "ac_cv_func_getgrnam_r" -if test "x$ac_cv_func_getgrnam_r" = xyes +ac_fn_c_check_func "$LINENO" "rpmatch" "ac_cv_func_rpmatch" +if test "x$ac_cv_func_rpmatch" = xyes then : - printf "%s\n" "#define HAVE_GETGRNAM_R 1" >>confdefs.h + printf "%s\n" "#define HAVE_RPMATCH 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "getgrgid_r" "ac_cv_func_getgrgid_r" -if test "x$ac_cv_func_getgrgid_r" = xyes +ac_fn_c_check_func "$LINENO" "memset_explicit" "ac_cv_func_memset_explicit" +if test "x$ac_cv_func_memset_explicit" = xyes then : - printf "%s\n" "#define HAVE_GETGRGID_R 1" >>confdefs.h + printf "%s\n" "#define HAVE_MEMSET_EXPLICIT 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "getspnam_r" "ac_cv_func_getspnam_r" -if test "x$ac_cv_func_getspnam_r" = xyes +ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" +if test "x$ac_cv_func_explicit_bzero" = xyes then : - printf "%s\n" "#define HAVE_GETSPNAM_R 1" >>confdefs.h + printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "memset_s" "ac_cv_func_memset_s" -if test "x$ac_cv_func_memset_s" = xyes +ac_fn_c_check_func "$LINENO" "stpecpy" "ac_cv_func_stpecpy" +if test "x$ac_cv_func_stpecpy" = xyes then : - printf "%s\n" "#define HAVE_MEMSET_S 1" >>confdefs.h + printf "%s\n" "#define HAVE_STPECPY 1" >>confdefs.h fi -ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" -if test "x$ac_cv_func_explicit_bzero" = xyes +ac_fn_c_check_func "$LINENO" "stpeprintf" "ac_cv_func_stpeprintf" +if test "x$ac_cv_func_stpeprintf" = xyes then : - printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h + printf "%s\n" "#define HAVE_STPEPRINTF 1" >>confdefs.h fi @@ -14900,180 +15244,6 @@ rm -rf conftest* fi -ac_fn_c_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_atim" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIM 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_mtim" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIM 1" >>confdefs.h - - -fi - -ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimensec" "ac_cv_member_struct_stat_st_mtimensec" "$ac_includes_default" -if test "x$ac_cv_member_struct_stat_st_mtimensec" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1" >>confdefs.h - - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if test ${ac_cv_struct_tm+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main (void) -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_tm=time.h -else $as_nop - ac_cv_struct_tm=sys/time.h -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -printf "%s\n" "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h - -fi - - -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_type" "ac_cv_member_struct_utmp_ut_type" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_type" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_id" "ac_cv_member_struct_utmp_ut_id" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_id" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_name" "ac_cv_member_struct_utmp_ut_name" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_name" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_NAME 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_user" "ac_cv_member_struct_utmp_ut_user" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_user" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_USER 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_host" "ac_cv_member_struct_utmp_ut_host" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_host" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_HOST 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_syslen" "ac_cv_member_struct_utmp_ut_syslen" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_syslen" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_SYSLEN 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_addr" "ac_cv_member_struct_utmp_ut_addr" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_addr" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_ADDR 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_addr_v6" "ac_cv_member_struct_utmp_ut_addr_v6" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_addr_v6" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_ADDR_V6 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_time" "ac_cv_member_struct_utmp_ut_time" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_time" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TIME 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_xtime" "ac_cv_member_struct_utmp_ut_xtime" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_xtime" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_XTIME 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmp" "ut_tv" "ac_cv_member_struct_utmp_ut_tv" "#include -" -if test "x$ac_cv_member_struct_utmp_ut_tv" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h - - -fi - ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_name" "ac_cv_member_struct_utmpx_ut_name" "#include " @@ -15125,60 +15295,21 @@ ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_time" "ac_cv_member_struct_utm if test "x$ac_cv_member_struct_utmpx_ut_time" = xyes then : -printf "%s\n" "#define HAVE_STRUCT_UTMPX_UT_TIME 1" >>confdefs.h - - -fi -ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_xtime" "ac_cv_member_struct_utmpx_ut_xtime" "#include -" -if test "x$ac_cv_member_struct_utmpx_ut_xtime" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_UTMPX_UT_XTIME 1" >>confdefs.h - - -fi - - -if test "$ac_cv_header_lastlog_h" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ll_host in struct lastlog" >&5 -printf %s "checking for ll_host in struct lastlog... " >&6; } -if test ${ac_cv_struct_lastlog_ll_host+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -struct lastlog ll; char *cp = ll.ll_host; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_struct_lastlog_ll_host=yes -else $as_nop - ac_cv_struct_lastlog_ll_host=no - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +printf "%s\n" "#define HAVE_STRUCT_UTMPX_UT_TIME 1" >>confdefs.h + fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_lastlog_ll_host" >&5 -printf "%s\n" "$ac_cv_struct_lastlog_ll_host" >&6; } +ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_xtime" "ac_cv_member_struct_utmpx_ut_xtime" "#include +" +if test "x$ac_cv_member_struct_utmpx_ut_xtime" = xyes +then : - if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then +printf "%s\n" "#define HAVE_STRUCT_UTMPX_UT_XTIME 1" >>confdefs.h -printf "%s\n" "#define HAVE_LL_HOST 1" >>confdefs.h - fi fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -15467,19 +15598,6 @@ printf "%s\n" "#define HAVE_UTIME_NULL 1" >>confdefs.h fi rm -f conftest.data -ac_fn_c_check_func "$LINENO" "mkdir" "ac_cv_func_mkdir" -if test "x$ac_cv_func_mkdir" = xyes -then : - printf "%s\n" "#define HAVE_MKDIR 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" mkdir.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS mkdir.$ac_objext" - ;; -esac - -fi ac_fn_c_check_func "$LINENO" "putgrent" "ac_cv_func_putgrent" if test "x$ac_cv_func_putgrent" = xyes then : @@ -15518,32 +15636,6 @@ else $as_nop ;; esac -fi -ac_fn_c_check_func "$LINENO" "rename" "ac_cv_func_rename" -if test "x$ac_cv_func_rename" = xyes -then : - printf "%s\n" "#define HAVE_RENAME 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" rename.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS rename.$ac_objext" - ;; -esac - -fi -ac_fn_c_check_func "$LINENO" "rmdir" "ac_cv_func_rmdir" -if test "x$ac_cv_func_rmdir" = xyes -then : - printf "%s\n" "#define HAVE_RMDIR 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" rmdir.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS rmdir.$ac_objext" - ;; -esac - fi ac_fn_c_check_func "$LINENO" "sgetgrent" "ac_cv_func_sgetgrent" @@ -15586,72 +15678,6 @@ esac fi -ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" -if test "x$ac_cv_func_snprintf" = xyes -then : - printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" snprintf.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" - ;; -esac - -fi -ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp" -if test "x$ac_cv_func_strcasecmp" = xyes -then : - printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" strcasecmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext" - ;; -esac - -fi -ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" -if test "x$ac_cv_func_strdup" = xyes -then : - printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" strdup.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strdup.$ac_objext" - ;; -esac - -fi -ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror" -if test "x$ac_cv_func_strerror" = xyes -then : - printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" strerror.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strerror.$ac_objext" - ;; -esac - -fi -ac_fn_c_check_func "$LINENO" "strstr" "ac_cv_func_strstr" -if test "x$ac_cv_func_strstr" = xyes -then : - printf "%s\n" "#define HAVE_STRSTR 1" >>confdefs.h - -else $as_nop - case " $LIBOBJS " in - *" strstr.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strstr.$ac_objext" - ;; -esac - -fi - ac_fn_c_check_func "$LINENO" "setpgrp" "ac_cv_func_setpgrp" if test "x$ac_cv_func_setpgrp" = xyes @@ -15684,6 +15710,10 @@ else $as_nop /* end confdefs.h. */ #include + #ifdef HAVE_GSHADOW_H + #include + #endif + int main() { struct sgrp *sg = sgetsgent("test:x::"); @@ -15818,9 +15848,6 @@ printf "%s\n" "$shadow_cv_passwd_dir" >&6; } printf "%s\n" "#define PASSWD_PROGRAM \"$shadow_cv_passwd_dir/passwd\"" >>confdefs.h - -printf "%s\n" "#define USE_SYSLOG 1" >>confdefs.h - if test "$ac_cv_func_ruserok" = "yes"; then printf "%s\n" "#define RLOGIN 1" >>confdefs.h @@ -15869,26 +15896,32 @@ else $as_nop fi -# Check whether --enable-utmpx was given. -if test ${enable_utmpx+y} +# Check whether --enable-subordinate-ids was given. +if test ${enable_subordinate_ids+y} then : - enableval=$enable_utmpx; case "${enableval}" in - yes) enable_utmpx="yes" ;; - no) enable_utmpx="no" ;; - *) as_fn_error $? "bad value ${enableval} for --enable-utmpx" "$LINENO" 5 ;; - esac + enableval=$enable_subordinate_ids; enable_subids="${enableval}" else $as_nop - enable_utmpx="no" + enable_subids="maybe" fi -# Check whether --enable-subordinate-ids was given. -if test ${enable_subordinate_ids+y} +# Check whether --enable-lastlog was given. +if test ${enable_lastlog+y} then : - enableval=$enable_subordinate_ids; enable_subids="${enableval}" + enableval=$enable_lastlog; enable_lastlog="${enableval}" else $as_nop - enable_subids="maybe" + enable_lastlog="no" + +fi + + +# Check whether --enable-logind was given. +if test ${enable_logind+y} +then : + enableval=$enable_logind; enable_logind="${enableval}" +else $as_nop + enable_logind="yes" fi @@ -15966,15 +15999,6 @@ else $as_nop fi -# Check whether --with-libcrack was given. -if test ${with_libcrack+y} -then : - withval=$with_libcrack; with_libcrack=$withval -else $as_nop - with_libcrack=no -fi - - # Check whether --with-sha-crypt was given. if test ${with_sha_crypt+y} then : @@ -16038,6 +16062,15 @@ else $as_nop fi +# Check whether --with-libbsd was given. +if test ${with_libbsd+y} +then : + withval=$with_libbsd; with_libbsd=$withval +else $as_nop + with_libbsd=yes +fi + + if test "$with_group_name_max_length" = "no" ; then with_group_name_max_length=0 elif test "$with_group_name_max_length" = "yes" ; then @@ -16049,6 +16082,7 @@ printf "%s\n" "#define GROUP_NAME_MAX_LENGTH $with_group_name_max_length" >>conf GROUP_NAME_MAX_LENGTH="$with_group_name_max_length" + if test "x$with_sha_crypt" = "xyes"; then USE_SHA_CRYPT_TRUE= USE_SHA_CRYPT_FALSE='#' @@ -16133,9 +16167,9 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing inet_ntoa" >&5 -printf %s "checking for library containing inet_ntoa... " >&6; } -if test ${ac_cv_search_inet_ntoa+y} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 +printf %s "checking for library containing gethostbyname... " >&6; } +if test ${ac_cv_search_gethostbyname+y} then : printf %s "(cached) " >&6 else $as_nop @@ -16146,16 +16180,16 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -char inet_ntoa (); +char gethostbyname (); int main (void) { -return inet_ntoa (); +return gethostbyname (); ; return 0; } _ACEOF -for ac_lib in '' inet +for ac_lib in '' nsl do if test -z "$ac_lib"; then ac_res="none required" @@ -16165,149 +16199,243 @@ do fi if ac_fn_c_try_link "$LINENO" then : - ac_cv_search_inet_ntoa=$ac_res + ac_cv_search_gethostbyname=$ac_res fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if test ${ac_cv_search_inet_ntoa+y} + if test ${ac_cv_search_gethostbyname+y} then : break fi done -if test ${ac_cv_search_inet_ntoa+y} +if test ${ac_cv_search_gethostbyname+y} then : else $as_nop - ac_cv_search_inet_ntoa=no + ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_inet_ntoa" >&5 -printf "%s\n" "$ac_cv_search_inet_ntoa" >&6; } -ac_res=$ac_cv_search_inet_ntoa +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 +printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } +ac_res=$ac_cv_search_gethostbyname if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 -printf %s "checking for library containing socket... " >&6; } -if test ${ac_cv_search_socket+y} + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char socket (); -int -main (void) -{ -return socket (); - ; - return 0; -} -_ACEOF -for ac_lib in '' socket + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_socket=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_socket+y} -then : - break -fi done -if test ${ac_cv_search_socket+y} -then : + done +IFS=$as_save_IFS -else $as_nop - ac_cv_search_socket=no + ;; +esac fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +printf "%s\n" "$PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 -printf "%s\n" "$ac_cv_search_socket" >&6; } -ac_res=$ac_cv_search_socket -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 -printf %s "checking for library containing gethostbyname... " >&6; } -if test ${ac_cv_search_gethostbyname+y} +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ac_pt_PKG_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char gethostbyname (); -int -main (void) -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -for ac_lib in '' nsl + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do - if test -z "$ac_lib"; then - ac_res="none required" + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_gethostbyname=$ac_res +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_gethostbyname+y} -then : - break + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +printf %s "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + PKG_CONFIG="" + fi fi -done -if test ${ac_cv_search_gethostbyname+y} -then : -else $as_nop - ac_cv_search_gethostbyname=no +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cmocka" >&5 +printf %s "checking for cmocka... " >&6; } + +if test -n "$CMOCKA_CFLAGS"; then + pkg_cv_CMOCKA_CFLAGS="$CMOCKA_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cmocka\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cmocka") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CMOCKA_CFLAGS=`$PKG_CONFIG --cflags "cmocka" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS + else + pkg_failed=untried fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 -printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } -ac_res=$ac_cv_search_gethostbyname -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +if test -n "$CMOCKA_LIBS"; then + pkg_cv_CMOCKA_LIBS="$CMOCKA_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"cmocka\""; } >&5 + ($PKG_CONFIG --exists --print-errors "cmocka") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_CMOCKA_LIBS=`$PKG_CONFIG --libs "cmocka" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + CMOCKA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cmocka" 2>&1` + else + CMOCKA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cmocka" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$CMOCKA_PKG_ERRORS" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5 +printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;} +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5 +printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;} +else + CMOCKA_CFLAGS=$pkg_cv_CMOCKA_CFLAGS + CMOCKA_LIBS=$pkg_cv_CMOCKA_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + have_cmocka="yes" +fi + if test x$have_cmocka = xyes; then + HAVE_CMOCKA_TRUE= + HAVE_CMOCKA_FALSE='#' +else + HAVE_CMOCKA_TRUE='#' + HAVE_CMOCKA_FALSE= fi @@ -16354,6 +16482,9 @@ else $as_nop fi if test -n "$LIBECONF"; then + +printf "%s\n" "#define VENDORDIR \"$enable_vendordir\"" >>confdefs.h + ECONF_CPPFLAGS="-DUSE_ECONF=1" # Check whether --enable-vendordir was given. if test ${enable_vendordir+y} @@ -16366,6 +16497,11 @@ fi VENDORDIR=$enable_vendordir +if test "x$enable_vendordir" != x; then + +printf "%s\n" "#define HAVE_VENDORDIR 1" >>confdefs.h + +fi if test "x$enable_vendordir" != x; then HAVE_VENDORDIR_TRUE= HAVE_VENDORDIR_FALSE='#' @@ -16657,6 +16793,161 @@ else fi +if test "$enable_lastlog" = "yes" && test "$ac_cv_header_lastlog_h" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ll_host in struct lastlog" >&5 +printf %s "checking for ll_host in struct lastlog... " >&6; } +if test ${ac_cv_struct_lastlog_ll_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +struct lastlog ll; char *cp = ll.ll_host; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_struct_lastlog_ll_host=yes +else $as_nop + ac_cv_struct_lastlog_ll_host=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_lastlog_ll_host" >&5 +printf "%s\n" "$ac_cv_struct_lastlog_ll_host" >&6; } + + if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then + +printf "%s\n" "#define HAVE_LL_HOST 1" >>confdefs.h + + +printf "%s\n" "#define ENABLE_LASTLOG 1" >>confdefs.h + + enable_lastlog="yes" + else + as_fn_error $? "Cannot enable support for lastlog on systems where the data structures aren't available" "$LINENO" 5 + enable_subids="no" + fi +fi + if test "x$enable_lastlog" != "xno"; then + ENABLE_LASTLOG_TRUE= + ENABLE_LASTLOG_FALSE='#' +else + ENABLE_LASTLOG_TRUE='#' + ENABLE_LASTLOG_FALSE= +fi + + + +if test "$enable_logind" = "yes"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sd_session_get_remote_host in -lsystemd" >&5 +printf %s "checking for sd_session_get_remote_host in -lsystemd... " >&6; } +if test ${ac_cv_lib_systemd_sd_session_get_remote_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsystemd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char sd_session_get_remote_host (); +int +main (void) +{ +return sd_session_get_remote_host (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_systemd_sd_session_get_remote_host=yes +else $as_nop + ac_cv_lib_systemd_sd_session_get_remote_host=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_systemd_sd_session_get_remote_host" >&5 +printf "%s\n" "$ac_cv_lib_systemd_sd_session_get_remote_host" >&6; } +if test "x$ac_cv_lib_systemd_sd_session_get_remote_host" = xyes +then : + enable_logind="yes"; LIBSYSTEMD=-lsystemd; + +printf "%s\n" "#define ENABLE_LOGIND 1" >>confdefs.h + +else $as_nop + enable_logind="no" +fi + +fi + if test "x$enable_logind" != "xno"; then + ENABLE_LOGIND_TRUE= + ENABLE_LOGIND_FALSE='#' +else + ENABLE_LOGIND_TRUE='#' + ENABLE_LOGIND_FALSE= +fi + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 +printf %s "checking for crypt in -lcrypt... " >&6; } +if test ${ac_cv_lib_crypt_crypt+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcrypt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char crypt (); +int +main (void) +{ +return crypt (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_cv_lib_crypt_crypt=yes +else $as_nop + ac_cv_lib_crypt_crypt=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 +printf "%s\n" "$ac_cv_lib_crypt_crypt" >&6; } +if test "x$ac_cv_lib_crypt_crypt" = xyes +then : + LIBCRYPT=-lcrypt +else $as_nop + as_fn_error $? "crypt() not found" "$LINENO" 5 +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 printf %s "checking for crypt in -lcrypt... " >&6; } @@ -16691,57 +16982,207 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 -printf "%s\n" "$ac_cv_lib_crypt_crypt" >&6; } -if test "x$ac_cv_lib_crypt_crypt" = xyes -then : - LIBCRYPT=-lcrypt -else $as_nop - as_fn_error $? "crypt() not found" "$LINENO" 5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 +printf "%s\n" "$ac_cv_lib_crypt_crypt" >&6; } +if test "x$ac_cv_lib_crypt_crypt" = xyes +then : + LIYESCRYPT=-lcrypt +else $as_nop + as_fn_error $? "crypt() not found" "$LINENO" 5 +fi + + + +if test "$with_libbsd" != "no"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing readpassphrase" >&5 +printf %s "checking for library containing readpassphrase... " >&6; } +if test ${ac_cv_search_readpassphrase+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +char readpassphrase (); +int +main (void) +{ +return readpassphrase (); + ; + return 0; +} +_ACEOF +for ac_lib in '' bsd +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO" +then : + ac_cv_search_readpassphrase=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_readpassphrase+y} +then : + break +fi +done +if test ${ac_cv_search_readpassphrase+y} +then : + +else $as_nop + ac_cv_search_readpassphrase=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_readpassphrase" >&5 +printf "%s\n" "$ac_cv_search_readpassphrase" >&6; } +ac_res=$ac_cv_search_readpassphrase +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else $as_nop + + as_fn_error $? "readpassphrase() is missing, either from libc or libbsd" "$LINENO" 5 + +fi + + if test "$ac_cv_search_readpassphrase" = "-lbsd" +then : + + +pkg_failed=no +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libbsd-overlay" >&5 +printf %s "checking for libbsd-overlay... " >&6; } + +if test -n "$LIBBSD_CFLAGS"; then + pkg_cv_LIBBSD_CFLAGS="$LIBBSD_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbsd-overlay\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libbsd-overlay") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBBSD_CFLAGS=`$PKG_CONFIG --cflags "libbsd-overlay" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBBSD_LIBS"; then + pkg_cv_LIBBSD_LIBS="$LIBBSD_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libbsd-overlay\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libbsd-overlay") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBBSD_LIBS=`$PKG_CONFIG --libs "libbsd-overlay" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no fi + if test $_pkg_short_errors_supported = yes; then + LIBBSD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libbsd-overlay" 2>&1` + else + LIBBSD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libbsd-overlay" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBBSD_PKG_ERRORS" >&5 + as_fn_error $? "Package requirements (libbsd-overlay) were not met: +$LIBBSD_PKG_ERRORS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 -printf %s "checking for crypt in -lcrypt... " >&6; } -if test ${ac_cv_lib_crypt_crypt+y} +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables LIBBSD_CFLAGS +and LIBBSD_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables LIBBSD_CFLAGS +and LIBBSD_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + LIBBSD_CFLAGS=$pkg_cv_LIBBSD_CFLAGS + LIBBSD_LIBS=$pkg_cv_LIBBSD_LIBS + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + +fi + +fi + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $LIBBSD_CFLAGS" + ac_fn_c_check_header_compile "$LINENO" "readpassphrase.h" "ac_cv_header_readpassphrase_h" "$ac_includes_default" +if test "x$ac_cv_header_readpassphrase_h" = xyes then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + printf "%s\n" "#define HAVE_READPASSPHRASE_H 1" >>confdefs.h -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char crypt (); -int -main (void) -{ -return crypt (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" +fi + + if test "$ac_cv_header_readpassphrase_h" != "yes" then : - ac_cv_lib_crypt_crypt=yes -else $as_nop - ac_cv_lib_crypt_crypt=no + + as_fn_error $? "readpassphrase.h is missing" "$LINENO" 5 + fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + CFLAGS="$save_CFLAGS" + +printf "%s\n" "#define WITH_LIBBSD 1" >>confdefs.h + +else + +printf "%s\n" "#define WITH_LIBBSD 0" >>confdefs.h + fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 -printf "%s\n" "$ac_cv_lib_crypt_crypt" >&6; } -if test "x$ac_cv_lib_crypt_crypt" = xyes -then : - LIYESCRYPT=-lcrypt -else $as_nop - as_fn_error $? "crypt() not found" "$LINENO" 5 + if test x$with_libbsd = xyes; then + WITH_LIBBSD_TRUE= + WITH_LIBBSD_FALSE='#' +else + WITH_LIBBSD_TRUE='#' + WITH_LIBBSD_FALSE= fi @@ -16996,87 +17437,7 @@ fi if test "$audit_header$with_audit" = "noyes" ; then as_fn_error $? "libaudit.h is missing" "$LINENO" 5 elif test "$audit_header" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 -printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } -if test ${ac_cv_c_undeclared_builtin_options+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_save_CFLAGS=$CFLAGS - ac_cv_c_undeclared_builtin_options='cannot detect' - for ac_arg in '' -fno-builtin; do - CFLAGS="$ac_save_CFLAGS $ac_arg" - # This test program should *not* compile successfully. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -(void) strchr; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else $as_nop - # This test program should compile successfully. - # No library function is consistently available on - # freestanding implementations, so test against a dummy - # declaration. Include always-available headers on the - # off chance that they somehow elicit warnings. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -extern void ac_decl (int, char *); - -int -main (void) -{ -(void) ac_decl (0, (char *) 0); - (void) ac_decl; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - if test x"$ac_arg" = x -then : - ac_cv_c_undeclared_builtin_options='none needed' -else $as_nop - ac_cv_c_undeclared_builtin_options=$ac_arg -fi - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - done - CFLAGS=$ac_save_CFLAGS - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 -printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } - case $ac_cv_c_undeclared_builtin_options in #( - 'cannot detect') : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot make $CC report undeclared builtins -See \`config.log' for more details" "$LINENO" 5; } ;; #( - 'none needed') : - ac_c_undeclared_builtin_options='' ;; #( - *) : - ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; -esac - -ac_fn_check_decl "$LINENO" "AUDIT_ADD_USER" "ac_cv_have_decl_AUDIT_ADD_USER" "#include + ac_fn_check_decl "$LINENO" "AUDIT_ADD_USER" "ac_cv_have_decl_AUDIT_ADD_USER" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_AUDIT_ADD_USER" = xyes then : @@ -17171,137 +17532,6 @@ printf "%s\n" "#define WITH_AUDIT 1" >>confdefs.h fi fi - -if test "$with_libcrack" = "yes"; then - echo "checking cracklib flavour, don't be surprised by the results" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FascistCheck in -lcrack" >&5 -printf %s "checking for FascistCheck in -lcrack... " >&6; } -if test ${ac_cv_lib_crack_FascistCheck+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrack $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char FascistCheck (); -int -main (void) -{ -return FascistCheck (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_crack_FascistCheck=yes -else $as_nop - ac_cv_lib_crack_FascistCheck=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crack_FascistCheck" >&5 -printf "%s\n" "$ac_cv_lib_crack_FascistCheck" >&6; } -if test "x$ac_cv_lib_crack_FascistCheck" = xyes -then : - LIBCRACK=-lcrack -printf "%s\n" "#define HAVE_LIBCRACK 1" >>confdefs.h - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FascistHistory in -lcrack" >&5 -printf %s "checking for FascistHistory in -lcrack... " >&6; } -if test ${ac_cv_lib_crack_FascistHistory+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrack $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char FascistHistory (); -int -main (void) -{ -return FascistHistory (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_crack_FascistHistory=yes -else $as_nop - ac_cv_lib_crack_FascistHistory=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crack_FascistHistory" >&5 -printf "%s\n" "$ac_cv_lib_crack_FascistHistory" >&6; } -if test "x$ac_cv_lib_crack_FascistHistory" = xyes -then : - -printf "%s\n" "#define HAVE_LIBCRACK_HIST 1" >>confdefs.h - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FascistHistoryPw in -lcrack" >&5 -printf %s "checking for FascistHistoryPw in -lcrack... " >&6; } -if test ${ac_cv_lib_crack_FascistHistoryPw+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrack $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char FascistHistoryPw (); -int -main (void) -{ -return FascistHistoryPw (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_crack_FascistHistoryPw=yes -else $as_nop - ac_cv_lib_crack_FascistHistoryPw=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crack_FascistHistoryPw" >&5 -printf "%s\n" "$ac_cv_lib_crack_FascistHistoryPw" >&6; } -if test "x$ac_cv_lib_crack_FascistHistoryPw" = xyes -then : - -printf "%s\n" "#define HAVE_LIBCRACK_PW 1" >>confdefs.h - -fi - -fi - if test "$with_btrfs" != "no"; then for ac_header in sys/statfs.h linux/magic.h linux/btrfs_tree.h do : @@ -18031,16 +18261,16 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -if test "$enable_utmpx" = "yes"; then - if test "$ac_cv_header_utmpx_h" != "yes"; then - as_fn_error $? "The utmpx.h header file is required for utmpx support." "$LINENO" 5 - fi +ac_fn_c_check_func "$LINENO" "fgetpwent_r" "ac_cv_func_fgetpwent_r" +if test "x$ac_cv_func_fgetpwent_r" = xyes +then : -printf "%s\n" "#define USE_UTMPX 1" >>confdefs.h +printf "%s\n" "#define HAVE_FGETPWENT_R 1" >>confdefs.h fi + printf "%s\n" "#define SHELL \"$SHELL\"" >>confdefs.h @@ -20151,7 +20381,7 @@ else fi -ac_config_files="$ac_config_files Makefile po/Makefile.in doc/Makefile man/Makefile man/config.xml man/po/Makefile man/cs/Makefile man/da/Makefile man/de/Makefile man/es/Makefile man/fi/Makefile man/fr/Makefile man/hu/Makefile man/id/Makefile man/it/Makefile man/ja/Makefile man/ko/Makefile man/pl/Makefile man/pt_BR/Makefile man/ru/Makefile man/sv/Makefile man/tr/Makefile man/uk/Makefile man/zh_CN/Makefile man/zh_TW/Makefile libmisc/Makefile lib/Makefile libsubid/Makefile libsubid/subid.h src/Makefile contrib/Makefile etc/Makefile etc/pam.d/Makefile shadow.spec" +ac_config_files="$ac_config_files Makefile po/Makefile.in doc/Makefile man/Makefile man/config.xml man/po/Makefile man/cs/Makefile man/da/Makefile man/de/Makefile man/es/Makefile man/fi/Makefile man/fr/Makefile man/hu/Makefile man/id/Makefile man/it/Makefile man/ja/Makefile man/ko/Makefile man/pl/Makefile man/pt_BR/Makefile man/ru/Makefile man/sv/Makefile man/tr/Makefile man/uk/Makefile man/zh_CN/Makefile man/zh_TW/Makefile lib/Makefile libsubid/Makefile libsubid/subid.h src/Makefile contrib/Makefile etc/Makefile etc/pam.d/Makefile etc/shadow-maint/Makefile tests/unit/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -20310,6 +20540,10 @@ if test -z "${WITH_SU_TRUE}" && test -z "${WITH_SU_FALSE}"; then as_fn_error $? "conditional \"WITH_SU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${HAVE_CMOCKA_TRUE}" && test -z "${HAVE_CMOCKA_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CMOCKA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${HAVE_VENDORDIR_TRUE}" && test -z "${HAVE_VENDORDIR_FALSE}"; then as_fn_error $? "conditional \"HAVE_VENDORDIR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20326,6 +20560,18 @@ if test -z "${ENABLE_SUBIDS_TRUE}" && test -z "${ENABLE_SUBIDS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_SUBIDS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_LASTLOG_TRUE}" && test -z "${ENABLE_LASTLOG_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_LASTLOG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_LOGIND_TRUE}" && test -z "${ENABLE_LOGIND_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_LOGIND\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${WITH_LIBBSD_TRUE}" && test -z "${WITH_LIBBSD_FALSE}"; then + as_fn_error $? "conditional \"WITH_LIBBSD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_BTRFS_TRUE}" && test -z "${WITH_BTRFS_FALSE}"; then as_fn_error $? "conditional \"WITH_BTRFS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20744,7 +20990,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by shadow $as_me 4.13, which was +This file was extended by shadow $as_me 4.15.2, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20813,7 +21059,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -shadow config.status 4.13 +shadow config.status 4.15.2 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -20976,6 +21222,7 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' @@ -20984,6 +21231,7 @@ want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' @@ -21104,6 +21352,7 @@ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ +FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ @@ -21112,7 +21361,6 @@ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ -AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ @@ -21261,7 +21509,6 @@ do "man/uk/Makefile") CONFIG_FILES="$CONFIG_FILES man/uk/Makefile" ;; "man/zh_CN/Makefile") CONFIG_FILES="$CONFIG_FILES man/zh_CN/Makefile" ;; "man/zh_TW/Makefile") CONFIG_FILES="$CONFIG_FILES man/zh_TW/Makefile" ;; - "libmisc/Makefile") CONFIG_FILES="$CONFIG_FILES libmisc/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "libsubid/Makefile") CONFIG_FILES="$CONFIG_FILES libsubid/Makefile" ;; "libsubid/subid.h") CONFIG_FILES="$CONFIG_FILES libsubid/subid.h" ;; @@ -21269,7 +21516,8 @@ do "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; "etc/pam.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/pam.d/Makefile" ;; - "shadow.spec") CONFIG_FILES="$CONFIG_FILES shadow.spec" ;; + "etc/shadow-maint/Makefile") CONFIG_FILES="$CONFIG_FILES etc/shadow-maint/Makefile" ;; + "tests/unit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/unit/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -22095,6 +22343,9 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd +# A file(cmd) program that detects file types. +FILECMD=$lt_FILECMD + # An object symbol dumper. OBJDUMP=$lt_OBJDUMP @@ -22119,8 +22370,11 @@ sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR +# Flags to create an archive (by configure). +lt_ar_flags=$lt_ar_flags + # Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS +AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec @@ -22496,7 +22750,7 @@ ltmain=$ac_aux_dir/ltmain.sh # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ + $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || @@ -22661,7 +22915,6 @@ echo echo "shadow will be compiled with the following features:" echo echo " auditing support: $with_audit" -echo " CrackLib support: $with_libcrack" echo " PAM support: $with_libpam" if test "$with_libpam" = "yes"; then echo " suid account management tools: $enable_acct_tools_setuid" @@ -22679,7 +22932,10 @@ echo " yescrypt passwords encryption: $with_yescrypt" echo " nscd support: $with_nscd" echo " sssd support: $with_sssd" echo " subordinate IDs support: $enable_subids" +echo " enable lastlog: $enable_lastlog" +echo " enable logind: $enable_logind" echo " use file caps: $with_fcaps" echo " install su: $with_su" +echo " enabled vendor dir: $enable_vendordir" echo diff --git a/configure.ac b/configure.ac index 924254a..789c2c2 100644 --- a/configure.ac +++ b/configure.ac @@ -4,9 +4,9 @@ m4_define([libsubid_abi_major], 4) m4_define([libsubid_abi_minor], 0) m4_define([libsubid_abi_micro], 0) m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro]) -AC_INIT([shadow], [4.13], [pkg-shadow-devel@lists.alioth.debian.org], [], +AC_INIT([shadow], [4.15.2], [pkg-shadow-devel@lists.alioth.debian.org], [], [https://github.com/shadow-maint/shadow]) -AM_INIT_AUTOMAKE([1.11 foreign dist-xz]) +AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax]) AC_CONFIG_MACRO_DIRS([m4]) AM_SILENT_RULES([yes]) AC_CONFIG_HEADERS([config.h]) @@ -32,47 +32,30 @@ AC_PROG_CC AC_PROG_LN_S AC_PROG_YACC LT_INIT +LT_LIB_DLLOAD dnl Checks for libraries. dnl Checks for header files. -AC_HEADER_STDBOOL - -AC_CHECK_HEADERS(crypt.h 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/capability.h sys/random.h sys/resource.h \ - gshadow.h lastlog.h locale.h rpc/key_prot.h netdb.h acl/libacl.h \ +AC_CHECK_HEADERS(crypt.h utmp.h \ + termio.h sgtty.h sys/ioctl.h paths.h \ + sys/capability.h sys/random.h \ + gshadow.h lastlog.h rpc/key_prot.h acl/libacl.h \ attr/libattr.h attr/error_context.h) dnl shadow now uses the libc's shadow implementation AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])]) -AC_CHECK_FUNCS(arc4random_buf l64a fchmod fchown fsync futimes \ +AC_CHECK_FUNCS(arc4random_buf futimes \ getentropy getrandom getspnam getusershell \ - getutent initgroups lckpwdf lutimes \ - setgroups updwtmp updwtmpx innetgr getpwnam_r \ - getpwuid_r getgrnam_r getgrgid_r getspnam_r \ - memset_s explicit_bzero) + initgroups lckpwdf lutimes \ + setgroups updwtmpx innetgr \ + getspnam_r \ + rpmatch \ + memset_explicit explicit_bzero stpecpy stpeprintf) AC_SYS_LARGEFILE dnl Checks for typedefs, structures, and compiler characteristics. -AC_CHECK_MEMBERS([struct stat.st_atim]) -AC_CHECK_MEMBERS([struct stat.st_atimensec]) -AC_CHECK_MEMBERS([struct stat.st_mtim]) -AC_CHECK_MEMBERS([struct stat.st_mtimensec]) -AC_STRUCT_TM - -AC_CHECK_MEMBERS([struct utmp.ut_type, - struct utmp.ut_id, - struct utmp.ut_name, - struct utmp.ut_user, - struct utmp.ut_host, - struct utmp.ut_syslen, - struct utmp.ut_addr, - struct utmp.ut_addr_v6, - struct utmp.ut_time, - struct utmp.ut_xtime, - struct utmp.ut_tv],,,[[#include ]]) AC_CHECK_MEMBERS([struct utmpx.ut_name, struct utmpx.ut_host, @@ -82,29 +65,11 @@ AC_CHECK_MEMBERS([struct utmpx.ut_name, struct utmpx.ut_time, struct utmpx.ut_xtime],,,[[#include ]]) -if test "$ac_cv_header_lastlog_h" = "yes"; then - AC_CACHE_CHECK(for ll_host in struct lastlog, - ac_cv_struct_lastlog_ll_host, - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [struct lastlog ll; char *cp = ll.ll_host;] - )], - [ac_cv_struct_lastlog_ll_host=yes], - [ac_cv_struct_lastlog_ll_host=no] - ) - ) - - if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then - AC_DEFINE(HAVE_LL_HOST, 1, - [Define if struct lastlog has ll_host]) - fi -fi - dnl Checks for library functions. AC_TYPE_GETGROUPS AC_FUNC_UTIME_NULL -AC_REPLACE_FUNCS(mkdir putgrent putpwent putspent rename rmdir) +AC_REPLACE_FUNCS(putgrent putpwent putspent) 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, @@ -116,6 +81,10 @@ if test "$ac_cv_header_shadow_h" = "yes"; then ac_cv_libc_shadowgrp, AC_RUN_IFELSE([AC_LANG_SOURCE([ #include + #ifdef HAVE_GSHADOW_H + #include + #endif + int main() { struct sgrp *sg = sgetsgent("test:x::"); @@ -191,7 +160,7 @@ AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd", [Path to passwd program.]) dnl XXX - quick hack, should disappear before anyone notices :). -AC_DEFINE(USE_SYSLOG, 1, [Define to use syslog().]) +dnl XXX - I just read the above message :). if test "$ac_cv_func_ruserok" = "yes"; then AC_DEFINE(RLOGIN, 1, [Define if login should support the -r flag for rlogind.]) AC_DEFINE(RUSEROK, 0, [Define to the ruserok() "success" return value (0 or 1).]) @@ -226,17 +195,6 @@ AC_ARG_ENABLE(account-tools-setuid, [enable_acct_tools_setuid="no"] ) -AC_ARG_ENABLE(utmpx, - [AS_HELP_STRING([--enable-utmpx], - [enable loggin in utmpx / wtmpx @<:@default=no@:>@])], - [case "${enableval}" in - yes) enable_utmpx="yes" ;; - no) enable_utmpx="no" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-utmpx) ;; - esac], - [enable_utmpx="no"] -) - AC_ARG_ENABLE(subordinate-ids, [AS_HELP_STRING([--enable-subordinate-ids], [support subordinate ids @<:@default=yes@:>@])], @@ -244,6 +202,20 @@ AC_ARG_ENABLE(subordinate-ids, [enable_subids="maybe"] ) +AC_ARG_ENABLE(lastlog, + [AS_HELP_STRING([--enable-lastlog], + [enable lastlog @<:@default=no@:>@])], + [enable_lastlog="${enableval}"], + [enable_lastlog="no"] +) + +AC_ARG_ENABLE(logind, + [AS_HELP_STRING([--enable-logind], + [enable logind @<:@default=yes@:>@])], + [enable_logind="${enableval}"], + [enable_logind="yes"] +) + AC_ARG_WITH(audit, [AS_HELP_STRING([--with-audit], [use auditing support @<:@default=yes if found@:>@])], [with_audit=$withval], [with_audit=maybe]) @@ -268,9 +240,6 @@ AC_ARG_WITH(skey, AC_ARG_WITH(tcb, [AS_HELP_STRING([--with-tcb], [use tcb support (incomplete) @<:@default=yes if found@:>@])], [with_tcb=$withval], [with_tcb=maybe]) -AC_ARG_WITH(libcrack, - [AS_HELP_STRING([--with-libcrack], [use libcrack @<:@default=no@:>@])], - [with_libcrack=$withval], [with_libcrack=no]) AC_ARG_WITH(sha-crypt, [AS_HELP_STRING([--with-sha-crypt], [allow the SHA256 and SHA512 password encryption algorithms @<:@default=yes@:>@])], [with_sha_crypt=$withval], [with_sha_crypt=yes]) @@ -292,6 +261,9 @@ AC_ARG_WITH(group-name-max-length, AC_ARG_WITH(su, [AS_HELP_STRING([--with-su], [build and install su program and man page @<:@default=yes@:>@])], [with_su=$withval], [with_su=yes]) +AC_ARG_WITH(libbsd, + [AS_HELP_STRING([--with-libbsd], [use libbsd support @<:@default=yes if found@:>@])], + [with_libbsd=$withval], [with_libbsd=yes]) if test "$with_group_name_max_length" = "no" ; then with_group_name_max_length=0 @@ -302,6 +274,7 @@ AC_DEFINE_UNQUOTED(GROUP_NAME_MAX_LENGTH, $with_group_name_max_length, [max grou AC_SUBST(GROUP_NAME_MAX_LENGTH) GROUP_NAME_MAX_LENGTH="$with_group_name_max_length" + AM_CONDITIONAL(USE_SHA_CRYPT, test "x$with_sha_crypt" = "xyes") if test "$with_sha_crypt" = "yes"; then AC_DEFINE(USE_SHA_CRYPT, 1, [Define to allow the SHA256 and SHA512 password encryption algorithms]) @@ -336,12 +309,16 @@ 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). -AC_SEARCH_LIBS(inet_ntoa, inet) -AC_SEARCH_LIBS(socket, socket) AC_SEARCH_LIBS(gethostbyname, nsl) +PKG_CHECK_MODULES([CMOCKA], [cmocka], [have_cmocka="yes"], + [AC_MSG_WARN([libcmocka not found, cmocka tests will not be built])]) +AM_CONDITIONAL([HAVE_CMOCKA], [test x$have_cmocka = xyes]) + AC_CHECK_LIB([econf],[econf_readDirs],[LIBECONF="-leconf"],[LIBECONF=""]) if test -n "$LIBECONF"; then + AC_DEFINE_UNQUOTED([VENDORDIR], ["$enable_vendordir"], + [Directory for distribution provided configuration files]) ECONF_CPPFLAGS="-DUSE_ECONF=1" AC_ARG_ENABLE([vendordir], AS_HELP_STRING([--enable-vendordir=DIR], [Directory for distribution provided configuration files]),,[]) @@ -349,6 +326,9 @@ fi AC_SUBST(ECONF_CPPFLAGS) AC_SUBST(LIBECONF) AC_SUBST([VENDORDIR], [$enable_vendordir]) +if test "x$enable_vendordir" != x; then + AC_DEFINE(HAVE_VENDORDIR, 1, [Define to support vendor settings.]) +fi AM_CONDITIONAL([HAVE_VENDORDIR], [test "x$enable_vendordir" != x]) if test "$enable_shadowgrp" = "yes"; then @@ -393,6 +373,39 @@ if test "$enable_subids" != "no"; then fi AM_CONDITIONAL(ENABLE_SUBIDS, test "x$enable_subids" != "xno") +if test "$enable_lastlog" = "yes" && test "$ac_cv_header_lastlog_h" = "yes"; then + AC_CACHE_CHECK(for ll_host in struct lastlog, + ac_cv_struct_lastlog_ll_host, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], + [struct lastlog ll; char *cp = ll.ll_host;] + )], + [ac_cv_struct_lastlog_ll_host=yes], + [ac_cv_struct_lastlog_ll_host=no] + ) + ) + + if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then + AC_DEFINE(HAVE_LL_HOST, 1, + [Define if struct lastlog has ll_host]) + AC_DEFINE(ENABLE_LASTLOG, 1, [Define to support lastlog.]) + enable_lastlog="yes" + else + AC_MSG_ERROR([Cannot enable support for lastlog on systems where the data structures aren't available]) + enable_subids="no" + fi +fi +AM_CONDITIONAL(ENABLE_LASTLOG, test "x$enable_lastlog" != "xno") + +AC_SUBST(LIBSYSTEMD) +if test "$enable_logind" = "yes"; then + AC_CHECK_LIB(systemd, sd_session_get_remote_host, + [enable_logind="yes"; [LIBSYSTEMD=-lsystemd]; + AC_DEFINE(ENABLE_LOGIND, 1, + [Define to manage session support with logind.])], + [enable_logind="no"]) +fi +AM_CONDITIONAL(ENABLE_LOGIND, test "x$enable_logind" != "xno") + AC_SUBST(LIBCRYPT) AC_CHECK_LIB(crypt, crypt, [LIBCRYPT=-lcrypt], [AC_MSG_ERROR([crypt() not found])]) @@ -401,6 +414,28 @@ AC_SUBST(LIYESCRYPT) AC_CHECK_LIB(crypt, crypt, [LIYESCRYPT=-lcrypt], [AC_MSG_ERROR([crypt() not found])]) +AC_SUBST(LIBBSD) +if test "$with_libbsd" != "no"; then + AC_SEARCH_LIBS([readpassphrase], [bsd], [], [ + AC_MSG_ERROR([readpassphrase() is missing, either from libc or libbsd]) + ]) + AS_IF([test "$ac_cv_search_readpassphrase" = "-lbsd"], [ + PKG_CHECK_MODULES([LIBBSD], [libbsd-overlay]) + ]) + dnl Make sure either the libc or libbsd provide the header. + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $LIBBSD_CFLAGS" + AC_CHECK_HEADERS([readpassphrase.h]) + AS_IF([test "$ac_cv_header_readpassphrase_h" != "yes"], [ + AC_MSG_ERROR([readpassphrase.h is missing]) + ]) + CFLAGS="$save_CFLAGS" + AC_DEFINE(WITH_LIBBSD, 1, [Build shadow with libbsd support]) +else + AC_DEFINE(WITH_LIBBSD, 0, [Build shadow without libbsd support]) +fi +AM_CONDITIONAL(WITH_LIBBSD, test x$with_libbsd = xyes) + AC_SUBST(LIBACL) if test "$with_acl" != "no"; then AC_CHECK_HEADERS(acl/libacl.h attr/error_context.h, [acl_header="yes"], [acl_header="no"]) @@ -485,17 +520,6 @@ if test "$with_audit" != "no"; then fi fi -AC_SUBST(LIBCRACK) -if test "$with_libcrack" = "yes"; then - echo "checking cracklib flavour, don't be surprised by the results" - AC_CHECK_LIB(crack, FascistCheck, - [LIBCRACK=-lcrack AC_DEFINE(HAVE_LIBCRACK, 1, [Defined if you have libcrack.])]) - AC_CHECK_LIB(crack, FascistHistory, - AC_DEFINE(HAVE_LIBCRACK_HIST, 1, [Defined if you have the ts&szs cracklib.])) - AC_CHECK_LIB(crack, FascistHistoryPw, - 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"]) @@ -682,14 +706,7 @@ if test "$with_skey" = "yes"; then ]])],[AC_DEFINE(SKEY_BSD_STYLE, 1, [Define to support newer BSD S/Key API])],[]) fi -if test "$enable_utmpx" = "yes"; then - if test "$ac_cv_header_utmpx_h" != "yes"; then - AC_MSG_ERROR([The utmpx.h header file is required for utmpx support.]) - fi - AC_DEFINE(USE_UTMPX, - 1, - [Define if utmpx should be used]) -fi +AC_CHECK_FUNC(fgetpwent_r, [AC_DEFINE(HAVE_FGETPWENT_R, 1, [Defined to 1 if you have the declaration of 'fgetpwent_r'])]) AC_DEFINE_UNQUOTED(SHELL, ["$SHELL"], [The default shell.]) @@ -723,7 +740,6 @@ AC_CONFIG_FILES([ man/uk/Makefile man/zh_CN/Makefile man/zh_TW/Makefile - libmisc/Makefile lib/Makefile libsubid/Makefile libsubid/subid.h @@ -731,7 +747,8 @@ AC_CONFIG_FILES([ contrib/Makefile etc/Makefile etc/pam.d/Makefile - shadow.spec + etc/shadow-maint/Makefile + tests/unit/Makefile ]) AC_OUTPUT @@ -739,7 +756,6 @@ echo echo "shadow will be compiled with the following features:" echo echo " auditing support: $with_audit" -echo " CrackLib support: $with_libcrack" echo " PAM support: $with_libpam" if test "$with_libpam" = "yes"; then echo " suid account management tools: $enable_acct_tools_setuid" @@ -757,6 +773,9 @@ echo " yescrypt passwords encryption: $with_yescrypt" echo " nscd support: $with_nscd" echo " sssd support: $with_sssd" echo " subordinate IDs support: $enable_subids" +echo " enable lastlog: $enable_lastlog" +echo " enable logind: $enable_logind" echo " use file caps: $with_fcaps" echo " install su: $with_su" +echo " enabled vendor dir: $enable_vendordir" echo diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 5c45cb7..dc3ccd2 100644 --- a/contrib/Makefile.am +++ b/contrib/Makefile.am @@ -1,6 +1,4 @@ # This is a dummy Makefile.am to get automake work flawlessly, # and also cooperate to make a distribution for `make dist' -EXTRA_DIST = README adduser.c adduser.sh adduser2.sh \ - atudel groupmems.shar pwdauth.c shadow-anonftp.patch \ - udbachk.tgz +EXTRA_DIST = README adduser.c adduser.sh adduser2.sh diff --git a/contrib/Makefile.in b/contrib/Makefile.in index 84f3e30..44fa7cb 100644 --- a/contrib/Makefile.in +++ b/contrib/Makefile.in @@ -141,6 +141,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -159,6 +161,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -174,9 +177,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -192,6 +201,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -200,6 +210,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -222,6 +234,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -293,10 +308,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -EXTRA_DIST = README adduser.c adduser.sh adduser2.sh \ - atudel groupmems.shar pwdauth.c shadow-anonftp.patch \ - udbachk.tgz - +EXTRA_DIST = README adduser.c adduser.sh adduser2.sh all: all-am .SUFFIXES: diff --git a/contrib/README b/contrib/README index c4d1bc0..6002923 100644 --- a/contrib/README +++ b/contrib/README @@ -2,9 +2,6 @@ People keep sending various adduser programs and scripts... They are all in this directory. I haven't tested them, use at your own risk. Anyway, the best one I've seen so far is adduser-3.x from Debian. -atudel is a perl script to remove at jobs owned by the specified user -(atrm in at-2.9 for Linux can't do that). - udbachk.tgz is a passwd/group/shadow file integrity checker. --marekm diff --git a/contrib/adduser.c b/contrib/adduser.c index deebd4c..584e098 100644 --- a/contrib/adduser.c +++ b/contrib/adduser.c @@ -60,7 +60,7 @@ ** Added in the password date field, which should always reflect the last ** date the password was changed, for expiry purposes. "passwd" always ** updates this field, so the adduser program should set it up right -** initially (or a user could keep thier initial password forever ;) +** initially (or a user could keep their initial password forever ;) ** The number is in days since Jan 1st, 1970. ** ** Have fun with it, and someone please make @@ -489,7 +489,7 @@ safeget (char *buf, int maxlen) while ((c = getc (stdin)) != EOF && (c != '\n') && (++i < maxlen)) { bad = (!isalnum (c) && (c != '_') && (c != ' ')); - *(buf++) = (char) c; + *(buf++) = c; } *buf = '\0'; diff --git a/contrib/groupmems.shar b/contrib/groupmems.shar deleted file mode 100644 index 62e9b48..0000000 --- a/contrib/groupmems.shar +++ /dev/null @@ -1,465 +0,0 @@ -#!/bin/sh -# This is a shell archive (produced by GNU sharutils 4.2.1). -# To extract the files from this archive, save it to some FILE, remove -# everything before the `!/bin/sh' line above, then type `sh FILE'. -# -# Made on 2000-05-25 14:41 CDT by . -# Source directory was `/home/gk4/src/groupmem'. -# -# Existing files will *not* be overwritten unless `-c' is specified. -# -# This shar contains: -# length mode name -# ------ ---------- ------------------------------------------ -# 1960 -rw-r--r-- Makefile -# 6348 -rw-r--r-- groupmems.c -# 3372 -rw------- groupmems.8 -# -save_IFS="${IFS}" -IFS="${IFS}:" -gettext_dir=FAILED -locale_dir=FAILED -first_param="$1" -for dir in $PATH -do - if test "$gettext_dir" = FAILED && test -f $dir/gettext \ - && ($dir/gettext --version >/dev/null 2>&1) - then - set `$dir/gettext --version 2>&1` - if test "$3" = GNU - then - gettext_dir=$dir - fi - fi - if test "$locale_dir" = FAILED && test -f $dir/shar \ - && ($dir/shar --print-text-domain-dir >/dev/null 2>&1) - then - locale_dir=`$dir/shar --print-text-domain-dir` - fi -done -IFS="$save_IFS" -if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED -then - echo=echo -else - TEXTDOMAINDIR=$locale_dir - export TEXTDOMAINDIR - TEXTDOMAIN=sharutils - export TEXTDOMAIN - echo="$gettext_dir/gettext -s" -fi -if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then - shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"' -elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then - shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"' -elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then - shar_touch='touch -am $3$4$5$6$2 "$8"' -else - shar_touch=: - echo - $echo 'WARNING: not restoring timestamps. Consider getting and' - $echo "installing GNU \`touch', distributed in GNU File Utilities..." - echo -fi -rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch -# -if mkdir _sh10937; then - $echo 'x -' 'creating lock directory' -else - $echo 'failed to create lock directory' - exit 1 -fi -# ============= Makefile ============== -if test -f 'Makefile' && test "$first_param" != -c; then - $echo 'x -' SKIPPING 'Makefile' '(file already exists)' -else - $echo 'x -' extracting 'Makefile' '(text)' - sed 's/^X//' << 'SHAR_EOF' > 'Makefile' && -/* -# SPDX-FileCopyrightText: 2000, International Business Machines, Inc. -# SPDX-FileCopyrightText: 2000, George Kraft IV, gk4@us.ibm.com -# SPDX-License-Identifier: BSD-3-Clause -# -X -all: groupmems -X -groupmems: groupmems.c -X cc -g -o groupmems groupmems.c -L. -lshadow -X -install: groupmems -X -/usr/sbin/groupadd groups -X install -o root -g groups -m 4770 groupmems /usr/bin -X -install.man: groupmems.8 -X install -o root -g root -m 644 groupmems.8 /usr/man/man8 -X -SHAR_EOF - (set 20 00 05 25 14 40 28 'Makefile'; eval "$shar_touch") && - chmod 0644 'Makefile' || - $echo 'restore of' 'Makefile' 'failed' - if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ - && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then - md5sum -c << SHAR_EOF >/dev/null 2>&1 \ - || $echo 'Makefile:' 'MD5 check failed' -b46cf7ef8d59149093c011ced3f3103c Makefile -SHAR_EOF - else - shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'Makefile'`" - test 1960 -eq "$shar_count" || - $echo 'Makefile:' 'original size' '1960,' 'current size' "$shar_count!" - fi -fi -# ============= groupmems.c ============== -if test -f 'groupmems.c' && test "$first_param" != -c; then - $echo 'x -' SKIPPING 'groupmems.c' '(file already exists)' -else - $echo 'x -' extracting 'groupmems.c' '(text)' - sed 's/^X//' << 'SHAR_EOF' > 'groupmems.c' && -/* -X * SPDX-FileCopyrightText: 2000, International Business Machines, Inc. -X * SPDX-FileCopyrightText: 2000, George Kraft IV, gk4@us.ibm.com -X * SPDX-License-Identifier: BSD-3-Clause -X */ -/* -** -** Utility "groupmem" adds and deletes members from a user's group. -** -** Setup (as "root"): -** -** groupadd -r groups -** chmod 2770 groupmems -** chown root.groups groupmems -** groupmems -g groups -a gk4 -** -** Usage (as "gk4"): -** -** groupmems -a olive -** groupmems -a jordan -** groupmems -a meghan -** groupmems -a morgan -** groupmems -a jake -** groupmems -l -** groupmems -d jake -** groupmems -l -*/ -X -#include -#include -#include -#include -#include -#include -#include "defines.h" -#include "groupio.h" -X -/* Exit Status Values */ -X -#define EXIT_SUCCESS 0 /* success */ -#define EXIT_USAGE 1 /* invalid command syntax */ -#define EXIT_GROUP_FILE 2 /* group file access problems */ -#define EXIT_NOT_ROOT 3 /* not superuser */ -#define EXIT_NOT_EROOT 4 /* not effective superuser */ -#define EXIT_NOT_PRIMARY 5 /* not primary owner of group */ -#define EXIT_NOT_MEMBER 6 /* member of group does not exist */ -#define EXIT_MEMBER_EXISTS 7 /* member of group already exists */ -X -#define TRUE 1 -#define FALSE 0 -X -/* Globals */ -X -extern int optind; -extern char *optarg; -static char *adduser = NULL; -static char *deluser = NULL; -static char *thisgroup = NULL; -static int purge = FALSE; -static int list = FALSE; -static int exclusive = 0; -X -static int isroot(void) { -X return getuid() ? FALSE : TRUE; -} -X -static int isgroup(void) { -X gid_t g = getgid(); -X struct group *grp = getgrgid(g); -X -X return TRUE; -} -X -static char *whoami(void) { -X struct group *grp = getgrgid(getgid()); -X struct passwd *usr = getpwuid(getuid()); -X -X if (0 == strcmp(usr->pw_name, grp->gr_name)) { -X return (char *)strdup(usr->pw_name); -X } else { -X return NULL; -X } -} -X -static void -addtogroup(char *user, char **members) { -X int i; -X char **pmembers; -X -X for (i = 0; NULL != members[i]; i++ ) { -X if (0 == strcmp(user, members[i])) { -X fprintf(stderr, "Member already exists\n"); -X exit(EXIT_MEMBER_EXISTS); -X } -X } -X -X if (0 == i) { -X pmembers = (char **)calloc(2, sizeof(char *)); -X } else { -X pmembers = (char **)realloc(members, sizeof(char *)*(i+1)); -X } -X -X *members = *pmembers; -X members[i] = user; -X members[i+1] = NULL; -} -X -static void -rmfromgroup(char *user, char **members) { -X int i; -X int found = FALSE; -X -X i = 0; -X while (!found && NULL != members[i]) { -X if (0 == strcmp(user, members[i])) { -X found = TRUE; -X } else { -X i++; -X } -X } -X -X while (found && NULL != members[i]) { -X members[i] = members[++i]; -X } -X -X if (!found) { -X fprintf(stderr, "Member to remove could not be found\n"); -X exit(EXIT_NOT_MEMBER); -X } -} -X -static void -nomembers(char **members) { -X int i; -X -X for (i = 0; NULL != members[i]; i++ ) { -X members[i] = NULL; -X } -} -X -static void -members(char **members) { -X int i; -X -X for (i = 0; NULL != members[i]; i++ ) { -X printf("%s ", members[i]); -X -X if (NULL == members[i+1]) { -X printf("\n"); -X } else { -X printf(" "); -X } -X } -} -X -static void usage(void) { -X fprintf(stderr, "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n"); -X exit(EXIT_USAGE); -} -X -main(int argc, char **argv) { -X int arg, i; -X char *name; -X struct group *grp; -X -X while ((arg = getopt(argc, argv, "a:d:g:Dl")) != EOF) { -X switch (arg) { -X case 'a': -X adduser = strdup(optarg); -X ++exclusive; -X break; -X case 'd': -X deluser = strdup(optarg); -X ++exclusive; -X break; -X case 'g': -X thisgroup = strdup(optarg); -X break; -X case 'D': -X purge = TRUE; -X ++exclusive; -X break; -X case 'l': -X list = TRUE; -X ++exclusive; -X break; -X default: -X usage(); -X } -X } -X -X if (exclusive > 1 || optind < argc) { -X usage(); -X } -X -X if (!isroot() && NULL != thisgroup) { -X fprintf(stderr, "Only root can add members to different groups\n"); -X exit(EXIT_NOT_ROOT); -X } else if (isroot() && NULL != thisgroup) { -X name = thisgroup; -X } else if (!isgroup()) { -X fprintf(stderr, "Group access is required\n"); -X exit(EXIT_NOT_EROOT); -X } else if (NULL == (name = whoami())) { -X fprintf(stderr, "Not primary owner of current group\n"); -X exit(EXIT_NOT_PRIMARY); -X } -X -X if (!gr_lock()) { -X fprintf(stderr, "Unable to lock group file\n"); -X exit(EXIT_GROUP_FILE); -X } -X -X if (!gr_open(O_RDWR)) { -X fprintf(stderr, "Unable to open group file\n"); -X exit(EXIT_GROUP_FILE); -X } -X -X grp = (struct group *)gr_locate(name); -X -X if (NULL != adduser) { -X addtogroup(adduser, grp->gr_mem); -X gr_update(grp); -X } else if (NULL != deluser) { -X rmfromgroup(deluser, grp->gr_mem); -X gr_update(grp); -X } else if (purge) { -X nomembers(grp->gr_mem); -X gr_update(grp); -X } else if (list) { -X members(grp->gr_mem); -X } -X -X if (!gr_close()) { -X fprintf(stderr, "Cannot close group file\n"); -X exit(EXIT_GROUP_FILE); -X } -X -X gr_unlock(); -X -X exit(EXIT_SUCCESS); -} -X -/* EOF */ -SHAR_EOF - (set 20 00 05 25 14 36 38 'groupmems.c'; eval "$shar_touch") && - chmod 0644 'groupmems.c' || - $echo 'restore of' 'groupmems.c' 'failed' - if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ - && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then - md5sum -c << SHAR_EOF >/dev/null 2>&1 \ - || $echo 'groupmems.c:' 'MD5 check failed' -f0dd68f8d762d89d24d3ce1f4141f981 groupmems.c -SHAR_EOF - else - shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'groupmems.c'`" - test 6348 -eq "$shar_count" || - $echo 'groupmems.c:' 'original size' '6348,' 'current size' "$shar_count!" - fi -fi -# ============= groupmems.8 ============== -if test -f 'groupmems.8' && test "$first_param" != -c; then - $echo 'x -' SKIPPING 'groupmems.8' '(file already exists)' -else - $echo 'x -' extracting 'groupmems.8' '(text)' - sed 's/^X//' << 'SHAR_EOF' > 'groupmems.8' && -X.\" -X.\" SPDX-FileCopyrightText: 2000, International Business Machines, Inc. -X.\" SPDX-FileCopyrightText: 2000, George Kraft IV, gk4@us.ibm.com -X.\" SPDX-License-Identifier: BSD-3-Clause -X.\" -X.\" $Id$ -X.\" -X.TH GROUPMEMS 8 -X.SH NAME -groupmems \- Administer members of a user's primary group -X.SH SYNOPSIS -X.B groupmems -\fB-a\fI user_name \fR | -\fB-d\fI user_name \fR | -\fB-l\fR | -\fB-D\fR | -[\fB-g\fI group_name \fR] -X.SH DESCRIPTION -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). -X.P -Only the superuser, as administrator, can use \fBgroupmems\fR to alter -the memberships of other groups. -X.IP "\fB-a \fIuser_name\fR" -Add a new user to the group membership list. -X.IP "\fB-d \fIuser_name\fR" -Delete a user from the group membership list. -X.IP "\fB-l\fR" -List the group membership list. -X.IP "\fB-D\fR" -Delete all users from the group membership list. -X.IP "\fB-g \fIgroup_name\fR" -The superuser can specify which group membership list to modify. -X.SH SETUP -The \fBgroupmems\fR executable should be in mode \fB2770\fR as user \fBroot\fR -and in group \fBgroups\fR. The system administrator can add users to -group groups to allow or disallow them using the \fBgroupmems\fR utility -to manager their own group membership list. -X.P -X $ groupadd -r groups -X.br -X $ chmod 2770 groupmems -X.br -X $ chown root.groups groupmems -X.br -X $ groupmems -g groups -a gk4 -X.SH FILES -/etc/group -X.br -/etc/gshadow -X.SH SEE ALSO -X.BR chfn (1), -X.BR chsh (1), -X.BR useradd (8), -X.BR userdel (8), -X.BR usermod (8), -X.BR passwd (1), -X.BR groupadd (8), -X.BR groupdel (8) -X.SH AUTHOR -George Kraft IV (gk4@us.ibm.com) -X.\" EOF -SHAR_EOF - (set 20 00 05 25 14 38 23 'groupmems.8'; eval "$shar_touch") && - chmod 0600 'groupmems.8' || - $echo 'restore of' 'groupmems.8' 'failed' - if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \ - && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then - md5sum -c << SHAR_EOF >/dev/null 2>&1 \ - || $echo 'groupmems.8:' 'MD5 check failed' -181e6cd3a3c9d3df320197fa2cde2b4a groupmems.8 -SHAR_EOF - else - shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'groupmems.8'`" - test 3372 -eq "$shar_count" || - $echo 'groupmems.8:' 'original size' '3372,' 'current size' "$shar_count!" - fi -fi -rm -fr _sh10937 -exit 0 diff --git a/contrib/pwdauth.c b/contrib/pwdauth.c deleted file mode 100644 index ca15495..0000000 --- a/contrib/pwdauth.c +++ /dev/null @@ -1,308 +0,0 @@ -/* - * pwdauth.c - program to verify a given username/password pair. - * - * Run it with username in argv[1] (may be omitted - default is the - * current user), and send it the password over a pipe on stdin. - * Exit status: 0 - correct password, 1 - wrong password, >1 - other - * errors. For use with shadow passwords, this program should be - * installed setuid root. - * - * This can be used, for example, by xlock - you don't have to install - * this large and complex (== possibly insecure) program setuid root, - * just modify it to run this simple program to do the authentication. - * - * Recent versions (xlockmore-3.9) are cleaner, and drop privileges as - * soon as possible after getting the user's encrypted password. - * Using this program probably doesn't make it more secure, and has one - * disadvantage: since we don't get the encrypted user's password at - * startup (but at the time the user is authenticated), it is not clear - * how we should handle errors (like getpwnam() returning NULL). - * - fail the authentication? Problem: no way to unlock (other than kill - * the process from somewhere else) if the NIS server stops responding. - * - succeed and unlock? Problem: it's too easy to unlock by unplugging - * the box from the network and waiting until NIS times out... - * - * This program is Copyright (C) 1996 Marek Michalkiewicz - * . - * - * It may be used and distributed freely for any purposes. There is no - * warranty - use at your own risk. I am not liable for any damages etc. - * If you improve it, please send me your changes. - */ - -static char rcsid[] = "$Id$"; - -/* - * Define USE_SYSLOG to use syslog() to log successful and failed - * authentication. This should be safe even if your system has - * the infamous syslog buffer overrun security problem... - */ -#define USE_SYSLOG - -/* - * Define HAVE_GETSPNAM to get shadow passwords using getspnam(). - * Some systems don't have getspnam(), but getpwnam() returns - * encrypted passwords only if running as root. - * - * According to the xlock source (not tested, except Linux) - - * define: Linux, Solaris 2.x, SVR4, ... - * undef: HP-UX with Secured Passwords, FreeBSD, NetBSD, QNX. - * Known not supported (yet): Ultrix, OSF/1, SCO. - */ -#define HAVE_GETSPNAM - -/* - * Define HAVE_PW_ENCRYPT to use pw_encrypt() instead of crypt(). - * pw_encrypt() is like the standard crypt(), except that it may - * support better password hashing algorithms. - * - * Define if linking with libshadow.a from the shadow password - * suite (Linux, SunOS 4.x?). - */ -#undef HAVE_PW_ENCRYPT - -/* - * Define HAVE_AUTH_METHODS to support the shadow suite specific - * extension: the encrypted password field contains a list of - * administrator defined authentication methods, separated by - * semicolons. This program only supports the standard password - * authentication method (a string that doesn't start with '@'). - */ -#undef HAVE_AUTH_METHODS - -/* - * FAIL_DELAY - number of seconds to sleep before exiting if the - * password was wrong, to slow down password guessing attempts. - */ -#define FAIL_DELAY 2 - -/* No user-serviceable parts below :-). */ - -#include -#include -#include -#include -#include -#include -#include - -#ifdef USE_SYSLOG -#include -#ifndef LOG_AUTHPRIV -#define LOG_AUTHPRIV LOG_AUTH -#endif -#endif - -#ifdef HAVE_GETSPNAM -#include -#endif - -#ifdef HAVE_PW_ENCRYPT -extern char *pw_encrypt(); -#define crypt pw_encrypt -#endif - -/* - * Read the password (one line) from fp. We don't turn off echo - * because we expect input from a pipe. - */ -static char * -get_line(fp) - FILE *fp; -{ - static char buf[128]; - char *cp; - int ch; - - cp = buf; - while ((ch = getc(fp)) != EOF && ch != '\0' && ch != '\n') { - if (cp >= buf + sizeof buf - 1) - break; - *cp++ = ch; - } - *cp = '\0'; - return buf; -} - -/* - * Get the password file entry for the current user. If the name - * returned by getlogin() is correct (matches the current real uid), - * return the entry for that user. Otherwise, return the entry (if - * any) matching the current real uid. Return NULL on failure. - */ -static struct passwd * -get_my_pwent() -{ - uid_t uid = getuid(); - char *name = getlogin(); - - if (name && *name) { - struct passwd *pw = getpwnam(name); - - if (pw && pw->pw_uid == uid) - return pw; - } - return getpwuid(uid); -} - -/* - * Verify the password. The system-dependent shadow support is here. - */ -static int -password_auth_ok(pw, pass) - const struct passwd *pw; - const char *pass; -{ - int result; - char *cp; -#ifdef HAVE_AUTH_METHODS - char *buf; -#endif -#ifdef HAVE_GETSPNAM - struct spwd *sp; -#endif - - if (pw) { -#ifdef HAVE_GETSPNAM - sp = getspnam(pw->pw_name); - if (sp) - cp = sp->sp_pwdp; - else -#endif - cp = pw->pw_passwd; - } else - cp = "xx"; - -#ifdef HAVE_AUTH_METHODS - buf = strdup(cp); /* will be modified by strtok() */ - if (!buf) { - fprintf(stderr, "Out of memory.\n"); - exit(13); - } - cp = strtok(buf, ";"); - while (cp && *cp == '@') - cp = strtok(NULL, ";"); - - /* fail if no password authentication for this user */ - if (!cp) - cp = "xx"; -#endif - - if (*pass || *cp) - result = (strcmp(crypt(pass, cp), cp) == 0); - else - result = 1; /* user with no password */ - -#ifdef HAVE_AUTH_METHODS - free(buf); -#endif - return result; -} - -/* - * Main program. - */ -int -main(argc, argv) - int argc; - char **argv; -{ - struct passwd *pw; - char *pass, *name; - char myname[32]; - -#ifdef USE_SYSLOG - openlog("pwdauth", LOG_PID | LOG_CONS, LOG_AUTHPRIV); -#endif - pw = get_my_pwent(); - if (!pw) { -#ifdef USE_SYSLOG - syslog(LOG_ERR, "can't get login name for uid %d.\n", - (int) getuid()); -#endif - fprintf(stderr, "Who are you?\n"); - exit(2); - } - strncpy(myname, pw->pw_name, sizeof myname - 1); - myname[sizeof myname - 1] = '\0'; - name = myname; - - if (argc > 1) { - name = argv[1]; - pw = getpwnam(name); - } - - pass = get_line(stdin); - if (password_auth_ok(pw, pass)) { -#ifdef USE_SYSLOG - syslog(pw->pw_uid ? LOG_INFO : LOG_NOTICE, - "user `%s' entered correct password for `%.32s'.\n", - myname, name); -#endif - exit(0); - } -#ifdef USE_SYSLOG - /* be careful not to overrun the syslog buffer */ - syslog((!pw || pw->pw_uid) ? LOG_NOTICE : LOG_WARNING, - "user `%s' entered incorrect password for `%.32s'.\n", - myname, name); -#endif -#ifdef FAIL_DELAY - sleep(FAIL_DELAY); -#endif - fprintf(stderr, "Wrong password.\n"); - exit(1); -} - -#if 0 -/* - * You can use code similar to the following to run this program. - * Return values: >=0 - program exit status (use the - * macros to get the exit code, it is shifted left by 8 bits), - * -1 - check errno. - */ -int -verify_password(const char *username, const char *password) -{ - int pipe_fd[2]; - int pid, wpid, status; - - if (pipe(pipe_fd)) - return -1; - - if ((pid = fork()) == 0) { - char *arg[3]; - char *env[1]; - - /* child */ - close(pipe_fd[1]); - if (pipe_fd[0] != 0) { - if (dup2(pipe_fd[0], 0) != 0) - _exit(127); - close(pipe_fd[0]); - } - arg[0] = "/usr/bin/pwdauth"; - arg[1] = username; - arg[2] = NULL; - env[0] = NULL; - execve(arg[0], arg, env); - _exit(127); - } else if (pid == -1) { - /* error */ - close(pipe_fd[0]); - close(pipe_fd[1]); - return -1; - } - /* parent */ - close(pipe_fd[0]); - write(pipe_fd[1], password, strlen(password)); - write(pipe_fd[1], "\n", 1); - close(pipe_fd[1]); - - while ((wpid = wait(&status)) != pid) { - if (wpid == -1) - return -1; - } - return status; -} -#endif diff --git a/contrib/shadow-anonftp.patch b/contrib/shadow-anonftp.patch deleted file mode 100644 index e09647d..0000000 --- a/contrib/shadow-anonftp.patch +++ /dev/null @@ -1,147 +0,0 @@ -Hello Marek, - -I have created a diffile against the 980403 release that adds -functionality to newusers for automatic handling of users with only -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 -directories used in the chrooted environment. - -I am using it to automatically create chunks of users with only ftp -access for a webserver. - -I have tried to follow your coding standards and I believe it is bug -free but.. well, who knows. :) It's not much code however. - -I hope you find it useful. Do what you like with it, feel free to ask if -anything is unclear. - -Best rgds, - Calle Karlsson - ckn@kash.se - -diff -uNr shadow-980403.orig/src/newusers.c shadow-980403/src/newusers.c ---- shadow-980403.orig/src/newusers.c Fri Jan 30 00:22:43 1998 -+++ shadow-980403/src/newusers.c Fri Apr 17 16:55:33 1998 -@@ -76,11 +76,35 @@ - static void - usage(void) - { -- fprintf(stderr, "Usage: %s [ input ]\n", Prog); -+ fprintf (stderr, "Usage: %s [-p prototype tarfile] [ input ]\n", Prog); -+ fprintf (stderr, "The prototype tarfile is only used for users\n"); -+ fprintf (stderr, "marked as anonymous ftp users. It must be a full pathname.\n"); - exit(1); - } - - /* -+ * createuserdir - create a directory and chmod it -+ */ -+ -+static int -+createuserdir (char * dir, int uid, int gid, int line) -+{ -+ if (mkdir (dir, 0777 & ~getdef_num("UMASK", 077))) { -+ fprintf (stderr, "%s: line %d: mkdir %s failed\n", -+ Prog, line, dir); -+ return -1; -+ } -+ -+ if (chown (dir, uid, gid)) { -+ fprintf (stderr, "%s: line %d: chown %s failed\n", -+ Prog, line, dir); -+ return -1; -+ } -+ -+ return 0; -+} -+ -+/* - * add_group - create a new group or add a user to an existing group - */ - -@@ -328,6 +352,8 @@ - main(int argc, char **argv) - { - char buf[BUFSIZ]; -+ char anonproto[BUFSIZ]; -+ int flag; - char *fields[8]; - int nfields; - char *cp; -@@ -340,12 +366,23 @@ - - Prog = Basename(argv[0]); - -- if (argc > 1 && argv[1][0] == '-') -- usage (); -+ * anonproto = '\0'; -+ -+ while ((flag = getopt (argc, argv, "p:h")) != EOF) { -+ switch (flag) { -+ case 'p': -+ STRFCPY(anonproto, optarg); -+ break; -+ case 'h': -+ default: -+ usage (); -+ break; -+ } -+ } - -- if (argc == 2) { -- if (! freopen (argv[1], "r", stdin)) { -- snprintf(buf, sizeof buf, "%s: %s", Prog, argv[1]); -+ if (optind < argc) { -+ if (! freopen (argv[optind], "r", stdin)) { -+ snprintf(buf, sizeof buf, "%s: %s", Prog, argv[optind]); - perror (buf); - exit (1); - } -@@ -499,15 +536,36 @@ - if (fields[6][0]) - newpw.pw_shell = fields[6]; - -- if (newpw.pw_dir[0] && access(newpw.pw_dir, F_OK)) { -- if (mkdir (newpw.pw_dir, -- 0777 & ~getdef_num("UMASK", 077))) -- fprintf (stderr, "%s: line %d: mkdir failed\n", -- Prog, line); -- else if (chown (newpw.pw_dir, -- newpw.pw_uid, newpw.pw_gid)) -- fprintf (stderr, "%s: line %d: chown failed\n", -- Prog, line); -+ if (newpw.pw_dir[0]) { -+ char * userdir = strdup (newpw.pw_dir); -+ char * anonpart; -+ int rc; -+ -+ if ((anonpart = strstr (userdir, "/./"))) { -+ * anonpart = '\0'; -+ anonpart += 2; -+ } -+ -+ if (access(userdir, F_OK)) -+ rc = createuserdir (userdir, newpw.pw_uid, newpw.pw_gid, line); -+ else -+ rc = 0; -+ -+ if (rc == 0 && anonpart) { -+ if (* anonproto) { -+ char cmdbuf [BUFSIZ]; -+ snprintf(cmdbuf, sizeof cmdbuf, -+ "cd %s; tar xf %s", -+ userdir, anonproto); -+ system (cmdbuf); -+ } -+ if (strlen (anonpart) > 1) { -+ strcat (userdir, anonpart); -+ if (access (userdir, F_OK)) -+ createuserdir (userdir, newpw.pw_uid, newpw.pw_gid, line); -+ } -+ } -+ free (userdir); - } - - /* diff --git a/contrib/udbachk.tgz b/contrib/udbachk.tgz deleted file mode 100644 index 605ad63..0000000 Binary files a/contrib/udbachk.tgz and /dev/null differ diff --git a/doc/Makefile.am b/doc/Makefile.am index 85f2248..aa8b870 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,5 +1,4 @@ # This is a dummy Makefile.am to get automake work flawlessly, # and also cooperate to make a distribution for `make dist' -EXTRA_DIST = HOWTO README.limits \ - README.platforms WISHLIST console.c.spec.txt cracklib26.diff +EXTRA_DIST = HOWTO README.limits diff --git a/doc/Makefile.in b/doc/Makefile.in index 1e00544..49441a1 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -141,6 +141,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -159,6 +161,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -174,9 +177,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -192,6 +201,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -200,6 +210,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -222,6 +234,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -293,9 +308,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -EXTRA_DIST = HOWTO README.limits \ - README.platforms WISHLIST console.c.spec.txt cracklib26.diff - +EXTRA_DIST = HOWTO README.limits all: all-am .SUFFIXES: diff --git a/doc/README.platforms b/doc/README.platforms deleted file mode 100644 index a069e89..0000000 --- a/doc/README.platforms +++ /dev/null @@ -1,33 +0,0 @@ -# $Id$ -# -# This is the current (still incomplete) list of platforms this -# package has been verified to work on. Additions (preferably -# in the format as described below) are welcome. Thanks! -# -# V: last version reported to work -# H: host type -# L: Linux libc version -# D: Linux distribution, or other OS name and version -# C: changes (if any) -# R: reported by - -V: 980529 -H: sparc-unknown-linux-gnu -L: glibc-2.0.7 -D: Ultrapenguin-1.0.9 -C: had to explicitly disable desrpc. -R: Bjorn Christianson - -V: 980724 -H: i486-pc-linux-gnulibc1 -L: libc-5.4.33 -D: Debian-1.3.1.r6 -C: none (use dpkg-buildpackage) -R: Marek Michalkiewicz - -V: current -H: i686-pc-linux-gnu -L: glibc-2.0.7.19981211 -D: Debian-2.1 -C: none (use dpkg-buildpackage) -R: Marek Michalkiewicz diff --git a/doc/WISHLIST b/doc/WISHLIST deleted file mode 100644 index d9003b1..0000000 --- a/doc/WISHLIST +++ /dev/null @@ -1,39 +0,0 @@ -$Id$ - -This is my wishlist for the shadow suite, in no particular order. Feel -free to do anything from this list and mail me the diffs :-). - -Patches in diff -u format, against the latest version (sometimes in the -"beta" directory) are preferred and make my job easier. Please, no -MIME, base64, quoted-printable, or HTML. For very big patches, or if -your mailer can corrupt them, please use gzip and uuencode. Thanks! - -New ideas to add to this list are welcome, too. --marekm - -- fix all the bugs, of course -- implement "su only" accounts (no logins, only su from other account) -- rewrite getdef.c to be more general? (no hardcoded names) -- patch for rlogind/telnetd to create utmp entry and fill in ut_addr -- option to specify encrypted password in passwd (for yppasswdd, so it - doesn't need to know about shadow/non-shadow); should probably use a pipe - (less insecure than command line arguments) -- add support for changing NIS passwords -- add option to check passwords by piping them to external programs -- add functionality of the contrib/rpasswd.c wrapper to passwd -- option to generate pronounceable passwords (like on SCO), external program? -- poppassd (remote password change for eudora etc.) -- add support for passwd/shadow db files (glibc) -- vipw: check password files for errors after editing -- add "maximum time users allowed to stay logged in" limit option to logoutd -- handle quotes in /etc/environment like the shell does (but sshd doesn't...) -- better utmpx support (logoutd, ...) -- better OPIE support (report number of logins left, etc.) -- new option for /etc/suauth: don't load user's environment (force "su -") - suggested by Ulisses Alonso Camaro -- find out why recent releases won't compile on Solaris -- newusers should be able to copy /etc/skel to the new home directory - (like useradd) -- add directories where other packages can add hooks for package-specific - per-user configuration, to be executed with run-parts. Some hooks should - be executed at package install time for existing users, likewise for - package removal and possibly modification. (Debian Bug#36019) diff --git a/doc/console.c.spec.txt b/doc/console.c.spec.txt deleted file mode 100644 index b7c0d0d..0000000 --- a/doc/console.c.spec.txt +++ /dev/null @@ -1,36 +0,0 @@ -$Id$ - -Specification for console.c source file -- - -input values -- - tty -- character pointer to device name with leading "/dev/" - removed. - -return values -- - 0 -- false - 1 -- true - -int console (char * tty) - if "CONSOLE" string value is not present in login.defs - return true - - if the first character of "CONSOLE" string value is not "/" - treat the string as a ":" delimited list of device - names and search for the value of tty in that - tokenized list. - - if a match is found - return true - - return false - - if the file named by "CONSOLE" cannot be opened - return true - - scan the file looking for a match between the input line - and the value of tty - - if a match is found - return true - - return false diff --git a/doc/cracklib26.diff b/doc/cracklib26.diff deleted file mode 100644 index 09160b8..0000000 --- a/doc/cracklib26.diff +++ /dev/null @@ -1,340 +0,0 @@ -diff -ur orig/cracklib26_small/cracklib/fascist.c cracklib26_small/cracklib/fascist.c ---- orig/cracklib26_small/cracklib/fascist.c Mon Dec 15 02:56:55 1997 -+++ cracklib26_small/cracklib/fascist.c Sat Apr 4 22:14:45 1998 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - - #define ISSKIP(x) (isspace(x) || ispunct(x)) - -@@ -460,28 +461,27 @@ - } - - char * --FascistGecos(password, uid) -+FascistGecosPw(password, pwd) - char *password; -- int uid; -+ struct passwd *pwd; - { - int i; - int j; - int wc; - char *ptr; -- struct passwd *pwp; - char gbuffer[STRINGSIZE]; - char tbuffer[STRINGSIZE]; - char *uwords[STRINGSIZE]; - char longbuffer[STRINGSIZE * 2]; - -- if (!(pwp = getpwuid(uid))) -+ if (!pwd) - { - return ("you are not registered in the password file"); - } - - /* lets get really paranoid and assume a dangerously long gecos entry */ - -- strncpy(tbuffer, pwp->pw_name, STRINGSIZE); -+ strncpy(tbuffer, pwd->pw_name, STRINGSIZE); - tbuffer[STRINGSIZE-1] = '\0'; - if (GTry(tbuffer, password)) - { -@@ -490,12 +490,13 @@ - - /* it never used to be that you got passwd strings > 1024 chars, but now... */ - -- strncpy(tbuffer, pwp->pw_gecos, STRINGSIZE); -+ strncpy(tbuffer, pwd->pw_gecos, STRINGSIZE); - tbuffer[STRINGSIZE-1] = '\0'; - strcpy(gbuffer, Lowercase(tbuffer)); - - wc = 0; - ptr = gbuffer; -+ uwords[0] = (char *) 0; - - while (*ptr) - { -@@ -530,6 +531,8 @@ - *(ptr++) = '\0'; - } - } -+ if (!uwords[0]) -+ return ((char *) 0); /* empty gecos */ - #ifdef DEBUG - for (i = 0; uwords[i]; i++) - { -@@ -586,9 +589,10 @@ - } - - char * --FascistLook(pwp, instring) -+FascistLookPw(pwp, instring, pwd) - PWDICT *pwp; - char *instring; -+ struct passwd *pwd; - { - int i; - char *ptr; -@@ -667,7 +671,7 @@ - return ("it looks like a National Insurance number."); - } - -- if (ptr = FascistGecos(password, getuid())) -+ if (ptr = FascistGecosPw(password, pwd ? pwd : getpwuid(getuid()))) - { - return (ptr); - } -@@ -715,9 +719,10 @@ - } - - char * --FascistCheck(password, path) -+FascistCheckPw(password, path, pwd) - char *password; - char *path; -+ struct passwd *pwd; - { - static char lastpath[STRINGSIZE]; - static PWDICT *pwp; -@@ -750,5 +755,29 @@ - strncpy(lastpath, path, STRINGSIZE); - } - -- return (FascistLook(pwp, pwtrunced)); -+ return (FascistLookPw(pwp, pwtrunced, pwd)); -+} -+ -+char * -+FascistGecos(password, uid) -+ char *password; -+ int uid; -+{ -+ return (FascistGecosPw(password, getpwuid(uid))); -+} -+ -+char * -+FascistLook(pwp, instring) -+ PWDICT *pwp; -+ char *instring; -+{ -+ return (FascistLookPw(pwp, instring, (char *) 0)); -+} -+ -+char * -+FascistCheck(password, path) -+ char *password; -+ char *path; -+{ -+ return (FascistCheckPw(password, path, (char *) 0)); - } -diff -ur orig/cracklib26_small/cracklib/packer.h cracklib26_small/cracklib/packer.h ---- orig/cracklib26_small/cracklib/packer.h Mon Dec 15 00:09:30 1997 -+++ cracklib26_small/cracklib/packer.h Sat Jan 10 22:13:46 1998 -@@ -34,6 +34,7 @@ - FILE *dfp; - FILE *wfp; - -+ int canfree; - int32 flags; - #define PFOR_WRITE 0x0001 - #define PFOR_FLUSH 0x0002 -diff -ur orig/cracklib26_small/cracklib/packlib.c cracklib26_small/cracklib/packlib.c ---- orig/cracklib26_small/cracklib/packlib.c Fri Jul 9 22:22:58 1993 -+++ cracklib26_small/cracklib/packlib.c Sat Jan 10 22:28:49 1998 -@@ -16,7 +16,7 @@ - char *mode; - { - int32 i; -- static PWDICT pdesc; -+ PWDICT *pdesc; - char iname[STRINGSIZE]; - char dname[STRINGSIZE]; - char wname[STRINGSIZE]; -@@ -25,92 +25,94 @@ - FILE *ifp; - FILE *wfp; - -- if (pdesc.header.pih_magic == PIH_MAGIC) -- { -- fprintf(stderr, "%s: another dictionary already open\n", prefix); -+ if ((pdesc = (PWDICT *) malloc(sizeof(PWDICT))) == 0) - return ((PWDICT *) 0); -- } - -- memset(&pdesc, '\0', sizeof(pdesc)); -+ memset(pdesc, '\0', sizeof(*pdesc)); - - sprintf(iname, "%s.pwi", prefix); - sprintf(dname, "%s.pwd", prefix); - sprintf(wname, "%s.hwm", prefix); - -- if (!(pdesc.dfp = fopen(dname, mode))) -+ if (!(pdesc->dfp = fopen(dname, mode))) - { - perror(dname); -+ free(pdesc); - return ((PWDICT *) 0); - } - -- if (!(pdesc.ifp = fopen(iname, mode))) -+ if (!(pdesc->ifp = fopen(iname, mode))) - { -- fclose(pdesc.dfp); -+ fclose(pdesc->dfp); - perror(iname); -+ free(pdesc); - return ((PWDICT *) 0); - } - -- if (pdesc.wfp = fopen(wname, mode)) -+ if (pdesc->wfp = fopen(wname, mode)) - { -- pdesc.flags |= PFOR_USEHWMS; -+ pdesc->flags |= PFOR_USEHWMS; - } - -- ifp = pdesc.ifp; -- dfp = pdesc.dfp; -- wfp = pdesc.wfp; -+ ifp = pdesc->ifp; -+ dfp = pdesc->dfp; -+ wfp = pdesc->wfp; - - if (mode[0] == 'w') - { -- pdesc.flags |= PFOR_WRITE; -- pdesc.header.pih_magic = PIH_MAGIC; -- pdesc.header.pih_blocklen = NUMWORDS; -- pdesc.header.pih_numwords = 0; -+ pdesc->flags |= PFOR_WRITE; -+ pdesc->header.pih_magic = PIH_MAGIC; -+ pdesc->header.pih_blocklen = NUMWORDS; -+ pdesc->header.pih_numwords = 0; - -- fwrite((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp); -+ fwrite((char *) &pdesc->header, sizeof(pdesc->header), 1, ifp); - } else - { -- pdesc.flags &= ~PFOR_WRITE; -+ pdesc->flags &= ~PFOR_WRITE; - -- if (!fread((char *) &pdesc.header, sizeof(pdesc.header), 1, ifp)) -+ if (!fread((char *) &pdesc->header, sizeof(pdesc->header), 1, ifp)) - { - fprintf(stderr, "%s: error reading header\n", prefix); - -- pdesc.header.pih_magic = 0; -+ pdesc->header.pih_magic = 0; - fclose(ifp); - fclose(dfp); -+ free(pdesc); - return ((PWDICT *) 0); - } - -- if (pdesc.header.pih_magic != PIH_MAGIC) -+ if (pdesc->header.pih_magic != PIH_MAGIC) - { - fprintf(stderr, "%s: magic mismatch\n", prefix); - -- pdesc.header.pih_magic = 0; -+ pdesc->header.pih_magic = 0; - fclose(ifp); - fclose(dfp); -+ free(pdesc); - return ((PWDICT *) 0); - } - -- if (pdesc.header.pih_blocklen != NUMWORDS) -+ if (pdesc->header.pih_blocklen != NUMWORDS) - { - fprintf(stderr, "%s: size mismatch\n", prefix); - -- pdesc.header.pih_magic = 0; -+ pdesc->header.pih_magic = 0; - fclose(ifp); - fclose(dfp); -+ free(pdesc); - return ((PWDICT *) 0); - } - -- if (pdesc.flags & PFOR_USEHWMS) -+ if (pdesc->flags & PFOR_USEHWMS) - { -- if (fread(pdesc.hwms, 1, sizeof(pdesc.hwms), wfp) != sizeof(pdesc.hwms)) -+ if (fread(pdesc->hwms, 1, sizeof(pdesc->hwms), wfp) != sizeof(pdesc->hwms)) - { -- pdesc.flags &= ~PFOR_USEHWMS; -+ pdesc->flags &= ~PFOR_USEHWMS; - } - } - } -- -- return (&pdesc); -+ pdesc->canfree = 1; -+ return (pdesc); - } - - int -@@ -159,8 +161,13 @@ - - fclose(pwp->ifp); - fclose(pwp->dfp); -+ if (pwp->wfp) -+ fclose(pwp->wfp); - -- pwp->header.pih_magic = 0; -+ if (pwp->canfree) -+ free(pwp); -+ else -+ pwp->header.pih_magic = 0; - - return (0); - } -@@ -307,6 +314,11 @@ - register char *this; - int idx; - -+/* -+ * comment in npasswd-2.0beta4 says this: -+ * This does not work under all circumstances, so don't bother -+ */ -+#if 0 - if (pwp->flags & PFOR_USEHWMS) - { - idx = string[0] & 0xff; -@@ -317,6 +329,10 @@ - lwm = 0; - hwm = PW_WORDS(pwp) - 1; - } -+#else -+ lwm = 0; -+ hwm = PW_WORDS(pwp); -+#endif - - #ifdef DEBUG - printf("---- %lu, %lu ----\n", lwm, hwm); -diff -ur orig/cracklib26_small/util/mkdict cracklib26_small/util/mkdict ---- orig/cracklib26_small/util/mkdict Fri Jul 9 22:23:03 1993 -+++ cracklib26_small/util/mkdict Sat Apr 4 22:31:45 1998 -@@ -14,9 +14,16 @@ - SORT="sort" - ###SORT="sort -T /tmp" - --cat $* | -+### Use zcat to read compressed (as well as uncompressed) dictionaries. -+### Compressed dictionaries can save quite a lot of disk space. -+ -+CAT="gzip -cdf" -+###CAT="zcat" -+###CAT="cat" -+ -+$CAT $* | - tr '[A-Z]' '[a-z]' | -- tr -cd '[\012a-z0-9]' | -+ tr -cd '\012[a-z][0-9]' | - $SORT | - uniq | - grep -v '^#' | diff --git a/etc/Makefile.am b/etc/Makefile.am index c5c0620..3f2fa7a 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -20,4 +20,4 @@ EXTRA_DIST = \ $(sysconf_DATA) \ $(default_DATA) -SUBDIRS = pam.d +SUBDIRS = pam.d shadow-maint diff --git a/etc/Makefile.in b/etc/Makefile.in index 5dda065..634d2fa 100644 --- a/etc/Makefile.in +++ b/etc/Makefile.in @@ -230,6 +230,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -248,6 +250,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -263,9 +266,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -281,6 +290,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -289,6 +299,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -311,6 +323,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -396,7 +411,7 @@ EXTRA_DIST = \ $(sysconf_DATA) \ $(default_DATA) -SUBDIRS = pam.d +SUBDIRS = pam.d shadow-maint all: all-recursive .SUFFIXES: diff --git a/etc/login.defs b/etc/login.defs index 114dbcd..33622c2 100644 --- a/etc/login.defs +++ b/etc/login.defs @@ -227,11 +227,6 @@ PASS_WARN_AGE 7 # SU_WHEEL_ONLY no -# -# If compiled with cracklib support, sets the path to the dictionaries -# -CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict - # # Min/max values for automatic uid selection in useradd(8) # diff --git a/etc/pam.d/Makefile.am b/etc/pam.d/Makefile.am index 38ff26a..b8e4321 100644 --- a/etc/pam.d/Makefile.am +++ b/etc/pam.d/Makefile.am @@ -2,20 +2,20 @@ # and also cooperate to make a distribution for `make dist' pamd_files = \ + chpasswd \ chfn \ chsh \ groupmems \ login \ + newusers \ passwd pamd_acct_tools_files = \ chage \ chgpasswd \ - chpasswd \ groupadd \ groupdel \ groupmod \ - newusers \ useradd \ userdel \ usermod diff --git a/etc/pam.d/Makefile.in b/etc/pam.d/Makefile.in index 187679f..556d16b 100644 --- a/etc/pam.d/Makefile.in +++ b/etc/pam.d/Makefile.in @@ -173,6 +173,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -191,6 +193,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -206,9 +209,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -224,6 +233,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -232,6 +242,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -254,6 +266,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -325,15 +340,14 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -pamd_files = chfn chsh groupmems login passwd $(am__append_2) +pamd_files = chpasswd chfn chsh groupmems login newusers passwd \ + $(am__append_2) pamd_acct_tools_files = \ chage \ chgpasswd \ - chpasswd \ groupadd \ groupdel \ groupmod \ - newusers \ useradd \ userdel \ usermod diff --git a/etc/shadow-maint/Makefile.am b/etc/shadow-maint/Makefile.am new file mode 100644 index 0000000..f60e402 --- /dev/null +++ b/etc/shadow-maint/Makefile.am @@ -0,0 +1,5 @@ +shadowmaint_files = \ + groupdel-pre.d/01-kill_group_procs.sh \ + userdel-pre.d/01-kill_user_procs.sh + +EXTRA_DIST = $(shadowmaint_files) diff --git a/etc/shadow-maint/Makefile.in b/etc/shadow-maint/Makefile.in new file mode 100644 index 0000000..7b7dc79 --- /dev/null +++ b/etc/shadow-maint/Makefile.in @@ -0,0 +1,509 @@ +# Makefile.in generated by automake 1.16.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2021 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = etc/shadow-maint +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ + $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ + $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ + $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ +EGREP = @EGREP@ +ETAGS = @ETAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +FILECMD = @FILECMD@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GROUP_NAME_MAX_LENGTH = @GROUP_NAME_MAX_LENGTH@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ +LIBATTR = @LIBATTR@ +LIBAUDIT = @LIBAUDIT@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ +LIBCRYPT = @LIBCRYPT@ +LIBECONF = @LIBECONF@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMD = @LIBMD@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBS = @LIBS@ +LIBSELINUX = @LIBSELINUX@ +LIBSEMANAGE = @LIBSEMANAGE@ +LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ +LIBTCB = @LIBTCB@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VENDORDIR = @VENDORDIR@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +capcmd = @capcmd@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +shadowmaint_files = \ + groupdel-pre.d/01-kill_group_procs.sh \ + userdel-pre.d/01-kill_user_procs.sh + +EXTRA_DIST = $(shadowmaint_files) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign etc/shadow-maint/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign etc/shadow-maint/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh b/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh new file mode 100644 index 0000000..10db527 --- /dev/null +++ b/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" +GROUPID=`awk -F: '$1 == "'"${SUBJECT}"'" { print $3 }' /etc/group` + +if [ "${GROUPID}" = "" ]; then + exit 0 +fi + +for status in /proc/*/status; do + # either this isn't a process or its already dead since expanding the list + [ -f "$status" ] || continue + + tbuf=${status%/status} + pid=${tbuf#/proc/} + case "$pid" in + "$$") continue;; + [0-9]*) :;; + *) continue + esac + + grep -q '^Groups:.*\b'"${GROUPID}"'\b.*' "/proc/$pid/status" || continue + + kill -9 "$pid" || echo "cannot kill $pid" 1>&2 +done + diff --git a/etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh b/etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh new file mode 100755 index 0000000..d2d7ef2 --- /dev/null +++ b/etc/shadow-maint/userdel-pre.d/01-kill_user_procs.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +# Check user exists, and if so, send sigkill to processes that the user owns + +ps -eo user >/dev/null 2>&1 +if [ $? -eq 0 ]; then + RUNNING=`ps -eo user | grep -Fx "$SUBJECT" | wc -l` + # if the user does not exist, RUNNING will be 0 + if [ "${RUNNING}x" = "0x" ]; then + exit 0 + fi +fi + +# If there is no ps -eo, traverse the process directly. + +ls -1 /proc | while IFS= read -r PROC; do + echo "$PROC" | grep -E '^[0-9]+$' >/dev/null + if [ $? -ne 0 ]; then + continue + fi + if [ -d "/proc/${PROC}" ]; then + USR=`stat -c "%U" /proc/${PROC}` + if [ "${USR}" = "${SUBJECT}" ]; then + echo "Killing ${SUBJECT} owned ${PROC}" + kill -9 "${PROC}" + fi + fi +done + diff --git a/lib/Makefile.am b/lib/Makefile.am index 3a50b46..22abb97 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -5,57 +5,129 @@ DEFS = noinst_LTLIBRARIES = libshadow.la +if USE_PAM +LIBCRYPT_PAM = $(LIBCRYPT) +else +LIBCRYPT_PAM = +endif + +AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS) + libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS) if HAVE_VENDORDIR libshadow_la_CPPFLAGS += -DVENDORDIR=\"$(VENDORDIR)\" endif libshadow_la_CPPFLAGS += -I$(top_srcdir) +libshadow_la_CFLAGS = $(LIBBSD_CFLAGS) $(LIBCRYPT_PAM) $(LIBSYSTEMD) +libshadow_la_LIBADD = $(LIBADD_DLOPEN) libshadow_la_SOURCES = \ + addgrps.c \ + adds.c \ + adds.h \ + age.c \ + agetpass.c \ + agetpass.h \ + alloc.c \ + alloc.h \ + atoi/a2i.c \ + atoi/a2i.h \ + atoi/str2i.c \ + atoi/str2i.h \ + atoi/strtoi.c \ + atoi/strtoi.h \ + atoi/strtou_noneg.c \ + atoi/strtou_noneg.h \ + attr.h \ + audit_help.c \ + basename.c \ + bit.c \ + bit.h \ + cast.h \ + chkname.c \ + chkname.h \ + chowndir.c \ + chowntty.c \ + cleanup.c \ + cleanup_group.c \ + cleanup_user.c \ commonio.c \ commonio.h \ + console.c \ + copydir.c \ + csrand.c \ defines.h \ encrypt.c \ + env.c \ exitcodes.h \ faillog.h \ + failure.c \ + failure.h \ + fd.c \ fields.c \ + find_new_gid.c \ + find_new_uid.c \ + find_new_sub_gids.c \ + find_new_sub_uids.c \ fputsx.c \ - getdef.c \ - getdef.h \ get_gid.c \ - getlong.c \ get_pid.c \ get_uid.c \ - getulong.c \ + getdate.h \ + getdate.y \ + getdef.c \ + getdef.h \ + getgr_nam_gid.c \ + getrange.c \ + gettime.c \ groupio.c \ groupmem.c \ groupio.h \ gshadow.c \ + hushed.c \ + idmapping.h \ + idmapping.c \ + isexpired.c \ + limits.c \ + list.c \ lockpw.c \ + loginprompt.c \ + mail.c \ + memzero.c \ + memzero.h \ + motd.c \ + must_be.h \ + myname.c \ nss.c \ nscd.c \ nscd.h \ - shadowlog.c \ - shadowlog.h \ - shadowlog_internal.h \ - sssd.c \ - sssd.h \ + obscure.c \ pam_defs.h \ + pam_pass.c \ + pam_pass_non_interactive.c \ port.c \ port.h \ + prefix_flag.c \ prototypes.h \ pwauth.c \ pwauth.h \ pwio.c \ pwio.h \ + pwd_init.c \ + pwd2spwd.c \ + pwdcheck.c \ pwmem.c \ + remove_tree.c \ + rlogin.c \ + root_flag.c \ run_part.h \ run_part.c \ - subordinateio.h \ - subordinateio.c \ + salt.c \ selinux.c \ semanage.c \ + setugid.c \ + setupenv.c \ sgetgrent.c \ sgetpwent.c \ sgetspent.c \ @@ -64,14 +136,74 @@ libshadow_la_SOURCES = \ shadow.c \ shadowio.c \ shadowio.h \ + shadowlog.c \ + shadowlog.h \ + shadowlog_internal.h \ shadowmem.c \ + shell.c \ + sizeof.h \ spawn.c \ - utent.c + sssd.c \ + sssd.h \ + string/sprintf.c \ + string/sprintf.h \ + string/stpecpy.c \ + string/stpecpy.h \ + string/stpeprintf.c \ + string/stpeprintf.h \ + string/strftime.c \ + string/strftime.h \ + string/strncpy.h \ + string/strtcpy.c \ + string/strtcpy.h \ + string/zustr2stp.h \ + strtoday.c \ + sub.c \ + subordinateio.h \ + subordinateio.c \ + sulog.c \ + time/day_to_str.c \ + time/day_to_str.h \ + ttytype.c \ + tz.c \ + ulimit.c \ + user_busy.c \ + valid.c \ + write_full.c \ + xgetpwnam.c \ + xprefix_getpwnam.c \ + xgetpwuid.c \ + xgetgrnam.c \ + xgetgrgid.c \ + xgetspnam.c \ + yesno.c if WITH_TCB libshadow_la_SOURCES += tcbfuncs.c tcbfuncs.h endif +if WITH_BTRFS +libshadow_la_SOURCES += btrfs.c +endif + +if ENABLE_LASTLOG +libshadow_la_SOURCES += log.c +endif + +if ENABLE_LOGIND +libshadow_la_SOURCES += logind.c +else +libshadow_la_SOURCES += utmp.c +endif + +if !WITH_LIBBSD +libshadow_la_SOURCES += \ + freezero.h \ + freezero.c \ + readpassphrase.h \ + readpassphrase.c +endif + # These files are unneeded for some reason, listed in # order of appearance: # @@ -79,4 +211,5 @@ endif EXTRA_DIST = \ .indent.pro \ - gshadow_.h + gshadow_.h \ + xgetXXbyYY.c diff --git a/lib/Makefile.in b/lib/Makefile.in index 9eef01c..1b4f0fe 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -90,6 +90,16 @@ build_triplet = @build@ host_triplet = @host@ @HAVE_VENDORDIR_TRUE@am__append_1 = -DVENDORDIR=\"$(VENDORDIR)\" @WITH_TCB_TRUE@am__append_2 = tcbfuncs.c tcbfuncs.h +@WITH_BTRFS_TRUE@am__append_3 = btrfs.c +@ENABLE_LASTLOG_TRUE@am__append_4 = log.c +@ENABLE_LOGIND_TRUE@am__append_5 = logind.c +@ENABLE_LOGIND_FALSE@am__append_6 = utmp.c +@WITH_LIBBSD_FALSE@am__append_7 = \ +@WITH_LIBBSD_FALSE@ freezero.h \ +@WITH_LIBBSD_FALSE@ freezero.c \ +@WITH_LIBBSD_FALSE@ readpassphrase.h \ +@WITH_LIBBSD_FALSE@ readpassphrase.c + subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -109,41 +119,116 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) -libshadow_la_LIBADD = -am__libshadow_la_SOURCES_DIST = commonio.c commonio.h defines.h \ - encrypt.c exitcodes.h faillog.h fields.c fputsx.c getdef.c \ - getdef.h get_gid.c getlong.c get_pid.c get_uid.c getulong.c \ - groupio.c groupmem.c groupio.h gshadow.c lockpw.c nss.c nscd.c \ - nscd.h shadowlog.c shadowlog.h shadowlog_internal.h sssd.c \ - sssd.h pam_defs.h port.c port.h prototypes.h pwauth.c pwauth.h \ - pwio.c pwio.h pwmem.c run_part.h run_part.c subordinateio.h \ - subordinateio.c selinux.c semanage.c sgetgrent.c sgetpwent.c \ +am__DEPENDENCIES_1 = +libshadow_la_DEPENDENCIES = $(am__DEPENDENCIES_1) +am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \ + agetpass.c agetpass.h alloc.c alloc.h atoi/a2i.c atoi/a2i.h \ + atoi/str2i.c atoi/str2i.h atoi/strtoi.c atoi/strtoi.h \ + atoi/strtou_noneg.c atoi/strtou_noneg.h attr.h audit_help.c \ + basename.c bit.c bit.h cast.h chkname.c chkname.h chowndir.c \ + chowntty.c cleanup.c cleanup_group.c cleanup_user.c commonio.c \ + commonio.h console.c copydir.c csrand.c defines.h encrypt.c \ + env.c exitcodes.h faillog.h failure.c failure.h fd.c fields.c \ + find_new_gid.c find_new_uid.c find_new_sub_gids.c \ + find_new_sub_uids.c fputsx.c get_gid.c get_pid.c get_uid.c \ + getdate.h getdate.y getdef.c getdef.h getgr_nam_gid.c \ + getrange.c gettime.c groupio.c groupmem.c groupio.h gshadow.c \ + hushed.c idmapping.h idmapping.c isexpired.c limits.c list.c \ + lockpw.c loginprompt.c mail.c memzero.c memzero.h motd.c \ + must_be.h myname.c nss.c nscd.c nscd.h obscure.c pam_defs.h \ + pam_pass.c pam_pass_non_interactive.c port.c port.h \ + prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \ + pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \ + rlogin.c root_flag.c run_part.h run_part.c salt.c selinux.c \ + semanage.c setugid.c setupenv.c sgetgrent.c sgetpwent.c \ sgetspent.c sgroupio.c sgroupio.h shadow.c shadowio.c \ - shadowio.h shadowmem.c spawn.c utent.c tcbfuncs.c tcbfuncs.h + shadowio.h shadowlog.c shadowlog.h shadowlog_internal.h \ + shadowmem.c shell.c sizeof.h spawn.c sssd.c sssd.h \ + string/sprintf.c string/sprintf.h string/stpecpy.c \ + string/stpecpy.h string/stpeprintf.c string/stpeprintf.h \ + string/strftime.c string/strftime.h string/strncpy.h \ + string/strtcpy.c string/strtcpy.h string/zustr2stp.h \ + strtoday.c sub.c subordinateio.h subordinateio.c sulog.c \ + time/day_to_str.c time/day_to_str.h ttytype.c tz.c ulimit.c \ + user_busy.c valid.c write_full.c xgetpwnam.c \ + xprefix_getpwnam.c xgetpwuid.c xgetgrnam.c xgetgrgid.c \ + xgetspnam.c yesno.c tcbfuncs.c tcbfuncs.h btrfs.c log.c \ + logind.c utmp.c freezero.h freezero.c readpassphrase.h \ + readpassphrase.c +am__dirstamp = $(am__leading_dot)dirstamp @WITH_TCB_TRUE@am__objects_1 = libshadow_la-tcbfuncs.lo -am_libshadow_la_OBJECTS = libshadow_la-commonio.lo \ - libshadow_la-encrypt.lo libshadow_la-fields.lo \ - libshadow_la-fputsx.lo libshadow_la-getdef.lo \ - libshadow_la-get_gid.lo libshadow_la-getlong.lo \ - libshadow_la-get_pid.lo libshadow_la-get_uid.lo \ - libshadow_la-getulong.lo libshadow_la-groupio.lo \ - libshadow_la-groupmem.lo libshadow_la-gshadow.lo \ - libshadow_la-lockpw.lo libshadow_la-nss.lo \ - libshadow_la-nscd.lo libshadow_la-shadowlog.lo \ - libshadow_la-sssd.lo libshadow_la-port.lo \ - libshadow_la-pwauth.lo libshadow_la-pwio.lo \ - libshadow_la-pwmem.lo libshadow_la-run_part.lo \ - libshadow_la-subordinateio.lo libshadow_la-selinux.lo \ - libshadow_la-semanage.lo libshadow_la-sgetgrent.lo \ - libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \ - libshadow_la-sgroupio.lo libshadow_la-shadow.lo \ - libshadow_la-shadowio.lo libshadow_la-shadowmem.lo \ - libshadow_la-spawn.lo libshadow_la-utent.lo $(am__objects_1) +@WITH_BTRFS_TRUE@am__objects_2 = libshadow_la-btrfs.lo +@ENABLE_LASTLOG_TRUE@am__objects_3 = libshadow_la-log.lo +@ENABLE_LOGIND_TRUE@am__objects_4 = libshadow_la-logind.lo +@ENABLE_LOGIND_FALSE@am__objects_5 = libshadow_la-utmp.lo +@WITH_LIBBSD_FALSE@am__objects_6 = libshadow_la-freezero.lo \ +@WITH_LIBBSD_FALSE@ libshadow_la-readpassphrase.lo +am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \ + libshadow_la-age.lo libshadow_la-agetpass.lo \ + libshadow_la-alloc.lo atoi/libshadow_la-a2i.lo \ + atoi/libshadow_la-str2i.lo atoi/libshadow_la-strtoi.lo \ + atoi/libshadow_la-strtou_noneg.lo libshadow_la-audit_help.lo \ + libshadow_la-basename.lo libshadow_la-bit.lo \ + libshadow_la-chkname.lo libshadow_la-chowndir.lo \ + libshadow_la-chowntty.lo libshadow_la-cleanup.lo \ + libshadow_la-cleanup_group.lo libshadow_la-cleanup_user.lo \ + libshadow_la-commonio.lo libshadow_la-console.lo \ + libshadow_la-copydir.lo libshadow_la-csrand.lo \ + libshadow_la-encrypt.lo libshadow_la-env.lo \ + libshadow_la-failure.lo libshadow_la-fd.lo \ + libshadow_la-fields.lo libshadow_la-find_new_gid.lo \ + libshadow_la-find_new_uid.lo libshadow_la-find_new_sub_gids.lo \ + libshadow_la-find_new_sub_uids.lo libshadow_la-fputsx.lo \ + libshadow_la-get_gid.lo libshadow_la-get_pid.lo \ + libshadow_la-get_uid.lo libshadow_la-getdate.lo \ + libshadow_la-getdef.lo libshadow_la-getgr_nam_gid.lo \ + libshadow_la-getrange.lo libshadow_la-gettime.lo \ + libshadow_la-groupio.lo libshadow_la-groupmem.lo \ + libshadow_la-gshadow.lo libshadow_la-hushed.lo \ + libshadow_la-idmapping.lo libshadow_la-isexpired.lo \ + libshadow_la-limits.lo libshadow_la-list.lo \ + libshadow_la-lockpw.lo libshadow_la-loginprompt.lo \ + libshadow_la-mail.lo libshadow_la-memzero.lo \ + libshadow_la-motd.lo libshadow_la-myname.lo \ + libshadow_la-nss.lo libshadow_la-nscd.lo \ + libshadow_la-obscure.lo libshadow_la-pam_pass.lo \ + libshadow_la-pam_pass_non_interactive.lo libshadow_la-port.lo \ + libshadow_la-prefix_flag.lo libshadow_la-pwauth.lo \ + libshadow_la-pwio.lo libshadow_la-pwd_init.lo \ + libshadow_la-pwd2spwd.lo libshadow_la-pwdcheck.lo \ + libshadow_la-pwmem.lo libshadow_la-remove_tree.lo \ + libshadow_la-rlogin.lo libshadow_la-root_flag.lo \ + libshadow_la-run_part.lo libshadow_la-salt.lo \ + libshadow_la-selinux.lo libshadow_la-semanage.lo \ + libshadow_la-setugid.lo libshadow_la-setupenv.lo \ + libshadow_la-sgetgrent.lo libshadow_la-sgetpwent.lo \ + libshadow_la-sgetspent.lo libshadow_la-sgroupio.lo \ + libshadow_la-shadow.lo libshadow_la-shadowio.lo \ + libshadow_la-shadowlog.lo libshadow_la-shadowmem.lo \ + libshadow_la-shell.lo libshadow_la-spawn.lo \ + libshadow_la-sssd.lo string/libshadow_la-sprintf.lo \ + string/libshadow_la-stpecpy.lo \ + string/libshadow_la-stpeprintf.lo \ + string/libshadow_la-strftime.lo string/libshadow_la-strtcpy.lo \ + libshadow_la-strtoday.lo libshadow_la-sub.lo \ + libshadow_la-subordinateio.lo libshadow_la-sulog.lo \ + time/libshadow_la-day_to_str.lo libshadow_la-ttytype.lo \ + libshadow_la-tz.lo libshadow_la-ulimit.lo \ + libshadow_la-user_busy.lo libshadow_la-valid.lo \ + libshadow_la-write_full.lo libshadow_la-xgetpwnam.lo \ + libshadow_la-xprefix_getpwnam.lo libshadow_la-xgetpwuid.lo \ + libshadow_la-xgetgrnam.lo libshadow_la-xgetgrgid.lo \ + libshadow_la-xgetspnam.lo libshadow_la-yesno.lo \ + $(am__objects_1) $(am__objects_2) $(am__objects_3) \ + $(am__objects_4) $(am__objects_5) $(am__objects_6) libshadow_la_OBJECTS = $(am_libshadow_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = +libshadow_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libshadow_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -159,29 +244,83 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/libshadow_la-commonio.Plo \ +am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ + ./$(DEPDIR)/libshadow_la-adds.Plo \ + ./$(DEPDIR)/libshadow_la-age.Plo \ + ./$(DEPDIR)/libshadow_la-agetpass.Plo \ + ./$(DEPDIR)/libshadow_la-alloc.Plo \ + ./$(DEPDIR)/libshadow_la-audit_help.Plo \ + ./$(DEPDIR)/libshadow_la-basename.Plo \ + ./$(DEPDIR)/libshadow_la-bit.Plo \ + ./$(DEPDIR)/libshadow_la-btrfs.Plo \ + ./$(DEPDIR)/libshadow_la-chkname.Plo \ + ./$(DEPDIR)/libshadow_la-chowndir.Plo \ + ./$(DEPDIR)/libshadow_la-chowntty.Plo \ + ./$(DEPDIR)/libshadow_la-cleanup.Plo \ + ./$(DEPDIR)/libshadow_la-cleanup_group.Plo \ + ./$(DEPDIR)/libshadow_la-cleanup_user.Plo \ + ./$(DEPDIR)/libshadow_la-commonio.Plo \ + ./$(DEPDIR)/libshadow_la-console.Plo \ + ./$(DEPDIR)/libshadow_la-copydir.Plo \ + ./$(DEPDIR)/libshadow_la-csrand.Plo \ ./$(DEPDIR)/libshadow_la-encrypt.Plo \ + ./$(DEPDIR)/libshadow_la-env.Plo \ + ./$(DEPDIR)/libshadow_la-failure.Plo \ + ./$(DEPDIR)/libshadow_la-fd.Plo \ ./$(DEPDIR)/libshadow_la-fields.Plo \ + ./$(DEPDIR)/libshadow_la-find_new_gid.Plo \ + ./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo \ + ./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo \ + ./$(DEPDIR)/libshadow_la-find_new_uid.Plo \ ./$(DEPDIR)/libshadow_la-fputsx.Plo \ + ./$(DEPDIR)/libshadow_la-freezero.Plo \ ./$(DEPDIR)/libshadow_la-get_gid.Plo \ ./$(DEPDIR)/libshadow_la-get_pid.Plo \ ./$(DEPDIR)/libshadow_la-get_uid.Plo \ + ./$(DEPDIR)/libshadow_la-getdate.Plo \ ./$(DEPDIR)/libshadow_la-getdef.Plo \ - ./$(DEPDIR)/libshadow_la-getlong.Plo \ - ./$(DEPDIR)/libshadow_la-getulong.Plo \ + ./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo \ + ./$(DEPDIR)/libshadow_la-getrange.Plo \ + ./$(DEPDIR)/libshadow_la-gettime.Plo \ ./$(DEPDIR)/libshadow_la-groupio.Plo \ ./$(DEPDIR)/libshadow_la-groupmem.Plo \ ./$(DEPDIR)/libshadow_la-gshadow.Plo \ + ./$(DEPDIR)/libshadow_la-hushed.Plo \ + ./$(DEPDIR)/libshadow_la-idmapping.Plo \ + ./$(DEPDIR)/libshadow_la-isexpired.Plo \ + ./$(DEPDIR)/libshadow_la-limits.Plo \ + ./$(DEPDIR)/libshadow_la-list.Plo \ ./$(DEPDIR)/libshadow_la-lockpw.Plo \ + ./$(DEPDIR)/libshadow_la-log.Plo \ + ./$(DEPDIR)/libshadow_la-logind.Plo \ + ./$(DEPDIR)/libshadow_la-loginprompt.Plo \ + ./$(DEPDIR)/libshadow_la-mail.Plo \ + ./$(DEPDIR)/libshadow_la-memzero.Plo \ + ./$(DEPDIR)/libshadow_la-motd.Plo \ + ./$(DEPDIR)/libshadow_la-myname.Plo \ ./$(DEPDIR)/libshadow_la-nscd.Plo \ ./$(DEPDIR)/libshadow_la-nss.Plo \ + ./$(DEPDIR)/libshadow_la-obscure.Plo \ + ./$(DEPDIR)/libshadow_la-pam_pass.Plo \ + ./$(DEPDIR)/libshadow_la-pam_pass_non_interactive.Plo \ ./$(DEPDIR)/libshadow_la-port.Plo \ + ./$(DEPDIR)/libshadow_la-prefix_flag.Plo \ ./$(DEPDIR)/libshadow_la-pwauth.Plo \ + ./$(DEPDIR)/libshadow_la-pwd2spwd.Plo \ + ./$(DEPDIR)/libshadow_la-pwd_init.Plo \ + ./$(DEPDIR)/libshadow_la-pwdcheck.Plo \ ./$(DEPDIR)/libshadow_la-pwio.Plo \ ./$(DEPDIR)/libshadow_la-pwmem.Plo \ + ./$(DEPDIR)/libshadow_la-readpassphrase.Plo \ + ./$(DEPDIR)/libshadow_la-remove_tree.Plo \ + ./$(DEPDIR)/libshadow_la-rlogin.Plo \ + ./$(DEPDIR)/libshadow_la-root_flag.Plo \ ./$(DEPDIR)/libshadow_la-run_part.Plo \ + ./$(DEPDIR)/libshadow_la-salt.Plo \ ./$(DEPDIR)/libshadow_la-selinux.Plo \ ./$(DEPDIR)/libshadow_la-semanage.Plo \ + ./$(DEPDIR)/libshadow_la-setugid.Plo \ + ./$(DEPDIR)/libshadow_la-setupenv.Plo \ ./$(DEPDIR)/libshadow_la-sgetgrent.Plo \ ./$(DEPDIR)/libshadow_la-sgetpwent.Plo \ ./$(DEPDIR)/libshadow_la-sgetspent.Plo \ @@ -190,11 +329,38 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-commonio.Plo \ ./$(DEPDIR)/libshadow_la-shadowio.Plo \ ./$(DEPDIR)/libshadow_la-shadowlog.Plo \ ./$(DEPDIR)/libshadow_la-shadowmem.Plo \ + ./$(DEPDIR)/libshadow_la-shell.Plo \ ./$(DEPDIR)/libshadow_la-spawn.Plo \ ./$(DEPDIR)/libshadow_la-sssd.Plo \ + ./$(DEPDIR)/libshadow_la-strtoday.Plo \ + ./$(DEPDIR)/libshadow_la-sub.Plo \ ./$(DEPDIR)/libshadow_la-subordinateio.Plo \ + ./$(DEPDIR)/libshadow_la-sulog.Plo \ ./$(DEPDIR)/libshadow_la-tcbfuncs.Plo \ - ./$(DEPDIR)/libshadow_la-utent.Plo + ./$(DEPDIR)/libshadow_la-ttytype.Plo \ + ./$(DEPDIR)/libshadow_la-tz.Plo \ + ./$(DEPDIR)/libshadow_la-ulimit.Plo \ + ./$(DEPDIR)/libshadow_la-user_busy.Plo \ + ./$(DEPDIR)/libshadow_la-utmp.Plo \ + ./$(DEPDIR)/libshadow_la-valid.Plo \ + ./$(DEPDIR)/libshadow_la-write_full.Plo \ + ./$(DEPDIR)/libshadow_la-xgetgrgid.Plo \ + ./$(DEPDIR)/libshadow_la-xgetgrnam.Plo \ + ./$(DEPDIR)/libshadow_la-xgetpwnam.Plo \ + ./$(DEPDIR)/libshadow_la-xgetpwuid.Plo \ + ./$(DEPDIR)/libshadow_la-xgetspnam.Plo \ + ./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo \ + ./$(DEPDIR)/libshadow_la-yesno.Plo \ + atoi/$(DEPDIR)/libshadow_la-a2i.Plo \ + atoi/$(DEPDIR)/libshadow_la-str2i.Plo \ + atoi/$(DEPDIR)/libshadow_la-strtoi.Plo \ + atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo \ + string/$(DEPDIR)/libshadow_la-sprintf.Plo \ + string/$(DEPDIR)/libshadow_la-stpecpy.Plo \ + string/$(DEPDIR)/libshadow_la-stpeprintf.Plo \ + string/$(DEPDIR)/libshadow_la-strftime.Plo \ + string/$(DEPDIR)/libshadow_la-strtcpy.Plo \ + time/$(DEPDIR)/libshadow_la-day_to_str.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -214,6 +380,17 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = +@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || +am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ + -e s/c++$$/h++/ -e s/c$$/h/ +YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) +LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) +AM_V_YACC = $(am__v_YACC_@AM_V@) +am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) +am__v_YACC_0 = @echo " YACC " $@; +am__v_YACC_1 = +YLWRAP = $(top_srcdir)/ylwrap SOURCES = $(libshadow_la_SOURCES) DIST_SOURCES = $(am__libshadow_la_SOURCES_DIST) am__can_run_installinfo = \ @@ -238,7 +415,8 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/ylwrap getdate.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ @@ -251,6 +429,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -269,6 +449,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -284,9 +465,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -302,6 +489,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -310,6 +498,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -332,6 +522,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -405,18 +598,46 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.0 foreign noinst_LTLIBRARIES = libshadow.la +@USE_PAM_FALSE@LIBCRYPT_PAM = +@USE_PAM_TRUE@LIBCRYPT_PAM = $(LIBCRYPT) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS) libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS) $(am__append_1) \ -I$(top_srcdir) -libshadow_la_SOURCES = commonio.c commonio.h defines.h encrypt.c \ - exitcodes.h faillog.h fields.c fputsx.c getdef.c getdef.h \ - get_gid.c getlong.c get_pid.c get_uid.c getulong.c groupio.c \ - groupmem.c groupio.h gshadow.c lockpw.c nss.c nscd.c nscd.h \ - shadowlog.c shadowlog.h shadowlog_internal.h sssd.c sssd.h \ - pam_defs.h port.c port.h prototypes.h pwauth.c pwauth.h pwio.c \ - pwio.h pwmem.c run_part.h run_part.c subordinateio.h \ - subordinateio.c selinux.c semanage.c sgetgrent.c sgetpwent.c \ - sgetspent.c sgroupio.c sgroupio.h shadow.c shadowio.c \ - shadowio.h shadowmem.c spawn.c utent.c $(am__append_2) +libshadow_la_CFLAGS = $(LIBBSD_CFLAGS) $(LIBCRYPT_PAM) $(LIBSYSTEMD) +libshadow_la_LIBADD = $(LIBADD_DLOPEN) +libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \ + agetpass.h alloc.c alloc.h atoi/a2i.c atoi/a2i.h atoi/str2i.c \ + atoi/str2i.h atoi/strtoi.c atoi/strtoi.h atoi/strtou_noneg.c \ + atoi/strtou_noneg.h attr.h audit_help.c basename.c bit.c bit.h \ + cast.h chkname.c chkname.h chowndir.c chowntty.c cleanup.c \ + cleanup_group.c cleanup_user.c commonio.c commonio.h console.c \ + copydir.c csrand.c defines.h encrypt.c env.c exitcodes.h \ + faillog.h failure.c failure.h fd.c fields.c find_new_gid.c \ + find_new_uid.c find_new_sub_gids.c find_new_sub_uids.c \ + fputsx.c get_gid.c get_pid.c get_uid.c getdate.h getdate.y \ + getdef.c getdef.h getgr_nam_gid.c getrange.c gettime.c \ + groupio.c groupmem.c groupio.h gshadow.c hushed.c idmapping.h \ + idmapping.c isexpired.c limits.c list.c lockpw.c loginprompt.c \ + mail.c memzero.c memzero.h motd.c must_be.h myname.c nss.c \ + nscd.c nscd.h obscure.c pam_defs.h pam_pass.c \ + pam_pass_non_interactive.c port.c port.h prefix_flag.c \ + prototypes.h pwauth.c pwauth.h pwio.c pwio.h pwd_init.c \ + pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c rlogin.c \ + root_flag.c run_part.h run_part.c salt.c selinux.c semanage.c \ + setugid.c setupenv.c sgetgrent.c sgetpwent.c sgetspent.c \ + sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \ + shadowlog.c shadowlog.h shadowlog_internal.h shadowmem.c \ + shell.c sizeof.h spawn.c sssd.c sssd.h string/sprintf.c \ + string/sprintf.h string/stpecpy.c string/stpecpy.h \ + string/stpeprintf.c string/stpeprintf.h string/strftime.c \ + string/strftime.h string/strncpy.h string/strtcpy.c \ + string/strtcpy.h string/zustr2stp.h strtoday.c sub.c \ + subordinateio.h subordinateio.c sulog.c time/day_to_str.c \ + time/day_to_str.h ttytype.c tz.c ulimit.c user_busy.c valid.c \ + write_full.c xgetpwnam.c xprefix_getpwnam.c xgetpwuid.c \ + xgetgrnam.c xgetgrgid.c xgetspnam.c yesno.c $(am__append_2) \ + $(am__append_3) $(am__append_4) $(am__append_5) \ + $(am__append_6) $(am__append_7) # These files are unneeded for some reason, listed in # order of appearance: @@ -424,12 +645,13 @@ libshadow_la_SOURCES = commonio.c commonio.h defines.h encrypt.c \ # sources for dbm support (not yet used) EXTRA_DIST = \ .indent.pro \ - gshadow_.h + gshadow_.h \ + xgetXXbyYY.c all: all-am .SUFFIXES: -.SUFFIXES: .c .lo .o .obj +.SUFFIXES: .c .lo .o .obj .y $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ @@ -470,39 +692,137 @@ clean-noinstLTLIBRARIES: echo rm -f $${locs}; \ rm -f $${locs}; \ } +atoi/$(am__dirstamp): + @$(MKDIR_P) atoi + @: > atoi/$(am__dirstamp) +atoi/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) atoi/$(DEPDIR) + @: > atoi/$(DEPDIR)/$(am__dirstamp) +atoi/libshadow_la-a2i.lo: atoi/$(am__dirstamp) \ + atoi/$(DEPDIR)/$(am__dirstamp) +atoi/libshadow_la-str2i.lo: atoi/$(am__dirstamp) \ + atoi/$(DEPDIR)/$(am__dirstamp) +atoi/libshadow_la-strtoi.lo: atoi/$(am__dirstamp) \ + atoi/$(DEPDIR)/$(am__dirstamp) +atoi/libshadow_la-strtou_noneg.lo: atoi/$(am__dirstamp) \ + atoi/$(DEPDIR)/$(am__dirstamp) +string/$(am__dirstamp): + @$(MKDIR_P) string + @: > string/$(am__dirstamp) +string/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) string/$(DEPDIR) + @: > string/$(DEPDIR)/$(am__dirstamp) +string/libshadow_la-sprintf.lo: string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +string/libshadow_la-stpecpy.lo: string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +string/libshadow_la-stpeprintf.lo: string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +string/libshadow_la-strftime.lo: string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +string/libshadow_la-strtcpy.lo: string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) +time/$(am__dirstamp): + @$(MKDIR_P) time + @: > time/$(am__dirstamp) +time/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) time/$(DEPDIR) + @: > time/$(DEPDIR)/$(am__dirstamp) +time/libshadow_la-day_to_str.lo: time/$(am__dirstamp) \ + time/$(DEPDIR)/$(am__dirstamp) libshadow.la: $(libshadow_la_OBJECTS) $(libshadow_la_DEPENDENCIES) $(EXTRA_libshadow_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libshadow_la_OBJECTS) $(libshadow_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(libshadow_la_LINK) $(libshadow_la_OBJECTS) $(libshadow_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) + -rm -f atoi/*.$(OBJEXT) + -rm -f atoi/*.lo + -rm -f string/*.$(OBJEXT) + -rm -f string/*.lo + -rm -f time/*.$(OBJEXT) + -rm -f time/*.lo distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-addgrps.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-adds.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-age.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-agetpass.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-alloc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-audit_help.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-basename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-bit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-btrfs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chkname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chowndir.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chowntty.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-cleanup.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-cleanup_group.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-cleanup_user.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-commonio.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-console.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-copydir.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-csrand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-encrypt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-env.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-failure.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-fd.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-fields.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_gid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_uid.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-fputsx.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-freezero.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-get_gid.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-get_pid.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-get_uid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getdate.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getdef.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getlong.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getulong.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gettime.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-groupio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-groupmem.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gshadow.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-hushed.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-idmapping.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-isexpired.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-limits.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-list.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-lockpw.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-log.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-logind.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-loginprompt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-mail.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-memzero.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-motd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-myname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-nscd.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-nss.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-obscure.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pam_pass.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pam_pass_non_interactive.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-port.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-prefix_flag.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwauth.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwd2spwd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwd_init.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwdcheck.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwmem.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-readpassphrase.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-remove_tree.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-rlogin.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-root_flag.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-run_part.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-salt.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-selinux.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-semanage.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-setugid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-setupenv.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetgrent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetpwent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetspent.Plo@am__quote@ # am--include-marker @@ -511,11 +831,38 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowlog.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowmem.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shell.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-spawn.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sssd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-strtoday.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sub.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-subordinateio.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sulog.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-tcbfuncs.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-utent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-ttytype.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-tz.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-ulimit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-user_busy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-utmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-valid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-write_full.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xgetgrgid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xgetgrnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xgetpwnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xgetpwuid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xgetspnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-yesno.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-a2i.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-str2i.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-strtoi.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-sprintf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-stpecpy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-stpeprintf.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-strftime.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-strtcpy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@time/$(DEPDIR)/libshadow_la-day_to_str.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -524,283 +871,859 @@ $(am__depfiles_remade): am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< +libshadow_la-addgrps.lo: addgrps.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-addgrps.lo -MD -MP -MF $(DEPDIR)/libshadow_la-addgrps.Tpo -c -o libshadow_la-addgrps.lo `test -f 'addgrps.c' || echo '$(srcdir)/'`addgrps.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-addgrps.Tpo $(DEPDIR)/libshadow_la-addgrps.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='addgrps.c' object='libshadow_la-addgrps.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-addgrps.lo `test -f 'addgrps.c' || echo '$(srcdir)/'`addgrps.c + +libshadow_la-adds.lo: adds.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-adds.lo -MD -MP -MF $(DEPDIR)/libshadow_la-adds.Tpo -c -o libshadow_la-adds.lo `test -f 'adds.c' || echo '$(srcdir)/'`adds.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-adds.Tpo $(DEPDIR)/libshadow_la-adds.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='adds.c' object='libshadow_la-adds.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-adds.lo `test -f 'adds.c' || echo '$(srcdir)/'`adds.c + +libshadow_la-age.lo: age.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-age.lo -MD -MP -MF $(DEPDIR)/libshadow_la-age.Tpo -c -o libshadow_la-age.lo `test -f 'age.c' || echo '$(srcdir)/'`age.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-age.Tpo $(DEPDIR)/libshadow_la-age.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='age.c' object='libshadow_la-age.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-age.lo `test -f 'age.c' || echo '$(srcdir)/'`age.c + +libshadow_la-agetpass.lo: agetpass.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-agetpass.lo -MD -MP -MF $(DEPDIR)/libshadow_la-agetpass.Tpo -c -o libshadow_la-agetpass.lo `test -f 'agetpass.c' || echo '$(srcdir)/'`agetpass.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-agetpass.Tpo $(DEPDIR)/libshadow_la-agetpass.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='agetpass.c' object='libshadow_la-agetpass.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-agetpass.lo `test -f 'agetpass.c' || echo '$(srcdir)/'`agetpass.c + +libshadow_la-alloc.lo: alloc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-alloc.lo -MD -MP -MF $(DEPDIR)/libshadow_la-alloc.Tpo -c -o libshadow_la-alloc.lo `test -f 'alloc.c' || echo '$(srcdir)/'`alloc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-alloc.Tpo $(DEPDIR)/libshadow_la-alloc.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloc.c' object='libshadow_la-alloc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-alloc.lo `test -f 'alloc.c' || echo '$(srcdir)/'`alloc.c + +atoi/libshadow_la-a2i.lo: atoi/a2i.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-a2i.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-a2i.Tpo -c -o atoi/libshadow_la-a2i.lo `test -f 'atoi/a2i.c' || echo '$(srcdir)/'`atoi/a2i.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-a2i.Tpo atoi/$(DEPDIR)/libshadow_la-a2i.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i.c' object='atoi/libshadow_la-a2i.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-a2i.lo `test -f 'atoi/a2i.c' || echo '$(srcdir)/'`atoi/a2i.c + +atoi/libshadow_la-str2i.lo: atoi/str2i.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-str2i.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-str2i.Tpo -c -o atoi/libshadow_la-str2i.lo `test -f 'atoi/str2i.c' || echo '$(srcdir)/'`atoi/str2i.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-str2i.Tpo atoi/$(DEPDIR)/libshadow_la-str2i.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/str2i.c' object='atoi/libshadow_la-str2i.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-str2i.lo `test -f 'atoi/str2i.c' || echo '$(srcdir)/'`atoi/str2i.c + +atoi/libshadow_la-strtoi.lo: atoi/strtoi.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-strtoi.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-strtoi.Tpo -c -o atoi/libshadow_la-strtoi.lo `test -f 'atoi/strtoi.c' || echo '$(srcdir)/'`atoi/strtoi.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-strtoi.Tpo atoi/$(DEPDIR)/libshadow_la-strtoi.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/strtoi.c' object='atoi/libshadow_la-strtoi.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-strtoi.lo `test -f 'atoi/strtoi.c' || echo '$(srcdir)/'`atoi/strtoi.c + +atoi/libshadow_la-strtou_noneg.lo: atoi/strtou_noneg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-strtou_noneg.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Tpo -c -o atoi/libshadow_la-strtou_noneg.lo `test -f 'atoi/strtou_noneg.c' || echo '$(srcdir)/'`atoi/strtou_noneg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Tpo atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/strtou_noneg.c' object='atoi/libshadow_la-strtou_noneg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-strtou_noneg.lo `test -f 'atoi/strtou_noneg.c' || echo '$(srcdir)/'`atoi/strtou_noneg.c + +libshadow_la-audit_help.lo: audit_help.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-audit_help.lo -MD -MP -MF $(DEPDIR)/libshadow_la-audit_help.Tpo -c -o libshadow_la-audit_help.lo `test -f 'audit_help.c' || echo '$(srcdir)/'`audit_help.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-audit_help.Tpo $(DEPDIR)/libshadow_la-audit_help.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='audit_help.c' object='libshadow_la-audit_help.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-audit_help.lo `test -f 'audit_help.c' || echo '$(srcdir)/'`audit_help.c + +libshadow_la-basename.lo: basename.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-basename.lo -MD -MP -MF $(DEPDIR)/libshadow_la-basename.Tpo -c -o libshadow_la-basename.lo `test -f 'basename.c' || echo '$(srcdir)/'`basename.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-basename.Tpo $(DEPDIR)/libshadow_la-basename.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='basename.c' object='libshadow_la-basename.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-basename.lo `test -f 'basename.c' || echo '$(srcdir)/'`basename.c + +libshadow_la-bit.lo: bit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-bit.lo -MD -MP -MF $(DEPDIR)/libshadow_la-bit.Tpo -c -o libshadow_la-bit.lo `test -f 'bit.c' || echo '$(srcdir)/'`bit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-bit.Tpo $(DEPDIR)/libshadow_la-bit.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='bit.c' object='libshadow_la-bit.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-bit.lo `test -f 'bit.c' || echo '$(srcdir)/'`bit.c + +libshadow_la-chkname.lo: chkname.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-chkname.lo -MD -MP -MF $(DEPDIR)/libshadow_la-chkname.Tpo -c -o libshadow_la-chkname.lo `test -f 'chkname.c' || echo '$(srcdir)/'`chkname.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-chkname.Tpo $(DEPDIR)/libshadow_la-chkname.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chkname.c' object='libshadow_la-chkname.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-chkname.lo `test -f 'chkname.c' || echo '$(srcdir)/'`chkname.c + +libshadow_la-chowndir.lo: chowndir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-chowndir.lo -MD -MP -MF $(DEPDIR)/libshadow_la-chowndir.Tpo -c -o libshadow_la-chowndir.lo `test -f 'chowndir.c' || echo '$(srcdir)/'`chowndir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-chowndir.Tpo $(DEPDIR)/libshadow_la-chowndir.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chowndir.c' object='libshadow_la-chowndir.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-chowndir.lo `test -f 'chowndir.c' || echo '$(srcdir)/'`chowndir.c + +libshadow_la-chowntty.lo: chowntty.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-chowntty.lo -MD -MP -MF $(DEPDIR)/libshadow_la-chowntty.Tpo -c -o libshadow_la-chowntty.lo `test -f 'chowntty.c' || echo '$(srcdir)/'`chowntty.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-chowntty.Tpo $(DEPDIR)/libshadow_la-chowntty.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chowntty.c' object='libshadow_la-chowntty.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-chowntty.lo `test -f 'chowntty.c' || echo '$(srcdir)/'`chowntty.c + +libshadow_la-cleanup.lo: cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-cleanup.lo -MD -MP -MF $(DEPDIR)/libshadow_la-cleanup.Tpo -c -o libshadow_la-cleanup.lo `test -f 'cleanup.c' || echo '$(srcdir)/'`cleanup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-cleanup.Tpo $(DEPDIR)/libshadow_la-cleanup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cleanup.c' object='libshadow_la-cleanup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-cleanup.lo `test -f 'cleanup.c' || echo '$(srcdir)/'`cleanup.c + +libshadow_la-cleanup_group.lo: cleanup_group.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-cleanup_group.lo -MD -MP -MF $(DEPDIR)/libshadow_la-cleanup_group.Tpo -c -o libshadow_la-cleanup_group.lo `test -f 'cleanup_group.c' || echo '$(srcdir)/'`cleanup_group.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-cleanup_group.Tpo $(DEPDIR)/libshadow_la-cleanup_group.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cleanup_group.c' object='libshadow_la-cleanup_group.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-cleanup_group.lo `test -f 'cleanup_group.c' || echo '$(srcdir)/'`cleanup_group.c + +libshadow_la-cleanup_user.lo: cleanup_user.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-cleanup_user.lo -MD -MP -MF $(DEPDIR)/libshadow_la-cleanup_user.Tpo -c -o libshadow_la-cleanup_user.lo `test -f 'cleanup_user.c' || echo '$(srcdir)/'`cleanup_user.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-cleanup_user.Tpo $(DEPDIR)/libshadow_la-cleanup_user.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cleanup_user.c' object='libshadow_la-cleanup_user.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-cleanup_user.lo `test -f 'cleanup_user.c' || echo '$(srcdir)/'`cleanup_user.c + libshadow_la-commonio.lo: commonio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-commonio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-commonio.Tpo -c -o libshadow_la-commonio.lo `test -f 'commonio.c' || echo '$(srcdir)/'`commonio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-commonio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-commonio.Tpo -c -o libshadow_la-commonio.lo `test -f 'commonio.c' || echo '$(srcdir)/'`commonio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-commonio.Tpo $(DEPDIR)/libshadow_la-commonio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='commonio.c' object='libshadow_la-commonio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-commonio.lo `test -f 'commonio.c' || echo '$(srcdir)/'`commonio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-commonio.lo `test -f 'commonio.c' || echo '$(srcdir)/'`commonio.c + +libshadow_la-console.lo: console.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-console.lo -MD -MP -MF $(DEPDIR)/libshadow_la-console.Tpo -c -o libshadow_la-console.lo `test -f 'console.c' || echo '$(srcdir)/'`console.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-console.Tpo $(DEPDIR)/libshadow_la-console.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='console.c' object='libshadow_la-console.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-console.lo `test -f 'console.c' || echo '$(srcdir)/'`console.c + +libshadow_la-copydir.lo: copydir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-copydir.lo -MD -MP -MF $(DEPDIR)/libshadow_la-copydir.Tpo -c -o libshadow_la-copydir.lo `test -f 'copydir.c' || echo '$(srcdir)/'`copydir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-copydir.Tpo $(DEPDIR)/libshadow_la-copydir.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='copydir.c' object='libshadow_la-copydir.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-copydir.lo `test -f 'copydir.c' || echo '$(srcdir)/'`copydir.c + +libshadow_la-csrand.lo: csrand.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-csrand.lo -MD -MP -MF $(DEPDIR)/libshadow_la-csrand.Tpo -c -o libshadow_la-csrand.lo `test -f 'csrand.c' || echo '$(srcdir)/'`csrand.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-csrand.Tpo $(DEPDIR)/libshadow_la-csrand.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='csrand.c' object='libshadow_la-csrand.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-csrand.lo `test -f 'csrand.c' || echo '$(srcdir)/'`csrand.c libshadow_la-encrypt.lo: encrypt.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-encrypt.lo -MD -MP -MF $(DEPDIR)/libshadow_la-encrypt.Tpo -c -o libshadow_la-encrypt.lo `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-encrypt.lo -MD -MP -MF $(DEPDIR)/libshadow_la-encrypt.Tpo -c -o libshadow_la-encrypt.lo `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-encrypt.Tpo $(DEPDIR)/libshadow_la-encrypt.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='encrypt.c' object='libshadow_la-encrypt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-encrypt.lo `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-encrypt.lo `test -f 'encrypt.c' || echo '$(srcdir)/'`encrypt.c + +libshadow_la-env.lo: env.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-env.lo -MD -MP -MF $(DEPDIR)/libshadow_la-env.Tpo -c -o libshadow_la-env.lo `test -f 'env.c' || echo '$(srcdir)/'`env.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-env.Tpo $(DEPDIR)/libshadow_la-env.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='env.c' object='libshadow_la-env.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-env.lo `test -f 'env.c' || echo '$(srcdir)/'`env.c + +libshadow_la-failure.lo: failure.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-failure.lo -MD -MP -MF $(DEPDIR)/libshadow_la-failure.Tpo -c -o libshadow_la-failure.lo `test -f 'failure.c' || echo '$(srcdir)/'`failure.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-failure.Tpo $(DEPDIR)/libshadow_la-failure.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='failure.c' object='libshadow_la-failure.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-failure.lo `test -f 'failure.c' || echo '$(srcdir)/'`failure.c + +libshadow_la-fd.lo: fd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-fd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-fd.Tpo -c -o libshadow_la-fd.lo `test -f 'fd.c' || echo '$(srcdir)/'`fd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-fd.Tpo $(DEPDIR)/libshadow_la-fd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fd.c' object='libshadow_la-fd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-fd.lo `test -f 'fd.c' || echo '$(srcdir)/'`fd.c libshadow_la-fields.lo: fields.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-fields.lo -MD -MP -MF $(DEPDIR)/libshadow_la-fields.Tpo -c -o libshadow_la-fields.lo `test -f 'fields.c' || echo '$(srcdir)/'`fields.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-fields.lo -MD -MP -MF $(DEPDIR)/libshadow_la-fields.Tpo -c -o libshadow_la-fields.lo `test -f 'fields.c' || echo '$(srcdir)/'`fields.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-fields.Tpo $(DEPDIR)/libshadow_la-fields.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fields.c' object='libshadow_la-fields.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-fields.lo `test -f 'fields.c' || echo '$(srcdir)/'`fields.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-fields.lo `test -f 'fields.c' || echo '$(srcdir)/'`fields.c + +libshadow_la-find_new_gid.lo: find_new_gid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-find_new_gid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-find_new_gid.Tpo -c -o libshadow_la-find_new_gid.lo `test -f 'find_new_gid.c' || echo '$(srcdir)/'`find_new_gid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-find_new_gid.Tpo $(DEPDIR)/libshadow_la-find_new_gid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='find_new_gid.c' object='libshadow_la-find_new_gid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-find_new_gid.lo `test -f 'find_new_gid.c' || echo '$(srcdir)/'`find_new_gid.c + +libshadow_la-find_new_uid.lo: find_new_uid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-find_new_uid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-find_new_uid.Tpo -c -o libshadow_la-find_new_uid.lo `test -f 'find_new_uid.c' || echo '$(srcdir)/'`find_new_uid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-find_new_uid.Tpo $(DEPDIR)/libshadow_la-find_new_uid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='find_new_uid.c' object='libshadow_la-find_new_uid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-find_new_uid.lo `test -f 'find_new_uid.c' || echo '$(srcdir)/'`find_new_uid.c + +libshadow_la-find_new_sub_gids.lo: find_new_sub_gids.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-find_new_sub_gids.lo -MD -MP -MF $(DEPDIR)/libshadow_la-find_new_sub_gids.Tpo -c -o libshadow_la-find_new_sub_gids.lo `test -f 'find_new_sub_gids.c' || echo '$(srcdir)/'`find_new_sub_gids.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-find_new_sub_gids.Tpo $(DEPDIR)/libshadow_la-find_new_sub_gids.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='find_new_sub_gids.c' object='libshadow_la-find_new_sub_gids.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-find_new_sub_gids.lo `test -f 'find_new_sub_gids.c' || echo '$(srcdir)/'`find_new_sub_gids.c + +libshadow_la-find_new_sub_uids.lo: find_new_sub_uids.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-find_new_sub_uids.lo -MD -MP -MF $(DEPDIR)/libshadow_la-find_new_sub_uids.Tpo -c -o libshadow_la-find_new_sub_uids.lo `test -f 'find_new_sub_uids.c' || echo '$(srcdir)/'`find_new_sub_uids.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-find_new_sub_uids.Tpo $(DEPDIR)/libshadow_la-find_new_sub_uids.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='find_new_sub_uids.c' object='libshadow_la-find_new_sub_uids.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-find_new_sub_uids.lo `test -f 'find_new_sub_uids.c' || echo '$(srcdir)/'`find_new_sub_uids.c libshadow_la-fputsx.lo: fputsx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-fputsx.lo -MD -MP -MF $(DEPDIR)/libshadow_la-fputsx.Tpo -c -o libshadow_la-fputsx.lo `test -f 'fputsx.c' || echo '$(srcdir)/'`fputsx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-fputsx.lo -MD -MP -MF $(DEPDIR)/libshadow_la-fputsx.Tpo -c -o libshadow_la-fputsx.lo `test -f 'fputsx.c' || echo '$(srcdir)/'`fputsx.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-fputsx.Tpo $(DEPDIR)/libshadow_la-fputsx.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fputsx.c' object='libshadow_la-fputsx.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-fputsx.lo `test -f 'fputsx.c' || echo '$(srcdir)/'`fputsx.c - -libshadow_la-getdef.lo: getdef.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-getdef.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getdef.Tpo -c -o libshadow_la-getdef.lo `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getdef.Tpo $(DEPDIR)/libshadow_la-getdef.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getdef.c' object='libshadow_la-getdef.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-getdef.lo `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-fputsx.lo `test -f 'fputsx.c' || echo '$(srcdir)/'`fputsx.c libshadow_la-get_gid.lo: get_gid.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-get_gid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-get_gid.Tpo -c -o libshadow_la-get_gid.lo `test -f 'get_gid.c' || echo '$(srcdir)/'`get_gid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-get_gid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-get_gid.Tpo -c -o libshadow_la-get_gid.lo `test -f 'get_gid.c' || echo '$(srcdir)/'`get_gid.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-get_gid.Tpo $(DEPDIR)/libshadow_la-get_gid.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_gid.c' object='libshadow_la-get_gid.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-get_gid.lo `test -f 'get_gid.c' || echo '$(srcdir)/'`get_gid.c - -libshadow_la-getlong.lo: getlong.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-getlong.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getlong.Tpo -c -o libshadow_la-getlong.lo `test -f 'getlong.c' || echo '$(srcdir)/'`getlong.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getlong.Tpo $(DEPDIR)/libshadow_la-getlong.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getlong.c' object='libshadow_la-getlong.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-getlong.lo `test -f 'getlong.c' || echo '$(srcdir)/'`getlong.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-get_gid.lo `test -f 'get_gid.c' || echo '$(srcdir)/'`get_gid.c libshadow_la-get_pid.lo: get_pid.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-get_pid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-get_pid.Tpo -c -o libshadow_la-get_pid.lo `test -f 'get_pid.c' || echo '$(srcdir)/'`get_pid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-get_pid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-get_pid.Tpo -c -o libshadow_la-get_pid.lo `test -f 'get_pid.c' || echo '$(srcdir)/'`get_pid.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-get_pid.Tpo $(DEPDIR)/libshadow_la-get_pid.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_pid.c' object='libshadow_la-get_pid.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-get_pid.lo `test -f 'get_pid.c' || echo '$(srcdir)/'`get_pid.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-get_pid.lo `test -f 'get_pid.c' || echo '$(srcdir)/'`get_pid.c libshadow_la-get_uid.lo: get_uid.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-get_uid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-get_uid.Tpo -c -o libshadow_la-get_uid.lo `test -f 'get_uid.c' || echo '$(srcdir)/'`get_uid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-get_uid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-get_uid.Tpo -c -o libshadow_la-get_uid.lo `test -f 'get_uid.c' || echo '$(srcdir)/'`get_uid.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-get_uid.Tpo $(DEPDIR)/libshadow_la-get_uid.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_uid.c' object='libshadow_la-get_uid.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-get_uid.lo `test -f 'get_uid.c' || echo '$(srcdir)/'`get_uid.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-get_uid.lo `test -f 'get_uid.c' || echo '$(srcdir)/'`get_uid.c + +libshadow_la-getdate.lo: getdate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getdate.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getdate.Tpo -c -o libshadow_la-getdate.lo `test -f 'getdate.c' || echo '$(srcdir)/'`getdate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getdate.Tpo $(DEPDIR)/libshadow_la-getdate.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getdate.c' object='libshadow_la-getdate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getdate.lo `test -f 'getdate.c' || echo '$(srcdir)/'`getdate.c + +libshadow_la-getdef.lo: getdef.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getdef.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getdef.Tpo -c -o libshadow_la-getdef.lo `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getdef.Tpo $(DEPDIR)/libshadow_la-getdef.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getdef.c' object='libshadow_la-getdef.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getdef.lo `test -f 'getdef.c' || echo '$(srcdir)/'`getdef.c -libshadow_la-getulong.lo: getulong.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-getulong.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getulong.Tpo -c -o libshadow_la-getulong.lo `test -f 'getulong.c' || echo '$(srcdir)/'`getulong.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getulong.Tpo $(DEPDIR)/libshadow_la-getulong.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getulong.c' object='libshadow_la-getulong.lo' libtool=yes @AMDEPBACKSLASH@ +libshadow_la-getgr_nam_gid.lo: getgr_nam_gid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getgr_nam_gid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getgr_nam_gid.Tpo -c -o libshadow_la-getgr_nam_gid.lo `test -f 'getgr_nam_gid.c' || echo '$(srcdir)/'`getgr_nam_gid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getgr_nam_gid.Tpo $(DEPDIR)/libshadow_la-getgr_nam_gid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getgr_nam_gid.c' object='libshadow_la-getgr_nam_gid.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-getulong.lo `test -f 'getulong.c' || echo '$(srcdir)/'`getulong.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getgr_nam_gid.lo `test -f 'getgr_nam_gid.c' || echo '$(srcdir)/'`getgr_nam_gid.c + +libshadow_la-getrange.lo: getrange.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-getrange.lo -MD -MP -MF $(DEPDIR)/libshadow_la-getrange.Tpo -c -o libshadow_la-getrange.lo `test -f 'getrange.c' || echo '$(srcdir)/'`getrange.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-getrange.Tpo $(DEPDIR)/libshadow_la-getrange.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getrange.c' object='libshadow_la-getrange.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-getrange.lo `test -f 'getrange.c' || echo '$(srcdir)/'`getrange.c + +libshadow_la-gettime.lo: gettime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-gettime.lo -MD -MP -MF $(DEPDIR)/libshadow_la-gettime.Tpo -c -o libshadow_la-gettime.lo `test -f 'gettime.c' || echo '$(srcdir)/'`gettime.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-gettime.Tpo $(DEPDIR)/libshadow_la-gettime.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gettime.c' object='libshadow_la-gettime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-gettime.lo `test -f 'gettime.c' || echo '$(srcdir)/'`gettime.c libshadow_la-groupio.lo: groupio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-groupio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-groupio.Tpo -c -o libshadow_la-groupio.lo `test -f 'groupio.c' || echo '$(srcdir)/'`groupio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-groupio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-groupio.Tpo -c -o libshadow_la-groupio.lo `test -f 'groupio.c' || echo '$(srcdir)/'`groupio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-groupio.Tpo $(DEPDIR)/libshadow_la-groupio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='groupio.c' object='libshadow_la-groupio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-groupio.lo `test -f 'groupio.c' || echo '$(srcdir)/'`groupio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-groupio.lo `test -f 'groupio.c' || echo '$(srcdir)/'`groupio.c libshadow_la-groupmem.lo: groupmem.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-groupmem.lo -MD -MP -MF $(DEPDIR)/libshadow_la-groupmem.Tpo -c -o libshadow_la-groupmem.lo `test -f 'groupmem.c' || echo '$(srcdir)/'`groupmem.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-groupmem.lo -MD -MP -MF $(DEPDIR)/libshadow_la-groupmem.Tpo -c -o libshadow_la-groupmem.lo `test -f 'groupmem.c' || echo '$(srcdir)/'`groupmem.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-groupmem.Tpo $(DEPDIR)/libshadow_la-groupmem.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='groupmem.c' object='libshadow_la-groupmem.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-groupmem.lo `test -f 'groupmem.c' || echo '$(srcdir)/'`groupmem.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-groupmem.lo `test -f 'groupmem.c' || echo '$(srcdir)/'`groupmem.c libshadow_la-gshadow.lo: gshadow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-gshadow.lo -MD -MP -MF $(DEPDIR)/libshadow_la-gshadow.Tpo -c -o libshadow_la-gshadow.lo `test -f 'gshadow.c' || echo '$(srcdir)/'`gshadow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-gshadow.lo -MD -MP -MF $(DEPDIR)/libshadow_la-gshadow.Tpo -c -o libshadow_la-gshadow.lo `test -f 'gshadow.c' || echo '$(srcdir)/'`gshadow.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-gshadow.Tpo $(DEPDIR)/libshadow_la-gshadow.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gshadow.c' object='libshadow_la-gshadow.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-gshadow.lo `test -f 'gshadow.c' || echo '$(srcdir)/'`gshadow.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-gshadow.lo `test -f 'gshadow.c' || echo '$(srcdir)/'`gshadow.c + +libshadow_la-hushed.lo: hushed.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-hushed.lo -MD -MP -MF $(DEPDIR)/libshadow_la-hushed.Tpo -c -o libshadow_la-hushed.lo `test -f 'hushed.c' || echo '$(srcdir)/'`hushed.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-hushed.Tpo $(DEPDIR)/libshadow_la-hushed.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='hushed.c' object='libshadow_la-hushed.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-hushed.lo `test -f 'hushed.c' || echo '$(srcdir)/'`hushed.c + +libshadow_la-idmapping.lo: idmapping.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-idmapping.lo -MD -MP -MF $(DEPDIR)/libshadow_la-idmapping.Tpo -c -o libshadow_la-idmapping.lo `test -f 'idmapping.c' || echo '$(srcdir)/'`idmapping.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-idmapping.Tpo $(DEPDIR)/libshadow_la-idmapping.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='idmapping.c' object='libshadow_la-idmapping.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-idmapping.lo `test -f 'idmapping.c' || echo '$(srcdir)/'`idmapping.c + +libshadow_la-isexpired.lo: isexpired.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-isexpired.lo -MD -MP -MF $(DEPDIR)/libshadow_la-isexpired.Tpo -c -o libshadow_la-isexpired.lo `test -f 'isexpired.c' || echo '$(srcdir)/'`isexpired.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-isexpired.Tpo $(DEPDIR)/libshadow_la-isexpired.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='isexpired.c' object='libshadow_la-isexpired.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-isexpired.lo `test -f 'isexpired.c' || echo '$(srcdir)/'`isexpired.c + +libshadow_la-limits.lo: limits.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-limits.lo -MD -MP -MF $(DEPDIR)/libshadow_la-limits.Tpo -c -o libshadow_la-limits.lo `test -f 'limits.c' || echo '$(srcdir)/'`limits.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-limits.Tpo $(DEPDIR)/libshadow_la-limits.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='limits.c' object='libshadow_la-limits.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-limits.lo `test -f 'limits.c' || echo '$(srcdir)/'`limits.c + +libshadow_la-list.lo: list.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-list.lo -MD -MP -MF $(DEPDIR)/libshadow_la-list.Tpo -c -o libshadow_la-list.lo `test -f 'list.c' || echo '$(srcdir)/'`list.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-list.Tpo $(DEPDIR)/libshadow_la-list.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='list.c' object='libshadow_la-list.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-list.lo `test -f 'list.c' || echo '$(srcdir)/'`list.c libshadow_la-lockpw.lo: lockpw.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-lockpw.lo -MD -MP -MF $(DEPDIR)/libshadow_la-lockpw.Tpo -c -o libshadow_la-lockpw.lo `test -f 'lockpw.c' || echo '$(srcdir)/'`lockpw.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-lockpw.lo -MD -MP -MF $(DEPDIR)/libshadow_la-lockpw.Tpo -c -o libshadow_la-lockpw.lo `test -f 'lockpw.c' || echo '$(srcdir)/'`lockpw.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-lockpw.Tpo $(DEPDIR)/libshadow_la-lockpw.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lockpw.c' object='libshadow_la-lockpw.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-lockpw.lo `test -f 'lockpw.c' || echo '$(srcdir)/'`lockpw.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-lockpw.lo `test -f 'lockpw.c' || echo '$(srcdir)/'`lockpw.c + +libshadow_la-loginprompt.lo: loginprompt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-loginprompt.lo -MD -MP -MF $(DEPDIR)/libshadow_la-loginprompt.Tpo -c -o libshadow_la-loginprompt.lo `test -f 'loginprompt.c' || echo '$(srcdir)/'`loginprompt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-loginprompt.Tpo $(DEPDIR)/libshadow_la-loginprompt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='loginprompt.c' object='libshadow_la-loginprompt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-loginprompt.lo `test -f 'loginprompt.c' || echo '$(srcdir)/'`loginprompt.c + +libshadow_la-mail.lo: mail.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-mail.lo -MD -MP -MF $(DEPDIR)/libshadow_la-mail.Tpo -c -o libshadow_la-mail.lo `test -f 'mail.c' || echo '$(srcdir)/'`mail.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-mail.Tpo $(DEPDIR)/libshadow_la-mail.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mail.c' object='libshadow_la-mail.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-mail.lo `test -f 'mail.c' || echo '$(srcdir)/'`mail.c + +libshadow_la-memzero.lo: memzero.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-memzero.lo -MD -MP -MF $(DEPDIR)/libshadow_la-memzero.Tpo -c -o libshadow_la-memzero.lo `test -f 'memzero.c' || echo '$(srcdir)/'`memzero.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-memzero.Tpo $(DEPDIR)/libshadow_la-memzero.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='memzero.c' object='libshadow_la-memzero.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-memzero.lo `test -f 'memzero.c' || echo '$(srcdir)/'`memzero.c + +libshadow_la-motd.lo: motd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-motd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-motd.Tpo -c -o libshadow_la-motd.lo `test -f 'motd.c' || echo '$(srcdir)/'`motd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-motd.Tpo $(DEPDIR)/libshadow_la-motd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='motd.c' object='libshadow_la-motd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-motd.lo `test -f 'motd.c' || echo '$(srcdir)/'`motd.c + +libshadow_la-myname.lo: myname.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-myname.lo -MD -MP -MF $(DEPDIR)/libshadow_la-myname.Tpo -c -o libshadow_la-myname.lo `test -f 'myname.c' || echo '$(srcdir)/'`myname.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-myname.Tpo $(DEPDIR)/libshadow_la-myname.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='myname.c' object='libshadow_la-myname.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-myname.lo `test -f 'myname.c' || echo '$(srcdir)/'`myname.c libshadow_la-nss.lo: nss.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-nss.lo -MD -MP -MF $(DEPDIR)/libshadow_la-nss.Tpo -c -o libshadow_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-nss.lo -MD -MP -MF $(DEPDIR)/libshadow_la-nss.Tpo -c -o libshadow_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-nss.Tpo $(DEPDIR)/libshadow_la-nss.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nss.c' object='libshadow_la-nss.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c libshadow_la-nscd.lo: nscd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-nscd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-nscd.Tpo -c -o libshadow_la-nscd.lo `test -f 'nscd.c' || echo '$(srcdir)/'`nscd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-nscd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-nscd.Tpo -c -o libshadow_la-nscd.lo `test -f 'nscd.c' || echo '$(srcdir)/'`nscd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-nscd.Tpo $(DEPDIR)/libshadow_la-nscd.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nscd.c' object='libshadow_la-nscd.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-nscd.lo `test -f 'nscd.c' || echo '$(srcdir)/'`nscd.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-nscd.lo `test -f 'nscd.c' || echo '$(srcdir)/'`nscd.c -libshadow_la-shadowlog.lo: shadowlog.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowlog.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowlog.Tpo -c -o libshadow_la-shadowlog.lo `test -f 'shadowlog.c' || echo '$(srcdir)/'`shadowlog.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowlog.Tpo $(DEPDIR)/libshadow_la-shadowlog.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadowlog.c' object='libshadow_la-shadowlog.lo' libtool=yes @AMDEPBACKSLASH@ +libshadow_la-obscure.lo: obscure.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-obscure.lo -MD -MP -MF $(DEPDIR)/libshadow_la-obscure.Tpo -c -o libshadow_la-obscure.lo `test -f 'obscure.c' || echo '$(srcdir)/'`obscure.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-obscure.Tpo $(DEPDIR)/libshadow_la-obscure.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='obscure.c' object='libshadow_la-obscure.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowlog.lo `test -f 'shadowlog.c' || echo '$(srcdir)/'`shadowlog.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-obscure.lo `test -f 'obscure.c' || echo '$(srcdir)/'`obscure.c -libshadow_la-sssd.lo: sssd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-sssd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sssd.Tpo -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sssd.Tpo $(DEPDIR)/libshadow_la-sssd.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sssd.c' object='libshadow_la-sssd.lo' libtool=yes @AMDEPBACKSLASH@ +libshadow_la-pam_pass.lo: pam_pass.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pam_pass.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pam_pass.Tpo -c -o libshadow_la-pam_pass.lo `test -f 'pam_pass.c' || echo '$(srcdir)/'`pam_pass.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pam_pass.Tpo $(DEPDIR)/libshadow_la-pam_pass.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pam_pass.c' object='libshadow_la-pam_pass.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pam_pass.lo `test -f 'pam_pass.c' || echo '$(srcdir)/'`pam_pass.c + +libshadow_la-pam_pass_non_interactive.lo: pam_pass_non_interactive.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pam_pass_non_interactive.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pam_pass_non_interactive.Tpo -c -o libshadow_la-pam_pass_non_interactive.lo `test -f 'pam_pass_non_interactive.c' || echo '$(srcdir)/'`pam_pass_non_interactive.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pam_pass_non_interactive.Tpo $(DEPDIR)/libshadow_la-pam_pass_non_interactive.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pam_pass_non_interactive.c' object='libshadow_la-pam_pass_non_interactive.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pam_pass_non_interactive.lo `test -f 'pam_pass_non_interactive.c' || echo '$(srcdir)/'`pam_pass_non_interactive.c libshadow_la-port.lo: port.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-port.lo -MD -MP -MF $(DEPDIR)/libshadow_la-port.Tpo -c -o libshadow_la-port.lo `test -f 'port.c' || echo '$(srcdir)/'`port.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-port.lo -MD -MP -MF $(DEPDIR)/libshadow_la-port.Tpo -c -o libshadow_la-port.lo `test -f 'port.c' || echo '$(srcdir)/'`port.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-port.Tpo $(DEPDIR)/libshadow_la-port.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='port.c' object='libshadow_la-port.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-port.lo `test -f 'port.c' || echo '$(srcdir)/'`port.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-port.lo `test -f 'port.c' || echo '$(srcdir)/'`port.c + +libshadow_la-prefix_flag.lo: prefix_flag.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-prefix_flag.lo -MD -MP -MF $(DEPDIR)/libshadow_la-prefix_flag.Tpo -c -o libshadow_la-prefix_flag.lo `test -f 'prefix_flag.c' || echo '$(srcdir)/'`prefix_flag.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-prefix_flag.Tpo $(DEPDIR)/libshadow_la-prefix_flag.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='prefix_flag.c' object='libshadow_la-prefix_flag.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-prefix_flag.lo `test -f 'prefix_flag.c' || echo '$(srcdir)/'`prefix_flag.c libshadow_la-pwauth.lo: pwauth.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-pwauth.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwauth.Tpo -c -o libshadow_la-pwauth.lo `test -f 'pwauth.c' || echo '$(srcdir)/'`pwauth.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pwauth.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwauth.Tpo -c -o libshadow_la-pwauth.lo `test -f 'pwauth.c' || echo '$(srcdir)/'`pwauth.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pwauth.Tpo $(DEPDIR)/libshadow_la-pwauth.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwauth.c' object='libshadow_la-pwauth.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwauth.lo `test -f 'pwauth.c' || echo '$(srcdir)/'`pwauth.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwauth.lo `test -f 'pwauth.c' || echo '$(srcdir)/'`pwauth.c libshadow_la-pwio.lo: pwio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-pwio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwio.Tpo -c -o libshadow_la-pwio.lo `test -f 'pwio.c' || echo '$(srcdir)/'`pwio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pwio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwio.Tpo -c -o libshadow_la-pwio.lo `test -f 'pwio.c' || echo '$(srcdir)/'`pwio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pwio.Tpo $(DEPDIR)/libshadow_la-pwio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwio.c' object='libshadow_la-pwio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwio.lo `test -f 'pwio.c' || echo '$(srcdir)/'`pwio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwio.lo `test -f 'pwio.c' || echo '$(srcdir)/'`pwio.c + +libshadow_la-pwd_init.lo: pwd_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pwd_init.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwd_init.Tpo -c -o libshadow_la-pwd_init.lo `test -f 'pwd_init.c' || echo '$(srcdir)/'`pwd_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pwd_init.Tpo $(DEPDIR)/libshadow_la-pwd_init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwd_init.c' object='libshadow_la-pwd_init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwd_init.lo `test -f 'pwd_init.c' || echo '$(srcdir)/'`pwd_init.c + +libshadow_la-pwd2spwd.lo: pwd2spwd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pwd2spwd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwd2spwd.Tpo -c -o libshadow_la-pwd2spwd.lo `test -f 'pwd2spwd.c' || echo '$(srcdir)/'`pwd2spwd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pwd2spwd.Tpo $(DEPDIR)/libshadow_la-pwd2spwd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwd2spwd.c' object='libshadow_la-pwd2spwd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwd2spwd.lo `test -f 'pwd2spwd.c' || echo '$(srcdir)/'`pwd2spwd.c + +libshadow_la-pwdcheck.lo: pwdcheck.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pwdcheck.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwdcheck.Tpo -c -o libshadow_la-pwdcheck.lo `test -f 'pwdcheck.c' || echo '$(srcdir)/'`pwdcheck.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pwdcheck.Tpo $(DEPDIR)/libshadow_la-pwdcheck.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwdcheck.c' object='libshadow_la-pwdcheck.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwdcheck.lo `test -f 'pwdcheck.c' || echo '$(srcdir)/'`pwdcheck.c libshadow_la-pwmem.lo: pwmem.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-pwmem.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwmem.Tpo -c -o libshadow_la-pwmem.lo `test -f 'pwmem.c' || echo '$(srcdir)/'`pwmem.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-pwmem.lo -MD -MP -MF $(DEPDIR)/libshadow_la-pwmem.Tpo -c -o libshadow_la-pwmem.lo `test -f 'pwmem.c' || echo '$(srcdir)/'`pwmem.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-pwmem.Tpo $(DEPDIR)/libshadow_la-pwmem.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pwmem.c' object='libshadow_la-pwmem.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwmem.lo `test -f 'pwmem.c' || echo '$(srcdir)/'`pwmem.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwmem.lo `test -f 'pwmem.c' || echo '$(srcdir)/'`pwmem.c + +libshadow_la-remove_tree.lo: remove_tree.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-remove_tree.lo -MD -MP -MF $(DEPDIR)/libshadow_la-remove_tree.Tpo -c -o libshadow_la-remove_tree.lo `test -f 'remove_tree.c' || echo '$(srcdir)/'`remove_tree.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-remove_tree.Tpo $(DEPDIR)/libshadow_la-remove_tree.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='remove_tree.c' object='libshadow_la-remove_tree.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-remove_tree.lo `test -f 'remove_tree.c' || echo '$(srcdir)/'`remove_tree.c + +libshadow_la-rlogin.lo: rlogin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-rlogin.lo -MD -MP -MF $(DEPDIR)/libshadow_la-rlogin.Tpo -c -o libshadow_la-rlogin.lo `test -f 'rlogin.c' || echo '$(srcdir)/'`rlogin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-rlogin.Tpo $(DEPDIR)/libshadow_la-rlogin.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rlogin.c' object='libshadow_la-rlogin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-rlogin.lo `test -f 'rlogin.c' || echo '$(srcdir)/'`rlogin.c + +libshadow_la-root_flag.lo: root_flag.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-root_flag.lo -MD -MP -MF $(DEPDIR)/libshadow_la-root_flag.Tpo -c -o libshadow_la-root_flag.lo `test -f 'root_flag.c' || echo '$(srcdir)/'`root_flag.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-root_flag.Tpo $(DEPDIR)/libshadow_la-root_flag.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='root_flag.c' object='libshadow_la-root_flag.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-root_flag.lo `test -f 'root_flag.c' || echo '$(srcdir)/'`root_flag.c libshadow_la-run_part.lo: run_part.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-run_part.lo -MD -MP -MF $(DEPDIR)/libshadow_la-run_part.Tpo -c -o libshadow_la-run_part.lo `test -f 'run_part.c' || echo '$(srcdir)/'`run_part.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-run_part.lo -MD -MP -MF $(DEPDIR)/libshadow_la-run_part.Tpo -c -o libshadow_la-run_part.lo `test -f 'run_part.c' || echo '$(srcdir)/'`run_part.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-run_part.Tpo $(DEPDIR)/libshadow_la-run_part.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='run_part.c' object='libshadow_la-run_part.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-run_part.lo `test -f 'run_part.c' || echo '$(srcdir)/'`run_part.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-run_part.lo `test -f 'run_part.c' || echo '$(srcdir)/'`run_part.c -libshadow_la-subordinateio.lo: subordinateio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-subordinateio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-subordinateio.Tpo -c -o libshadow_la-subordinateio.lo `test -f 'subordinateio.c' || echo '$(srcdir)/'`subordinateio.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-subordinateio.Tpo $(DEPDIR)/libshadow_la-subordinateio.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subordinateio.c' object='libshadow_la-subordinateio.lo' libtool=yes @AMDEPBACKSLASH@ +libshadow_la-salt.lo: salt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-salt.lo -MD -MP -MF $(DEPDIR)/libshadow_la-salt.Tpo -c -o libshadow_la-salt.lo `test -f 'salt.c' || echo '$(srcdir)/'`salt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-salt.Tpo $(DEPDIR)/libshadow_la-salt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='salt.c' object='libshadow_la-salt.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-subordinateio.lo `test -f 'subordinateio.c' || echo '$(srcdir)/'`subordinateio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-salt.lo `test -f 'salt.c' || echo '$(srcdir)/'`salt.c libshadow_la-selinux.lo: selinux.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-selinux.lo -MD -MP -MF $(DEPDIR)/libshadow_la-selinux.Tpo -c -o libshadow_la-selinux.lo `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-selinux.lo -MD -MP -MF $(DEPDIR)/libshadow_la-selinux.Tpo -c -o libshadow_la-selinux.lo `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-selinux.Tpo $(DEPDIR)/libshadow_la-selinux.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='selinux.c' object='libshadow_la-selinux.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-selinux.lo `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-selinux.lo `test -f 'selinux.c' || echo '$(srcdir)/'`selinux.c libshadow_la-semanage.lo: semanage.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-semanage.lo -MD -MP -MF $(DEPDIR)/libshadow_la-semanage.Tpo -c -o libshadow_la-semanage.lo `test -f 'semanage.c' || echo '$(srcdir)/'`semanage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-semanage.lo -MD -MP -MF $(DEPDIR)/libshadow_la-semanage.Tpo -c -o libshadow_la-semanage.lo `test -f 'semanage.c' || echo '$(srcdir)/'`semanage.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-semanage.Tpo $(DEPDIR)/libshadow_la-semanage.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='semanage.c' object='libshadow_la-semanage.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-semanage.lo `test -f 'semanage.c' || echo '$(srcdir)/'`semanage.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-semanage.lo `test -f 'semanage.c' || echo '$(srcdir)/'`semanage.c + +libshadow_la-setugid.lo: setugid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-setugid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-setugid.Tpo -c -o libshadow_la-setugid.lo `test -f 'setugid.c' || echo '$(srcdir)/'`setugid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-setugid.Tpo $(DEPDIR)/libshadow_la-setugid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='setugid.c' object='libshadow_la-setugid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-setugid.lo `test -f 'setugid.c' || echo '$(srcdir)/'`setugid.c + +libshadow_la-setupenv.lo: setupenv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-setupenv.lo -MD -MP -MF $(DEPDIR)/libshadow_la-setupenv.Tpo -c -o libshadow_la-setupenv.lo `test -f 'setupenv.c' || echo '$(srcdir)/'`setupenv.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-setupenv.Tpo $(DEPDIR)/libshadow_la-setupenv.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='setupenv.c' object='libshadow_la-setupenv.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-setupenv.lo `test -f 'setupenv.c' || echo '$(srcdir)/'`setupenv.c libshadow_la-sgetgrent.lo: sgetgrent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetgrent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetgrent.Tpo -c -o libshadow_la-sgetgrent.lo `test -f 'sgetgrent.c' || echo '$(srcdir)/'`sgetgrent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetgrent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetgrent.Tpo -c -o libshadow_la-sgetgrent.lo `test -f 'sgetgrent.c' || echo '$(srcdir)/'`sgetgrent.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgetgrent.Tpo $(DEPDIR)/libshadow_la-sgetgrent.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgetgrent.c' object='libshadow_la-sgetgrent.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetgrent.lo `test -f 'sgetgrent.c' || echo '$(srcdir)/'`sgetgrent.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetgrent.lo `test -f 'sgetgrent.c' || echo '$(srcdir)/'`sgetgrent.c libshadow_la-sgetpwent.lo: sgetpwent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetpwent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetpwent.Tpo -c -o libshadow_la-sgetpwent.lo `test -f 'sgetpwent.c' || echo '$(srcdir)/'`sgetpwent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetpwent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetpwent.Tpo -c -o libshadow_la-sgetpwent.lo `test -f 'sgetpwent.c' || echo '$(srcdir)/'`sgetpwent.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgetpwent.Tpo $(DEPDIR)/libshadow_la-sgetpwent.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgetpwent.c' object='libshadow_la-sgetpwent.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetpwent.lo `test -f 'sgetpwent.c' || echo '$(srcdir)/'`sgetpwent.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetpwent.lo `test -f 'sgetpwent.c' || echo '$(srcdir)/'`sgetpwent.c libshadow_la-sgetspent.lo: sgetspent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetspent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetspent.Tpo -c -o libshadow_la-sgetspent.lo `test -f 'sgetspent.c' || echo '$(srcdir)/'`sgetspent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetspent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetspent.Tpo -c -o libshadow_la-sgetspent.lo `test -f 'sgetspent.c' || echo '$(srcdir)/'`sgetspent.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgetspent.Tpo $(DEPDIR)/libshadow_la-sgetspent.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgetspent.c' object='libshadow_la-sgetspent.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetspent.lo `test -f 'sgetspent.c' || echo '$(srcdir)/'`sgetspent.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetspent.lo `test -f 'sgetspent.c' || echo '$(srcdir)/'`sgetspent.c libshadow_la-sgroupio.lo: sgroupio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-sgroupio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgroupio.Tpo -c -o libshadow_la-sgroupio.lo `test -f 'sgroupio.c' || echo '$(srcdir)/'`sgroupio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgroupio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgroupio.Tpo -c -o libshadow_la-sgroupio.lo `test -f 'sgroupio.c' || echo '$(srcdir)/'`sgroupio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgroupio.Tpo $(DEPDIR)/libshadow_la-sgroupio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgroupio.c' object='libshadow_la-sgroupio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgroupio.lo `test -f 'sgroupio.c' || echo '$(srcdir)/'`sgroupio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgroupio.lo `test -f 'sgroupio.c' || echo '$(srcdir)/'`sgroupio.c libshadow_la-shadow.lo: shadow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-shadow.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadow.Tpo -c -o libshadow_la-shadow.lo `test -f 'shadow.c' || echo '$(srcdir)/'`shadow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadow.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadow.Tpo -c -o libshadow_la-shadow.lo `test -f 'shadow.c' || echo '$(srcdir)/'`shadow.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadow.Tpo $(DEPDIR)/libshadow_la-shadow.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow.c' object='libshadow_la-shadow.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadow.lo `test -f 'shadow.c' || echo '$(srcdir)/'`shadow.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadow.lo `test -f 'shadow.c' || echo '$(srcdir)/'`shadow.c libshadow_la-shadowio.lo: shadowio.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowio.Tpo -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowio.Tpo -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowio.Tpo $(DEPDIR)/libshadow_la-shadowio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadowio.c' object='libshadow_la-shadowio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c + +libshadow_la-shadowlog.lo: shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowlog.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowlog.Tpo -c -o libshadow_la-shadowlog.lo `test -f 'shadowlog.c' || echo '$(srcdir)/'`shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowlog.Tpo $(DEPDIR)/libshadow_la-shadowlog.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadowlog.c' object='libshadow_la-shadowlog.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowlog.lo `test -f 'shadowlog.c' || echo '$(srcdir)/'`shadowlog.c libshadow_la-shadowmem.lo: shadowmem.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowmem.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowmem.Tpo -c -o libshadow_la-shadowmem.lo `test -f 'shadowmem.c' || echo '$(srcdir)/'`shadowmem.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowmem.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowmem.Tpo -c -o libshadow_la-shadowmem.lo `test -f 'shadowmem.c' || echo '$(srcdir)/'`shadowmem.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowmem.Tpo $(DEPDIR)/libshadow_la-shadowmem.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadowmem.c' object='libshadow_la-shadowmem.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowmem.lo `test -f 'shadowmem.c' || echo '$(srcdir)/'`shadowmem.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowmem.lo `test -f 'shadowmem.c' || echo '$(srcdir)/'`shadowmem.c + +libshadow_la-shell.lo: shell.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shell.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shell.Tpo -c -o libshadow_la-shell.lo `test -f 'shell.c' || echo '$(srcdir)/'`shell.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shell.Tpo $(DEPDIR)/libshadow_la-shell.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shell.c' object='libshadow_la-shell.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-shell.lo `test -f 'shell.c' || echo '$(srcdir)/'`shell.c libshadow_la-spawn.lo: spawn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-spawn.lo -MD -MP -MF $(DEPDIR)/libshadow_la-spawn.Tpo -c -o libshadow_la-spawn.lo `test -f 'spawn.c' || echo '$(srcdir)/'`spawn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-spawn.lo -MD -MP -MF $(DEPDIR)/libshadow_la-spawn.Tpo -c -o libshadow_la-spawn.lo `test -f 'spawn.c' || echo '$(srcdir)/'`spawn.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-spawn.Tpo $(DEPDIR)/libshadow_la-spawn.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='spawn.c' object='libshadow_la-spawn.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-spawn.lo `test -f 'spawn.c' || echo '$(srcdir)/'`spawn.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-spawn.lo `test -f 'spawn.c' || echo '$(srcdir)/'`spawn.c + +libshadow_la-sssd.lo: sssd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sssd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sssd.Tpo -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sssd.Tpo $(DEPDIR)/libshadow_la-sssd.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sssd.c' object='libshadow_la-sssd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c + +string/libshadow_la-sprintf.lo: string/sprintf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-sprintf.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-sprintf.Tpo -c -o string/libshadow_la-sprintf.lo `test -f 'string/sprintf.c' || echo '$(srcdir)/'`string/sprintf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/$(DEPDIR)/libshadow_la-sprintf.Tpo string/$(DEPDIR)/libshadow_la-sprintf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/sprintf.c' object='string/libshadow_la-sprintf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-sprintf.lo `test -f 'string/sprintf.c' || echo '$(srcdir)/'`string/sprintf.c + +string/libshadow_la-stpecpy.lo: string/stpecpy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-stpecpy.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-stpecpy.Tpo -c -o string/libshadow_la-stpecpy.lo `test -f 'string/stpecpy.c' || echo '$(srcdir)/'`string/stpecpy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/$(DEPDIR)/libshadow_la-stpecpy.Tpo string/$(DEPDIR)/libshadow_la-stpecpy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/stpecpy.c' object='string/libshadow_la-stpecpy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-stpecpy.lo `test -f 'string/stpecpy.c' || echo '$(srcdir)/'`string/stpecpy.c + +string/libshadow_la-stpeprintf.lo: string/stpeprintf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-stpeprintf.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-stpeprintf.Tpo -c -o string/libshadow_la-stpeprintf.lo `test -f 'string/stpeprintf.c' || echo '$(srcdir)/'`string/stpeprintf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/$(DEPDIR)/libshadow_la-stpeprintf.Tpo string/$(DEPDIR)/libshadow_la-stpeprintf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/stpeprintf.c' object='string/libshadow_la-stpeprintf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-stpeprintf.lo `test -f 'string/stpeprintf.c' || echo '$(srcdir)/'`string/stpeprintf.c + +string/libshadow_la-strftime.lo: string/strftime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-strftime.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-strftime.Tpo -c -o string/libshadow_la-strftime.lo `test -f 'string/strftime.c' || echo '$(srcdir)/'`string/strftime.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/$(DEPDIR)/libshadow_la-strftime.Tpo string/$(DEPDIR)/libshadow_la-strftime.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strftime.c' object='string/libshadow_la-strftime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-strftime.lo `test -f 'string/strftime.c' || echo '$(srcdir)/'`string/strftime.c + +string/libshadow_la-strtcpy.lo: string/strtcpy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-strtcpy.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-strtcpy.Tpo -c -o string/libshadow_la-strtcpy.lo `test -f 'string/strtcpy.c' || echo '$(srcdir)/'`string/strtcpy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/$(DEPDIR)/libshadow_la-strtcpy.Tpo string/$(DEPDIR)/libshadow_la-strtcpy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strtcpy.c' object='string/libshadow_la-strtcpy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-strtcpy.lo `test -f 'string/strtcpy.c' || echo '$(srcdir)/'`string/strtcpy.c + +libshadow_la-strtoday.lo: strtoday.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-strtoday.lo -MD -MP -MF $(DEPDIR)/libshadow_la-strtoday.Tpo -c -o libshadow_la-strtoday.lo `test -f 'strtoday.c' || echo '$(srcdir)/'`strtoday.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-strtoday.Tpo $(DEPDIR)/libshadow_la-strtoday.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='strtoday.c' object='libshadow_la-strtoday.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-strtoday.lo `test -f 'strtoday.c' || echo '$(srcdir)/'`strtoday.c -libshadow_la-utent.lo: utent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-utent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-utent.Tpo -c -o libshadow_la-utent.lo `test -f 'utent.c' || echo '$(srcdir)/'`utent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-utent.Tpo $(DEPDIR)/libshadow_la-utent.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utent.c' object='libshadow_la-utent.lo' libtool=yes @AMDEPBACKSLASH@ +libshadow_la-sub.lo: sub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sub.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sub.Tpo -c -o libshadow_la-sub.lo `test -f 'sub.c' || echo '$(srcdir)/'`sub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sub.Tpo $(DEPDIR)/libshadow_la-sub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sub.c' object='libshadow_la-sub.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-utent.lo `test -f 'utent.c' || echo '$(srcdir)/'`utent.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sub.lo `test -f 'sub.c' || echo '$(srcdir)/'`sub.c + +libshadow_la-subordinateio.lo: subordinateio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-subordinateio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-subordinateio.Tpo -c -o libshadow_la-subordinateio.lo `test -f 'subordinateio.c' || echo '$(srcdir)/'`subordinateio.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-subordinateio.Tpo $(DEPDIR)/libshadow_la-subordinateio.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='subordinateio.c' object='libshadow_la-subordinateio.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-subordinateio.lo `test -f 'subordinateio.c' || echo '$(srcdir)/'`subordinateio.c + +libshadow_la-sulog.lo: sulog.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sulog.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sulog.Tpo -c -o libshadow_la-sulog.lo `test -f 'sulog.c' || echo '$(srcdir)/'`sulog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sulog.Tpo $(DEPDIR)/libshadow_la-sulog.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sulog.c' object='libshadow_la-sulog.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sulog.lo `test -f 'sulog.c' || echo '$(srcdir)/'`sulog.c + +time/libshadow_la-day_to_str.lo: time/day_to_str.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT time/libshadow_la-day_to_str.lo -MD -MP -MF time/$(DEPDIR)/libshadow_la-day_to_str.Tpo -c -o time/libshadow_la-day_to_str.lo `test -f 'time/day_to_str.c' || echo '$(srcdir)/'`time/day_to_str.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) time/$(DEPDIR)/libshadow_la-day_to_str.Tpo time/$(DEPDIR)/libshadow_la-day_to_str.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='time/day_to_str.c' object='time/libshadow_la-day_to_str.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o time/libshadow_la-day_to_str.lo `test -f 'time/day_to_str.c' || echo '$(srcdir)/'`time/day_to_str.c + +libshadow_la-ttytype.lo: ttytype.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-ttytype.lo -MD -MP -MF $(DEPDIR)/libshadow_la-ttytype.Tpo -c -o libshadow_la-ttytype.lo `test -f 'ttytype.c' || echo '$(srcdir)/'`ttytype.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-ttytype.Tpo $(DEPDIR)/libshadow_la-ttytype.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ttytype.c' object='libshadow_la-ttytype.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-ttytype.lo `test -f 'ttytype.c' || echo '$(srcdir)/'`ttytype.c + +libshadow_la-tz.lo: tz.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-tz.lo -MD -MP -MF $(DEPDIR)/libshadow_la-tz.Tpo -c -o libshadow_la-tz.lo `test -f 'tz.c' || echo '$(srcdir)/'`tz.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-tz.Tpo $(DEPDIR)/libshadow_la-tz.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tz.c' object='libshadow_la-tz.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-tz.lo `test -f 'tz.c' || echo '$(srcdir)/'`tz.c + +libshadow_la-ulimit.lo: ulimit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-ulimit.lo -MD -MP -MF $(DEPDIR)/libshadow_la-ulimit.Tpo -c -o libshadow_la-ulimit.lo `test -f 'ulimit.c' || echo '$(srcdir)/'`ulimit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-ulimit.Tpo $(DEPDIR)/libshadow_la-ulimit.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ulimit.c' object='libshadow_la-ulimit.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-ulimit.lo `test -f 'ulimit.c' || echo '$(srcdir)/'`ulimit.c + +libshadow_la-user_busy.lo: user_busy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-user_busy.lo -MD -MP -MF $(DEPDIR)/libshadow_la-user_busy.Tpo -c -o libshadow_la-user_busy.lo `test -f 'user_busy.c' || echo '$(srcdir)/'`user_busy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-user_busy.Tpo $(DEPDIR)/libshadow_la-user_busy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='user_busy.c' object='libshadow_la-user_busy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-user_busy.lo `test -f 'user_busy.c' || echo '$(srcdir)/'`user_busy.c + +libshadow_la-valid.lo: valid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-valid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-valid.Tpo -c -o libshadow_la-valid.lo `test -f 'valid.c' || echo '$(srcdir)/'`valid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-valid.Tpo $(DEPDIR)/libshadow_la-valid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='valid.c' object='libshadow_la-valid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-valid.lo `test -f 'valid.c' || echo '$(srcdir)/'`valid.c + +libshadow_la-write_full.lo: write_full.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-write_full.lo -MD -MP -MF $(DEPDIR)/libshadow_la-write_full.Tpo -c -o libshadow_la-write_full.lo `test -f 'write_full.c' || echo '$(srcdir)/'`write_full.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-write_full.Tpo $(DEPDIR)/libshadow_la-write_full.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='write_full.c' object='libshadow_la-write_full.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-write_full.lo `test -f 'write_full.c' || echo '$(srcdir)/'`write_full.c + +libshadow_la-xgetpwnam.lo: xgetpwnam.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-xgetpwnam.lo -MD -MP -MF $(DEPDIR)/libshadow_la-xgetpwnam.Tpo -c -o libshadow_la-xgetpwnam.lo `test -f 'xgetpwnam.c' || echo '$(srcdir)/'`xgetpwnam.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-xgetpwnam.Tpo $(DEPDIR)/libshadow_la-xgetpwnam.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xgetpwnam.c' object='libshadow_la-xgetpwnam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-xgetpwnam.lo `test -f 'xgetpwnam.c' || echo '$(srcdir)/'`xgetpwnam.c + +libshadow_la-xprefix_getpwnam.lo: xprefix_getpwnam.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-xprefix_getpwnam.lo -MD -MP -MF $(DEPDIR)/libshadow_la-xprefix_getpwnam.Tpo -c -o libshadow_la-xprefix_getpwnam.lo `test -f 'xprefix_getpwnam.c' || echo '$(srcdir)/'`xprefix_getpwnam.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-xprefix_getpwnam.Tpo $(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xprefix_getpwnam.c' object='libshadow_la-xprefix_getpwnam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-xprefix_getpwnam.lo `test -f 'xprefix_getpwnam.c' || echo '$(srcdir)/'`xprefix_getpwnam.c + +libshadow_la-xgetpwuid.lo: xgetpwuid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-xgetpwuid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-xgetpwuid.Tpo -c -o libshadow_la-xgetpwuid.lo `test -f 'xgetpwuid.c' || echo '$(srcdir)/'`xgetpwuid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-xgetpwuid.Tpo $(DEPDIR)/libshadow_la-xgetpwuid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xgetpwuid.c' object='libshadow_la-xgetpwuid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-xgetpwuid.lo `test -f 'xgetpwuid.c' || echo '$(srcdir)/'`xgetpwuid.c + +libshadow_la-xgetgrnam.lo: xgetgrnam.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-xgetgrnam.lo -MD -MP -MF $(DEPDIR)/libshadow_la-xgetgrnam.Tpo -c -o libshadow_la-xgetgrnam.lo `test -f 'xgetgrnam.c' || echo '$(srcdir)/'`xgetgrnam.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-xgetgrnam.Tpo $(DEPDIR)/libshadow_la-xgetgrnam.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xgetgrnam.c' object='libshadow_la-xgetgrnam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-xgetgrnam.lo `test -f 'xgetgrnam.c' || echo '$(srcdir)/'`xgetgrnam.c + +libshadow_la-xgetgrgid.lo: xgetgrgid.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-xgetgrgid.lo -MD -MP -MF $(DEPDIR)/libshadow_la-xgetgrgid.Tpo -c -o libshadow_la-xgetgrgid.lo `test -f 'xgetgrgid.c' || echo '$(srcdir)/'`xgetgrgid.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-xgetgrgid.Tpo $(DEPDIR)/libshadow_la-xgetgrgid.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xgetgrgid.c' object='libshadow_la-xgetgrgid.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-xgetgrgid.lo `test -f 'xgetgrgid.c' || echo '$(srcdir)/'`xgetgrgid.c + +libshadow_la-xgetspnam.lo: xgetspnam.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-xgetspnam.lo -MD -MP -MF $(DEPDIR)/libshadow_la-xgetspnam.Tpo -c -o libshadow_la-xgetspnam.lo `test -f 'xgetspnam.c' || echo '$(srcdir)/'`xgetspnam.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-xgetspnam.Tpo $(DEPDIR)/libshadow_la-xgetspnam.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xgetspnam.c' object='libshadow_la-xgetspnam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-xgetspnam.lo `test -f 'xgetspnam.c' || echo '$(srcdir)/'`xgetspnam.c + +libshadow_la-yesno.lo: yesno.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-yesno.lo -MD -MP -MF $(DEPDIR)/libshadow_la-yesno.Tpo -c -o libshadow_la-yesno.lo `test -f 'yesno.c' || echo '$(srcdir)/'`yesno.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-yesno.Tpo $(DEPDIR)/libshadow_la-yesno.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='yesno.c' object='libshadow_la-yesno.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-yesno.lo `test -f 'yesno.c' || echo '$(srcdir)/'`yesno.c libshadow_la-tcbfuncs.lo: tcbfuncs.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-tcbfuncs.lo -MD -MP -MF $(DEPDIR)/libshadow_la-tcbfuncs.Tpo -c -o libshadow_la-tcbfuncs.lo `test -f 'tcbfuncs.c' || echo '$(srcdir)/'`tcbfuncs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-tcbfuncs.lo -MD -MP -MF $(DEPDIR)/libshadow_la-tcbfuncs.Tpo -c -o libshadow_la-tcbfuncs.lo `test -f 'tcbfuncs.c' || echo '$(srcdir)/'`tcbfuncs.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-tcbfuncs.Tpo $(DEPDIR)/libshadow_la-tcbfuncs.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tcbfuncs.c' object='libshadow_la-tcbfuncs.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-tcbfuncs.lo `test -f 'tcbfuncs.c' || echo '$(srcdir)/'`tcbfuncs.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-tcbfuncs.lo `test -f 'tcbfuncs.c' || echo '$(srcdir)/'`tcbfuncs.c + +libshadow_la-btrfs.lo: btrfs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-btrfs.lo -MD -MP -MF $(DEPDIR)/libshadow_la-btrfs.Tpo -c -o libshadow_la-btrfs.lo `test -f 'btrfs.c' || echo '$(srcdir)/'`btrfs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-btrfs.Tpo $(DEPDIR)/libshadow_la-btrfs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='btrfs.c' object='libshadow_la-btrfs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-btrfs.lo `test -f 'btrfs.c' || echo '$(srcdir)/'`btrfs.c + +libshadow_la-log.lo: log.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-log.lo -MD -MP -MF $(DEPDIR)/libshadow_la-log.Tpo -c -o libshadow_la-log.lo `test -f 'log.c' || echo '$(srcdir)/'`log.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-log.Tpo $(DEPDIR)/libshadow_la-log.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='log.c' object='libshadow_la-log.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-log.lo `test -f 'log.c' || echo '$(srcdir)/'`log.c + +libshadow_la-logind.lo: logind.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-logind.lo -MD -MP -MF $(DEPDIR)/libshadow_la-logind.Tpo -c -o libshadow_la-logind.lo `test -f 'logind.c' || echo '$(srcdir)/'`logind.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-logind.Tpo $(DEPDIR)/libshadow_la-logind.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='logind.c' object='libshadow_la-logind.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-logind.lo `test -f 'logind.c' || echo '$(srcdir)/'`logind.c + +libshadow_la-utmp.lo: utmp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-utmp.lo -MD -MP -MF $(DEPDIR)/libshadow_la-utmp.Tpo -c -o libshadow_la-utmp.lo `test -f 'utmp.c' || echo '$(srcdir)/'`utmp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-utmp.Tpo $(DEPDIR)/libshadow_la-utmp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='utmp.c' object='libshadow_la-utmp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-utmp.lo `test -f 'utmp.c' || echo '$(srcdir)/'`utmp.c + +libshadow_la-freezero.lo: freezero.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-freezero.lo -MD -MP -MF $(DEPDIR)/libshadow_la-freezero.Tpo -c -o libshadow_la-freezero.lo `test -f 'freezero.c' || echo '$(srcdir)/'`freezero.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-freezero.Tpo $(DEPDIR)/libshadow_la-freezero.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='freezero.c' object='libshadow_la-freezero.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-freezero.lo `test -f 'freezero.c' || echo '$(srcdir)/'`freezero.c + +libshadow_la-readpassphrase.lo: readpassphrase.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-readpassphrase.lo -MD -MP -MF $(DEPDIR)/libshadow_la-readpassphrase.Tpo -c -o libshadow_la-readpassphrase.lo `test -f 'readpassphrase.c' || echo '$(srcdir)/'`readpassphrase.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-readpassphrase.Tpo $(DEPDIR)/libshadow_la-readpassphrase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='readpassphrase.c' object='libshadow_la-readpassphrase.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-readpassphrase.lo `test -f 'readpassphrase.c' || echo '$(srcdir)/'`readpassphrase.c + +.y.c: + $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs + -rm -rf atoi/.libs atoi/_libs + -rm -rf string/.libs string/_libs + -rm -rf time/.libs time/_libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique @@ -916,39 +1839,100 @@ clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f atoi/$(DEPDIR)/$(am__dirstamp) + -rm -f atoi/$(am__dirstamp) + -rm -f string/$(DEPDIR)/$(am__dirstamp) + -rm -f string/$(am__dirstamp) + -rm -f time/$(DEPDIR)/$(am__dirstamp) + -rm -f time/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." + -rm -f getdate.c clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/libshadow_la-commonio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-addgrps.Plo + -rm -f ./$(DEPDIR)/libshadow_la-adds.Plo + -rm -f ./$(DEPDIR)/libshadow_la-age.Plo + -rm -f ./$(DEPDIR)/libshadow_la-agetpass.Plo + -rm -f ./$(DEPDIR)/libshadow_la-alloc.Plo + -rm -f ./$(DEPDIR)/libshadow_la-audit_help.Plo + -rm -f ./$(DEPDIR)/libshadow_la-basename.Plo + -rm -f ./$(DEPDIR)/libshadow_la-bit.Plo + -rm -f ./$(DEPDIR)/libshadow_la-btrfs.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chkname.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chowndir.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chowntty.Plo + -rm -f ./$(DEPDIR)/libshadow_la-cleanup.Plo + -rm -f ./$(DEPDIR)/libshadow_la-cleanup_group.Plo + -rm -f ./$(DEPDIR)/libshadow_la-cleanup_user.Plo + -rm -f ./$(DEPDIR)/libshadow_la-commonio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-console.Plo + -rm -f ./$(DEPDIR)/libshadow_la-copydir.Plo + -rm -f ./$(DEPDIR)/libshadow_la-csrand.Plo -rm -f ./$(DEPDIR)/libshadow_la-encrypt.Plo + -rm -f ./$(DEPDIR)/libshadow_la-env.Plo + -rm -f ./$(DEPDIR)/libshadow_la-failure.Plo + -rm -f ./$(DEPDIR)/libshadow_la-fd.Plo -rm -f ./$(DEPDIR)/libshadow_la-fields.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_gid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_uid.Plo -rm -f ./$(DEPDIR)/libshadow_la-fputsx.Plo + -rm -f ./$(DEPDIR)/libshadow_la-freezero.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_gid.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_pid.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_uid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-getdate.Plo -rm -f ./$(DEPDIR)/libshadow_la-getdef.Plo - -rm -f ./$(DEPDIR)/libshadow_la-getlong.Plo - -rm -f ./$(DEPDIR)/libshadow_la-getulong.Plo + -rm -f ./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-getrange.Plo + -rm -f ./$(DEPDIR)/libshadow_la-gettime.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupmem.Plo -rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo + -rm -f ./$(DEPDIR)/libshadow_la-hushed.Plo + -rm -f ./$(DEPDIR)/libshadow_la-idmapping.Plo + -rm -f ./$(DEPDIR)/libshadow_la-isexpired.Plo + -rm -f ./$(DEPDIR)/libshadow_la-limits.Plo + -rm -f ./$(DEPDIR)/libshadow_la-list.Plo -rm -f ./$(DEPDIR)/libshadow_la-lockpw.Plo + -rm -f ./$(DEPDIR)/libshadow_la-log.Plo + -rm -f ./$(DEPDIR)/libshadow_la-logind.Plo + -rm -f ./$(DEPDIR)/libshadow_la-loginprompt.Plo + -rm -f ./$(DEPDIR)/libshadow_la-mail.Plo + -rm -f ./$(DEPDIR)/libshadow_la-memzero.Plo + -rm -f ./$(DEPDIR)/libshadow_la-motd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-myname.Plo -rm -f ./$(DEPDIR)/libshadow_la-nscd.Plo -rm -f ./$(DEPDIR)/libshadow_la-nss.Plo + -rm -f ./$(DEPDIR)/libshadow_la-obscure.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pam_pass.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pam_pass_non_interactive.Plo -rm -f ./$(DEPDIR)/libshadow_la-port.Plo + -rm -f ./$(DEPDIR)/libshadow_la-prefix_flag.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwauth.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pwd2spwd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pwd_init.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pwdcheck.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwio.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwmem.Plo + -rm -f ./$(DEPDIR)/libshadow_la-readpassphrase.Plo + -rm -f ./$(DEPDIR)/libshadow_la-remove_tree.Plo + -rm -f ./$(DEPDIR)/libshadow_la-rlogin.Plo + -rm -f ./$(DEPDIR)/libshadow_la-root_flag.Plo -rm -f ./$(DEPDIR)/libshadow_la-run_part.Plo + -rm -f ./$(DEPDIR)/libshadow_la-salt.Plo -rm -f ./$(DEPDIR)/libshadow_la-selinux.Plo -rm -f ./$(DEPDIR)/libshadow_la-semanage.Plo + -rm -f ./$(DEPDIR)/libshadow_la-setugid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-setupenv.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetgrent.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetpwent.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetspent.Plo @@ -957,11 +1941,38 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-shadowio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowlog.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowmem.Plo + -rm -f ./$(DEPDIR)/libshadow_la-shell.Plo -rm -f ./$(DEPDIR)/libshadow_la-spawn.Plo -rm -f ./$(DEPDIR)/libshadow_la-sssd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-strtoday.Plo + -rm -f ./$(DEPDIR)/libshadow_la-sub.Plo -rm -f ./$(DEPDIR)/libshadow_la-subordinateio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-sulog.Plo -rm -f ./$(DEPDIR)/libshadow_la-tcbfuncs.Plo - -rm -f ./$(DEPDIR)/libshadow_la-utent.Plo + -rm -f ./$(DEPDIR)/libshadow_la-ttytype.Plo + -rm -f ./$(DEPDIR)/libshadow_la-tz.Plo + -rm -f ./$(DEPDIR)/libshadow_la-ulimit.Plo + -rm -f ./$(DEPDIR)/libshadow_la-user_busy.Plo + -rm -f ./$(DEPDIR)/libshadow_la-utmp.Plo + -rm -f ./$(DEPDIR)/libshadow_la-valid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-write_full.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetgrgid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetgrnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetpwnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetpwuid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetspnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-yesno.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-a2i.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-str2i.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-strtoi.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo + -rm -f string/$(DEPDIR)/libshadow_la-sprintf.Plo + -rm -f string/$(DEPDIR)/libshadow_la-stpecpy.Plo + -rm -f string/$(DEPDIR)/libshadow_la-stpeprintf.Plo + -rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo + -rm -f string/$(DEPDIR)/libshadow_la-strtcpy.Plo + -rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -1007,29 +2018,83 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/libshadow_la-commonio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-addgrps.Plo + -rm -f ./$(DEPDIR)/libshadow_la-adds.Plo + -rm -f ./$(DEPDIR)/libshadow_la-age.Plo + -rm -f ./$(DEPDIR)/libshadow_la-agetpass.Plo + -rm -f ./$(DEPDIR)/libshadow_la-alloc.Plo + -rm -f ./$(DEPDIR)/libshadow_la-audit_help.Plo + -rm -f ./$(DEPDIR)/libshadow_la-basename.Plo + -rm -f ./$(DEPDIR)/libshadow_la-bit.Plo + -rm -f ./$(DEPDIR)/libshadow_la-btrfs.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chkname.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chowndir.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chowntty.Plo + -rm -f ./$(DEPDIR)/libshadow_la-cleanup.Plo + -rm -f ./$(DEPDIR)/libshadow_la-cleanup_group.Plo + -rm -f ./$(DEPDIR)/libshadow_la-cleanup_user.Plo + -rm -f ./$(DEPDIR)/libshadow_la-commonio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-console.Plo + -rm -f ./$(DEPDIR)/libshadow_la-copydir.Plo + -rm -f ./$(DEPDIR)/libshadow_la-csrand.Plo -rm -f ./$(DEPDIR)/libshadow_la-encrypt.Plo + -rm -f ./$(DEPDIR)/libshadow_la-env.Plo + -rm -f ./$(DEPDIR)/libshadow_la-failure.Plo + -rm -f ./$(DEPDIR)/libshadow_la-fd.Plo -rm -f ./$(DEPDIR)/libshadow_la-fields.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_gid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo + -rm -f ./$(DEPDIR)/libshadow_la-find_new_uid.Plo -rm -f ./$(DEPDIR)/libshadow_la-fputsx.Plo + -rm -f ./$(DEPDIR)/libshadow_la-freezero.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_gid.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_pid.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_uid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-getdate.Plo -rm -f ./$(DEPDIR)/libshadow_la-getdef.Plo - -rm -f ./$(DEPDIR)/libshadow_la-getlong.Plo - -rm -f ./$(DEPDIR)/libshadow_la-getulong.Plo + -rm -f ./$(DEPDIR)/libshadow_la-getgr_nam_gid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-getrange.Plo + -rm -f ./$(DEPDIR)/libshadow_la-gettime.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupmem.Plo -rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo + -rm -f ./$(DEPDIR)/libshadow_la-hushed.Plo + -rm -f ./$(DEPDIR)/libshadow_la-idmapping.Plo + -rm -f ./$(DEPDIR)/libshadow_la-isexpired.Plo + -rm -f ./$(DEPDIR)/libshadow_la-limits.Plo + -rm -f ./$(DEPDIR)/libshadow_la-list.Plo -rm -f ./$(DEPDIR)/libshadow_la-lockpw.Plo + -rm -f ./$(DEPDIR)/libshadow_la-log.Plo + -rm -f ./$(DEPDIR)/libshadow_la-logind.Plo + -rm -f ./$(DEPDIR)/libshadow_la-loginprompt.Plo + -rm -f ./$(DEPDIR)/libshadow_la-mail.Plo + -rm -f ./$(DEPDIR)/libshadow_la-memzero.Plo + -rm -f ./$(DEPDIR)/libshadow_la-motd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-myname.Plo -rm -f ./$(DEPDIR)/libshadow_la-nscd.Plo -rm -f ./$(DEPDIR)/libshadow_la-nss.Plo + -rm -f ./$(DEPDIR)/libshadow_la-obscure.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pam_pass.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pam_pass_non_interactive.Plo -rm -f ./$(DEPDIR)/libshadow_la-port.Plo + -rm -f ./$(DEPDIR)/libshadow_la-prefix_flag.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwauth.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pwd2spwd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pwd_init.Plo + -rm -f ./$(DEPDIR)/libshadow_la-pwdcheck.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwio.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwmem.Plo + -rm -f ./$(DEPDIR)/libshadow_la-readpassphrase.Plo + -rm -f ./$(DEPDIR)/libshadow_la-remove_tree.Plo + -rm -f ./$(DEPDIR)/libshadow_la-rlogin.Plo + -rm -f ./$(DEPDIR)/libshadow_la-root_flag.Plo -rm -f ./$(DEPDIR)/libshadow_la-run_part.Plo + -rm -f ./$(DEPDIR)/libshadow_la-salt.Plo -rm -f ./$(DEPDIR)/libshadow_la-selinux.Plo -rm -f ./$(DEPDIR)/libshadow_la-semanage.Plo + -rm -f ./$(DEPDIR)/libshadow_la-setugid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-setupenv.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetgrent.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetpwent.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetspent.Plo @@ -1038,11 +2103,38 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-shadowio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowlog.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowmem.Plo + -rm -f ./$(DEPDIR)/libshadow_la-shell.Plo -rm -f ./$(DEPDIR)/libshadow_la-spawn.Plo -rm -f ./$(DEPDIR)/libshadow_la-sssd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-strtoday.Plo + -rm -f ./$(DEPDIR)/libshadow_la-sub.Plo -rm -f ./$(DEPDIR)/libshadow_la-subordinateio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-sulog.Plo -rm -f ./$(DEPDIR)/libshadow_la-tcbfuncs.Plo - -rm -f ./$(DEPDIR)/libshadow_la-utent.Plo + -rm -f ./$(DEPDIR)/libshadow_la-ttytype.Plo + -rm -f ./$(DEPDIR)/libshadow_la-tz.Plo + -rm -f ./$(DEPDIR)/libshadow_la-ulimit.Plo + -rm -f ./$(DEPDIR)/libshadow_la-user_busy.Plo + -rm -f ./$(DEPDIR)/libshadow_la-utmp.Plo + -rm -f ./$(DEPDIR)/libshadow_la-valid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-write_full.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetgrgid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetgrnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetpwnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetpwuid.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xgetspnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-xprefix_getpwnam.Plo + -rm -f ./$(DEPDIR)/libshadow_la-yesno.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-a2i.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-str2i.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-strtoi.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo + -rm -f string/$(DEPDIR)/libshadow_la-sprintf.Plo + -rm -f string/$(DEPDIR)/libshadow_la-stpecpy.Plo + -rm -f string/$(DEPDIR)/libshadow_la-stpeprintf.Plo + -rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo + -rm -f string/$(DEPDIR)/libshadow_la-strtcpy.Plo + -rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff --git a/lib/addgrps.c b/lib/addgrps.c new file mode 100644 index 0000000..dae3dba --- /dev/null +++ b/lib/addgrps.c @@ -0,0 +1,114 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) + +#include "prototypes.h" +#include "defines.h" + +#include +#include +#include + +#include "alloc.h" +#include "shadowlog.h" + +#ident "$Id$" + +#define SEP ",:" +/* + * Add groups with names from LIST (separated by commas or colons) + * to the supplementary group set. Silently ignore groups which are + * already there. Warning: uses strtok(). + */ +int add_groups (const char *list) +{ + GETGROUPS_T *grouplist; + size_t i; + int ngroups; + bool added; + char *token; + char buf[1024]; + int ret; + FILE *shadow_logfd = log_get_logfd(); + + if (strlen (list) >= sizeof (buf)) { + errno = EINVAL; + return -1; + } + strcpy (buf, list); + + i = 16; + for (;;) { + grouplist = MALLOC(i, GETGROUPS_T); + if (NULL == grouplist) { + return -1; + } + ngroups = getgroups (i, grouplist); + if ( ( (-1 == ngroups) + && (EINVAL != errno)) + || (i > (size_t)ngroups)) { + /* Unexpected failure of getgroups or successful + * reception of the groups */ + break; + } + /* not enough room, so try allocating a larger buffer */ + free (grouplist); + i *= 2; + } + if (ngroups < 0) { + free (grouplist); + return -1; + } + + added = false; + for (token = strtok (buf, SEP); NULL != token; token = strtok (NULL, SEP)) { + struct group *grp; + + grp = getgrnam (token); /* local, no need for xgetgrnam */ + if (NULL == grp) { + fprintf (shadow_logfd, _("Warning: unknown group %s\n"), + token); + continue; + } + + for (i = 0; i < (size_t)ngroups && grouplist[i] != grp->gr_gid; i++); + + if (i < (size_t)ngroups) { + continue; + } + + if (ngroups >= sysconf (_SC_NGROUPS_MAX)) { + fputs (_("Warning: too many groups\n"), shadow_logfd); + break; + } + grouplist = REALLOCF(grouplist, (size_t) ngroups + 1, GETGROUPS_T); + if (grouplist == NULL) { + return -1; + } + grouplist[ngroups] = grp->gr_gid; + ngroups++; + added = true; + } + + if (added) { + ret = setgroups (ngroups, grouplist); + free (grouplist); + return ret; + } + + free (grouplist); + return 0; +} +#else /* HAVE_SETGROUPS && !USE_PAM */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* HAVE_SETGROUPS && !USE_PAM */ + diff --git a/lib/adds.c b/lib/adds.c new file mode 100644 index 0000000..5d8c153 --- /dev/null +++ b/lib/adds.c @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2023, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "adds.h" + +#include + + +extern inline long addsl2(long a, long b); +extern inline long addslN(size_t n, long addend[n]); + +extern inline int cmpl(const void *p1, const void *p2); diff --git a/lib/adds.h b/lib/adds.h new file mode 100644 index 0000000..6544ce5 --- /dev/null +++ b/lib/adds.h @@ -0,0 +1,86 @@ +// SPDX-FileCopyrightText: 2023, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_ADDS_H_ +#define SHADOW_INCLUDE_LIB_ADDS_H_ + + +#include + +#include +#include +#include +#include + +#include "sizeof.h" + + +#define addsl(a, b, ...) \ +({ \ + long addend_[] = {a, b, __VA_ARGS__}; \ + \ + addslN(NITEMS(addend_), addend_); \ +}) + + +inline long addsl2(long a, long b); +inline long addslN(size_t n, long addend[n]); + +inline int cmpl(const void *p1, const void *p2); + + +inline long +addsl2(long a, long b) +{ + if (a > 0 && b > LONG_MAX - a) { + errno = EOVERFLOW; + return LONG_MAX; + } + if (a < 0 && b < LONG_MIN - a) { + errno = EOVERFLOW; + return LONG_MIN; + } + return a + b; +} + + +inline long +addslN(size_t n, long addend[n]) +{ + int e; + + if (n == 0) { + errno = EDOM; + return 0; + } + + e = errno; + while (n > 1) { + qsort(addend, n, sizeof(addend[0]), cmpl); + + errno = 0; + addend[0] = addsl2(addend[0], addend[--n]); + if (errno == EOVERFLOW) + return addend[0]; + } + errno = e; + return addend[0]; +} + + +inline int +cmpl(const void *p1, const void *p2) +{ + const long *l1 = p1; + const long *l2 = p2; + + if (*l1 < *l2) + return -1; + if (*l1 > *l2) + return +1; + return 0; +} + + +#endif // include guard diff --git a/lib/age.c b/lib/age.c new file mode 100644 index 0000000..72a13ea --- /dev/null +++ b/lib/age.c @@ -0,0 +1,181 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include +#include +#include +#include +#include +#include + +#include "adds.h" +#include "defines.h" +#include "exitcodes.h" +#include "prototypes.h" + + +#ident "$Id$" + +#ifndef PASSWD_PROGRAM +#define PASSWD_PROGRAM "/bin/passwd" +#endif +/* + * expire - force password change if password expired + * + * expire() calls /bin/passwd to change the user's password + * if it has expired. + */ +int expire (const struct passwd *pw, /*@null@*/const struct spwd *sp) +{ + int status; + pid_t child; + pid_t pid; + + if (NULL == sp) { + return 0; + } + + /* + * See if the user's password has expired, and if so + * force them to change their password. + */ + + status = isexpired (pw, sp); + switch (status) { + case 0: + return 0; + case 1: + (void) fputs (_("Your password has expired."), stdout); + break; + case 2: + (void) fputs (_("Your password is inactive."), stdout); + break; + case 3: + (void) fputs (_("Your login has expired."), stdout); + break; + } + + /* + * Setting the maximum valid period to less than the minimum + * valid period means that the minimum period will never + * occur while the password is valid, so the user can never + * change that password. + */ + + if ((status > 1) || (sp->sp_max < sp->sp_min)) { + (void) puts (_(" Contact the system administrator.")); + exit (EXIT_FAILURE); + } + (void) puts (_(" Choose a new password.")); + (void) fflush (stdout); + + /* + * Close all the files so that unauthorized access won't + * occur. This needs to be done anyway because those files + * might become stale after "passwd" is executed. + */ + + endspent (); + endpwent (); +#ifdef SHADOWGRP + endsgent (); +#endif + endgrent (); + + /* + * Execute the /bin/passwd command. The exit status will be + * examined to see what the result is. If there are any + * errors the routine will exit. This forces the user to + * change their password before being able to use the account. + */ + + pid = fork (); + if (0 == pid) { + int err; + + /* + * Set the UID to be that of the user. This causes + * passwd to work just like it would had they executed + * it from the command line while logged in. + */ +#if defined(HAVE_INITGROUPS) && ! defined(USE_PAM) + if (setup_uid_gid (pw, false) != 0) +#else + if (setup_uid_gid (pw) != 0) +#endif + { + _exit (126); + } + + (void) execl (PASSWD_PROGRAM, PASSWD_PROGRAM, pw->pw_name, (char *) NULL); + err = errno; + perror ("Can't execute " PASSWD_PROGRAM); + _exit ((ENOENT == err) ? E_CMD_NOTFOUND : E_CMD_NOEXEC); + } else if ((pid_t) -1 == pid) { + perror ("fork"); + exit (EXIT_FAILURE); + } + + while (((child = wait (&status)) != pid) && (child != (pid_t)-1)); + + if ((child == pid) && (0 == status)) { + return 1; + } + + exit (EXIT_FAILURE); + /*@notreached@*/} + +/* + * agecheck - see if warning is needed for password expiration + * + * agecheck sees how many days until the user's password is going + * to expire and warns the user of the pending password expiration. + */ + +void agecheck (/*@null@*/const struct spwd *sp) +{ + long now = time(NULL) / DAY; + long remain; + + if (NULL == sp) { + return; + } + + /* + * The last, max, and warn fields must be supported or the + * warning period cannot be calculated. + */ + + if ( (-1 == sp->sp_lstchg) + || (-1 == sp->sp_max) + || (-1 == sp->sp_warn)) { + return; + } + + if (0 == sp->sp_lstchg) { + (void) puts (_("You must change your password.")); + return; + } + + remain = addsl(sp->sp_lstchg, sp->sp_max, -now); + + if (remain <= sp->sp_warn) { + if (remain > 1) { + (void) printf (_("Your password will expire in %ld days.\n"), + remain); + } else if (1 == remain) { + (void) puts (_("Your password will expire tomorrow.")); + } else if (remain == 0) { + (void) puts (_("Your password will expire today.")); + } + } +} + diff --git a/lib/agetpass.c b/lib/agetpass.c new file mode 100644 index 0000000..5d9f928 --- /dev/null +++ b/lib/agetpass.c @@ -0,0 +1,145 @@ +/* + * SPDX-FileCopyrightText: 2022, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#include "agetpass.h" + +#include +#include +#include +#include + +#ident "$Id$" + +#include "alloc.h" + +#if WITH_LIBBSD == 0 +#include "freezero.h" +#endif /* WITH_LIBBSD */ + + +/* + * SYNOPSIS + * [[gnu::malloc(erase_pass)]] + * char *agetpass(const char *prompt); + * char *agetpass_stdin(); + * + * void erase_pass(char *pass); + * + * ARGUMENTS + * agetpass() + * prompt String to be printed before reading a password. + * + * erase_pass() + * pass password previously returned by agetpass(). + * + * DESCRIPTION + * agetpass() + * This function is very similar to getpass(3). It has several + * advantages compared to getpass(3): + * + * - Instead of using a static buffer, agetpass() allocates memory + * through malloc(3). This makes the function thread-safe, and + * also reduces the visibility of the buffer. + * + * - agetpass() doesn't reallocate internally. Some + * implementations of getpass(3), such as glibc, do that, as a + * consequence of calling getline(3). That's a bug in glibc, + * which allows leaking prefixes of passwords in freed memory. + * + * - agetpass() doesn't overrun the output buffer. If the input + * password is too long, it simply fails. Some implementations + * of getpass(3), share the same bug that gets(3) has. + * + * As soon as possible, the password obtained from agetpass() be + * erased by calling erase_pass(), to avoid possibly leaking the + * password. + * + * agetpass_stdin() + * This function is the same as previous one (agetpass). Just the + * password is read from stdin and terminal is not required. + * + * erase_pass() + * This function first clears the password, by calling + * explicit_bzero(3) (or an equivalent call), and then frees the + * allocated memory by calling free(3). + * + * NULL is a valid input pointer, and in such a case, this call is + * a no-op. + * + * RETURN VALUE + * agetpass() returns a newly allocated buffer containing the + * password on success. On error, errno is set to indicate the + * error, and NULL is returned. + * + * ERRORS + * agetpass() + * This function may fail for any errors that malloc(3) or + * readpassphrase(3) may fail, and in addition it may fail for the + * following errors: + * + * ENOBUFS + * The input password was longer than PASS_MAX. + * + * CAVEATS + * If a password is passed twice to erase_pass(), the behavior is + * undefined. + */ + + +static char * +agetpass_internal(const char *prompt, int flags) +{ + char *pass; + size_t len; + + /* + * Since we want to support passwords upto PASS_MAX, we need + * PASS_MAX bytes for the password itself, and one more byte for + * the terminating '\0'. We also want to detect truncation, and + * readpassphrase(3) doesn't detect it, so we need some trick. + * Let's add one more byte, and if the password uses it, it + * means the introduced password was longer than PASS_MAX. + */ + pass = MALLOC(PASS_MAX + 2, char); + if (pass == NULL) + return NULL; + + if (readpassphrase(prompt, pass, PASS_MAX + 2, flags) == NULL) + goto fail; + + len = strlen(pass); + if (len == PASS_MAX + 1) { + errno = ENOBUFS; + goto fail; + } + + return pass; + +fail: + freezero(pass, PASS_MAX + 2); + return NULL; +} + +char * +agetpass(const char *prompt) +{ + return agetpass_internal(prompt, RPP_REQUIRE_TTY); +} + +char * +agetpass_stdin() +{ + return agetpass_internal(NULL, RPP_STDIN); +} + +void +erase_pass(char *pass) +{ + freezero(pass, PASS_MAX + 2); +} diff --git a/lib/agetpass.h b/lib/agetpass.h new file mode 100644 index 0000000..4a4444e --- /dev/null +++ b/lib/agetpass.h @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2022-2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_AGETPASS_H_ +#define SHADOW_INCLUDE_LIB_AGETPASS_H_ + + +#include + +#include "attr.h" +#include "defines.h" + + +void erase_pass(char *pass); +ATTR_MALLOC(erase_pass) +char *agetpass(const char *prompt); +char *agetpass_stdin(); + + +#endif // include guard diff --git a/lib/alloc.c b/lib/alloc.c new file mode 100644 index 0000000..962f45a --- /dev/null +++ b/lib/alloc.c @@ -0,0 +1,73 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * SPDX-FileCopyrightText: 2023 , Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* Replacements for malloc and strdup with error checking. Too trivial + to be worth copyrighting :-). I did that because a lot of code used + malloc and strdup without checking for NULL pointer, and I like some + message better than a core dump... --marekm + + Yeh, but. Remember that bailing out might leave the system in some + bizarre state. You really want to put in error checking, then add + some back-out failure recovery code. -- jfh */ + +#include + +#ident "$Id$" + +#include "alloc.h" + +#include +#include +#include + +#include "defines.h" +#include "prototypes.h" +#include "shadowlog.h" + + +extern inline void *xmalloc(size_t size); +extern inline void *xmallocarray(size_t nmemb, size_t size); +extern inline void *mallocarray(size_t nmemb, size_t size); +extern inline void *reallocarrayf(void *p, size_t nmemb, size_t size); +extern inline char *xstrdup(const char *str); + + +void * +xcalloc(size_t nmemb, size_t size) +{ + void *p; + + p = calloc(nmemb, size); + if (p == NULL) + goto x; + + return p; + +x: + fprintf(log_get_logfd(), _("%s: %s\n"), + log_get_progname(), strerror(errno)); + exit(13); +} + + +void * +xreallocarray(void *p, size_t nmemb, size_t size) +{ + p = reallocarrayf(p, nmemb, size); + if (p == NULL) + goto x; + + return p; + +x: + fprintf(log_get_logfd(), _("%s: %s\n"), + log_get_progname(), strerror(errno)); + exit(13); +} diff --git a/lib/alloc.h b/lib/alloc.h new file mode 100644 index 0000000..39405a5 --- /dev/null +++ b/lib/alloc.h @@ -0,0 +1,101 @@ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_MALLOC_H_ +#define SHADOW_INCLUDE_LIB_MALLOC_H_ + + +#include + +#include +#include +#include +#include +#include + +#include "attr.h" +#include "defines.h" + + +#define CALLOC(n, type) ((type *) calloc(n, sizeof(type))) +#define XCALLOC(n, type) ((type *) xcalloc(n, sizeof(type))) +#define MALLOC(n, type) ((type *) mallocarray(n, sizeof(type))) +#define XMALLOC(n, type) ((type *) xmallocarray(n, sizeof(type))) + +#define REALLOC(ptr, n, type) \ +( \ + _Generic(ptr, type *: (type *) reallocarray(ptr, n, sizeof(type))) \ +) + +#define REALLOCF(ptr, n, type) \ +( \ + _Generic(ptr, type *: (type *) reallocarrayf(ptr, n, sizeof(type))) \ +) + +#define XREALLOC(ptr, n, type) \ +( \ + _Generic(ptr, type *: (type *) xreallocarray(ptr, n, sizeof(type))) \ +) + + +ATTR_MALLOC(free) +inline void *xmalloc(size_t size); +ATTR_MALLOC(free) +inline void *xmallocarray(size_t nmemb, size_t size); +ATTR_MALLOC(free) +inline void *mallocarray(size_t nmemb, size_t size); +ATTR_MALLOC(free) +inline void *reallocarrayf(void *p, size_t nmemb, size_t size); +ATTR_MALLOC(free) +inline char *xstrdup(const char *str); + +ATTR_MALLOC(free) +void *xcalloc(size_t nmemb, size_t size); +ATTR_MALLOC(free) +void *xreallocarray(void *p, size_t nmemb, size_t size); + + +inline void * +xmalloc(size_t size) +{ + return xmallocarray(1, size); +} + + +inline void * +xmallocarray(size_t nmemb, size_t size) +{ + return xreallocarray(NULL, nmemb, size); +} + + +inline void * +mallocarray(size_t nmemb, size_t size) +{ + return reallocarray(NULL, nmemb, size); +} + + +inline void * +reallocarrayf(void *p, size_t nmemb, size_t size) +{ + void *q; + + q = reallocarray(p, nmemb, size); + + /* realloc(p, 0) is equivalent to free(p); avoid double free. */ + if (q == NULL && nmemb != 0 && size != 0) + free(p); + return q; +} + + +inline char * +xstrdup(const char *str) +{ + return strcpy(XMALLOC(strlen(str) + 1, char), str); +} + + +#endif // include guard diff --git a/lib/atoi/a2i.c b/lib/atoi/a2i.c new file mode 100644 index 0000000..a2cf872 --- /dev/null +++ b/lib/atoi/a2i.c @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "atoi/a2i.h" + + +extern inline int a2sh_c(short *restrict n, const char *s, + const char **restrict endp, int base, short min, short max); +extern inline int a2si_c(int *restrict n, const char *s, + const char **restrict endp, int base, int min, int max); +extern inline int a2sl_c(long *restrict n, const char *s, + const char **restrict endp, int base, long min, long max); +extern inline int a2sll_c(long long *restrict n, const char *s, + const char **restrict endp, int base, long long min, long long max); +extern inline int a2uh_c(unsigned short *restrict n, const char *s, + const char **restrict endp, int base, unsigned short min, + unsigned short max); +extern inline int a2ui_c(unsigned int *restrict n, const char *s, + const char **restrict endp, int base, unsigned int min, unsigned int max); +extern inline int a2ul_c(unsigned long *restrict n, const char *s, + const char **restrict endp, int base, unsigned long min, unsigned long max); +extern inline int a2ull_c(unsigned long long *restrict n, const char *s, + const char **restrict endp, int base, unsigned long long min, + unsigned long long max); + + +extern inline int a2sh_nc(short *restrict n, char *s, + char **restrict endp, int base, short min, short max); +extern inline int a2si_nc(int *restrict n, char *s, + char **restrict endp, int base, int min, int max); +extern inline int a2sl_nc(long *restrict n, char *s, + char **restrict endp, int base, long min, long max); +extern inline int a2sll_nc(long long *restrict n, char *s, + char **restrict endp, int base, long long min, long long max); +extern inline int a2uh_nc(unsigned short *restrict n, char *s, + char **restrict endp, int base, unsigned short min, unsigned short max); +extern inline int a2ui_nc(unsigned int *restrict n, char *s, + char **restrict endp, int base, unsigned int min, unsigned int max); +extern inline int a2ul_nc(unsigned long *restrict n, char *s, + char **restrict endp, int base, unsigned long min, unsigned long max); +extern inline int a2ull_nc(unsigned long long *restrict n, char *s, + char **restrict endp, int base, unsigned long long min, + unsigned long long max); diff --git a/lib/atoi/a2i.h b/lib/atoi/a2i.h new file mode 100644 index 0000000..64f775a --- /dev/null +++ b/lib/atoi/a2i.h @@ -0,0 +1,386 @@ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_H_ +#define SHADOW_INCLUDE_LIB_ATOI_A2I_H_ + + +#include + +#include + +#include "atoi/strtoi.h" +#include "atoi/strtou_noneg.h" +#include "attr.h" + + +/* + * See the manual of these macros in liba2i's documentation: + * + */ + + +#define a2i(TYPE, n, s, ...) \ +( \ + _Generic((void (*)(TYPE, typeof(s))) 0, \ + void (*)(short, const char *): a2sh_c, \ + void (*)(short, const void *): a2sh_c, \ + void (*)(short, char *): a2sh_nc, \ + void (*)(short, void *): a2sh_nc, \ + void (*)(int, const char *): a2si_c, \ + void (*)(int, const void *): a2si_c, \ + void (*)(int, char *): a2si_nc, \ + void (*)(int, void *): a2si_nc, \ + void (*)(long, const char *): a2sl_c, \ + void (*)(long, const void *): a2sl_c, \ + void (*)(long, char *): a2sl_nc, \ + void (*)(long, void *): a2sl_nc, \ + void (*)(long long, const char *): a2sll_c, \ + void (*)(long long, const void *): a2sll_c, \ + void (*)(long long, char *): a2sll_nc, \ + void (*)(long long, void *): a2sll_nc, \ + void (*)(unsigned short, const char *): a2uh_c, \ + void (*)(unsigned short, const void *): a2uh_c, \ + void (*)(unsigned short, char *): a2uh_nc, \ + void (*)(unsigned short, void *): a2uh_nc, \ + void (*)(unsigned int, const char *): a2ui_c, \ + void (*)(unsigned int, const void *): a2ui_c, \ + void (*)(unsigned int, char *): a2ui_nc, \ + void (*)(unsigned int, void *): a2ui_nc, \ + void (*)(unsigned long, const char *): a2ul_c, \ + void (*)(unsigned long, const void *): a2ul_c, \ + void (*)(unsigned long, char *): a2ul_nc, \ + void (*)(unsigned long, void *): a2ul_nc, \ + void (*)(unsigned long long, const char *): a2ull_c, \ + void (*)(unsigned long long, const void *): a2ull_c, \ + void (*)(unsigned long long, char *): a2ull_nc, \ + void (*)(unsigned long long, void *): a2ull_nc \ + )(n, s, __VA_ARGS__) \ +) + + +#define a2sh(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2sh_c, \ + const void *: a2sh_c, \ + char *: a2sh_nc, \ + void *: a2sh_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2si(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2si_c, \ + const void *: a2si_c, \ + char *: a2si_nc, \ + void *: a2si_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2sl(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2sl_c, \ + const void *: a2sl_c, \ + char *: a2sl_nc, \ + void *: a2sl_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2sll(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2sll_c, \ + const void *: a2sll_c, \ + char *: a2sll_nc, \ + void *: a2sll_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2uh(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2uh_c, \ + const void *: a2uh_c, \ + char *: a2uh_nc, \ + void *: a2uh_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2ui(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2ui_c, \ + const void *: a2ui_c, \ + char *: a2ui_nc, \ + void *: a2ui_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2ul(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2ul_c, \ + const void *: a2ul_c, \ + char *: a2ul_nc, \ + void *: a2ul_nc \ + )(n, s, __VA_ARGS__) \ +) + +#define a2ull(n, s, ...) \ +( \ + _Generic(s, \ + const char *: a2ull_c, \ + const void *: a2ull_c, \ + char *: a2ull_nc, \ + void *: a2ull_nc \ + )(n, s, __VA_ARGS__) \ +) + + +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2sh_c(short *restrict n, const char *s, + const char **restrict endp, int base, short min, short max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2si_c(int *restrict n, const char *s, + const char **restrict endp, int base, int min, int max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2sl_c(long *restrict n, const char *s, + const char **restrict endp, int base, long min, long max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2sll_c(long long *restrict n, const char *s, + const char **restrict endp, int base, long long min, long long max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2uh_c(unsigned short *restrict n, const char *s, + const char **restrict endp, int base, unsigned short min, + unsigned short max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2ui_c(unsigned int *restrict n, const char *s, + const char **restrict endp, int base, unsigned int min, unsigned int max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2ul_c(unsigned long *restrict n, const char *s, + const char **restrict endp, int base, unsigned long min, unsigned long max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2ull_c(unsigned long long *restrict n, const char *s, + const char **restrict endp, int base, unsigned long long min, + unsigned long long max); + +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2sh_nc(short *restrict n, char *s, + char **restrict endp, int base, short min, short max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2si_nc(int *restrict n, char *s, + char **restrict endp, int base, int min, int max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2sl_nc(long *restrict n, char *s, + char **restrict endp, int base, long min, long max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2sll_nc(long long *restrict n, char *s, + char **restrict endp, int base, long long min, long long max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2uh_nc(unsigned short *restrict n, char *s, + char **restrict endp, int base, unsigned short min, unsigned short max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2ui_nc(unsigned int *restrict n, char *s, + char **restrict endp, int base, unsigned int min, unsigned int max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2ul_nc(unsigned long *restrict n, char *s, + char **restrict endp, int base, unsigned long min, unsigned long max); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) +inline int a2ull_nc(unsigned long long *restrict n, char *s, + char **restrict endp, int base, unsigned long long min, + unsigned long long max); + + +inline int +a2sh_c(short *restrict n, const char *s, + const char **restrict endp, int base, short min, short max) +{ + return a2sh(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2si_c(int *restrict n, const char *s, + const char **restrict endp, int base, int min, int max) +{ + return a2si(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2sl_c(long *restrict n, const char *s, + const char **restrict endp, int base, long min, long max) +{ + return a2sl(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2sll_c(long long *restrict n, const char *s, + const char **restrict endp, int base, long long min, long long max) +{ + return a2sll(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2uh_c(unsigned short *restrict n, const char *s, + const char **restrict endp, int base, unsigned short min, + unsigned short max) +{ + return a2uh(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2ui_c(unsigned int *restrict n, const char *s, + const char **restrict endp, int base, unsigned int min, unsigned int max) +{ + return a2ui(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2ul_c(unsigned long *restrict n, const char *s, + const char **restrict endp, int base, unsigned long min, unsigned long max) +{ + return a2ul(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2ull_c(unsigned long long *restrict n, const char *s, + const char **restrict endp, int base, unsigned long long min, + unsigned long long max) +{ + return a2ull(n, (char *) s, (char **) endp, base, min, max); +} + + +inline int +a2sh_nc(short *restrict n, char *s, + char **restrict endp, int base, short min, short max) +{ + int status; + + *n = strtoi_(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2si_nc(int *restrict n, char *s, + char **restrict endp, int base, int min, int max) +{ + int status; + + *n = strtoi_(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2sl_nc(long *restrict n, char *s, + char **restrict endp, int base, long min, long max) +{ + int status; + + *n = strtoi_(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2sll_nc(long long *restrict n, char *s, + char **restrict endp, int base, long long min, long long max) +{ + int status; + + *n = strtoi_(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2uh_nc(unsigned short *restrict n, char *s, + char **restrict endp, int base, unsigned short min, + unsigned short max) +{ + int status; + + *n = strtou_noneg(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2ui_nc(unsigned int *restrict n, char *s, + char **restrict endp, int base, unsigned int min, unsigned int max) +{ + int status; + + *n = strtou_noneg(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2ul_nc(unsigned long *restrict n, char *s, + char **restrict endp, int base, unsigned long min, unsigned long max) +{ + int status; + + *n = strtou_noneg(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +inline int +a2ull_nc(unsigned long long *restrict n, char *s, + char **restrict endp, int base, unsigned long long min, + unsigned long long max) +{ + int status; + + *n = strtou_noneg(s, endp, base, min, max, &status); + if (status != 0) { + errno = status; + return -1; + } + return 0; +} + + +#endif // include guard diff --git a/lib/atoi/str2i.c b/lib/atoi/str2i.c new file mode 100644 index 0000000..25ce360 --- /dev/null +++ b/lib/atoi/str2i.c @@ -0,0 +1,18 @@ +// SPDX-FileCopyrightText: 2007-2009, Nicolas François +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "atoi/str2i.h" + + +extern inline int str2sh(short *restrict n, const char *restrict s); +extern inline int str2si(int *restrict n, const char *restrict s); +extern inline int str2sl(long *restrict n, const char *restrict s); +extern inline int str2sll(long long *restrict n, const char *restrict s); +extern inline int str2uh(unsigned short *restrict n, const char *restrict s); +extern inline int str2ui(unsigned int *restrict n, const char *restrict s); +extern inline int str2ul(unsigned long *restrict n, const char *restrict s); +extern inline int str2ull(unsigned long long *restrict n, const char *restrict s); diff --git a/lib/atoi/str2i.h b/lib/atoi/str2i.h new file mode 100644 index 0000000..b3ded03 --- /dev/null +++ b/lib/atoi/str2i.h @@ -0,0 +1,108 @@ +// SPDX-FileCopyrightText: 2007-2009, Nicolas François +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_H_ +#define SHADOW_INCLUDE_LIB_ATOI_STR2I_H_ + + +#include + +#include +#include + +#include "atoi/a2i.h" +#include "attr.h" + + +#define str2i(TYPE, ...) \ +( \ + _Generic((TYPE) 0, \ + short: str2sh, \ + int: str2si, \ + long: str2sl, \ + long long: str2sll, \ + unsigned short: str2uh, \ + unsigned int: str2ui, \ + unsigned long: str2ul, \ + unsigned long long: str2ull \ + )(__VA_ARGS__) \ +) + + +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2sh(short *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2si(int *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2sl(long *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2sll(long long *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2uh(unsigned short *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2ui(unsigned int *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2ul(unsigned long *restrict n, const char *restrict s); +ATTR_STRING(2) ATTR_ACCESS(write_only, 1) +inline int str2ull(unsigned long long *restrict n, const char *restrict s); + + +inline int +str2sh(short *restrict n, const char *restrict s) +{ + return a2sh(n, s, NULL, 0, SHRT_MIN, SHRT_MAX); +} + + +inline int +str2si(int *restrict n, const char *restrict s) +{ + return a2si(n, s, NULL, 0, INT_MIN, INT_MAX); +} + + +inline int +str2sl(long *restrict n, const char *restrict s) +{ + return a2sl(n, s, NULL, 0, LONG_MIN, LONG_MAX); +} + + +inline int +str2sll(long long *restrict n, const char *restrict s) +{ + return a2sll(n, s, NULL, 0, LLONG_MIN, LLONG_MAX); +} + + +inline int +str2uh(unsigned short *restrict n, const char *restrict s) +{ + return a2uh(n, s, NULL, 0, 0, USHRT_MAX); +} + + +inline int +str2ui(unsigned int *restrict n, const char *restrict s) +{ + return a2ui(n, s, NULL, 0, 0, UINT_MAX); +} + + +inline int +str2ul(unsigned long *restrict n, const char *restrict s) +{ + return a2ul(n, s, NULL, 0, 0, ULONG_MAX); +} + + +inline int +str2ull(unsigned long long *restrict n, const char *restrict s) +{ + return a2ull(n, s, NULL, 0, 0, ULLONG_MAX); +} + + +#endif // include guard diff --git a/lib/atoi/strtoi.c b/lib/atoi/strtoi.c new file mode 100644 index 0000000..197707b --- /dev/null +++ b/lib/atoi/strtoi.c @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2023, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "atoi/strtoi.h" + +#include + + +extern inline intmax_t strtoi_(const char *s, char **restrict endp, int base, + intmax_t min, intmax_t max, int *restrict status); +extern inline uintmax_t strtou_(const char *s, char **restrict endp, int base, + uintmax_t min, uintmax_t max, int *restrict status); diff --git a/lib/atoi/strtoi.h b/lib/atoi/strtoi.h new file mode 100644 index 0000000..1f061fc --- /dev/null +++ b/lib/atoi/strtoi.h @@ -0,0 +1,96 @@ +// SPDX-FileCopyrightText: 2023, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_ATOI_STRTOI_H_ +#define SHADOW_INCLUDE_LIB_ATOI_STRTOI_H_ + + +#include + +#include +#include +#include +#include +#include +#include + +#include "attr.h" + + +#define strtoNmax(TYPE, ...) \ +( \ + _Generic((TYPE) 0, \ + intmax_t: strtoimax, \ + uintmax_t: strtoumax \ + )(__VA_ARGS__) \ +) + + +#define strtoN(s, endp, base, min, max, status, TYPE) \ +({ \ + const char *s_ = s; \ + char **endp_ = endp; \ + int base_ = base; \ + TYPE min_ = min; \ + TYPE max_ = max; \ + int *status_ = status; \ + \ + int e_, st_; \ + char *end_; \ + TYPE n_; \ + \ + if (endp_ == NULL) \ + endp_ = &end_; \ + if (status_ == NULL) \ + status_ = &st_; \ + \ + if (base_ != 0 && (base_ < 0 || base_ > 36)) { \ + *status_ = EINVAL; \ + n_ = 0; \ + \ + } else { \ + e_ = errno; \ + errno = 0; \ + n_ = strtoNmax(TYPE, s_, endp_, base_); \ + \ + if (*endp_ == s_) \ + *status_ = ECANCELED; \ + else if (errno == ERANGE || n_ < min_ || n_ > max_) \ + *status_ = ERANGE; \ + else if (**endp_ != '\0') \ + *status_ = ENOTSUP; \ + else \ + *status_ = 0; \ + \ + errno = e_; \ + } \ + MAX(min_, MIN(max_, n_)); \ +}) + + +ATTR_STRING(1) ATTR_ACCESS(write_only, 2) ATTR_ACCESS(write_only, 6) +inline intmax_t strtoi_(const char *s, char **restrict endp, int base, + intmax_t min, intmax_t max, int *restrict status); +ATTR_STRING(1) ATTR_ACCESS(write_only, 2) ATTR_ACCESS(write_only, 6) +inline uintmax_t strtou_(const char *s, char **restrict endp, int base, + uintmax_t min, uintmax_t max, int *restrict status); + + +inline intmax_t +strtoi_(const char *s, char **restrict endp, int base, + intmax_t min, intmax_t max, int *restrict status) +{ + return strtoN(s, endp, base, min, max, status, intmax_t); +} + + +inline uintmax_t +strtou_(const char *s, char **restrict endp, int base, + uintmax_t min, uintmax_t max, int *restrict status) +{ + return strtoN(s, endp, base, min, max, status, uintmax_t); +} + + +#endif // include guard diff --git a/lib/atoi/strtou_noneg.c b/lib/atoi/strtou_noneg.c new file mode 100644 index 0000000..71cacbd --- /dev/null +++ b/lib/atoi/strtou_noneg.c @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2023, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "atoi/strtou_noneg.h" + +#include + + +extern inline uintmax_t strtou_noneg(const char *s, char **restrict endp, + int base, uintmax_t min, uintmax_t max, int *restrict status); diff --git a/lib/atoi/strtou_noneg.h b/lib/atoi/strtou_noneg.h new file mode 100644 index 0000000..6d77adf --- /dev/null +++ b/lib/atoi/strtou_noneg.h @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2023, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_ATOI_STRTOU_NONEG_H_ +#define SHADOW_INCLUDE_LIB_ATOI_STRTOU_NONEG_H_ + + +#include + +#include +#include +#include + +#include "atoi/strtoi.h" +#include "attr.h" + + +ATTR_STRING(1) ATTR_ACCESS(write_only, 2) ATTR_ACCESS(write_only, 6) +inline uintmax_t strtou_noneg(const char *s, char **restrict endp, + int base, uintmax_t min, uintmax_t max, int *restrict status); + + +inline uintmax_t +strtou_noneg(const char *s, char **restrict endp, int base, + uintmax_t min, uintmax_t max, int *restrict status) +{ + int st; + + if (status == NULL) + status = &st; + if (strtoi_(s, endp, base, 0, 1, status) == 0 && *status == ERANGE) + return min; + + return strtou_(s, endp, base, min, max, status); +} + + +#endif // include guard diff --git a/lib/attr.h b/lib/attr.h new file mode 100644 index 0000000..3835848 --- /dev/null +++ b/lib/attr.h @@ -0,0 +1,33 @@ +#ifndef SHADOW_INCLUDE_LIB_ATTR_H_ +#define SHADOW_INCLUDE_LIB_ATTR_H_ + + +#include "config.h" + + +#if defined(__GNUC__) +# define MAYBE_UNUSED __attribute__((unused)) +# define NORETURN __attribute__((__noreturn__)) +# define format_attr(type, fmt, va) __attribute__((format(type, fmt, va))) +# define ATTR_ACCESS(...) __attribute__((access(__VA_ARGS__))) +#else +# define MAYBE_UNUSED +# define NORETURN +# define format_attr(type, fmt, va) +# define ATTR_ACCESS(...) +#endif + +#if (__GNUC__ >= 11) && !defined(__clang__) +# define ATTR_MALLOC(deallocator) [[gnu::malloc(deallocator)]] +#else +# define ATTR_MALLOC(deallocator) +#endif + +#if (__GNUC__ >= 14) +# define ATTR_STRING(...) [[gnu::null_terminated_string_arg(__VA_ARGS__)]] +#else +# define ATTR_STRING(...) +#endif + + +#endif // include guard diff --git a/lib/audit_help.c b/lib/audit_help.c new file mode 100644 index 0000000..54109f0 --- /dev/null +++ b/lib/audit_help.c @@ -0,0 +1,89 @@ +/* + * SPDX-FileCopyrightText: 2005 , Red Hat, Inc. + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * Audit helper functions used throughout shadow + * + */ + +#include + +#ifdef WITH_AUDIT + +#include +#include +#include +#include +#include +#include + +#include "attr.h" +#include "prototypes.h" +#include "shadowlog.h" +int audit_fd; + +void audit_help_open (void) +{ + audit_fd = audit_open (); + if (audit_fd < 0) { + /* You get these only when the kernel doesn't have + * audit compiled in. */ + if ( (errno == EINVAL) + || (errno == EPROTONOSUPPORT) + || (errno == EAFNOSUPPORT)) { + return; + } + (void) fputs (_("Cannot open audit interface - aborting.\n"), + log_get_logfd()); + exit (EXIT_FAILURE); + } +} + +/* + * This function will log a message to the audit system using a predefined + * message format. Parameter usage is as follows: + * + * type - type of message: AUDIT_USER_CHAUTHTOK for changing any account + * attributes. + * pgname - program's name + * op - operation. "adding user", "changing finger info", "deleting group" + * name - user's account or group name. If not available use NULL. + * id - uid or gid that the operation is being performed on. This is used + * only when user is NULL. + */ +void audit_logger (int type, MAYBE_UNUSED const char *pgname, const char *op, + const char *name, unsigned int id, + shadow_audit_result result) +{ + if (audit_fd < 0) { + return; + } else { + audit_log_acct_message (audit_fd, type, NULL, op, name, id, + NULL, NULL, NULL, result); + } +} + +void audit_logger_message (const char *message, shadow_audit_result result) +{ + if (audit_fd < 0) { + return; + } else { + audit_log_user_message (audit_fd, + AUDIT_USYS_CONFIG, + message, + NULL, /* hostname */ + NULL, /* addr */ + NULL, /* tty */ + result); + } +} + +#else /* WITH_AUDIT */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* WITH_AUDIT */ + diff --git a/lib/basename.c b/lib/basename.c new file mode 100644 index 0000000..95a2f85 --- /dev/null +++ b/lib/basename.c @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * basename.c - not worth copyrighting :-). Some versions of Linux libc + * already have basename(), other versions don't. To avoid confusion, + * we will not use the function from libc and use a different name here. + * --marekm + */ + +#include + +#ident "$Id$" + +#include "defines.h" +#include "prototypes.h" +/*@observer@*/const char *Basename (const char *str) +{ + if (str == NULL) { + abort (); + } + + char *cp = strrchr (str, '/'); + + return (NULL != cp) ? cp + 1 : str; +} diff --git a/lib/bit.c b/lib/bit.c new file mode 100644 index 0000000..1ffc6dc --- /dev/null +++ b/lib/bit.c @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#ident "$Id$" + +#include "bit.h" + +#include + + +extern inline unsigned long bit_ceilul(unsigned long x); +extern inline unsigned long bit_ceil_wrapul(unsigned long x); +extern inline int leading_zerosul(unsigned long x); diff --git a/lib/bit.h b/lib/bit.h new file mode 100644 index 0000000..7f09eb4 --- /dev/null +++ b/lib/bit.h @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_BIT_H_ +#define SHADOW_INCLUDE_LIB_BIT_H_ + + +#include + +#include + + +#ifndef ULONG_WIDTH +#define ULONG_WIDTH (sizeof(unsigned long) * CHAR_BIT) +#endif + + +inline unsigned long bit_ceilul(unsigned long x); +inline unsigned long bit_ceil_wrapul(unsigned long x); +inline int leading_zerosul(unsigned long x); + + +/* stdc_bit_ceilul(3) */ +inline unsigned long +bit_ceilul(unsigned long x) +{ + return 1 + (ULONG_MAX >> leading_zerosul(x)); +} + + +/* stdc_bit_ceilul(3), but wrap instead of having Undefined Behavior */ +inline unsigned long +bit_ceil_wrapul(unsigned long x) +{ + if (x == 0) + return 0; + + return bit_ceilul(x); +} + +/* stdc_leading_zerosul(3) */ +inline int +leading_zerosul(unsigned long x) +{ + return (x == 0) ? ULONG_WIDTH : __builtin_clzl(x); +} + + +#endif // include guard diff --git a/lib/btrfs.c b/lib/btrfs.c new file mode 100644 index 0000000..0391598 --- /dev/null +++ b/lib/btrfs.c @@ -0,0 +1,110 @@ +#include +#include +#include +#include + +#include "prototypes.h" + +static bool path_exists(const char *p) +{ + struct stat sb; + + return stat(p, &sb) == 0; +} + +static const char *btrfs_cmd(void) +{ + const char *const 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 (!cmd || 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; +} + diff --git a/lib/cast.h b/lib/cast.h new file mode 100644 index 0000000..5cbbcf6 --- /dev/null +++ b/lib/cast.h @@ -0,0 +1,15 @@ +// SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_CAST_H_ +#define SHADOW_INCLUDE_LIB_CAST_H_ + + +#include + + +#define const_cast(T, p) _Generic(p, const T: (T) (p)) + + +#endif // include guard diff --git a/lib/chkname.c b/lib/chkname.c new file mode 100644 index 0000000..995562f --- /dev/null +++ b/lib/chkname.c @@ -0,0 +1,120 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-2000, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2001-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2005-2008, Nicolas François +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +/* + * is_valid_user_name(), is_valid_group_name() - check the new user/group + * name for validity; + * return values: + * true - OK + * false - bad name + */ + + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include +#include + +#include "defines.h" +#include "chkname.h" + + +int allow_bad_names = false; + + +size_t +login_name_max_size(void) +{ + long conf; + + errno = 0; + conf = sysconf(_SC_LOGIN_NAME_MAX); + if (conf == -1 && errno != 0) + return LOGIN_NAME_MAX; + + return conf; +} + + +static bool is_valid_name (const char *name) +{ + if (allow_bad_names) { + return true; + } + + /* + * User/group names must match BRE regex: + * [a-zA-Z0-9_.][a-zA-Z0-9_.-]*$\? + * + * as a non-POSIX, extension, allow "$" as the last char for + * sake of Samba 3.x "add machine script" + * + * Also do not allow fully numeric names or just "." or "..". + */ + int numeric; + + if ('\0' == *name || + ('.' == *name && (('.' == name[1] && '\0' == name[2]) || + '\0' == name[1])) || + !((*name >= 'a' && *name <= 'z') || + (*name >= 'A' && *name <= 'Z') || + (*name >= '0' && *name <= '9') || + *name == '_' || + *name == '.')) { + return false; + } + + numeric = isdigit(*name); + + while ('\0' != *++name) { + if (!((*name >= 'a' && *name <= 'z') || + (*name >= 'A' && *name <= 'Z') || + (*name >= '0' && *name <= '9') || + *name == '_' || + *name == '.' || + *name == '-' || + (*name == '$' && name[1] == '\0') + )) { + return false; + } + numeric &= isdigit(*name); + } + + return !numeric; +} + + +bool +is_valid_user_name(const char *name) +{ + if (strlen(name) >= login_name_max_size()) + return false; + + return is_valid_name(name); +} + + +bool is_valid_group_name (const char *name) +{ + /* + * Arbitrary limit for group names. + * HP-UX 10 limits to 16 characters + */ + if ( (GROUP_NAME_MAX_LENGTH > 0) + && (strlen (name) > GROUP_NAME_MAX_LENGTH)) { + return false; + } + + return is_valid_name (name); +} diff --git a/lib/chkname.h b/lib/chkname.h new file mode 100644 index 0000000..4306a8a --- /dev/null +++ b/lib/chkname.h @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* $Id$ */ +#ifndef _CHKNAME_H_ +#define _CHKNAME_H_ + + +/* + * is_valid_user_name(), is_valid_group_name() - check the new user/group + * name for validity; + * return values: + * true - OK + * false - bad name + */ + + +#include + +#include +#include + + +extern size_t login_name_max_size(void); +extern bool is_valid_user_name (const char *name); +extern bool is_valid_group_name (const char *name); + +#endif diff --git a/lib/chowndir.c b/lib/chowndir.c new file mode 100644 index 0000000..d31618a --- /dev/null +++ b/lib/chowndir.c @@ -0,0 +1,146 @@ +/* + * SPDX-FileCopyrightText: 1992 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2010 - , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include "prototypes.h" +#include "defines.h" +#include +#include +#include + +static int chown_tree_at (int at_fd, + const char *path, + uid_t old_uid, + uid_t new_uid, + gid_t old_gid, + gid_t new_gid) +{ + DIR *dir; + const struct dirent *ent; + struct stat dir_sb; + int dir_fd, rc = 0; + + dir_fd = openat (at_fd, path, O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC); + if (dir_fd < 0) { + return -1; + } + + dir = fdopendir (dir_fd); + if (!dir) { + (void) close (dir_fd); + return -1; + } + + /* + * Open the directory and read each entry. Every entry is tested + * to see if it is a directory, and if so this routine is called + * recursively. If not, it is checked to see if an ownership + * shall be changed. + */ + while ((ent = readdir (dir))) { + uid_t tmpuid = (uid_t) -1; + gid_t tmpgid = (gid_t) -1; + struct stat ent_sb; + + /* + * Skip the "." and ".." entries + */ + if ( (strcmp (ent->d_name, ".") == 0) + || (strcmp (ent->d_name, "..") == 0)) { + continue; + } + + rc = fstatat (dirfd(dir), ent->d_name, &ent_sb, AT_SYMLINK_NOFOLLOW); + if (rc < 0) { + break; + } + + if (S_ISDIR (ent_sb.st_mode)) { + /* + * Do the entire subdirectory. + */ + rc = chown_tree_at (dirfd(dir), ent->d_name, old_uid, new_uid, old_gid, new_gid); + if (0 != rc) { + break; + } + } + + /* + * By default, the IDs are not changed (-1). + * + * If the file is not owned by the user, the owner is not + * changed. + * + * If the file is not group-owned by the group, the + * group-owner is not changed. + */ + if (((uid_t) -1 == old_uid) || (ent_sb.st_uid == old_uid)) { + tmpuid = new_uid; + } + if (((gid_t) -1 == old_gid) || (ent_sb.st_gid == old_gid)) { + tmpgid = new_gid; + } + if (((uid_t) -1 != tmpuid) || ((gid_t) -1 != tmpgid)) { + rc = fchownat (dirfd(dir), ent->d_name, tmpuid, tmpgid, AT_SYMLINK_NOFOLLOW); + if (0 != rc) { + break; + } + } + } + + /* + * Now do the root of the tree + */ + if ((0 == rc) && (fstat (dirfd(dir), &dir_sb) == 0)) { + uid_t tmpuid = (uid_t) -1; + gid_t tmpgid = (gid_t) -1; + if (((uid_t) -1 == old_uid) || (dir_sb.st_uid == old_uid)) { + tmpuid = new_uid; + } + if (((gid_t) -1 == old_gid) || (dir_sb.st_gid == old_gid)) { + tmpgid = new_gid; + } + if (((uid_t) -1 != tmpuid) || ((gid_t) -1 != tmpgid)) { + rc = fchown (dirfd(dir), tmpuid, tmpgid); + } + } else { + rc = -1; + } + + (void) closedir (dir); + + return rc; +} + +/* + * chown_tree - change ownership of files in a directory tree + * + * chown_dir() walks a directory tree and changes the ownership + * of all files owned by the provided user ID. + * + * Only files owned (resp. group-owned) by old_uid (resp. by old_gid) + * will have their ownership (resp. group-ownership) modified, unless + * old_uid (resp. old_gid) is set to -1. + * + * new_uid and new_gid can be set to -1 to indicate that no owner or + * group-owner shall be changed. + */ +int chown_tree (const char *root, + uid_t old_uid, + uid_t new_uid, + gid_t old_gid, + gid_t new_gid) +{ + return chown_tree_at (AT_FDCWD, root, old_uid, new_uid, old_gid, new_gid); +} diff --git a/lib/chowntty.c b/lib/chowntty.c new file mode 100644 index 0000000..70127f3 --- /dev/null +++ b/lib/chowntty.c @@ -0,0 +1,79 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include +#include "prototypes.h" +#include "defines.h" +#include +#include "getdef.h" +#include "shadowlog.h" + +/* + * chown_tty() sets the login tty to be owned by the new user ID + * with TTYPERM modes + */ + +void chown_tty (const struct passwd *info) +{ + struct group *grent; + gid_t gid; + + /* + * See if login.defs has some value configured for the port group + * ID. Otherwise, use the user's primary group ID. + */ + + grent = getgr_nam_gid (getdef_str ("TTYGROUP")); + if (NULL != grent) { + gid = grent->gr_gid; + gr_free (grent); + } else { + gid = info->pw_gid; + } + + /* + * Change the permissions on the TTY to be owned by the user with + * the group as determined above. + */ + + if ( (fchown (STDIN_FILENO, info->pw_uid, gid) != 0) + || (fchmod (STDIN_FILENO, getdef_num ("TTYPERM", 0600)) != 0)) { + int err = errno; + FILE *shadow_logfd = log_get_logfd(); + + fprintf (shadow_logfd, + _("Unable to change owner or mode of tty stdin: %s"), + strerror (err)); + SYSLOG ((LOG_WARN, + "unable to change owner or mode of tty stdin for user `%s': %s\n", + info->pw_name, strerror (err))); + if (EROFS != err) { + closelog (); + exit (EXIT_FAILURE); + } + } +#ifdef __linux__ + /* + * Please don't add code to chown /dev/vcs* to the user logging in - + * it's a potential security hole. I wouldn't like the previous user + * to hold the file descriptor open and watch my screen. We don't + * have the *BSD revoke() system call yet, and vhangup() only works + * for tty devices (which vcs* is not). --marekm + */ +#endif +} + diff --git a/lib/cleanup.c b/lib/cleanup.c new file mode 100644 index 0000000..c16f1bc --- /dev/null +++ b/lib/cleanup.c @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include +#include + +#include "prototypes.h" + +/* + * The cleanup_functions stack. + */ +#define CLEANUP_FUNCTIONS 10 + +typedef /*@null@*/void * parg_t; + +static cleanup_function cleanup_functions[CLEANUP_FUNCTIONS]; +static parg_t cleanup_function_args[CLEANUP_FUNCTIONS]; +static pid_t cleanup_pid = 0; + +/* + * - Cleanup functions shall not fail. + * - You should register do_cleanups with atexit. + * - You should add cleanup functions to the stack with add_cleanup when + * an operation is expected to be executed later, and remove it from the + * stack with del_cleanup when it has been executed. + * + **/ + +/* + * do_cleanups - perform the actions stored in the cleanup_functions stack. + * + * Cleanup action are not executed on exit of the processes started by the + * parent (first caller of add_cleanup). + * + * It is intended to be used as: + * atexit (do_cleanups); + */ +void do_cleanups (void) +{ + unsigned int i; + + /* Make sure there were no overflow */ + assert (NULL == cleanup_functions[CLEANUP_FUNCTIONS-1]); + + if (getpid () != cleanup_pid) { + return; + } + + i = CLEANUP_FUNCTIONS; + do { + i--; + if (cleanup_functions[i] != NULL) { + cleanup_functions[i] (cleanup_function_args[i]); + } + } while (i>0); +} + +/* + * add_cleanup - Add a cleanup_function to the cleanup_functions stack. + */ +void add_cleanup (/*@notnull@*/cleanup_function pcf, /*@null@*/void *arg) +{ + unsigned int i; + assert (NULL != pcf); + + assert (NULL == cleanup_functions[CLEANUP_FUNCTIONS-2]); + + if (0 == cleanup_pid) { + cleanup_pid = getpid (); + } + + /* Add the cleanup_function at the end of the stack */ + for (i=0; NULL != cleanup_functions[i]; i++); + cleanup_functions[i] = pcf; + cleanup_function_args[i] = arg; +} + +/* + * del_cleanup - Remove a cleanup_function from the cleanup_functions stack. + */ +void del_cleanup (/*@notnull@*/cleanup_function pcf) +{ + unsigned int i; + assert (NULL != pcf); + + /* Find the pcf cleanup function */ + for (i=0; i + +#include +#include + +#include "attr.h" +#include "defines.h" +#include "groupio.h" +#include "sgroupio.h" +#include "prototypes.h" +#include "shadowlog.h" + +/* + * cleanup_report_add_group - Report failure to add a group to the system + * + * It should be registered when it is decided to add a group to the system. + */ +void cleanup_report_add_group (void *group_name) +{ + const char *name = group_name; + + SYSLOG ((LOG_ERR, "failed to add group %s", name)); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + "", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +/* + * cleanup_report_del_group - Report failure to remove a group from the system + * + * It should be registered when it is decided to remove a group from the system. + */ +void cleanup_report_del_group (void *group_name) +{ + const char *name = group_name; + + SYSLOG ((LOG_ERR, "failed to remove group %s", name)); +#ifdef WITH_AUDIT + audit_logger (AUDIT_DEL_GROUP, log_get_progname(), + "", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +void cleanup_report_mod_group (void *cleanup_info) +{ + const struct cleanup_info_mod *info; + info = (const struct cleanup_info_mod *)cleanup_info; + + SYSLOG ((LOG_ERR, + "failed to change %s (%s)", + gr_dbname (), + info->action)); +#ifdef WITH_AUDIT + audit_logger (AUDIT_USER_ACCT, log_get_progname(), + info->audit_msg, + info->name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +#ifdef SHADOWGRP +void cleanup_report_mod_gshadow (void *cleanup_info) +{ + const struct cleanup_info_mod *info; + info = (const struct cleanup_info_mod *)cleanup_info; + + SYSLOG ((LOG_ERR, + "failed to change %s (%s)", + sgr_dbname (), + info->action)); +#ifdef WITH_AUDIT + audit_logger (AUDIT_USER_ACCT, log_get_progname(), + info->audit_msg, + info->name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} +#endif + +/* + * cleanup_report_add_group_group - Report failure to add a group to group + * + * It should be registered when it is decided to add a group to the + * group database. + */ +void cleanup_report_add_group_group (void *group_name) +{ + const char *name = group_name; + + SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + "adding group to /etc/group", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +#ifdef SHADOWGRP +/* + * cleanup_report_add_group_gshadow - Report failure to add a group to gshadow + * + * It should be registered when it is decided to add a group to the + * gshadow database. + */ +void cleanup_report_add_group_gshadow (void *group_name) +{ + const char *name = group_name; + + SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + "adding group to /etc/gshadow", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} +#endif + +/* + * cleanup_report_del_group_group - Report failure to remove a group from the + * regular group database + * + * It should be registered when it is decided to remove a group from the + * regular group database. + */ +void cleanup_report_del_group_group (void *group_name) +{ + const char *name = group_name; + + SYSLOG ((LOG_ERR, + "failed to remove group %s from %s", + name, gr_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + "removing group from /etc/group", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +#ifdef SHADOWGRP +/* + * cleanup_report_del_group_gshadow - Report failure to remove a group from + * gshadow + * + * It should be registered when it is decided to remove a group from the + * gshadow database. + */ +void cleanup_report_del_group_gshadow (void *group_name) +{ + const char *name = group_name; + + SYSLOG ((LOG_ERR, + "failed to remove group %s from %s", + name, sgr_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + "removing group from /etc/gshadow", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} +#endif + +/* + * cleanup_unlock_group - Unlock the group file + * + * It should be registered after the group file is successfully locked. + */ +void cleanup_unlock_group (MAYBE_UNUSED void *arg) +{ + if (gr_unlock () == 0) { + fprintf (log_get_logfd(), + _("%s: failed to unlock %s\n"), + log_get_progname(), gr_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); +#ifdef WITH_AUDIT + audit_logger_message ("unlocking group file", + SHADOW_AUDIT_FAILURE); +#endif + } +} + +#ifdef SHADOWGRP +/* + * cleanup_unlock_gshadow - Unlock the gshadow file + * + * It should be registered after the gshadow file is successfully locked. + */ +void cleanup_unlock_gshadow (MAYBE_UNUSED void *arg) +{ + if (sgr_unlock () == 0) { + fprintf (log_get_logfd(), + _("%s: failed to unlock %s\n"), + log_get_progname(), sgr_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); +#ifdef WITH_AUDIT + audit_logger_message ("unlocking gshadow file", + SHADOW_AUDIT_FAILURE); +#endif + } +} +#endif + diff --git a/lib/cleanup_user.c b/lib/cleanup_user.c new file mode 100644 index 0000000..9c4bda9 --- /dev/null +++ b/lib/cleanup_user.c @@ -0,0 +1,131 @@ +/* + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include +#include + +#include "attr.h" +#include "defines.h" +#include "pwio.h" +#include "shadowio.h" +#include "prototypes.h" +#include "shadowlog.h" + +/* + * cleanup_report_add_user - Report failure to add a user to the system + * + * It should be registered when it is decided to add a user to the system. + */ +void cleanup_report_add_user (void *user_name) +{ + const char *name = user_name; + + SYSLOG ((LOG_ERR, "failed to add user %s", name)); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_USER, log_get_progname(), + "", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +void cleanup_report_mod_passwd (void *cleanup_info) +{ + const struct cleanup_info_mod *info; + info = (const struct cleanup_info_mod *)cleanup_info; + + SYSLOG ((LOG_ERR, + "failed to change %s (%s)", + pw_dbname (), + info->action)); +#ifdef WITH_AUDIT + audit_logger (AUDIT_USER_ACCT, log_get_progname(), + info->audit_msg, + info->name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +/* + * cleanup_report_add_user_passwd - Report failure to add a user to + * /etc/passwd + * + * It should be registered when it is decided to add a user to the + * /etc/passwd database. + */ +void cleanup_report_add_user_passwd (void *user_name) +{ + const char *name = user_name; + + SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, pw_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_USER, log_get_progname(), + "adding user to /etc/passwd", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +/* + * cleanup_report_add_user_shadow - Report failure to add a user to + * /etc/shadow + * + * It should be registered when it is decided to add a user to the + * /etc/shadow database. + */ +void cleanup_report_add_user_shadow (void *user_name) +{ + const char *name = user_name; + + SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, spw_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_USER, log_get_progname(), + "adding user to /etc/shadow", + name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif +} + +/* + * cleanup_unlock_passwd - Unlock the /etc/passwd database + * + * It should be registered after the passwd database is successfully locked. + */ +void cleanup_unlock_passwd (MAYBE_UNUSED void *arg) +{ + if (pw_unlock () == 0) { + fprintf (log_get_logfd(), + _("%s: failed to unlock %s\n"), + log_get_progname(), pw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); +#ifdef WITH_AUDIT + audit_logger_message ("unlocking passwd file", + SHADOW_AUDIT_FAILURE); +#endif + } +} + +/* + * cleanup_unlock_shadow - Unlock the /etc/shadow database + * + * It should be registered after the shadow database is successfully locked. + */ +void cleanup_unlock_shadow (MAYBE_UNUSED void *arg) +{ + if (spw_unlock () == 0) { + fprintf (log_get_logfd(), + _("%s: failed to unlock %s\n"), + log_get_progname(), spw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); +#ifdef WITH_AUDIT + audit_logger_message ("unlocking shadow file", + SHADOW_AUDIT_FAILURE); +#endif + } +} + diff --git a/lib/commonio.c b/lib/commonio.c index 9a02ce1..01a26c9 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -21,6 +21,9 @@ #include #include #include + +#include "alloc.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #ifdef WITH_TCB @@ -29,6 +32,8 @@ #include "prototypes.h" #include "commonio.h" #include "shadowlog_internal.h" +#include "string/sprintf.h" + /* local function prototypes */ static int lrename (const char *, const char *); @@ -106,9 +111,9 @@ static int check_link_count (const char *file, bool log) if (sb.st_nlink != 2) { if (log) { - (void) fprintf (shadow_logfd, - "%s: %s: lock file already used (nlink: %u)\n", - shadow_progname, file, sb.st_nlink); + fprintf(shadow_logfd, + "%s: %s: lock file already used (nlink: %ju)\n", + shadow_progname, file, (uintmax_t) sb.st_nlink); } return 0; } @@ -119,11 +124,11 @@ static int check_link_count (const char *file, bool log) static int do_lock_file (const char *file, const char *lock, bool log) { - int fd; - pid_t pid; - ssize_t len; - int retval; - char buf[32]; + int fd; + int retval; + char buf[32]; + pid_t pid; + ssize_t len; fd = open (file, O_CREAT | O_TRUNC | O_WRONLY, 0600); if (-1 == fd) { @@ -136,9 +141,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) } pid = getpid (); - snprintf (buf, sizeof buf, "%lu", (unsigned long) pid); + SNPRINTF(buf, "%lu", (unsigned long) pid); len = (ssize_t) strlen (buf) + 1; - if (write (fd, buf, (size_t) len) != len) { + if (write_full(fd, buf, len) == -1) { if (log) { (void) fprintf (shadow_logfd, "%s: %s file write error: %s\n", @@ -190,7 +195,7 @@ static int do_lock_file (const char *file, const char *lock, bool log) return 0; } buf[len] = '\0'; - if (get_pid (buf, &pid) == 0) { + if (get_pid(buf, &pid) == -1) { if (log) { (void) fprintf (shadow_logfd, "%s: existing lock file %s with an invalid PID '%s'\n", @@ -251,25 +256,13 @@ static /*@null@*/ /*@dependent@*/FILE *fopen_set_perms ( return NULL; } -#ifdef HAVE_FCHOWN if (fchown (fileno (fp), sb->st_uid, sb->st_gid) != 0) { goto fail; } -#else /* !HAVE_FCHOWN */ - if (chown (name, sb->st_mode) != 0) { - goto fail; - } -#endif /* !HAVE_FCHOWN */ - -#ifdef HAVE_FCHMOD if (fchmod (fileno (fp), sb->st_mode & 0664) != 0) { goto fail; } -#else /* !HAVE_FCHMOD */ - if (chmod (name, sb->st_mode & 0664) != 0) { - goto fail; - } -#endif /* !HAVE_FCHMOD */ + return fp; fail: @@ -349,7 +342,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); + SNPRINTF(db->filename, "%s", name); db->setname = true; return 1; } @@ -363,33 +356,25 @@ bool commonio_present (const struct commonio_db *db) int commonio_lock_nowait (struct commonio_db *db, bool log) { - char* file = NULL; - char* lock = NULL; - size_t lock_file_len; - size_t file_len; - int err = 0; + int err = 0; + char *file = NULL; + char *lock = NULL; if (db->locked) { return 1; } - 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) { + + if (asprintf(&file, "%s.%ju", db->filename, (uintmax_t) getpid()) == -1) goto cleanup_ENOMEM; - } - lock = (char*)malloc(lock_file_len); - if (lock == NULL) { + if (asprintf(&lock, "%s.lock", db->filename) == -1) goto cleanup_ENOMEM; - } - snprintf (file, file_len, "%s.%lu", - db->filename, (unsigned long) getpid ()); - snprintf (lock, lock_file_len, "%s.lock", db->filename); + if (do_lock_file (file, lock, log) != 0) { db->locked = true; lock_count++; err = 1; } + cleanup_ENOMEM: free(file); free(lock); @@ -483,7 +468,7 @@ static void dec_lock_count (void) int commonio_unlock (struct commonio_db *db) { - char lock[1024]; + char lock[1029]; if (db->isopen) { db->readonly = true; @@ -500,7 +485,7 @@ int commonio_unlock (struct commonio_db *db) * then call ulckpwdf() (if used) on last unlock. */ db->locked = false; - snprintf (lock, sizeof lock, "%s.lock", db->filename); + SNPRINTF(lock, "%s.lock", db->filename); unlink (lock); dec_lock_count (); return 1; @@ -618,7 +603,7 @@ int commonio_open (struct commonio_db *db, int mode) fd = open (db->filename, (db->readonly ? O_RDONLY : O_RDWR) - | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW); + | O_NOCTTY | O_NONBLOCK | O_NOFOLLOW | O_CLOEXEC); saved_errno = errno; db->fp = NULL; if (fd >= 0) { @@ -649,22 +634,19 @@ int commonio_open (struct commonio_db *db, int mode) return 0; } - /* Do not inherit fd in spawned processes (e.g. nscd) */ - fcntl (fileno (db->fp), F_SETFD, FD_CLOEXEC); - buflen = BUFLEN; - buf = (char *) malloc (buflen); + buf = MALLOC(buflen, char); if (NULL == buf) { goto cleanup_ENOMEM; } - while (db->ops->fgets (buf, (int) buflen, db->fp) == buf) { - while ( ((cp = strrchr (buf, '\n')) == NULL) + while (db->ops->fgets (buf, buflen, db->fp) == buf) { + while ( (strrchr (buf, '\n') == NULL) && (feof (db->fp) == 0)) { size_t len; buflen += BUFLEN; - cp = (char *) realloc (buf, buflen); + cp = REALLOC(buf, buflen, char); if (NULL == cp) { goto cleanup_buf; } @@ -698,7 +680,7 @@ int commonio_open (struct commonio_db *db, int mode) } } - p = (struct commonio_entry *) malloc (sizeof *p); + p = MALLOC(1, struct commonio_entry); if (NULL == p) { goto cleanup_entry; } @@ -775,7 +757,7 @@ commonio_sort (struct commonio_db *db, int (*cmp) (const void *, const void *)) return 0; } - entries = malloc (n * sizeof (struct commonio_entry *)); + entries = MALLOC(n, struct commonio_entry *); if (entries == NULL) { return -1; } @@ -912,9 +894,9 @@ static int write_all (const struct commonio_db *db) int commonio_close (struct commonio_db *db) { - char buf[1024]; - int errors = 0; - struct stat sb; + int errors = 0; + char buf[1024]; + struct stat sb; if (!db->isopen) { errno = EINVAL; @@ -945,7 +927,11 @@ int commonio_close (struct commonio_db *db) /* * Create backup file. */ - snprintf (buf, sizeof buf, "%s-", db->filename); + if (SNPRINTF(buf, "%s-", db->filename) == -1) { + (void) fclose (db->fp); + db->fp = NULL; + goto fail; + } #ifdef WITH_SELINUX if (set_selinux_file_context (db->filename, S_IFREG) != 0) { @@ -960,15 +946,15 @@ int commonio_close (struct commonio_db *db) errors++; } + db->fp = NULL; + #ifdef WITH_SELINUX if (reset_selinux_file_context () != 0) { errors++; } #endif - if (errors != 0) { - db->fp = NULL; + if (errors != 0) goto fail; - } } else { /* * Default permissions for new [g]shadow files. @@ -978,7 +964,8 @@ int commonio_close (struct commonio_db *db) sb.st_gid = db->st_gid; } - snprintf (buf, sizeof buf, "%s+", db->filename); + if (SNPRINTF(buf, "%s+", db->filename) == -1) + goto fail; #ifdef WITH_SELINUX if (set_selinux_file_context (db->filename, S_IFREG) != 0) { @@ -998,13 +985,11 @@ int commonio_close (struct commonio_db *db) if (fflush (db->fp) != 0) { errors++; } -#ifdef HAVE_FSYNC + if (fsync (fileno (db->fp)) != 0) { errors++; } -#else /* !HAVE_FSYNC */ - sync (); -#endif /* !HAVE_FSYNC */ + if (fclose (db->fp) != 0) { errors++; } @@ -1096,7 +1081,7 @@ int commonio_update (struct commonio_db *db, const void *eptr) return 1; } /* not found, new entry */ - p = (struct commonio_entry *) malloc (sizeof *p); + p = MALLOC(1, struct commonio_entry); if (NULL == p) { db->ops->free (nentry); errno = ENOMEM; @@ -1133,7 +1118,7 @@ int commonio_append (struct commonio_db *db, const void *eptr) return 0; } /* new entry */ - p = (struct commonio_entry *) malloc (sizeof *p); + p = MALLOC(1, struct commonio_entry); if (NULL == p) { db->ops->free (nentry); errno = ENOMEM; @@ -1200,6 +1185,8 @@ int commonio_remove (struct commonio_db *db, const char *name) db->ops->free (p->eptr); } + free(p); + return 1; } diff --git a/lib/commonio.h b/lib/commonio.h index e63c5b4..fedbefa 100644 --- a/lib/commonio.h +++ b/lib/commonio.h @@ -11,8 +11,11 @@ #ifndef COMMONIO_H #define COMMONIO_H + +#include "attr.h" #include "defines.h" /* bool */ + /* * Linked list entry. */ @@ -37,7 +40,7 @@ struct commonio_ops { /* * free() the object including any strings pointed by it. */ - void (*free) (/*@out@*/ /*@only@*/void *); + void (*free)(/*@only@*/void *); /* * Return the name of the object (for example, pw_name @@ -61,7 +64,9 @@ struct commonio_ops { * fgets and fputs (can be replaced by versions that * understand line continuation conventions). */ - /*@null@*/char *(*fgets) (/*@returned@*/ /*@out@*/char *s, int n, FILE *stream); + ATTR_ACCESS(write_only, 1, 2) + /*@null@*/char *(*fgets)(/*@returned@*/char *restrict s, int n, + FILE *restrict stream); int (*fputs) (const char *, FILE *); /* @@ -123,6 +128,7 @@ extern int commonio_setname (struct commonio_db *, const char *); extern bool commonio_present (const struct commonio_db *db); extern int commonio_lock (struct commonio_db *); extern int commonio_lock_nowait (struct commonio_db *, bool log); +extern int do_fcntl_lock (const char *file, bool log, short type); extern int commonio_open (struct commonio_db *, int); extern /*@observer@*/ /*@null@*/const void *commonio_locate (struct commonio_db *, const char *); extern int commonio_update (struct commonio_db *, const void *); diff --git a/lib/console.c b/lib/console.c new file mode 100644 index 0000000..92065d9 --- /dev/null +++ b/lib/console.c @@ -0,0 +1,109 @@ +/* + * SPDX-FileCopyrightText: 1991 , Julianne Frances Haugh + * SPDX-FileCopyrightText: 1991 , Chip Rosenthal + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include "defines.h" +#include +#include "getdef.h" +#include "prototypes.h" +#include "string/strtcpy.h" + +#ident "$Id$" + +/* + * This is now rather generic function which decides if "tty" is listed + * under "cfgin" in config (directly or indirectly). Fallback to default if + * something is bad. + */ +static bool is_listed (const char *cfgin, const char *tty, bool def) +{ + FILE *fp; + char buf[1024], *s; + const char *cons; + + /* + * If the CONSOLE configuration definition isn't given, + * fallback to default. + */ + + cons = getdef_str (cfgin); + if (NULL == cons) { + return def; + } + + /* + * If this isn't a filename, then it is a ":" delimited list of + * console devices upon which root logins are allowed. + */ + + if (*cons != '/') { + char *pbuf; + STRTCPY(buf, cons); + pbuf = &buf[0]; + while ((s = strtok (pbuf, ":")) != NULL) { + if (strcmp (s, tty) == 0) { + return true; + } + + pbuf = NULL; + } + return false; + } + + /* + * If we can't open the console list, then call everything a + * console - otherwise root will never be allowed to login. + */ + + fp = fopen (cons, "r"); + if (NULL == fp) { + return def; + } + + /* + * See if this tty is listed in the console file. + */ + + while (fgets (buf, sizeof (buf), fp) != NULL) { + /* Remove optional trailing '\n'. */ + buf[strcspn (buf, "\n")] = '\0'; + if (strcmp (buf, tty) == 0) { + (void) fclose (fp); + return true; + } + } + + /* + * This tty isn't a console. + */ + + (void) fclose (fp); + return false; +} + +/* + * console - return 1 if the "tty" is a console device, else 0. + * + * Note - we need to take extreme care here to avoid locking out root logins + * if something goes awry. That's why we do things like call everything a + * console if the consoles file can't be opened. Because of this, we must + * warn the user to protect against the remove of the consoles file since + * that would allow an unauthorized root login. + */ + +bool console (const char *tty) +{ + if (strncmp (tty, "/dev/", 5) == 0) { + tty += 5; + } + + return is_listed ("CONSOLE", tty, true); +} + diff --git a/lib/copydir.c b/lib/copydir.c new file mode 100644 index 0000000..926033a --- /dev/null +++ b/lib/copydir.c @@ -0,0 +1,925 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include +#include + +#include "alloc.h" +#include "attr.h" +#include "prototypes.h" +#include "defines.h" +#ifdef WITH_SELINUX +#include +#endif /* WITH_SELINUX */ +#if defined(WITH_ACL) || defined(WITH_ATTR) +#include +#include +#endif /* WITH_ACL || WITH_ATTR */ +#ifdef WITH_ACL +#include +#endif /* WITH_ACL */ +#ifdef WITH_ATTR +#include +#endif /* WITH_ATTR */ +#include "shadowlog.h" +#include "string/sprintf.h" + + +static /*@null@*/const char *src_orig; +static /*@null@*/const char *dst_orig; + +struct link_name { + dev_t ln_dev; + ino_t ln_ino; + nlink_t ln_count; + char *ln_name; + /*@dependent@*/struct link_name *ln_next; +}; +static /*@exposed@*/struct link_name *links; + +struct path_info { + const char *full_path; + int dirfd; + const char *name; +}; + +static int copy_entry (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); +static int copy_dir (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); +static /*@null@*/char *readlink_malloc (const char *filename); +static int copy_symlink (const struct path_info *src, const struct path_info *dst, + MAYBE_UNUSED bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); +static int copy_hardlink (const struct path_info *dst, + MAYBE_UNUSED bool reset_selinux, + struct link_name *lp); +static int copy_special (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); +static int copy_file (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); +static int chownat_if_needed (const struct path_info *dst, const struct stat *statp, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); +static int fchown_if_needed (int fdst, const struct stat *statp, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid); + +#if defined(WITH_ACL) || defined(WITH_ATTR) +/* + * error_acl - format the error messages for the ACL and EQ libraries. + */ +format_attr(printf, 2, 3) +static void error_acl (MAYBE_UNUSED struct error_context *ctx, const char *fmt, ...) +{ + va_list ap; + FILE *shadow_logfd = log_get_logfd(); + + /* ignore the case when destination does not support ACLs + * or extended attributes */ + if (ENOTSUP == errno) { + errno = 0; + return; + } + + va_start (ap, fmt); + (void) fprintf (shadow_logfd, _("%s: "), log_get_progname()); + if (vfprintf (shadow_logfd, fmt, ap) != 0) { + (void) fputs (_(": "), shadow_logfd); + } + (void) fprintf (shadow_logfd, "%s\n", strerror (errno)); + va_end (ap); +} + +static struct error_context ctx = { + error_acl, NULL, NULL +}; +#endif /* WITH_ACL || WITH_ATTR */ + +#ifdef WITH_ACL +static int perm_copy_path(const struct path_info *src, + const struct path_info *dst, + struct error_context *errctx) +{ + int src_fd, dst_fd, ret; + + src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); + if (src_fd < 0) { + return -1; + } + + dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); + if (dst_fd < 0) { + (void) close (src_fd); + return -1; + } + + ret = perm_copy_fd(src->full_path, src_fd, dst->full_path, dst_fd, errctx); + (void) close (src_fd); + (void) close (dst_fd); + return ret; +} +#endif /* WITH_ACL */ + +#ifdef WITH_ATTR +static int attr_copy_path(const struct path_info *src, + const struct path_info *dst, + int (*callback) (const char *, struct error_context *), + struct error_context *errctx) +{ + int src_fd, dst_fd, ret; + + src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); + if (src_fd < 0) { + return -1; + } + + dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); + if (dst_fd < 0) { + (void) close (src_fd); + return -1; + } + + ret = attr_copy_fd(src->full_path, src_fd, dst->full_path, dst_fd, callback, errctx); + (void) close (src_fd); + (void) close (dst_fd); + return ret; +} +#endif /* WITH_ATTR */ + +/* + * remove_link - delete a link from the linked list + */ +static void remove_link (/*@only@*/struct link_name *ln) +{ + struct link_name *lp; + + if (links == ln) { + links = ln->ln_next; + free (ln->ln_name); + free (ln); + return; + } + for (lp = links; NULL !=lp; lp = lp->ln_next) { + if (lp->ln_next == ln) { + break; + } + } + + if (NULL == lp) { + free (ln->ln_name); + free (ln); + return; + } + + lp->ln_next = lp->ln_next->ln_next; + free (ln->ln_name); + free (ln); +} + +/* + * check_link - see if a file is really a link + */ + +static /*@exposed@*/ /*@null@*/struct link_name *check_link (const char *name, const struct stat *sb) +{ + struct link_name *lp; + + /* copy_tree () must be the entry point */ + assert (NULL != src_orig); + assert (NULL != dst_orig); + + for (lp = links; NULL != lp; lp = lp->ln_next) { + if ((lp->ln_dev == sb->st_dev) && (lp->ln_ino == sb->st_ino)) { + return lp; + } + } + + if (sb->st_nlink == 1) { + return NULL; + } + + lp = XMALLOC(1, struct link_name); + lp->ln_dev = sb->st_dev; + lp->ln_ino = sb->st_ino; + lp->ln_count = sb->st_nlink; + xasprintf(&lp->ln_name, "%s%s", dst_orig, name + strlen(src_orig)); + lp->ln_next = links; + links = lp; + + return NULL; +} + +static int copy_tree_impl (const struct path_info *src, const struct path_info *dst, + bool copy_root, bool reset_selinux, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + int dst_fd, src_fd, err = 0; + bool set_orig = false; + const struct dirent *ent; + DIR *dir; + + if (copy_root) { + struct stat sb; + + if ( fstatat (dst->dirfd, dst->name, &sb, 0) == 0 + || errno != ENOENT) { + return -1; + } + + if (fstatat (src->dirfd, src->name, &sb, AT_SYMLINK_NOFOLLOW) == -1) { + return -1; + } + + if (!S_ISDIR (sb.st_mode)) { + fprintf (log_get_logfd(), + "%s: %s is not a directory", + log_get_progname(), src->full_path); + return -1; + } + + return copy_entry (src, dst, reset_selinux, + old_uid, new_uid, old_gid, new_gid); + } + + /* + * Make certain both directories exist. This routine is called + * after the home directory is created, or recursively after the + * target is created. It assumes the target directory exists. + */ + + src_fd = openat (src->dirfd, src->name, O_DIRECTORY | O_RDONLY | O_NOFOLLOW | O_CLOEXEC); + if (src_fd < 0) { + return -1; + } + + dst_fd = openat (dst->dirfd, dst->name, O_DIRECTORY | O_RDONLY | O_NOFOLLOW | O_CLOEXEC); + if (dst_fd < 0) { + (void) close (src_fd); + return -1; + } + + /* + * Open the source directory and read each entry. Every file + * entry in the directory is copied with the UID and GID set + * to the provided values. As an added security feature only + * regular files (and directories ...) are copied, and no file + * is made set-ID. + */ + dir = fdopendir (src_fd); + if (NULL == dir) { + (void) close (src_fd); + (void) close (dst_fd); + return -1; + } + + if (src_orig == NULL) { + src_orig = src->full_path; + dst_orig = dst->full_path; + set_orig = true; + } + while ((0 == err) && (ent = readdir (dir)) != NULL) { + char *src_name = NULL; + char *dst_name; + struct path_info src_entry, dst_entry; + /* + * Skip the "." and ".." entries + */ + if (strcmp(ent->d_name, ".") == 0 || + strcmp(ent->d_name, "..") == 0) + { + continue; + } + + if (asprintf(&src_name, "%s/%s", src->full_path, ent->d_name) == -1) + { + err = -1; + continue; + } + if (asprintf(&dst_name, "%s/%s", dst->full_path, ent->d_name) == -1) + { + err = -1; + goto skip; + } + + src_entry.full_path = src_name; + src_entry.dirfd = dirfd(dir); + src_entry.name = ent->d_name; + + dst_entry.full_path = dst_name; + dst_entry.dirfd = dst_fd; + dst_entry.name = ent->d_name; + + err = copy_entry(&src_entry, &dst_entry, reset_selinux, + old_uid, new_uid, old_gid, new_gid); + + free(dst_name); +skip: + free(src_name); + } + (void) closedir (dir); + (void) close (dst_fd); + + if (set_orig) { + src_orig = NULL; + dst_orig = NULL; + /* FIXME: clean links + * Since there can be hardlinks elsewhere on the device, + * we cannot check that all the hardlinks were found: + assert (NULL == links); + */ + } + +#ifdef WITH_SELINUX + /* Reset SELinux to create files with default contexts. + * Note that the context is only reset on exit of copy_tree (it is + * assumed that the program would quit without needing a restored + * context if copy_tree failed previously), and that copy_tree can + * be called recursively (hence the context is set on the + * sub-functions of copy_entry). + */ + if (reset_selinux_file_context () != 0) { + err = -1; + } +#endif /* WITH_SELINUX */ + + return err; +} + +/* + * copy_entry - copy the entry of a directory + * + * Copy the entry src to dst. + * Depending on the type of entry, this function will forward the + * request to copy_dir(), copy_symlink(), copy_hardlink(), + * copy_special(), or copy_file(). + * + * The access and modification time will not be modified. + * + * The permissions will be set to new_uid/new_gid. + * + * If new_uid (resp. new_gid) is equal to -1, the user (resp. group) will + * not be modified. + * + * Only the files owned (resp. group-owned) by old_uid (resp. + * old_gid) will be modified, unless old_uid (resp. old_gid) is set + * to -1. + */ +static int copy_entry (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + int err = 0; + struct stat sb; + struct stat tmp_sb; + struct link_name *lp; + struct timespec mt[2]; + + if (fstatat(src->dirfd, src->name, &sb, AT_SYMLINK_NOFOLLOW) == -1) { + /* If we cannot stat the file, do not care. */ + return 0; + } + + mt[0].tv_sec = sb.st_atim.tv_sec; + mt[0].tv_nsec = sb.st_atim.tv_nsec; + + mt[1].tv_sec = sb.st_mtim.tv_sec; + mt[1].tv_nsec = sb.st_mtim.tv_nsec; + + if (S_ISDIR (sb.st_mode)) { + err = copy_dir (src, dst, reset_selinux, &sb, mt, + old_uid, new_uid, old_gid, new_gid); + } + + /* + * If the destination already exists do nothing. + * This is after the copy_dir above to still iterate into subdirectories. + */ + if (fstatat(dst->dirfd, dst->name, &tmp_sb, AT_SYMLINK_NOFOLLOW) != -1) { + return err; + } + + /* + * Copy any symbolic links + */ + + else if (S_ISLNK (sb.st_mode)) { + err = copy_symlink (src, dst, reset_selinux, &sb, mt, + old_uid, new_uid, old_gid, new_gid); + } + + /* + * See if this is a previously copied link + */ + + else if ((lp = check_link (src->full_path, &sb)) != NULL) { + err = copy_hardlink (dst, reset_selinux, lp); + } + + /* + * Deal with FIFOs and special files. The user really + * shouldn't have any of these, but it seems like it + * would be nice to copy everything ... + */ + + else if (!S_ISREG (sb.st_mode)) { + err = copy_special (src, dst, reset_selinux, &sb, mt, + old_uid, new_uid, old_gid, new_gid); + } + + /* + * Create the new file and copy the contents. The new + * file will be owned by the provided UID and GID values. + */ + + else { + err = copy_file (src, dst, reset_selinux, &sb, mt, + old_uid, new_uid, old_gid, new_gid); + } + + return err; +} + +/* + * copy_dir - copy a directory + * + * Copy a directory (recursively) from src to dst. + * + * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set + * the access and modification and the access rights. + * + * Return 0 on success, -1 on error. + */ +static int copy_dir (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + int err = 0; + struct stat dst_sb; + + /* + * Create a new target directory, make it owned by + * the user and then recursively copy that directory. + */ + +#ifdef WITH_SELINUX + if (set_selinux_file_context (dst->full_path, S_IFDIR) != 0) { + return -1; + } +#endif /* WITH_SELINUX */ + /* + * If the destination is already a directory, don't change it + * but copy into it (recursively). + */ + if (fstatat(dst->dirfd, dst->name, &dst_sb, AT_SYMLINK_NOFOLLOW) == 0 && S_ISDIR(dst_sb.st_mode)) { + return (copy_tree_impl (src, dst, false, reset_selinux, + old_uid, new_uid, old_gid, new_gid) != 0); + } + + if ( (mkdirat (dst->dirfd, dst->name, 0700) != 0) + || (chownat_if_needed (dst, statp, + old_uid, new_uid, old_gid, new_gid) != 0) + || (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0) +#ifdef WITH_ACL + || ( (perm_copy_path (src, dst, &ctx) != 0) + && (errno != 0)) +#endif /* WITH_ACL */ +#ifdef WITH_ATTR + /* + * If the third parameter is NULL, all extended attributes + * except those that define Access Control Lists are copied. + * ACLs are excluded by default because copying them between + * file systems with and without ACL support needs some + * additional logic so that no unexpected permissions result. + */ + || ( !reset_selinux + && (attr_copy_path (src, dst, NULL, &ctx) != 0) + && (errno != 0)) +#endif /* WITH_ATTR */ + || (copy_tree_impl (src, dst, false, reset_selinux, + old_uid, new_uid, old_gid, new_gid) != 0) + || (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0)) { + err = -1; + } + + return err; +} + +/* + * readlink_malloc - wrapper for readlink + * + * return NULL on error. + * The return string shall be freed by the caller. + */ +static /*@null@*/char *readlink_malloc (const char *filename) +{ + size_t size = 1024; + + while (true) { + ssize_t nchars; + char *buffer = MALLOC(size, char); + if (NULL == buffer) { + return NULL; + } + + nchars = readlink (filename, buffer, size); + + if (nchars < 0) { + free(buffer); + return NULL; + } + + if ((size_t) nchars < size) { /* The buffer was large enough */ + /* readlink does not nul-terminate */ + buffer[nchars] = '\0'; + return buffer; + } + + /* Try again with a bigger buffer */ + free (buffer); + size *= 2; + } +} + +/* + * copy_symlink - copy a symlink + * + * Copy a symlink from src to dst. + * + * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set + * the access and modification and the access rights. + * + * Return 0 on success, -1 on error. + */ +static int copy_symlink (const struct path_info *src, const struct path_info *dst, + MAYBE_UNUSED bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + char *oldlink; + + /* copy_tree () must be the entry point */ + assert (NULL != src_orig); + assert (NULL != dst_orig); + + /* + * Get the name of the file which the link points + * to. If that name begins with the original + * source directory name, that part of the link + * name will be replaced with the original + * destination directory name. + */ + + oldlink = readlink_malloc (src->full_path); + if (NULL == oldlink) { + return -1; + } + + /* If src was a link to an entry of the src_orig directory itself, + * create a link to the corresponding entry in the dst_orig + * directory. + */ + if (strncmp(oldlink, src_orig, strlen(src_orig)) == 0) { + char *dummy; + + xasprintf(&dummy, "%s%s", dst_orig, oldlink + strlen(src_orig)); + free(oldlink); + oldlink = dummy; + } + +#ifdef WITH_SELINUX + if (set_selinux_file_context (dst->full_path, S_IFLNK) != 0) { + free (oldlink); + return -1; + } +#endif /* WITH_SELINUX */ + if ( (symlinkat (oldlink, dst->dirfd, dst->name) != 0) + || (chownat_if_needed (dst, statp, + old_uid, new_uid, old_gid, new_gid) != 0)) { + /* FIXME: there are no modes on symlinks, right? + * ACL could be copied, but this would be much more + * complex than calling perm_copy_file. + * Ditto for Extended Attributes. + * We currently only document that ACL and Extended + * Attributes are not copied. + */ + free (oldlink); + return -1; + } + free (oldlink); + + if (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0) { + return -1; + } + + return 0; +} + +/* + * copy_hardlink - copy a hardlink + * + * Copy a hardlink from src to dst. + * + * Return 0 on success, -1 on error. + */ +static int copy_hardlink (const struct path_info *dst, + MAYBE_UNUSED bool reset_selinux, + struct link_name *lp) +{ + /* FIXME: selinux, ACL, Extended Attributes needed? */ + + if (linkat (AT_FDCWD, lp->ln_name, dst->dirfd, dst->name, 0) != 0) { + return -1; + } + + /* If the file could be unlinked, decrement the links counter, + * and forget about this link if it was the last reference */ + lp->ln_count--; + if (lp->ln_count <= 0) { + remove_link (lp); + } + + return 0; +} + + +/* + * copy_special - copy a special file + * + * Copy a special file from src to dst. + * + * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set + * the access and modification and the access rights. + * + * Return 0 on success, -1 on error. + */ +static int +copy_special(const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ +#if defined(WITH_SELINUX) + if (set_selinux_file_context(dst->full_path, statp->st_mode & S_IFMT) != 0) + return -1; +#endif + + if (mknodat(dst->dirfd, dst->name, statp->st_mode & ~07777U, statp->st_rdev) == -1) + return -1; + + if (chownat_if_needed(dst, statp, old_uid, new_uid, old_gid, new_gid) == -1) + return -1; + + if (fchmodat(dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) == -1) + return -1; + +#if defined(WITH_ACL) + if (perm_copy_path(src, dst, &ctx) == -1 && errno != 0) + return -1; +#endif + +#if defined(WITH_ATTR) + /* + * If the third parameter is NULL, all extended attributes + * except those that define Access Control Lists are copied. + * ACLs are excluded by default because copying them between + * file systems with and without ACL support needs some + * additional logic so that no unexpected permissions result. + */ + if (!reset_selinux) { + if (attr_copy_path(src, dst, NULL, &ctx) == -1 && errno != 0) + return -1; + } +#endif + + if (utimensat(dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) == -1) + return -1; + + return 0; +} + +/* + * copy_file - copy a file + * + * Copy a file from src to dst. + * + * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set + * the access and modification and the access rights. + * + * Return 0 on success, -1 on error. + */ +static int copy_file (const struct path_info *src, const struct path_info *dst, + bool reset_selinux, + const struct stat *statp, const struct timespec mt[], + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + int err = 0; + int ifd; + int ofd; + + ifd = openat (src->dirfd, src->name, O_RDONLY|O_NOFOLLOW|O_CLOEXEC); + if (ifd < 0) { + return -1; + } +#ifdef WITH_SELINUX + if (set_selinux_file_context (dst->full_path, S_IFREG) != 0) { + (void) close (ifd); + return -1; + } +#endif /* WITH_SELINUX */ + ofd = openat (dst->dirfd, dst->name, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | O_NOFOLLOW | O_CLOEXEC, 0600); + if ( (ofd < 0) + || (fchown_if_needed (ofd, statp, + old_uid, new_uid, old_gid, new_gid) != 0) + || (fchmod (ofd, statp->st_mode & 07777) != 0) +#ifdef WITH_ACL + || ( (perm_copy_fd (src->full_path, ifd, dst->full_path, ofd, &ctx) != 0) + && (errno != 0)) +#endif /* WITH_ACL */ +#ifdef WITH_ATTR + /* + * If the third parameter is NULL, all extended attributes + * except those that define Access Control Lists are copied. + * ACLs are excluded by default because copying them between + * file systems with and without ACL support needs some + * additional logic so that no unexpected permissions result. + */ + || ( !reset_selinux + && (attr_copy_fd (src->full_path, ifd, dst->full_path, ofd, NULL, &ctx) != 0) + && (errno != 0)) +#endif /* WITH_ATTR */ + ) { + if (ofd >= 0) { + (void) close (ofd); + } + (void) close (ifd); + return -1; + } + + while (true) { + char buf[8192]; + ssize_t cnt; + + cnt = read (ifd, buf, sizeof buf); + if (cnt < 0) { + if (errno == EINTR) { + continue; + } + (void) close (ofd); + (void) close (ifd); + return -1; + } + if (cnt == 0) { + break; + } + + if (write_full(ofd, buf, cnt) == -1) { + (void) close (ofd); + (void) close (ifd); + return -1; + } + } + + (void) close (ifd); + if (close (ofd) != 0 && errno != EINTR) { + return -1; + } + + if (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0) { + return -1; + } + + return err; +} + +#define def_chown_if_needed(chown_function, type_dst) \ +static int chown_function ## _if_needed (type_dst dst, \ + const struct stat *statp, \ + uid_t old_uid, uid_t new_uid, \ + gid_t old_gid, gid_t new_gid) \ +{ \ + uid_t tmpuid = (uid_t) -1; \ + gid_t tmpgid = (gid_t) -1; \ + \ + /* Use new_uid if old_uid is set to -1 or if the file was \ + * owned by the user. */ \ + if (((uid_t) -1 == old_uid) || (statp->st_uid == old_uid)) { \ + tmpuid = new_uid; \ + } \ + /* Otherwise, or if new_uid was set to -1, we keep the same \ + * owner. */ \ + if ((uid_t) -1 == tmpuid) { \ + tmpuid = statp->st_uid; \ + } \ + \ + if (((gid_t) -1 == old_gid) || (statp->st_gid == old_gid)) { \ + tmpgid = new_gid; \ + } \ + if ((gid_t) -1 == tmpgid) { \ + tmpgid = statp->st_gid; \ + } \ + \ + return chown_function (dst, tmpuid, tmpgid); \ +} + +def_chown_if_needed (fchown, int) + +static int chownat_if_needed (const struct path_info *dst, + const struct stat *statp, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + uid_t tmpuid = (uid_t) -1; + gid_t tmpgid = (gid_t) -1; + + /* Use new_uid if old_uid is set to -1 or if the file was + * owned by the user. */ + if (((uid_t) -1 == old_uid) || (statp->st_uid == old_uid)) { + tmpuid = new_uid; + } + /* Otherwise, or if new_uid was set to -1, we keep the same + * owner. */ + if ((uid_t) -1 == tmpuid) { + tmpuid = statp->st_uid; + } + + if (((gid_t) -1 == old_gid) || (statp->st_gid == old_gid)) { + tmpgid = new_gid; + } + if ((gid_t) -1 == tmpgid) { + tmpgid = statp->st_gid; + } + + return fchownat (dst->dirfd, dst->name, tmpuid, tmpgid, AT_SYMLINK_NOFOLLOW); +} + +/* + * copy_tree - copy files in a directory tree + * + * copy_tree() walks a directory tree and copies ordinary files + * as it goes. + * + * When reset_selinux is enabled, extended attributes (and thus + * SELinux attributes) are not copied. + * + * old_uid and new_uid are used to set the ownership of the copied + * files. Unless old_uid is set to -1, only the files owned by + * old_uid have their ownership changed to new_uid. In addition, if + * new_uid is set to -1, no ownership will be changed. + * + * The same logic applies for the group-ownership and + * old_gid/new_gid. + */ +int copy_tree (const char *src_root, const char *dst_root, + bool copy_root, bool reset_selinux, + uid_t old_uid, uid_t new_uid, + gid_t old_gid, gid_t new_gid) +{ + const struct path_info src = { + .full_path = src_root, + .dirfd = AT_FDCWD, + .name = src_root + }; + const struct path_info dst = { + .full_path = dst_root, + .dirfd = AT_FDCWD, + .name = dst_root + }; + + return copy_tree_impl(&src, &dst, copy_root, reset_selinux, + old_uid, new_uid, old_gid, new_gid); +} diff --git a/lib/csrand.c b/lib/csrand.c new file mode 100644 index 0000000..8ded343 --- /dev/null +++ b/lib/csrand.c @@ -0,0 +1,150 @@ +/* + * SPDX-FileCopyrightText: Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include +#if HAVE_SYS_RANDOM_H +#include +#endif +#include "bit.h" +#include "defines.h" +#include "prototypes.h" +#include "shadowlog.h" +#include "sizeof.h" + + +static uint32_t csrand32(void); +static uint32_t csrand_uniform32(uint32_t n); +static unsigned long csrand_uniform_slow(unsigned long n); + + +/* + * Return a uniformly-distributed CS random u_long value. + */ +unsigned long +csrand(void) +{ + FILE *fp; + unsigned long r; + +#ifdef HAVE_GETENTROPY + /* getentropy may exist but lack kernel support. */ + if (getentropy(&r, sizeof(r)) == 0) + return r; +#endif + +#ifdef HAVE_GETRANDOM + /* Likewise getrandom. */ + if (getrandom(&r, sizeof(r), 0) == sizeof(r)) + return r; +#endif + +#ifdef HAVE_ARC4RANDOM_BUF + /* arc4random_buf can never fail. */ + arc4random_buf(&r, sizeof(r)); + return r; +#endif + + /* Use /dev/urandom as a last resort. */ + fp = fopen("/dev/urandom", "r"); + if (NULL == fp) { + goto fail; + } + + if (fread(&r, sizeof(r), 1, fp) != 1) { + fclose(fp); + goto fail; + } + + fclose(fp); + return r; + +fail: + fprintf(log_get_logfd(), _("Unable to obtain random bytes.\n")); + exit(1); +} + + +/* + * Return a uniformly-distributed CS random value in the interval [0, n-1]. + */ +unsigned long +csrand_uniform(unsigned long n) +{ + if (n == 0 || n > UINT32_MAX) + return csrand_uniform_slow(n); + + return csrand_uniform32(n); +} + + +/* + * Return a uniformly-distributed CS random value in the interval [min, max]. + */ +unsigned long +csrand_interval(unsigned long min, unsigned long max) +{ + return csrand_uniform(max - min + 1) + min; +} + + +static uint32_t +csrand32(void) +{ + return csrand(); +} + + +/* + * Fast Random Integer Generation in an Interval + * ACM Transactions on Modeling and Computer Simulation 29 (1), 2019 + * + */ +static uint32_t +csrand_uniform32(uint32_t n) +{ + uint32_t bound, rem; + uint64_t r, mult; + + if (n == 0) + return csrand32(); + + bound = -n % n; // analogous to `2^32 % n`, since `x % y == (x-y) % y` + + do { + r = csrand32(); + mult = r * n; + rem = mult; // analogous to `mult % 2^32` + } while (rem < bound); // p = (2^32 % n) / 2^32; W.C.: n=2^31+1, p=0.5 + + r = mult >> WIDTHOF(n); // analogous to `mult / 2^32` + + return r; +} + + +static unsigned long +csrand_uniform_slow(unsigned long n) +{ + unsigned long r, max, mask; + + max = n - 1; + mask = bit_ceil_wrapul(n) - 1; + + do { + r = csrand(); + r &= mask; // optimization + } while (r > max); // p = ((mask+1) % n) / (mask+1); W.C.: p=0.5 + + return r; +} diff --git a/lib/defines.h b/lib/defines.h index d01f691..8c55ddd 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -6,41 +6,8 @@ #include "config.h" -#if HAVE_STDBOOL_H -# include -#else -# if ! HAVE__BOOL -# ifdef __cplusplus -typedef bool _Bool; -# else -typedef unsigned char _Bool; -# endif -# endif -# define bool _Bool -# define false (0) -# define true (1) -# define __bool_true_false_are_defined 1 -#endif - -/* Take care of NLS matters. */ -#ifdef S_SPLINT_S -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); -# define _(Text) Text -# define ngettext(Msgid1, Msgid2, N) \ - ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -#else -#ifdef HAVE_LOCALE_H -# include -#else -# undef setlocale -# define setlocale(category, locale) (NULL) -# ifndef LC_ALL -# define LC_ALL 6 -# endif -#endif +#include +#include #define gettext_noop(String) (String) /* #define gettext_def(String) "#define String" */ @@ -57,22 +24,18 @@ extern char * textdomain (const char * domainname); # define ngettext(Msgid1, Msgid2, N) \ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) #endif -#endif +#include #include #include -#if HAVE_ERRNO_H -# include -#endif +#include #include #include #include -#if HAVE_UNISTD_H -# include -#endif +#include /* * crypt(3), crypt_gensalt(3), and their @@ -85,22 +48,6 @@ extern char * textdomain (const char * domainname); #include #include -#ifdef HAVE_MEMSET_S -# define memzero(ptr, size) memset_s((ptr), 0, (size)) -#elif defined HAVE_EXPLICIT_BZERO /* !HAVE_MEMSET_S */ -# define memzero(ptr, size) explicit_bzero((ptr), (size)) -#else /* !HAVE_MEMSET_S && HAVE_EXPLICIT_BZERO */ -static inline void memzero(void *ptr, size_t size) -{ - volatile unsigned char * volatile p = ptr; - while (size--) { - *p++ = '\0'; - } -} -#endif /* !HAVE_MEMSET_S && !HAVE_EXPLICIT_BZERO */ - -#define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */ - #include /* @@ -123,7 +70,6 @@ static inline void memzero(void *ptr, size_t size) #endif #endif -#ifdef USE_SYSLOG #include #ifndef LOG_WARN @@ -170,14 +116,6 @@ static inline void memzero(void *ptr, size_t size) #define SYSLOG(x) syslog x #endif /* !ENABLE_NLS */ -#else /* !USE_SYSLOG */ - -#define SYSLOG(x) /* empty */ -#define openlog(a,b,c) /* empty */ -#define closelog() /* empty */ - -#endif /* !USE_SYSLOG */ - /* The default syslog settings can now be changed here, in just one place. */ @@ -192,63 +130,25 @@ static inline void memzero(void *ptr, size_t size) #define OPENLOG(progname) openlog(progname, SYSLOG_OPTIONS, SYSLOG_FACILITY) -#ifndef F_OK -# define F_OK 0 -# define X_OK 1 -# define W_OK 2 -# define R_OK 4 -#endif - -#ifndef SEEK_SET -# define SEEK_SET 0 -# define SEEK_CUR 1 -# define SEEK_END 2 -#endif - -#if HAVE_TERMIOS_H -# include -# define STTY(fd, termio) tcsetattr(fd, TCSANOW, termio) -# define GTTY(fd, termio) tcgetattr(fd, termio) -# define TERMIO struct termios -# define USE_TERMIOS -#else /* assumed HAVE_TERMIO_H */ -# include -# include -# define STTY(fd, termio) ioctl(fd, TCSETA, termio) -# define GTTY(fd, termio) ioctl(fd, TCGETA, termio) -# define TEMRIO struct termio -# define USE_TERMIO -#endif +#include +#define STTY(fd, termio) tcsetattr(fd, TCSANOW, termio) +#define GTTY(fd, termio) tcgetattr(fd, termio) +#define TERMIO struct termios /* * Password aging constants * * DAY - seconds / day * WEEK - seconds / week - * SCALE - seconds / aging unit */ /* Solaris defines this in shadow.h */ #ifndef DAY -#define DAY (24L*3600L) +#define DAY ((time_t) 24 * 3600) #endif #define WEEK (7*DAY) -#ifdef ITI_AGING -#define SCALE 1 -#else -#define SCALE DAY -#endif - -/* Copy string pointed by B to array A with size checking. It was originally - in lmain.c but is _very_ useful elsewhere. Some setuid root programs with - very sloppy coding used to assume that BUFSIZ will always be enough... */ - - /* danger - side effects */ -#define STRFCPY(A,B) \ - (strncpy((A), (B), sizeof(A) - 1), (A)[sizeof(A) - 1] = '\0') - #ifndef PASSWD_FILE #define PASSWD_FILE "/etc/passwd" #endif @@ -261,22 +161,18 @@ static inline void memzero(void *ptr, size_t size) #define SHADOW_FILE "/etc/shadow" #endif -#ifdef SHADOWGRP -#ifndef SGROUP_FILE -#define SGROUP_FILE "/etc/gshadow" -#endif +#ifndef SUBUID_FILE +#define SUBUID_FILE "/etc/subuid" #endif -#ifndef NULL -#define NULL ((void *) 0) +#ifndef SUBGID_FILE +#define SUBGID_FILE "/etc/subgid" #endif -#ifdef sun /* hacks for compiling on SunOS */ -# ifndef SOLARIS -extern int fputs (); -extern char *strdup (); -extern char *strerror (); -# endif +#ifdef SHADOWGRP +#ifndef SGROUP_FILE +#define SGROUP_FILE "/etc/gshadow" +#endif #endif /* @@ -288,45 +184,16 @@ extern char *strerror (); #define SHADOW_PASSWD_STRING "x" #endif -#define SHADOW_SP_FLAG_UNSET ((unsigned long int)-1) +#define SHADOW_SP_FLAG_UNSET ((unsigned long)-1) #ifdef WITH_AUDIT -#ifdef __u8 /* in case we use pam < 0.80 */ +/* in case we use pam < 0.80 */ #undef __u8 -#endif -#ifdef __u32 #undef __u32 -#endif #include #endif -/* To be used for verified unused parameters */ -#if defined(__GNUC__) && !defined(__STRICT_ANSI__) -# define unused __attribute__((unused)) -# define format_attr(type, index, check) __attribute__((format (type, index, check))) -#else -# define unused -# define format_attr(type, index, check) -#endif - -/* Maximum length of usernames */ -#ifdef HAVE_UTMPX_H -# include -# define USER_NAME_MAX_LENGTH (sizeof (((struct utmpx *)NULL)->ut_user)) -#else -# include -# ifdef HAVE_STRUCT_UTMP_UT_USER -# define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_user)) -# else -# ifdef HAVE_STRUCT_UTMP_UT_NAME -# define USER_NAME_MAX_LENGTH (sizeof (((struct utmp *)NULL)->ut_name)) -# else -# define USER_NAME_MAX_LENGTH 32 -# endif -# endif -#endif - /* Maximum length of passwd entry */ #define PASSWD_ENTRY_MAX_LENGTH 32768 @@ -336,4 +203,14 @@ extern char *strerror (); # define shadow_getenv(name) getenv(name) #endif +/* + * Maximum password length + * + * Consider that there is also limit in PAM (PAM_MAX_RESP_SIZE) + * currently set to 512. + */ +#if !defined(PASS_MAX) +#define PASS_MAX BUFSIZ - 1 +#endif + #endif /* _DEFINES_H_ */ diff --git a/lib/env.c b/lib/env.c new file mode 100644 index 0000000..9b5fd32 --- /dev/null +++ b/lib/env.c @@ -0,0 +1,236 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include + +#include "alloc.h" +#include "prototypes.h" +#include "defines.h" +#include "shadowlog.h" +#include "string/sprintf.h" + + +/* + * NEWENVP_STEP must be a power of two. This is the number + * of (char *) pointers to allocate at a time, to avoid using + * realloc() too often. + */ +#define NEWENVP_STEP 16 +size_t newenvc = 0; +/*@null@*/char **newenvp = NULL; + +static const char *const forbid[] = { + "_RLD_=", + "BASH_ENV=", /* GNU creeping featurism strikes again... */ + "ENV=", + "HOME=", + "IFS=", + "KRB_CONF=", + "LD_", /* anything with the LD_ prefix */ + "LIBPATH=", + "MAIL=", + "NLSPATH=", + "PATH=", + "SHELL=", + "SHLIB_PATH=", + NULL +}; + +/* these are allowed, but with no slashes inside + (to work around security problems in GNU gettext) */ +static const char *const noslash[] = { + "LANG=", + "LANGUAGE=", + "LC_", /* anything with the LC_ prefix */ + NULL +}; + +/* + * initenv() must be called once before using addenv(). + */ +void initenv (void) +{ + newenvp = XMALLOC(NEWENVP_STEP, char *); + *newenvp = NULL; +} + + +void addenv (const char *string, /*@null@*/const char *value) +{ + char *cp, *newstring; + size_t i, n; + + if (NULL != value) { + xasprintf(&newstring, "%s=%s", string, value); + } else { + newstring = xstrdup (string); + } + + /* + * Search for a '=' character within the string and if none is found + * just ignore the whole string. + */ + + cp = strchr (newstring, '='); + if (NULL == cp) { + free(newstring); + return; + } + + n = (size_t) (cp - newstring); + + /* + * If this environment variable is already set, change its value. + */ + for (i = 0; i < newenvc; i++) { + if ( (strncmp (newstring, newenvp[i], n) == 0) + && (('=' == newenvp[i][n]) || ('\0' == newenvp[i][n]))) { + break; + } + } + + if (i < newenvc) { + free(newenvp[i]); + newenvp[i] = newstring; + return; + } + + /* + * Otherwise, save the new environment variable + */ + newenvp[newenvc++] = newstring; + + /* + * And extend the environment if needed. + */ + + /* + * Check whether newenvc is a multiple of NEWENVP_STEP. + * If so we have to resize the vector. + * the expression (newenvc & (NEWENVP_STEP - 1)) == 0 + * is equal to (newenvc % NEWENVP_STEP) == 0 + * as long as NEWENVP_STEP is a power of 2. + */ + + if ((newenvc & (NEWENVP_STEP - 1)) == 0) { + bool update_environ; + + update_environ = (environ == newenvp); + + newenvp = XREALLOC(newenvp, newenvc + NEWENVP_STEP, char *); + + /* + * If this is our current environment, update + * environ so that it doesn't point to some + * free memory area (realloc() could move it). + */ + if (update_environ) + environ = newenvp; + } + + /* + * The last entry of newenvp must be NULL + */ + + newenvp[newenvc] = NULL; +} + + +/* + * set_env - copy command line arguments into the environment + */ +void set_env (int argc, char *const *argv) +{ + int noname = 1; + char variable[1024]; + char *cp; + + for (; argc > 0; argc--, argv++) { + if (strlen (*argv) >= sizeof variable) { + continue; /* ignore long entries */ + } + + cp = strchr (*argv, '='); + if (NULL == cp) { + assert(SNPRINTF(variable, "L%d", noname) != -1); + noname++; + addenv (variable, *argv); + } else { + const char *const *p; + + for (p = forbid; NULL != *p; p++) { + if (strncmp (*argv, *p, strlen (*p)) == 0) { + break; + } + } + + if (NULL != *p) { + stpcpy(mempcpy(variable, *argv, (size_t)(cp - *argv)), ""); + printf (_("You may not change $%s\n"), + variable); + continue; + } + + addenv (*argv, NULL); + } + } +} + +/* + * sanitize_env - remove some nasty environment variables + * If you fall into a total paranoia, you should call this + * function for any root-setuid program or anything the user + * might change the environment with. 99% useless as almost + * all modern Unixes will handle setuid executables properly, + * but... I feel better with that silly precaution. -j. + */ + +void sanitize_env (void) +{ + char **envp = environ; + const char *const *bad; + char **cur; + char **move; + + for (cur = envp; NULL != *cur; cur++) { + for (bad = forbid; NULL != *bad; bad++) { + if (strncmp (*cur, *bad, strlen (*bad)) == 0) { + for (move = cur; NULL != *move; move++) { + *move = *(move + 1); + } + cur--; + break; + } + } + } + + for (cur = envp; NULL != *cur; cur++) { + for (bad = noslash; NULL != *bad; bad++) { + if (strncmp (*cur, *bad, strlen (*bad)) != 0) { + continue; + } + if (strchr (*cur, '/') == NULL) { + continue; /* OK */ + } + for (move = cur; NULL != *move; move++) { + *move = *(move + 1); + } + cur--; + break; + } + } +} + diff --git a/lib/failure.c b/lib/failure.c new file mode 100644 index 0000000..e42e710 --- /dev/null +++ b/lib/failure.c @@ -0,0 +1,267 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include + +#include "defines.h" +#include "faillog.h" +#include "failure.h" +#include "memzero.h" +#include "prototypes.h" +#include "string/strftime.h" +#include "string/strtcpy.h" + + +#define YEAR (365L*DAY) +/* + * failure - make failure entry + * + * failure() creates a new (struct faillog) entry or updates an + * existing one with the current failed login information. + */ +void failure (uid_t uid, const char *tty, struct faillog *fl) +{ + int fd; + off_t offset_uid = (off_t) (sizeof *fl) * uid; + + /* + * Don't do anything if failure logging isn't set up. + */ + + if (access (FAILLOG_FILE, F_OK) != 0) { + return; + } + + fd = open (FAILLOG_FILE, O_RDWR); + if (fd < 0) { + SYSLOG ((LOG_WARN, + "Can't write faillog entry for UID %lu in %s: %m", + (unsigned long) uid, FAILLOG_FILE)); + return; + } + + /* + * The file is indexed by UID value meaning that shared UID's + * share failure log records. That's OK since they really + * share just about everything else ... + */ + + if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) + || (read (fd, fl, sizeof *fl) != (ssize_t) sizeof *fl)) { + /* This is not necessarily a failure. The file is + * initially zero length. + * + * If lseek() or read() failed for any other reason, this + * might reset the counter. But the new failure will be + * logged. + */ + memzero (fl, sizeof *fl); + } + + /* + * Update the record. We increment the failure count to log the + * latest failure. The only concern here is overflow, and we'll + * check for that. The line name and time of day are both + * updated as well. + */ + + if (fl->fail_cnt + 1 > 0) { + fl->fail_cnt++; + } + + STRTCPY(fl->fail_line, tty); + (void) time (&fl->fail_time); + + /* + * Seek back to the correct position in the file and write the + * record out. Ideally we should lock the file in case the same + * account is being logged simultaneously. But the risk doesn't + * seem that great. + */ + + if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) + || (write_full(fd, fl, sizeof *fl) == -1)) { + goto err_write; + } + + if (close (fd) != 0 && errno != EINTR) { + goto err_close; + } + + return; + +err_write: + { + int saved_errno = errno; + (void) close (fd); + errno = saved_errno; + } +err_close: + SYSLOG ((LOG_WARN, + "Can't write faillog entry for UID %lu to %s: %m", + (unsigned long) uid, FAILLOG_FILE)); +} + +static bool too_many_failures (const struct faillog *fl) +{ + time_t now; + + if ((0 == fl->fail_max) || (fl->fail_cnt < fl->fail_max)) { + return false; + } + + if (0 == fl->fail_locktime) { + return true; /* locked until reset manually */ + } + + (void) time (&now); + if ((fl->fail_time + fl->fail_locktime) < now) { + return false; /* enough time since last failure */ + } + + return true; +} + +/* + * failcheck - check for failures > allowable + * + * failcheck() is called AFTER the password has been validated. If the + * account has been "attacked" with too many login failures, failcheck() + * returns 0 to indicate that the login should be denied even though + * the password is valid. + * + * failed indicates if the login failed AFTER the password has been + * validated. + */ + +int failcheck (uid_t uid, struct faillog *fl, bool failed) +{ + int fd; + struct faillog fail; + off_t offset_uid = (off_t) (sizeof *fl) * uid; + + /* + * Suppress the check if the log file isn't there. + */ + + if (access (FAILLOG_FILE, F_OK) != 0) { + return 1; + } + + fd = open (FAILLOG_FILE, failed?O_RDONLY:O_RDWR); + if (fd < 0) { + SYSLOG ((LOG_WARN, + "Can't open the faillog file (%s) to check UID %lu: %m; " + "User access authorized.", + FAILLOG_FILE, (unsigned long) uid)); + return 1; + } + + /* + * Get the record from the file and determine if the user has + * exceeded the failure limit. If "max" is zero, any number + * of failures are permitted. Only when "max" is non-zero and + * "cnt" is greater than or equal to "max" is the account + * considered to be locked. + * + * If read fails, there is no record for this user yet (the + * file is initially zero length and extended by writes), so + * no need to reset the count. + */ + + if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) + || (read (fd, fl, sizeof *fl) != (ssize_t) sizeof *fl)) { + (void) close (fd); + return 1; + } + + if (too_many_failures (fl)) { + (void) close (fd); + return 0; + } + + /* + * The record is updated if this is not a failure. The count will + * be reset to zero, but the rest of the information will be left + * in the record in case someone wants to see where the failed + * login originated. + */ + + if (!failed) { + fail = *fl; + fail.fail_cnt = 0; + + if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) + || (write_full(fd, &fail, sizeof fail) == -1)) { + goto err_write; + } + + if (close (fd) != 0 && errno != EINTR) { + goto err_close; + } + } else { + (void) close (fd); + } + + return 1; + +err_write: + { + int saved_errno = errno; + (void) close (fd); + errno = saved_errno; + } +err_close: + SYSLOG ((LOG_WARN, + "Can't reset faillog entry for UID %lu in %s: %m", + (unsigned long) uid, FAILLOG_FILE)); + return 1; +} + +/* + * failprint - print line of failure information + * + * failprint takes a (struct faillog) entry and formats it into a + * message which is displayed at login time. + */ + +void failprint (const struct faillog *fail) +{ + struct tm *tp; + char lasttimeb[256]; + char *lasttime = lasttimeb; + time_t NOW; + + if (0 == fail->fail_cnt) { + return; + } + + tp = localtime (&(fail->fail_time)); + (void) time (&NOW); + + /* + * Print all information we have. + */ + STRFTIME(lasttimeb, "%c", tp); + + /*@-formatconst@*/ + (void) printf (ngettext ("%d failure since last login.\n" + "Last was %s on %s.\n", + "%d failures since last login.\n" + "Last was %s on %s.\n", + (unsigned long) fail->fail_cnt), + fail->fail_cnt, lasttime, fail->fail_line); + /*@=formatconst@*/ +} diff --git a/lib/failure.h b/lib/failure.h new file mode 100644 index 0000000..1352b68 --- /dev/null +++ b/lib/failure.h @@ -0,0 +1,44 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* $Id$ */ +#ifndef _FAILURE_H_ +#define _FAILURE_H_ + +#include "defines.h" +#include "faillog.h" + +/* + * failure - make failure entry + * + * failure() creates a new (struct faillog) entry or updates an + * existing one with the current failed login information. + */ +extern void failure (uid_t, const char *, struct faillog *); + +/* + * failcheck - check for failures > allowable + * + * failcheck() is called AFTER the password has been validated. If the + * account has been "attacked" with too many login failures, failcheck() + * returns FALSE to indicate that the login should be denied even though + * the password is valid. + */ +extern int failcheck (uid_t uid, struct faillog *fl, bool failed); + +/* + * failprint - print line of failure information + * + * failprint takes a (struct faillog) entry and formats it into a + * message which is displayed at login time. + */ +extern void failprint (const struct faillog *); + +#endif + diff --git a/lib/fd.c b/lib/fd.c new file mode 100644 index 0000000..bcfa374 --- /dev/null +++ b/lib/fd.c @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: 2024, Skyler Ferrante +// SPDX-License-Identifier: BSD-3-Clause + +/** + * To protect against file descriptor omission attacks, we open the std file + * descriptors with /dev/null if they are not already open. Code is based on + * fix_fds from sudo.c. + */ + +#include +#include +#include + +#include "prototypes.h" + +static void check_fd(int fd); + +void +check_fds(void) +{ + /** + * Make sure stdin, stdout, stderr are open + * If they are closed, set them to /dev/null + */ + check_fd(STDIN_FILENO); + check_fd(STDOUT_FILENO); + check_fd(STDERR_FILENO); +} + +static void +check_fd(int fd) +{ + int devnull; + + if (fcntl(fd, F_GETFL, 0) != -1) + return; + + devnull = open("/dev/null", O_RDWR); + if (devnull != fd) + abort(); +} diff --git a/lib/fields.c b/lib/fields.c index 8a56035..5392924 100644 --- a/lib/fields.c +++ b/lib/fields.c @@ -21,9 +21,9 @@ * * The supplied field is scanned for non-printable and other illegal * characters. - * + -1 is returned if an illegal character is present. - * + 1 is returned if no illegal characters are present, but the field - * contains a non-printable character. + * + -1 is returned if an illegal or control character is present. + * + 1 is returned if no illegal or control characters are present, + * but the field contains a non-printable character. * + 0 is returned otherwise. */ int valid_field (const char *field, const char *illegal) @@ -37,23 +37,22 @@ int valid_field (const char *field, const char *illegal) /* For each character of field, search if it appears in the list * of illegal characters. */ + if (illegal && NULL != strpbrk (field, illegal)) { + return -1; + } + + /* Search if there are non-printable or control characters */ for (cp = field; '\0' != *cp; cp++) { - if (strchr (illegal, *cp) != NULL) { + unsigned char c = *cp; + if (!isprint (c)) { + err = 1; + } + if (iscntrl (c)) { err = -1; break; } } - if (0 == err) { - /* Search if there are some non-printable characters */ - for (cp = field; '\0' != *cp; cp++) { - if (!isprint (*cp)) { - err = 1; - break; - } - } - } - return err; } @@ -74,7 +73,7 @@ void change_field (char *buf, size_t maxsize, const char *prompt) printf ("\t%s [%s]: ", prompt, buf); (void) fflush (stdout); - if (fgets (newf, (int) maxsize, stdin) != newf) { + if (fgets (newf, maxsize, stdin) != newf) { return; } @@ -91,17 +90,16 @@ void change_field (char *buf, size_t maxsize, const char *prompt) * entering a space. --marekm */ - while (--cp >= newf && isspace (*cp)); - cp++; + while (newf < cp && isspace (cp[-1])) { + cp--; + } *cp = '\0'; cp = newf; - while (('\0' != *cp) && isspace (*cp)) { + while (isspace (*cp)) { cp++; } - strncpy (buf, cp, maxsize - 1); - buf[maxsize - 1] = '\0'; + strcpy (buf, cp); } } - diff --git a/lib/find_new_gid.c b/lib/find_new_gid.c new file mode 100644 index 0000000..cfd5609 --- /dev/null +++ b/lib/find_new_gid.c @@ -0,0 +1,500 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François + * SPDX-FileCopyrightText: 2014, Red Hat, Inc. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include +#include +#include + +#include "alloc.h" +#include "prototypes.h" +#include "groupio.h" +#include "getdef.h" +#include "shadowlog.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 = 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 = getdef_ulong ("GID_MIN", 1000UL) - 1; + *max_id = getdef_ulong ("SYS_GID_MAX", gid_def_max); + + /* Check that the ranges make sense */ + if (*max_id < *min_id) { + (void) fprintf (log_get_logfd(), + _("%s: Invalid configuration: SYS_GID_MIN (%lu), " + "GID_MIN (%lu), SYS_GID_MAX (%lu)\n"), + log_get_progname(), (unsigned long) *min_id, + getdef_ulong ("GID_MIN", 1000UL), + (unsigned long) *max_id); + return EINVAL; + } + /* + * Zero is reserved for root and the allocation algorithm does not + * work right with it. + */ + if (*min_id == 0) { + *min_id = (gid_t) 1; + } + } else { + /* Non-system groups */ + + /* Get the values from login.defs or use reasonable defaults */ + *min_id = getdef_ulong ("GID_MIN", 1000UL); + *max_id = 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 (log_get_logfd(), + _("%s: Invalid configuration: GID_MIN (%lu), " + "GID_MAX (%lu)\n"), + log_get_progname(), (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 might clash with -1, return EINVAL + * 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, + const bool *used_gids) +{ + /* First test that the preferred ID is in the range */ + if (gid < gid_min || gid > gid_max) { + return ERANGE; + } + + /* Check for compatibility with 16b and 32b gid_t error codes */ + if (gid == UINT16_MAX || gid == UINT32_MAX) { + return EINVAL; + } + + /* + * 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. + * + * If successful, find_new_gid provides an unused group ID in the + * [GID_MIN:GID_MAX] range. + * This ID should be higher than all the used GID, but if not possible, + * the lowest unused ID in the range will be returned. + * + * 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) +{ + 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); + + /* + * 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 || result == EINVAL) { + /* + * Continue on below. At this time, we won't + * treat these three 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 (log_get_logfd(), + _("%s: Encountered error attempting to use " + "preferred GID: %s\n"), + log_get_progname(), 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 = CALLOC (gid_max + 1, bool); + if (NULL == used_gids) { + fprintf (log_get_logfd(), + _("%s: failed to allocate memory: %s\n"), + log_get_progname(), strerror (errno)); + return -1; + } + + /* 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? + */ + if ((grp->gr_gid <= lowest_found) && (grp->gr_gid >= gid_min)) { + lowest_found = grp->gr_gid - 1; + } + + /* + * 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; + } + + /* create index of used GIDs */ + if (grp->gr_gid >= gid_min + && grp->gr_gid <= gid_max) { + + used_gids[grp->gr_gid] = true; + } + } + + if (sys_group) { + /* + * 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 0; + } else if (result == EEXIST || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique system GID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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_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 || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique system GID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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 { /* !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 0; + } else if (result == EEXIST || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique GID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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 || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique GID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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 (log_get_logfd(), + _("%s: Can't get unique GID (no more available GIDs)\n"), + log_get_progname()); + SYSLOG ((LOG_WARN, "no more available GIDs on the system")); + free (used_gids); + return -1; +} + diff --git a/lib/find_new_sub_gids.c b/lib/find_new_sub_gids.c new file mode 100644 index 0000000..74c9d8f --- /dev/null +++ b/lib/find_new_sub_gids.c @@ -0,0 +1,64 @@ +/* + * SPDX-FileCopyrightText: 2012 Eric Biederman + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef ENABLE_SUBIDS + +#include +#include +#include + +#include "prototypes.h" +#include "subordinateio.h" +#include "getdef.h" +#include "shadowlog.h" + +/* + * find_new_sub_gids - Find a new unused range of GIDs. + * + * If successful, find_new_sub_gids provides a range of unused + * user IDs in the [SUB_GID_MIN:SUB_GID_MAX] range. + * + * Return 0 on success, -1 if no unused GIDs are available. + */ +int find_new_sub_gids (gid_t *range_start, unsigned long *range_count) +{ + unsigned long min, max; + unsigned long count; + gid_t start; + + assert (range_start != NULL); + assert (range_count != NULL); + + min = getdef_ulong ("SUB_GID_MIN", 100000UL); + max = getdef_ulong ("SUB_GID_MAX", 600100000UL); + count = getdef_ulong ("SUB_GID_COUNT", 65536); + + if (min > max || count >= max || (min + count - 1) > max) { + (void) fprintf (log_get_logfd(), + _("%s: Invalid configuration: SUB_GID_MIN (%lu)," + " SUB_GID_MAX (%lu), SUB_GID_COUNT (%lu)\n"), + log_get_progname(), min, max, count); + return -1; + } + + start = sub_gid_find_free_range(min, max, count); + if (start == (gid_t)-1) { + fprintf (log_get_logfd(), + _("%s: Can't get unique subordinate GID range\n"), + log_get_progname()); + SYSLOG ((LOG_WARN, "no more available subordinate GIDs on the system")); + return -1; + } + *range_start = start; + *range_count = count; + return 0; +} +#else /* !ENABLE_SUBIDS */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* !ENABLE_SUBIDS */ + diff --git a/lib/find_new_sub_uids.c b/lib/find_new_sub_uids.c new file mode 100644 index 0000000..cc4b0cf --- /dev/null +++ b/lib/find_new_sub_uids.c @@ -0,0 +1,64 @@ +/* + * SPDX-FileCopyrightText: 2012 Eric Biederman + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef ENABLE_SUBIDS + +#include +#include +#include + +#include "prototypes.h" +#include "subordinateio.h" +#include "getdef.h" +#include "shadowlog.h" + +/* + * find_new_sub_uids - Find a new unused range of UIDs. + * + * If successful, find_new_sub_uids provides a range of unused + * user IDs in the [SUB_UID_MIN:SUB_UID_MAX] range. + * + * Return 0 on success, -1 if no unused UIDs are available. + */ +int find_new_sub_uids (uid_t *range_start, unsigned long *range_count) +{ + unsigned long min, max; + unsigned long count; + uid_t start; + + assert (range_start != NULL); + assert (range_count != NULL); + + min = getdef_ulong ("SUB_UID_MIN", 100000UL); + max = getdef_ulong ("SUB_UID_MAX", 600100000UL); + count = getdef_ulong ("SUB_UID_COUNT", 65536); + + if (min > max || count >= max || (min + count - 1) > max) { + (void) fprintf (log_get_logfd(), + _("%s: Invalid configuration: SUB_UID_MIN (%lu)," + " SUB_UID_MAX (%lu), SUB_UID_COUNT (%lu)\n"), + log_get_progname(), min, max, count); + return -1; + } + + start = sub_uid_find_free_range(min, max, count); + if (start == (uid_t)-1) { + fprintf (log_get_logfd(), + _("%s: Can't get unique subordinate UID range\n"), + log_get_progname()); + SYSLOG ((LOG_WARN, "no more available subordinate UIDs on the system")); + return -1; + } + *range_start = start; + *range_count = count; + return 0; +} +#else /* !ENABLE_SUBIDS */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* !ENABLE_SUBIDS */ + diff --git a/lib/find_new_uid.c b/lib/find_new_uid.c new file mode 100644 index 0000000..45ce712 --- /dev/null +++ b/lib/find_new_uid.c @@ -0,0 +1,500 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François + * SPDX-FileCopyrightText: 2014, Red Hat, Inc. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include +#include +#include + +#include "alloc.h" +#include "prototypes.h" +#include "pwio.h" +#include "getdef.h" +#include "shadowlog.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 = 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 = getdef_ulong ("UID_MIN", 1000UL) - 1; + *max_id = getdef_ulong ("SYS_UID_MAX", uid_def_max); + + /* Check that the ranges make sense */ + if (*max_id < *min_id) { + (void) fprintf (log_get_logfd(), + _("%s: Invalid configuration: SYS_UID_MIN (%lu), " + "UID_MIN (%lu), SYS_UID_MAX (%lu)\n"), + log_get_progname(), (unsigned long) *min_id, + getdef_ulong ("UID_MIN", 1000UL), + (unsigned long) *max_id); + return EINVAL; + } + /* + * Zero is reserved for root and the allocation algorithm does not + * work right with it. + */ + if (*min_id == 0) { + *min_id = (uid_t) 1; + } + } else { + /* Non-system users */ + + /* Get the values from login.defs or use reasonable defaults */ + *min_id = getdef_ulong ("UID_MIN", 1000UL); + *max_id = 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 (log_get_logfd(), + _("%s: Invalid configuration: UID_MIN (%lu), " + "UID_MAX (%lu)\n"), + log_get_progname(), (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 might clash with -1, return EINVAL + * 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, + const bool *used_uids) +{ + /* First test that the preferred ID is in the range */ + if (uid < uid_min || uid > uid_max) { + return ERANGE; + } + + /* Check for compatibility with 16b and 32b uid_t error codes */ + if (uid == UINT16_MAX || uid == UINT32_MAX) { + return EINVAL; + } + + /* + * 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. + * + * If successful, find_new_uid provides an unused user ID in the + * [UID_MIN:UID_MAX] range. + * This ID should be higher than all the used UID, but if not possible, + * the lowest unused ID in the range will be returned. + * + * 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) +{ + 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); + + /* + * 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 || result == EINVAL) { + /* + * Continue on below. At this time, we won't + * treat these three 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 (log_get_logfd(), + _("%s: Encountered error attempting to use " + "preferred UID: %s\n"), + log_get_progname(), 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 = CALLOC(uid_max + 1, bool); + if (NULL == used_uids) { + fprintf (log_get_logfd(), + _("%s: failed to allocate memory: %s\n"), + log_get_progname(), strerror (errno)); + return -1; + } + + /* 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? + */ + if ((pwd->pw_uid <= lowest_found) && (pwd->pw_uid >= uid_min)) { + lowest_found = pwd->pw_uid - 1; + } + + /* + * 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; + } + + /* create index of used UIDs */ + if (pwd->pw_uid >= uid_min + && pwd->pw_uid <= uid_max) { + + used_uids[pwd->pw_uid] = true; + } + } + + if (sys_user) { + /* + * 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 0; + } else if (result == EEXIST || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique system UID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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_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 || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique system UID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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 { /* !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 0; + } else if (result == EEXIST || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique UID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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 || result == EINVAL) { + /* + * This GID is in use or unusable, 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 (log_get_logfd(), + _("%s: Can't get unique UID (%s). " + "Suppressing additional messages.\n"), + log_get_progname(), 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 (log_get_logfd(), + _("%s: Can't get unique UID (no more available UIDs)\n"), + log_get_progname()); + SYSLOG ((LOG_WARN, "no more available UIDs on the system")); + free (used_uids); + return -1; +} + diff --git a/lib/fputsx.c b/lib/fputsx.c index bb71ab2..0565310 100644 --- a/lib/fputsx.c +++ b/lib/fputsx.c @@ -16,7 +16,8 @@ #ident "$Id$" -/*@null@*/char *fgetsx (/*@returned@*/ /*@out@*/char *buf, int cnt, FILE * f) +/*@null@*/char * +fgetsx(/*@returned@*/char *restrict buf, int cnt, FILE *restrict f) { char *cp = buf; char *ep; diff --git a/lib/freezero.c b/lib/freezero.c new file mode 100644 index 0000000..c565f43 --- /dev/null +++ b/lib/freezero.c @@ -0,0 +1,30 @@ +/* $OpenBSD: malloc.c,v 1.267 2020/11/23 15:42:11 otto Exp $ */ +/* + * Copyright (c) 2008, 2010, 2011, 2016 Otto Moerbeek + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include + +void +freezero(void *ptr, size_t sz) +{ + /* This is legal. */ + if (ptr == NULL) + return; + + explicit_bzero(ptr, sz); + free(ptr); +} diff --git a/lib/freezero.h b/lib/freezero.h new file mode 100644 index 0000000..8dbcd7c --- /dev/null +++ b/lib/freezero.h @@ -0,0 +1,34 @@ +/* + * Copyright © 2005 Aurelien Jarno + * Copyright © 2006 Robert Millan + * Copyright © 2008-2011 Guillem Jover + * + * 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 author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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. + */ + +#ifndef LIBBSD_FREEZERO_H +#define LIBBSD_FREEZERO_H + +void freezero(void *ptr, size_t size); + +#endif diff --git a/lib/get_gid.c b/lib/get_gid.c index cbcd6f4..2420137 100644 --- a/lib/get_gid.c +++ b/lib/get_gid.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ + #include #ident "$Id$" @@ -11,21 +12,23 @@ #include "prototypes.h" #include "defines.h" -int get_gid (const char *gidstr, gid_t *gid) + +int +get_gid(const char *gidstr, gid_t *gid) { - long long int val; - char *endptr; + char *end; + long long val; errno = 0; - val = strtoll (gidstr, &endptr, 10); + val = strtoll(gidstr, &end, 10); if ( ('\0' == *gidstr) - || ('\0' != *endptr) - || (ERANGE == errno) + || ('\0' != *end) + || (0 != errno) || (/*@+longintegral@*/val != (gid_t)val)/*@=longintegral@*/) { - return 0; + return -1; } - *gid = (gid_t)val; - return 1; + *gid = val; + return 0; } diff --git a/lib/get_pid.c b/lib/get_pid.c index 383eb69..af3f2f8 100644 --- a/lib/get_pid.c +++ b/lib/get_pid.c @@ -10,22 +10,94 @@ #include "prototypes.h" #include "defines.h" +#include +#include +#include -int get_pid (const char *pidstr, pid_t *pid) +#include "string/sprintf.h" + + +int +get_pid(const char *pidstr, pid_t *pid) { - long long int val; - char *endptr; + char *end; + long long val; errno = 0; - val = strtoll (pidstr, &endptr, 10); + val = strtoll(pidstr, &end, 10); if ( ('\0' == *pidstr) - || ('\0' != *endptr) - || (ERANGE == errno) + || ('\0' != *end) + || (0 != errno) + || (val < 1) || (/*@+longintegral@*/val != (pid_t)val)/*@=longintegral@*/) { - return 0; + return -1; } - *pid = (pid_t)val; - return 1; + *pid = val; + return 0; } +/* + * If use passed in fd:4 as an argument, then return the + * value '4', the fd to use. + * On error, return -1. + */ +int get_pidfd_from_fd(const char *pidfdstr) +{ + char *end; + long long val; + struct stat st; + dev_t proc_st_dev, proc_st_rdev; + + errno = 0; + val = strtoll(pidfdstr, &end, 10); + if ( ('\0' == *pidfdstr) + || ('\0' != *end) + || (0 != errno) + || (val < 0) + || (/*@+longintegral@*/val != (int)val)/*@=longintegral@*/) { + return -1; + } + + if (stat("/proc/self/uid_map", &st) < 0) { + return -1; + } + + proc_st_dev = st.st_dev; + proc_st_rdev = st.st_rdev; + + if (fstat(val, &st) < 0) { + return -1; + } + + if (st.st_dev != proc_st_dev || st.st_rdev != proc_st_rdev) { + return -1; + } + + return (int)val; +} + +int open_pidfd(const char *pidstr) +{ + int proc_dir_fd; + char proc_dir_name[32]; + pid_t target; + + if (get_pid(pidstr, &target) == -1) + return -ENOENT; + + /* max string length is 6 + 10 + 1 + 1 = 18, allocate 32 bytes */ + if (SNPRINTF(proc_dir_name, "/proc/%u/", target) == -1) { + fprintf(stderr, "snprintf of proc path failed for %u: %s\n", + target, strerror(errno)); + return -EINVAL; + } + + proc_dir_fd = open(proc_dir_name, O_DIRECTORY); + if (proc_dir_fd < 0) { + fprintf(stderr, _("Could not open proc directory for target %u: %s\n"), + target, strerror(errno)); + return -EINVAL; + } + return proc_dir_fd; +} diff --git a/lib/get_uid.c b/lib/get_uid.c index 50f9922..77fe966 100644 --- a/lib/get_uid.c +++ b/lib/get_uid.c @@ -4,6 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ + #include #ident "$Id$" @@ -11,21 +12,23 @@ #include "prototypes.h" #include "defines.h" -int get_uid (const char *uidstr, uid_t *uid) + +int +get_uid(const char *uidstr, uid_t *uid) { - long long int val; - char *endptr; + char *end; + long long val; errno = 0; - val = strtoll (uidstr, &endptr, 10); + val = strtoll(uidstr, &end, 10); if ( ('\0' == *uidstr) - || ('\0' != *endptr) - || (ERANGE == errno) + || ('\0' != *end) + || (0 != errno) || (/*@+longintegral@*/val != (uid_t)val)/*@=longintegral@*/) { - return 0; + return -1; } - *uid = (uid_t)val; - return 1; + *uid = val; + return 0; } diff --git a/lib/getdate.c b/lib/getdate.c new file mode 100644 index 0000000..556ce62 --- /dev/null +++ b/lib/getdate.c @@ -0,0 +1,2535 @@ +/* A Bison parser, made by GNU Bison 3.8.2. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, + Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output, and Bison version. */ +#define YYBISON 30802 + +/* Bison version string. */ +#define YYBISON_VERSION "3.8.2" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 0 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* First part of user prologue. */ +#line 1 "getdate.y" + +/* +** Originally written by Steven M. Bellovin while +** at the University of North Carolina at Chapel Hill. Later tweaked by +** a couple of people on Usenet. Completely overhauled by Rich $alz +** and Jim Berets in August, 1990; +** +** This grammar has 13 shift/reduce conflicts. +** +** This code is in the public domain and has no copyright. +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Since the code of getdate.y is not included in the Emacs executable + itself, there is no need to #define static in this file. Even if + the code were included in the Emacs executable, it probably + wouldn't do any harm to #undef it here; this will only cause + problems if we try to write to a static variable, which I don't + think this code needs to do. */ +#ifdef emacs +# undef static +#endif + +#include +#include +#include + +#include "attr.h" +#include "getdate.h" + +#include + +/* Some old versions of bison generate parsers that use bcopy. + That loses on systems that don't provide the function, so we have + to redefine it here. */ +#if !defined (HAVE_BCOPY) && !defined (bcopy) +# define bcopy(from, to, len) memcpy ((to), (from), (len)) +#endif + +/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), + 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, + then those parser generators need to be fixed instead of adding those + names to this list. */ + +#define yymaxdepth gd_maxdepth +#define yyparse gd_parse +#define yylex gd_lex +#define yyerror gd_error +#define yylval gd_lval +#define yychar gd_char +#define yydebug gd_debug +#define yypact gd_pact +#define yyr1 gd_r1 +#define yyr2 gd_r2 +#define yydef gd_def +#define yychk gd_chk +#define yypgo gd_pgo +#define yyact gd_act +#define yyexca gd_exca +#define yyerrflag gd_errflag +#define yynerrs gd_nerrs +#define yyps gd_ps +#define yypv gd_pv +#define yys gd_s +#define yy_yys gd_yys +#define yystate gd_state +#define yytmp gd_tmp +#define yyv gd_v +#define yy_yyv gd_yyv +#define yyval gd_val +#define yylloc gd_lloc +#define yyreds gd_reds /* With YYDEBUG defined */ +#define yytoks gd_toks /* With YYDEBUG defined */ +#define yylhs gd_yylhs +#define yylen gd_yylen +#define yydefred gd_yydefred +#define yydgoto gd_yydgoto +#define yysindex gd_yysindex +#define yyrindex gd_yyrindex +#define yygindex gd_yygindex +#define yytable gd_yytable +#define yycheck gd_yycheck + +static int yylex (void); +static int yyerror (const char *s); + +#define EPOCH 1970 +#define HOUR(x) ((x) * 60) + +#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ + +/* +** An entry in the lexical lookup table. +*/ +typedef struct _TABLE { + const char *name; + int type; + int value; +} TABLE; + + +/* +** Meridian: am, pm, or 24-hour style. +*/ +typedef enum _MERIDIAN { + MERam, MERpm, MER24 +} MERIDIAN; + + +/* +** Global variables. We could get rid of most of these by using a good +** union as the yacc stack. (This routine was originally written before +** yacc had the %union construct.) Maybe someday; right now we only use +** the %union very rarely. +*/ +static const char *yyInput; +static int yyDayOrdinal; +static int yyDayNumber; +static int yyHaveDate; +static int yyHaveDay; +static int yyHaveRel; +static int yyHaveTime; +static int yyHaveZone; +static int yyTimezone; +static int yyDay; +static int yyHour; +static int yyMinutes; +static int yyMonth; +static int yySeconds; +static int yyYear; +static MERIDIAN yyMeridian; +static int yyRelDay; +static int yyRelHour; +static int yyRelMinutes; +static int yyRelMonth; +static int yyRelSeconds; +static int yyRelYear; + + +#line 217 "getdate.c" + +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) +# endif +# endif + + +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Token kinds. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + tAGO = 258, /* tAGO */ + tDAY = 259, /* tDAY */ + tDAY_UNIT = 260, /* tDAY_UNIT */ + tDAYZONE = 261, /* tDAYZONE */ + tDST = 262, /* tDST */ + tHOUR_UNIT = 263, /* tHOUR_UNIT */ + tID = 264, /* tID */ + tMERIDIAN = 265, /* tMERIDIAN */ + tMINUTE_UNIT = 266, /* tMINUTE_UNIT */ + tMONTH = 267, /* tMONTH */ + tMONTH_UNIT = 268, /* tMONTH_UNIT */ + tSEC_UNIT = 269, /* tSEC_UNIT */ + tSNUMBER = 270, /* tSNUMBER */ + tUNUMBER = 271, /* tUNUMBER */ + tYEAR_UNIT = 272, /* tYEAR_UNIT */ + tZONE = 273 /* tZONE */ + }; + typedef enum yytokentype yytoken_kind_t; +#endif +/* Token kinds. */ +#define YYEMPTY -2 +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 +#define tAGO 258 +#define tDAY 259 +#define tDAY_UNIT 260 +#define tDAYZONE 261 +#define tDST 262 +#define tHOUR_UNIT 263 +#define tID 264 +#define tMERIDIAN 265 +#define tMINUTE_UNIT 266 +#define tMONTH 267 +#define tMONTH_UNIT 268 +#define tSEC_UNIT 269 +#define tSNUMBER 270 +#define tUNUMBER 271 +#define tYEAR_UNIT 272 +#define tZONE 273 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +union YYSTYPE +{ +#line 147 "getdate.y" + + int Number; + enum _MERIDIAN Meridian; + +#line 308 "getdate.c" + +}; +typedef union YYSTYPE YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + + +int yyparse (void); + + + +/* Symbol kind. */ +enum yysymbol_kind_t +{ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_tAGO = 3, /* tAGO */ + YYSYMBOL_tDAY = 4, /* tDAY */ + YYSYMBOL_tDAY_UNIT = 5, /* tDAY_UNIT */ + YYSYMBOL_tDAYZONE = 6, /* tDAYZONE */ + YYSYMBOL_tDST = 7, /* tDST */ + YYSYMBOL_tHOUR_UNIT = 8, /* tHOUR_UNIT */ + YYSYMBOL_tID = 9, /* tID */ + YYSYMBOL_tMERIDIAN = 10, /* tMERIDIAN */ + YYSYMBOL_tMINUTE_UNIT = 11, /* tMINUTE_UNIT */ + YYSYMBOL_tMONTH = 12, /* tMONTH */ + YYSYMBOL_tMONTH_UNIT = 13, /* tMONTH_UNIT */ + YYSYMBOL_tSEC_UNIT = 14, /* tSEC_UNIT */ + YYSYMBOL_tSNUMBER = 15, /* tSNUMBER */ + YYSYMBOL_tUNUMBER = 16, /* tUNUMBER */ + YYSYMBOL_tYEAR_UNIT = 17, /* tYEAR_UNIT */ + YYSYMBOL_tZONE = 18, /* tZONE */ + YYSYMBOL_19_ = 19, /* ':' */ + YYSYMBOL_20_ = 20, /* ',' */ + YYSYMBOL_21_ = 21, /* '/' */ + YYSYMBOL_YYACCEPT = 22, /* $accept */ + YYSYMBOL_spec = 23, /* spec */ + YYSYMBOL_item = 24, /* item */ + YYSYMBOL_time = 25, /* time */ + YYSYMBOL_zone = 26, /* zone */ + YYSYMBOL_day = 27, /* day */ + YYSYMBOL_date = 28, /* date */ + YYSYMBOL_rel = 29, /* rel */ + YYSYMBOL_relunit = 30, /* relunit */ + YYSYMBOL_number = 31, /* number */ + YYSYMBOL_o_merid = 32 /* o_merid */ +}; +typedef enum yysymbol_kind_t yysymbol_kind_t; + + + + +#ifdef short +# undef short +#endif + +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif +#endif + +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; +#else +typedef signed char yytype_int8; +#endif + +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; +#else +typedef short yytype_int16; +#endif + +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned +# endif +#endif + +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define YY_ATTRIBUTE_PURE +# endif +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YY_USE(E) ((void) (E)) +#else +# define YY_USE(E) /* empty */ +#endif + +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +# define YY_INITIAL_VALUE(Value) Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if !defined yyoverflow + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* !defined yyoverflow */ + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yy_state_t yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYPTRDIFF_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + } \ + while (0) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYPTRDIFF_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (0) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 2 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 50 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 22 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 11 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 51 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 61 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 273 + + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) + +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const yytype_int8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 20, 2, 2, 21, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 19, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18 +}; + +#if YYDEBUG +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +static const yytype_int16 yyrline[] = +{ + 0, 163, 163, 164, 167, 170, 173, 176, 179, 182, + 185, 191, 197, 206, 212, 224, 227, 231, 236, 240, + 244, 250, 254, 272, 278, 284, 288, 293, 297, 304, + 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, + 342, 345, 348, 351, 354, 357, 360, 363, 366, 371, + 405, 408 +}; +#endif + +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"end of file\"", "error", "\"invalid token\"", "tAGO", "tDAY", + "tDAY_UNIT", "tDAYZONE", "tDST", "tHOUR_UNIT", "tID", "tMERIDIAN", + "tMINUTE_UNIT", "tMONTH", "tMONTH_UNIT", "tSEC_UNIT", "tSNUMBER", + "tUNUMBER", "tYEAR_UNIT", "tZONE", "':'", "','", "'/'", "$accept", + "spec", "item", "time", "zone", "day", "date", "rel", "relunit", + "number", "o_merid", YY_NULLPTR +}; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} +#endif + +#define YYPACT_NINF (-20) + +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) + +#define YYTABLE_NINF (-1) + +#define yytable_value_is_error(Yyn) \ + 0 + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int8 yypact[] = +{ + -20, 0, -20, -19, -20, -20, -20, -20, -13, -20, + -20, 30, 15, -20, 14, -20, -20, -20, -20, -20, + -20, 19, -20, -20, 4, -20, -20, -20, -20, -20, + -20, -20, -20, -20, -20, -20, -6, -20, -20, 16, + -20, 17, 23, -20, -20, 24, -20, -20, -20, 27, + 28, -20, -20, -20, 29, -20, 32, -8, -20, -20, + -20 +}; + +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ +static const yytype_int8 yydefact[] = +{ + 2, 0, 1, 18, 39, 16, 42, 45, 0, 36, + 48, 0, 49, 33, 15, 3, 4, 5, 7, 6, + 8, 30, 9, 19, 25, 38, 41, 44, 35, 47, + 32, 20, 37, 40, 10, 43, 27, 34, 46, 0, + 31, 0, 0, 17, 29, 0, 24, 28, 23, 50, + 21, 26, 51, 12, 0, 11, 0, 50, 22, 14, + 13 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, + -7 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + 0, 1, 15, 16, 17, 18, 19, 20, 21, 22, + 55 +}; + +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ +static const yytype_int8 yytable[] = +{ + 2, 23, 52, 24, 3, 4, 5, 59, 6, 46, + 47, 7, 8, 9, 10, 11, 12, 13, 14, 31, + 32, 43, 44, 33, 45, 34, 35, 36, 37, 38, + 39, 48, 40, 49, 41, 25, 42, 52, 26, 50, + 51, 27, 53, 28, 29, 57, 54, 30, 58, 56, + 60 +}; + +static const yytype_int8 yycheck[] = +{ + 0, 20, 10, 16, 4, 5, 6, 15, 8, 15, + 16, 11, 12, 13, 14, 15, 16, 17, 18, 4, + 5, 7, 3, 8, 20, 10, 11, 12, 13, 14, + 15, 15, 17, 16, 19, 5, 21, 10, 8, 16, + 16, 11, 15, 13, 14, 16, 19, 17, 16, 21, + 57 +}; + +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ +static const yytype_int8 yystos[] = +{ + 0, 23, 0, 4, 5, 6, 8, 11, 12, 13, + 14, 15, 16, 17, 18, 24, 25, 26, 27, 28, + 29, 30, 31, 20, 16, 5, 8, 11, 13, 14, + 17, 4, 5, 8, 10, 11, 12, 13, 14, 15, + 17, 19, 21, 7, 3, 20, 15, 16, 15, 16, + 16, 16, 10, 15, 19, 32, 21, 16, 16, 15, + 32 +}; + +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr1[] = +{ + 0, 22, 23, 23, 24, 24, 24, 24, 24, 24, + 25, 25, 25, 25, 25, 26, 26, 26, 27, 27, + 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, + 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, + 32, 32 +}; + +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ +static const yytype_int8 yyr2[] = +{ + 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, + 2, 4, 4, 6, 6, 1, 1, 2, 1, 2, + 2, 3, 5, 3, 3, 2, 4, 2, 3, 2, + 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, + 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, + 0, 1 +}; + + +enum { YYENOMEM = -2 }; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab + + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) + +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + + + +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Kind, Value); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + + +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ + +static void +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + FILE *yyoutput = yyo; + YY_USE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ + +static void +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +{ + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + + yy_symbol_value_print (yyo, yykind, yyvaluep); + YYFPRINTF (yyo, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +static void +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +static void +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) +{ + int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + + + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +static void +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +{ + YY_USE (yyvaluep); + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YY_USE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END +} + + +/* Lookahead token kind. */ +int yychar; + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; +/* Number of syntax errors so far. */ +int yynerrs; + + + + +/*----------. +| yyparse. | +`----------*/ + +int +yyparse (void) +{ + yy_state_fast_t yystate = 0; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus = 0; + + /* Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; + + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; + + int yyn; + /* The return value of yyparse. */ + int yyresult; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yychar = YYEMPTY; /* Cause a token to be read. */ + + goto yysetstate; + + +/*------------------------------------------------------------. +| yynewstate -- push a new state, which is found in yystate. | +`------------------------------------------------------------*/ +yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); + + if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + YYNOMEM; +#else + { + /* Get the current used size of the three stacks, in elements. */ + YYPTRDIFF_T yysize = yyssp - yyss + 1; + +# if defined yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + yy_state_t *yyss1 = yyss; + YYSTYPE *yyvs1 = yyvs; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yystacksize); + yyss = yyss1; + yyvs = yyvs1; + } +# else /* defined YYSTACK_RELOCATE */ + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + YYNOMEM; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yy_state_t *yyss1 = yyss; + union yyalloc *yyptr = + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + if (! yyptr) + YYNOMEM; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token\n")); + yychar = yylex (); + } + + if (yychar <= YYEOF) + { + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 4: /* item: time */ +#line 167 "getdate.y" + { + yyHaveTime++; + } +#line 1358 "getdate.c" + break; + + case 5: /* item: zone */ +#line 170 "getdate.y" + { + yyHaveZone++; + } +#line 1366 "getdate.c" + break; + + case 6: /* item: date */ +#line 173 "getdate.y" + { + yyHaveDate++; + } +#line 1374 "getdate.c" + break; + + case 7: /* item: day */ +#line 176 "getdate.y" + { + yyHaveDay++; + } +#line 1382 "getdate.c" + break; + + case 8: /* item: rel */ +#line 179 "getdate.y" + { + yyHaveRel++; + } +#line 1390 "getdate.c" + break; + + case 10: /* time: tUNUMBER tMERIDIAN */ +#line 185 "getdate.y" + { + yyHour = (yyvsp[-1].Number); + yyMinutes = 0; + yySeconds = 0; + yyMeridian = (yyvsp[0].Meridian); + } +#line 1401 "getdate.c" + break; + + case 11: /* time: tUNUMBER ':' tUNUMBER o_merid */ +#line 191 "getdate.y" + { + yyHour = (yyvsp[-3].Number); + yyMinutes = (yyvsp[-1].Number); + yySeconds = 0; + yyMeridian = (yyvsp[0].Meridian); + } +#line 1412 "getdate.c" + break; + + case 12: /* time: tUNUMBER ':' tUNUMBER tSNUMBER */ +#line 197 "getdate.y" + { + yyHour = (yyvsp[-3].Number); + yyMinutes = (yyvsp[-1].Number); + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = ((yyvsp[0].Number) < 0 + ? -(yyvsp[0].Number) % 100 + (-(yyvsp[0].Number) / 100) * 60 + : - ((yyvsp[0].Number) % 100 + ((yyvsp[0].Number) / 100) * 60)); + } +#line 1426 "getdate.c" + break; + + case 13: /* time: tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid */ +#line 206 "getdate.y" + { + yyHour = (yyvsp[-5].Number); + yyMinutes = (yyvsp[-3].Number); + yySeconds = (yyvsp[-1].Number); + yyMeridian = (yyvsp[0].Meridian); + } +#line 1437 "getdate.c" + break; + + case 14: /* time: tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER */ +#line 212 "getdate.y" + { + yyHour = (yyvsp[-5].Number); + yyMinutes = (yyvsp[-3].Number); + yySeconds = (yyvsp[-1].Number); + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = ((yyvsp[0].Number) < 0 + ? -(yyvsp[0].Number) % 100 + (-(yyvsp[0].Number) / 100) * 60 + : - ((yyvsp[0].Number) % 100 + ((yyvsp[0].Number) / 100) * 60)); + } +#line 1452 "getdate.c" + break; + + case 15: /* zone: tZONE */ +#line 224 "getdate.y" + { + yyTimezone = (yyvsp[0].Number); + } +#line 1460 "getdate.c" + break; + + case 16: /* zone: tDAYZONE */ +#line 227 "getdate.y" + { + yyTimezone = (yyvsp[0].Number) - 60; + } +#line 1468 "getdate.c" + break; + + case 17: /* zone: tZONE tDST */ +#line 231 "getdate.y" + { + yyTimezone = (yyvsp[-1].Number) - 60; + } +#line 1476 "getdate.c" + break; + + case 18: /* day: tDAY */ +#line 236 "getdate.y" + { + yyDayOrdinal = 1; + yyDayNumber = (yyvsp[0].Number); + } +#line 1485 "getdate.c" + break; + + case 19: /* day: tDAY ',' */ +#line 240 "getdate.y" + { + yyDayOrdinal = 1; + yyDayNumber = (yyvsp[-1].Number); + } +#line 1494 "getdate.c" + break; + + case 20: /* day: tUNUMBER tDAY */ +#line 244 "getdate.y" + { + yyDayOrdinal = (yyvsp[-1].Number); + yyDayNumber = (yyvsp[0].Number); + } +#line 1503 "getdate.c" + break; + + case 21: /* date: tUNUMBER '/' tUNUMBER */ +#line 250 "getdate.y" + { + yyMonth = (yyvsp[-2].Number); + yyDay = (yyvsp[0].Number); + } +#line 1512 "getdate.c" + break; + + case 22: /* date: tUNUMBER '/' tUNUMBER '/' tUNUMBER */ +#line 254 "getdate.y" + { + /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. + The goal in recognizing YYYY/MM/DD is solely to support legacy + machine-generated dates like those in an RCS log listing. If + you want portability, use the ISO 8601 format. */ + if ((yyvsp[-4].Number) >= 1000) + { + yyYear = (yyvsp[-4].Number); + yyMonth = (yyvsp[-2].Number); + yyDay = (yyvsp[0].Number); + } + else + { + yyMonth = (yyvsp[-4].Number); + yyDay = (yyvsp[-2].Number); + yyYear = (yyvsp[0].Number); + } + } +#line 1535 "getdate.c" + break; + + case 23: /* date: tUNUMBER tSNUMBER tSNUMBER */ +#line 272 "getdate.y" + { + /* ISO 8601 format. yyyy-mm-dd. */ + yyYear = (yyvsp[-2].Number); + yyMonth = -(yyvsp[-1].Number); + yyDay = -(yyvsp[0].Number); + } +#line 1546 "getdate.c" + break; + + case 24: /* date: tUNUMBER tMONTH tSNUMBER */ +#line 278 "getdate.y" + { + /* e.g. 17-JUN-1992. */ + yyDay = (yyvsp[-2].Number); + yyMonth = (yyvsp[-1].Number); + yyYear = -(yyvsp[0].Number); + } +#line 1557 "getdate.c" + break; + + case 25: /* date: tMONTH tUNUMBER */ +#line 284 "getdate.y" + { + yyMonth = (yyvsp[-1].Number); + yyDay = (yyvsp[0].Number); + } +#line 1566 "getdate.c" + break; + + case 26: /* date: tMONTH tUNUMBER ',' tUNUMBER */ +#line 288 "getdate.y" + { + yyMonth = (yyvsp[-3].Number); + yyDay = (yyvsp[-2].Number); + yyYear = (yyvsp[0].Number); + } +#line 1576 "getdate.c" + break; + + case 27: /* date: tUNUMBER tMONTH */ +#line 293 "getdate.y" + { + yyMonth = (yyvsp[0].Number); + yyDay = (yyvsp[-1].Number); + } +#line 1585 "getdate.c" + break; + + case 28: /* date: tUNUMBER tMONTH tUNUMBER */ +#line 297 "getdate.y" + { + yyMonth = (yyvsp[-1].Number); + yyDay = (yyvsp[-2].Number); + yyYear = (yyvsp[0].Number); + } +#line 1595 "getdate.c" + break; + + case 29: /* rel: relunit tAGO */ +#line 304 "getdate.y" + { + yyRelSeconds = -yyRelSeconds; + yyRelMinutes = -yyRelMinutes; + yyRelHour = -yyRelHour; + yyRelDay = -yyRelDay; + yyRelMonth = -yyRelMonth; + yyRelYear = -yyRelYear; + } +#line 1608 "getdate.c" + break; + + case 31: /* relunit: tUNUMBER tYEAR_UNIT */ +#line 315 "getdate.y" + { + yyRelYear += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1616 "getdate.c" + break; + + case 32: /* relunit: tSNUMBER tYEAR_UNIT */ +#line 318 "getdate.y" + { + yyRelYear += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1624 "getdate.c" + break; + + case 33: /* relunit: tYEAR_UNIT */ +#line 321 "getdate.y" + { + yyRelYear += (yyvsp[0].Number); + } +#line 1632 "getdate.c" + break; + + case 34: /* relunit: tUNUMBER tMONTH_UNIT */ +#line 324 "getdate.y" + { + yyRelMonth += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1640 "getdate.c" + break; + + case 35: /* relunit: tSNUMBER tMONTH_UNIT */ +#line 327 "getdate.y" + { + yyRelMonth += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1648 "getdate.c" + break; + + case 36: /* relunit: tMONTH_UNIT */ +#line 330 "getdate.y" + { + yyRelMonth += (yyvsp[0].Number); + } +#line 1656 "getdate.c" + break; + + case 37: /* relunit: tUNUMBER tDAY_UNIT */ +#line 333 "getdate.y" + { + yyRelDay += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1664 "getdate.c" + break; + + case 38: /* relunit: tSNUMBER tDAY_UNIT */ +#line 336 "getdate.y" + { + yyRelDay += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1672 "getdate.c" + break; + + case 39: /* relunit: tDAY_UNIT */ +#line 339 "getdate.y" + { + yyRelDay += (yyvsp[0].Number); + } +#line 1680 "getdate.c" + break; + + case 40: /* relunit: tUNUMBER tHOUR_UNIT */ +#line 342 "getdate.y" + { + yyRelHour += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1688 "getdate.c" + break; + + case 41: /* relunit: tSNUMBER tHOUR_UNIT */ +#line 345 "getdate.y" + { + yyRelHour += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1696 "getdate.c" + break; + + case 42: /* relunit: tHOUR_UNIT */ +#line 348 "getdate.y" + { + yyRelHour += (yyvsp[0].Number); + } +#line 1704 "getdate.c" + break; + + case 43: /* relunit: tUNUMBER tMINUTE_UNIT */ +#line 351 "getdate.y" + { + yyRelMinutes += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1712 "getdate.c" + break; + + case 44: /* relunit: tSNUMBER tMINUTE_UNIT */ +#line 354 "getdate.y" + { + yyRelMinutes += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1720 "getdate.c" + break; + + case 45: /* relunit: tMINUTE_UNIT */ +#line 357 "getdate.y" + { + yyRelMinutes += (yyvsp[0].Number); + } +#line 1728 "getdate.c" + break; + + case 46: /* relunit: tUNUMBER tSEC_UNIT */ +#line 360 "getdate.y" + { + yyRelSeconds += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1736 "getdate.c" + break; + + case 47: /* relunit: tSNUMBER tSEC_UNIT */ +#line 363 "getdate.y" + { + yyRelSeconds += (yyvsp[-1].Number) * (yyvsp[0].Number); + } +#line 1744 "getdate.c" + break; + + case 48: /* relunit: tSEC_UNIT */ +#line 366 "getdate.y" + { + yyRelSeconds += (yyvsp[0].Number); + } +#line 1752 "getdate.c" + break; + + case 49: /* number: tUNUMBER */ +#line 372 "getdate.y" + { + if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) + yyYear = (yyvsp[0].Number); + else + { + if ((yyvsp[0].Number)>10000) + { + yyHaveDate++; + yyDay= ((yyvsp[0].Number))%100; + yyMonth= ((yyvsp[0].Number)/100)%100; + yyYear = (yyvsp[0].Number)/10000; + } + else + { + yyHaveTime++; + if ((yyvsp[0].Number) < 100) + { + yyHour = (yyvsp[0].Number); + yyMinutes = 0; + } + else + { + yyHour = (yyvsp[0].Number) / 100; + yyMinutes = (yyvsp[0].Number) % 100; + } + yySeconds = 0; + yyMeridian = MER24; + } + } + } +#line 1787 "getdate.c" + break; + + case 50: /* o_merid: %empty */ +#line 405 "getdate.y" + { + (yyval.Meridian) = MER24; + } +#line 1795 "getdate.c" + break; + + case 51: /* o_merid: tMERIDIAN */ +#line 409 "getdate.y" + { + (yyval.Meridian) = (yyvsp[0].Meridian); + } +#line 1803 "getdate.c" + break; + + +#line 1807 "getdate.c" + + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + + *++yyvsp = yyval; + + /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } + + goto yynewstate; + + +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + yyerror (YY_("syntax error")); + } + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; + ++yynerrs; + + /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + /* Pop stack until we find a state that shifts the error token. */ + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + YY_ACCESSING_SYMBOL (yystate), yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturnlab; + + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturnlab; + + +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + goto yyreturnlab; + + +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } + /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + + return yyresult; +} + +#line 414 "getdate.y" + + +/* Month and day table. */ +static TABLE const MonthDayTable[] = { + { "january", tMONTH, 1 }, + { "february", tMONTH, 2 }, + { "march", tMONTH, 3 }, + { "april", tMONTH, 4 }, + { "may", tMONTH, 5 }, + { "june", tMONTH, 6 }, + { "july", tMONTH, 7 }, + { "august", tMONTH, 8 }, + { "september", tMONTH, 9 }, + { "sept", tMONTH, 9 }, + { "october", tMONTH, 10 }, + { "november", tMONTH, 11 }, + { "december", tMONTH, 12 }, + { "sunday", tDAY, 0 }, + { "monday", tDAY, 1 }, + { "tuesday", tDAY, 2 }, + { "tues", tDAY, 2 }, + { "wednesday", tDAY, 3 }, + { "wednes", tDAY, 3 }, + { "thursday", tDAY, 4 }, + { "thur", tDAY, 4 }, + { "thurs", tDAY, 4 }, + { "friday", tDAY, 5 }, + { "saturday", tDAY, 6 }, + { NULL, 0, 0 } +}; + +/* Time units table. */ +static TABLE const UnitsTable[] = { + { "year", tYEAR_UNIT, 1 }, + { "month", tMONTH_UNIT, 1 }, + { "fortnight", tDAY_UNIT, 14 }, + { "week", tDAY_UNIT, 7 }, + { "day", tDAY_UNIT, 1 }, + { "hour", tHOUR_UNIT, 1 }, + { "minute", tMINUTE_UNIT, 1 }, + { "min", tMINUTE_UNIT, 1 }, + { "second", tSEC_UNIT, 1 }, + { "sec", tSEC_UNIT, 1 }, + { NULL, 0, 0 } +}; + +/* Assorted relative-time words. */ +static TABLE const OtherTable[] = { + { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, + { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, + { "today", tMINUTE_UNIT, 0 }, + { "now", tMINUTE_UNIT, 0 }, + { "last", tUNUMBER, -1 }, + { "this", tMINUTE_UNIT, 0 }, + { "next", tUNUMBER, 2 }, + { "first", tUNUMBER, 1 }, +/* { "second", tUNUMBER, 2 }, */ + { "third", tUNUMBER, 3 }, + { "fourth", tUNUMBER, 4 }, + { "fifth", tUNUMBER, 5 }, + { "sixth", tUNUMBER, 6 }, + { "seventh", tUNUMBER, 7 }, + { "eighth", tUNUMBER, 8 }, + { "ninth", tUNUMBER, 9 }, + { "tenth", tUNUMBER, 10 }, + { "eleventh", tUNUMBER, 11 }, + { "twelfth", tUNUMBER, 12 }, + { "ago", tAGO, 1 }, + { NULL, 0, 0 } +}; + +/* The timezone table. */ +static TABLE const TimezoneTable[] = { + { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ + { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ + { "utc", tZONE, HOUR ( 0) }, + { "wet", tZONE, HOUR ( 0) }, /* Western European */ + { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ + { "wat", tZONE, HOUR ( 1) }, /* West Africa */ + { "at", tZONE, HOUR ( 2) }, /* Azores */ + { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ + { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ + { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ + { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ + { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ + { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ + { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ + { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ + { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ + { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ + { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ + { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ + { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ + { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ + { "cat", tZONE, HOUR (10) }, /* Central Alaska */ + { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ + { "nt", tZONE, HOUR (11) }, /* Nome */ + { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ + { "cet", tZONE, -HOUR (1) }, /* Central European */ + { "met", tZONE, -HOUR (1) }, /* Middle European */ + { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ + { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ + { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ + { "fwt", tZONE, -HOUR (1) }, /* French Winter */ + { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ + { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ + { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ + { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ + { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ + { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ + { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ + { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ + { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ + { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ + { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ + { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ + { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ + { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ + { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ + { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ + { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ + { NULL, 0, 0 } +}; + +/* Military timezone table. */ +static TABLE const MilitaryTable[] = { + { "a", tZONE, HOUR ( 1) }, + { "b", tZONE, HOUR ( 2) }, + { "c", tZONE, HOUR ( 3) }, + { "d", tZONE, HOUR ( 4) }, + { "e", tZONE, HOUR ( 5) }, + { "f", tZONE, HOUR ( 6) }, + { "g", tZONE, HOUR ( 7) }, + { "h", tZONE, HOUR ( 8) }, + { "i", tZONE, HOUR ( 9) }, + { "k", tZONE, HOUR ( 10) }, + { "l", tZONE, HOUR ( 11) }, + { "m", tZONE, HOUR ( 12) }, + { "n", tZONE, HOUR (- 1) }, + { "o", tZONE, HOUR (- 2) }, + { "p", tZONE, HOUR (- 3) }, + { "q", tZONE, HOUR (- 4) }, + { "r", tZONE, HOUR (- 5) }, + { "s", tZONE, HOUR (- 6) }, + { "t", tZONE, HOUR (- 7) }, + { "u", tZONE, HOUR (- 8) }, + { "v", tZONE, HOUR (- 9) }, + { "w", tZONE, HOUR (-10) }, + { "x", tZONE, HOUR (-11) }, + { "y", tZONE, HOUR (-12) }, + { "z", tZONE, HOUR ( 0) }, + { NULL, 0, 0 } +}; + + + + +static int yyerror (MAYBE_UNUSED const char *s) +{ + return 0; +} + +static int ToHour (int Hours, MERIDIAN Meridian) +{ + switch (Meridian) + { + case MER24: + if (Hours < 0 || Hours > 23) + return -1; + return Hours; + case MERam: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours; + case MERpm: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours + 12; + default: + abort (); + } + /* NOTREACHED */ +} + +static int ToYear (int Year) +{ + if (Year < 0) + Year = -Year; + + /* XPG4 suggests that years 00-68 map to 2000-2068, and + years 69-99 map to 1969-1999. */ + if (Year < 69) + Year += 2000; + else if (Year < 100) + Year += 1900; + + return Year; +} + +static int LookupWord (char *buff) +{ + register char *p; + register char *q; + register const TABLE *tp; + int i; + bool abbrev; + + /* Make it lowercase. */ + for (p = buff; '\0' != *p; p++) + if (isupper (*p)) + *p = tolower (*p); + + if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) + { + yylval.Meridian = MERam; + return tMERIDIAN; + } + if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) + { + yylval.Meridian = MERpm; + return tMERIDIAN; + } + + /* See if we have an abbreviation for a month. */ + if (strlen (buff) == 3) + abbrev = true; + else if (strlen (buff) == 4 && buff[3] == '.') + { + abbrev = true; + buff[3] = '\0'; + } + else + abbrev = false; + + for (tp = MonthDayTable; tp->name; tp++) + { + if (abbrev) + { + if (strncmp (buff, tp->name, 3) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + else if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + for (tp = TimezoneTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + if (strcmp (buff, "dst") == 0) + return tDST; + + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Strip off any plural and try the units table again. */ + i = strlen (buff) - 1; + if (buff[i] == 's') + { + buff[i] = '\0'; + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + buff[i] = 's'; /* Put back for "this" in OtherTable. */ + } + + for (tp = OtherTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Military timezones. */ + if (buff[1] == '\0' && isalpha (*buff)) + { + for (tp = MilitaryTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + /* Drop out any periods and try the timezone table again. */ + for (i = 0, p = q = buff; '\0' != *q; q++) + if (*q != '.') + *p++ = *q; + else + i++; + *p = '\0'; + if (0 != i) + for (tp = TimezoneTable; NULL != tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + return tID; +} + +static int +yylex (void) +{ + register char c; + register char *p; + char buff[20]; + int Count; + int sign; + + for (;;) + { + while (isspace (*yyInput)) + yyInput++; + + if (isdigit (c = *yyInput) || c == '-' || c == '+') + { + if (c == '-' || c == '+') + { + sign = c == '-' ? -1 : 1; + if (!isdigit (*++yyInput)) + /* skip the '-' sign */ + continue; + } + else + sign = 0; + for (yylval.Number = 0; isdigit (c = *yyInput++);) + yylval.Number = 10 * yylval.Number + c - '0'; + yyInput--; + if (sign < 0) + yylval.Number = -yylval.Number; + return (0 != sign) ? tSNUMBER : tUNUMBER; + } + if (isalpha (c)) + { + for (p = buff; (c = *yyInput++, isalpha (c)) || c == '.';) + if (p < &buff[sizeof buff - 1]) + *p++ = c; + *p = '\0'; + yyInput--; + return LookupWord (buff); + } + if (c != '(') + return *yyInput++; + Count = 0; + do + { + c = *yyInput++; + if (c == '\0') + return c; + if (c == '(') + Count++; + else if (c == ')') + Count--; + } + while (Count > 0); + } +} + +#define TM_YEAR_ORIGIN 1900 + +/* Yield A - B, measured in seconds. */ +static long difftm (struct tm *a, struct tm *b) +{ + int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); + int by = b->tm_year + (TM_YEAR_ORIGIN - 1); + long days = ( + /* difference in day of year */ + a->tm_yday - b->tm_yday + /* + intervening leap days */ + + ((ay >> 2) - (by >> 2)) + - (ay / 100 - by / 100) + + ((ay / 100 >> 2) - (by / 100 >> 2)) + /* + difference in years * 365 */ + + (long) (ay - by) * 365 + ); + return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) + + (a->tm_min - b->tm_min)) + + (a->tm_sec - b->tm_sec)); +} + +time_t get_date (const char *p, const time_t *now) +{ + struct tm tm, tm0, *tmp; + time_t Start; + + yyInput = p; + Start = now ? *now : time ((time_t *) NULL); + tmp = localtime (&Start); + yyYear = tmp->tm_year + TM_YEAR_ORIGIN; + yyMonth = tmp->tm_mon + 1; + yyDay = tmp->tm_mday; + yyHour = tmp->tm_hour; + yyMinutes = tmp->tm_min; + yySeconds = tmp->tm_sec; + yyMeridian = MER24; + yyRelSeconds = 0; + yyRelMinutes = 0; + yyRelHour = 0; + yyRelDay = 0; + yyRelMonth = 0; + yyRelYear = 0; + yyHaveDate = 0; + yyHaveDay = 0; + yyHaveRel = 0; + yyHaveTime = 0; + yyHaveZone = 0; + + if (yyparse () + || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) + return -1; + + tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; + tm.tm_mon = yyMonth - 1 + yyRelMonth; + tm.tm_mday = yyDay + yyRelDay; + if ((yyHaveTime != 0) || + ( (yyHaveRel != 0) && (yyHaveDate == 0) && (yyHaveDay == 0) )) + { + tm.tm_hour = ToHour (yyHour, yyMeridian); + if (tm.tm_hour < 0) + return -1; + tm.tm_min = yyMinutes; + tm.tm_sec = yySeconds; + } + else + { + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + } + tm.tm_hour += yyRelHour; + tm.tm_min += yyRelMinutes; + tm.tm_sec += yyRelSeconds; + tm.tm_isdst = -1; + tm0 = tm; + + Start = mktime (&tm); + + if (Start == (time_t) -1) + { + + /* Guard against falsely reporting errors near the time_t boundaries + when parsing times in other time zones. For example, if the min + time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead + of UTC, then the min localtime value is 1970-01-01 08:00:00; if + we apply mktime to 1970-01-01 00:00:00 we will get an error, so + we apply mktime to 1970-01-02 08:00:00 instead and adjust the time + zone by 24 hours to compensate. This algorithm assumes that + there is no DST transition within a day of the time_t boundaries. */ + if (yyHaveZone) + { + tm = tm0; + if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) + { + tm.tm_mday++; + yyTimezone -= 24 * 60; + } + else + { + tm.tm_mday--; + yyTimezone += 24 * 60; + } + Start = mktime (&tm); + } + + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveDay && !yyHaveDate) + { + tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 + + 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); + Start = mktime (&tm); + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveZone) + { + long delta = yyTimezone * 60L + difftm (&tm, gmtime (&Start)); + if ((Start + delta < Start) != (delta < 0)) + return -1; /* time_t overflow */ + Start += delta; + } + + return Start; +} + +#if defined (TEST) + +int +main(void) +{ + char buff[MAX_BUFF_LEN + 1]; + time_t d; + + (void) printf ("Enter date, or blank line to exit.\n\t> "); + (void) fflush (stdout); + + buff[MAX_BUFF_LEN] = 0; + while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) + { + d = get_date (buff, (time_t *) NULL); + if (d == -1) + (void) printf ("Bad format - couldn't convert.\n"); + else + (void) printf ("%s", ctime (&d)); + (void) printf ("\t> "); + (void) fflush (stdout); + } + exit (0); + /* NOTREACHED */ +} +#endif /* defined (TEST) */ diff --git a/lib/getdate.h b/lib/getdate.h new file mode 100644 index 0000000..eae56f6 --- /dev/null +++ b/lib/getdate.h @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _GETDATE_H_ +#define _GETDATE_H_ + +#include +#include "defines.h" + +time_t get_date (const char *p, /*@null@*/const time_t *now); +#endif diff --git a/lib/getdate.y b/lib/getdate.y new file mode 100644 index 0000000..8cea2cc --- /dev/null +++ b/lib/getdate.y @@ -0,0 +1,949 @@ +%{ +/* +** Originally written by Steven M. Bellovin while +** at the University of North Carolina at Chapel Hill. Later tweaked by +** a couple of people on Usenet. Completely overhauled by Rich $alz +** and Jim Berets in August, 1990; +** +** This grammar has 13 shift/reduce conflicts. +** +** This code is in the public domain and has no copyright. +*/ + +#ifdef HAVE_CONFIG_H +# include +#endif + +/* Since the code of getdate.y is not included in the Emacs executable + itself, there is no need to #define static in this file. Even if + the code were included in the Emacs executable, it probably + wouldn't do any harm to #undef it here; this will only cause + problems if we try to write to a static variable, which I don't + think this code needs to do. */ +#ifdef emacs +# undef static +#endif + +#include +#include +#include + +#include "attr.h" +#include "getdate.h" + +#include + +/* Some old versions of bison generate parsers that use bcopy. + That loses on systems that don't provide the function, so we have + to redefine it here. */ +#if !defined (HAVE_BCOPY) && !defined (bcopy) +# define bcopy(from, to, len) memcpy ((to), (from), (len)) +#endif + +/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), + 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, + then those parser generators need to be fixed instead of adding those + names to this list. */ + +#define yymaxdepth gd_maxdepth +#define yyparse gd_parse +#define yylex gd_lex +#define yyerror gd_error +#define yylval gd_lval +#define yychar gd_char +#define yydebug gd_debug +#define yypact gd_pact +#define yyr1 gd_r1 +#define yyr2 gd_r2 +#define yydef gd_def +#define yychk gd_chk +#define yypgo gd_pgo +#define yyact gd_act +#define yyexca gd_exca +#define yyerrflag gd_errflag +#define yynerrs gd_nerrs +#define yyps gd_ps +#define yypv gd_pv +#define yys gd_s +#define yy_yys gd_yys +#define yystate gd_state +#define yytmp gd_tmp +#define yyv gd_v +#define yy_yyv gd_yyv +#define yyval gd_val +#define yylloc gd_lloc +#define yyreds gd_reds /* With YYDEBUG defined */ +#define yytoks gd_toks /* With YYDEBUG defined */ +#define yylhs gd_yylhs +#define yylen gd_yylen +#define yydefred gd_yydefred +#define yydgoto gd_yydgoto +#define yysindex gd_yysindex +#define yyrindex gd_yyrindex +#define yygindex gd_yygindex +#define yytable gd_yytable +#define yycheck gd_yycheck + +static int yylex (void); +static int yyerror (const char *s); + +#define EPOCH 1970 +#define HOUR(x) ((x) * 60) + +#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ + +/* +** An entry in the lexical lookup table. +*/ +typedef struct _TABLE { + const char *name; + int type; + int value; +} TABLE; + + +/* +** Meridian: am, pm, or 24-hour style. +*/ +typedef enum _MERIDIAN { + MERam, MERpm, MER24 +} MERIDIAN; + + +/* +** Global variables. We could get rid of most of these by using a good +** union as the yacc stack. (This routine was originally written before +** yacc had the %union construct.) Maybe someday; right now we only use +** the %union very rarely. +*/ +static const char *yyInput; +static int yyDayOrdinal; +static int yyDayNumber; +static int yyHaveDate; +static int yyHaveDay; +static int yyHaveRel; +static int yyHaveTime; +static int yyHaveZone; +static int yyTimezone; +static int yyDay; +static int yyHour; +static int yyMinutes; +static int yyMonth; +static int yySeconds; +static int yyYear; +static MERIDIAN yyMeridian; +static int yyRelDay; +static int yyRelHour; +static int yyRelMinutes; +static int yyRelMonth; +static int yyRelSeconds; +static int yyRelYear; + +%} + +%union { + int Number; + enum _MERIDIAN Meridian; +} + +%token tAGO tDAY tDAY_UNIT tDAYZONE tDST tHOUR_UNIT tID +%token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT +%token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE + +%type tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tMINUTE_UNIT +%type tMONTH tMONTH_UNIT +%type tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE +%type tMERIDIAN o_merid + +%% + +spec : /* NULL */ + | spec item + ; + +item : time { + yyHaveTime++; + } + | zone { + yyHaveZone++; + } + | date { + yyHaveDate++; + } + | day { + yyHaveDay++; + } + | rel { + yyHaveRel++; + } + | number + ; + +time : tUNUMBER tMERIDIAN { + yyHour = $1; + yyMinutes = 0; + yySeconds = 0; + yyMeridian = $2; + } + | tUNUMBER ':' tUNUMBER o_merid { + yyHour = $1; + yyMinutes = $3; + yySeconds = 0; + yyMeridian = $4; + } + | tUNUMBER ':' tUNUMBER tSNUMBER { + yyHour = $1; + yyMinutes = $3; + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = ($4 < 0 + ? -$4 % 100 + (-$4 / 100) * 60 + : - ($4 % 100 + ($4 / 100) * 60)); + } + | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid { + yyHour = $1; + yyMinutes = $3; + yySeconds = $5; + yyMeridian = $6; + } + | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER { + yyHour = $1; + yyMinutes = $3; + yySeconds = $5; + yyMeridian = MER24; + yyHaveZone++; + yyTimezone = ($6 < 0 + ? -$6 % 100 + (-$6 / 100) * 60 + : - ($6 % 100 + ($6 / 100) * 60)); + } + ; + +zone : tZONE { + yyTimezone = $1; + } + | tDAYZONE { + yyTimezone = $1 - 60; + } + | + tZONE tDST { + yyTimezone = $1 - 60; + } + ; + +day : tDAY { + yyDayOrdinal = 1; + yyDayNumber = $1; + } + | tDAY ',' { + yyDayOrdinal = 1; + yyDayNumber = $1; + } + | tUNUMBER tDAY { + yyDayOrdinal = $1; + yyDayNumber = $2; + } + ; + +date : tUNUMBER '/' tUNUMBER { + yyMonth = $1; + yyDay = $3; + } + | tUNUMBER '/' tUNUMBER '/' tUNUMBER { + /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. + The goal in recognizing YYYY/MM/DD is solely to support legacy + machine-generated dates like those in an RCS log listing. If + you want portability, use the ISO 8601 format. */ + if ($1 >= 1000) + { + yyYear = $1; + yyMonth = $3; + yyDay = $5; + } + else + { + yyMonth = $1; + yyDay = $3; + yyYear = $5; + } + } + | tUNUMBER tSNUMBER tSNUMBER { + /* ISO 8601 format. yyyy-mm-dd. */ + yyYear = $1; + yyMonth = -$2; + yyDay = -$3; + } + | tUNUMBER tMONTH tSNUMBER { + /* e.g. 17-JUN-1992. */ + yyDay = $1; + yyMonth = $2; + yyYear = -$3; + } + | tMONTH tUNUMBER { + yyMonth = $1; + yyDay = $2; + } + | tMONTH tUNUMBER ',' tUNUMBER { + yyMonth = $1; + yyDay = $2; + yyYear = $4; + } + | tUNUMBER tMONTH { + yyMonth = $2; + yyDay = $1; + } + | tUNUMBER tMONTH tUNUMBER { + yyMonth = $2; + yyDay = $1; + yyYear = $3; + } + ; + +rel : relunit tAGO { + yyRelSeconds = -yyRelSeconds; + yyRelMinutes = -yyRelMinutes; + yyRelHour = -yyRelHour; + yyRelDay = -yyRelDay; + yyRelMonth = -yyRelMonth; + yyRelYear = -yyRelYear; + } + | relunit + ; + +relunit : tUNUMBER tYEAR_UNIT { + yyRelYear += $1 * $2; + } + | tSNUMBER tYEAR_UNIT { + yyRelYear += $1 * $2; + } + | tYEAR_UNIT { + yyRelYear += $1; + } + | tUNUMBER tMONTH_UNIT { + yyRelMonth += $1 * $2; + } + | tSNUMBER tMONTH_UNIT { + yyRelMonth += $1 * $2; + } + | tMONTH_UNIT { + yyRelMonth += $1; + } + | tUNUMBER tDAY_UNIT { + yyRelDay += $1 * $2; + } + | tSNUMBER tDAY_UNIT { + yyRelDay += $1 * $2; + } + | tDAY_UNIT { + yyRelDay += $1; + } + | tUNUMBER tHOUR_UNIT { + yyRelHour += $1 * $2; + } + | tSNUMBER tHOUR_UNIT { + yyRelHour += $1 * $2; + } + | tHOUR_UNIT { + yyRelHour += $1; + } + | tUNUMBER tMINUTE_UNIT { + yyRelMinutes += $1 * $2; + } + | tSNUMBER tMINUTE_UNIT { + yyRelMinutes += $1 * $2; + } + | tMINUTE_UNIT { + yyRelMinutes += $1; + } + | tUNUMBER tSEC_UNIT { + yyRelSeconds += $1 * $2; + } + | tSNUMBER tSEC_UNIT { + yyRelSeconds += $1 * $2; + } + | tSEC_UNIT { + yyRelSeconds += $1; + } + ; + +number : tUNUMBER + { + if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) + yyYear = $1; + else + { + if ($1>10000) + { + yyHaveDate++; + yyDay= ($1)%100; + yyMonth= ($1/100)%100; + yyYear = $1/10000; + } + else + { + yyHaveTime++; + if ($1 < 100) + { + yyHour = $1; + yyMinutes = 0; + } + else + { + yyHour = $1 / 100; + yyMinutes = $1 % 100; + } + yySeconds = 0; + yyMeridian = MER24; + } + } + } + ; + +o_merid : /* NULL */ + { + $$ = MER24; + } + | tMERIDIAN + { + $$ = $1; + } + ; + +%% + +/* Month and day table. */ +static TABLE const MonthDayTable[] = { + { "january", tMONTH, 1 }, + { "february", tMONTH, 2 }, + { "march", tMONTH, 3 }, + { "april", tMONTH, 4 }, + { "may", tMONTH, 5 }, + { "june", tMONTH, 6 }, + { "july", tMONTH, 7 }, + { "august", tMONTH, 8 }, + { "september", tMONTH, 9 }, + { "sept", tMONTH, 9 }, + { "october", tMONTH, 10 }, + { "november", tMONTH, 11 }, + { "december", tMONTH, 12 }, + { "sunday", tDAY, 0 }, + { "monday", tDAY, 1 }, + { "tuesday", tDAY, 2 }, + { "tues", tDAY, 2 }, + { "wednesday", tDAY, 3 }, + { "wednes", tDAY, 3 }, + { "thursday", tDAY, 4 }, + { "thur", tDAY, 4 }, + { "thurs", tDAY, 4 }, + { "friday", tDAY, 5 }, + { "saturday", tDAY, 6 }, + { NULL, 0, 0 } +}; + +/* Time units table. */ +static TABLE const UnitsTable[] = { + { "year", tYEAR_UNIT, 1 }, + { "month", tMONTH_UNIT, 1 }, + { "fortnight", tDAY_UNIT, 14 }, + { "week", tDAY_UNIT, 7 }, + { "day", tDAY_UNIT, 1 }, + { "hour", tHOUR_UNIT, 1 }, + { "minute", tMINUTE_UNIT, 1 }, + { "min", tMINUTE_UNIT, 1 }, + { "second", tSEC_UNIT, 1 }, + { "sec", tSEC_UNIT, 1 }, + { NULL, 0, 0 } +}; + +/* Assorted relative-time words. */ +static TABLE const OtherTable[] = { + { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, + { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, + { "today", tMINUTE_UNIT, 0 }, + { "now", tMINUTE_UNIT, 0 }, + { "last", tUNUMBER, -1 }, + { "this", tMINUTE_UNIT, 0 }, + { "next", tUNUMBER, 2 }, + { "first", tUNUMBER, 1 }, +/* { "second", tUNUMBER, 2 }, */ + { "third", tUNUMBER, 3 }, + { "fourth", tUNUMBER, 4 }, + { "fifth", tUNUMBER, 5 }, + { "sixth", tUNUMBER, 6 }, + { "seventh", tUNUMBER, 7 }, + { "eighth", tUNUMBER, 8 }, + { "ninth", tUNUMBER, 9 }, + { "tenth", tUNUMBER, 10 }, + { "eleventh", tUNUMBER, 11 }, + { "twelfth", tUNUMBER, 12 }, + { "ago", tAGO, 1 }, + { NULL, 0, 0 } +}; + +/* The timezone table. */ +static TABLE const TimezoneTable[] = { + { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ + { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ + { "utc", tZONE, HOUR ( 0) }, + { "wet", tZONE, HOUR ( 0) }, /* Western European */ + { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ + { "wat", tZONE, HOUR ( 1) }, /* West Africa */ + { "at", tZONE, HOUR ( 2) }, /* Azores */ + { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ + { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ + { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ + { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ + { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ + { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ + { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ + { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ + { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ + { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ + { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ + { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ + { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ + { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ + { "cat", tZONE, HOUR (10) }, /* Central Alaska */ + { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ + { "nt", tZONE, HOUR (11) }, /* Nome */ + { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ + { "cet", tZONE, -HOUR (1) }, /* Central European */ + { "met", tZONE, -HOUR (1) }, /* Middle European */ + { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ + { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ + { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ + { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ + { "fwt", tZONE, -HOUR (1) }, /* French Winter */ + { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ + { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ + { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ + { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ + { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ + { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ + { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ + { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ + { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ + { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ + { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ + { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ + { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ + { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ + { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ + { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ + { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ + { NULL, 0, 0 } +}; + +/* Military timezone table. */ +static TABLE const MilitaryTable[] = { + { "a", tZONE, HOUR ( 1) }, + { "b", tZONE, HOUR ( 2) }, + { "c", tZONE, HOUR ( 3) }, + { "d", tZONE, HOUR ( 4) }, + { "e", tZONE, HOUR ( 5) }, + { "f", tZONE, HOUR ( 6) }, + { "g", tZONE, HOUR ( 7) }, + { "h", tZONE, HOUR ( 8) }, + { "i", tZONE, HOUR ( 9) }, + { "k", tZONE, HOUR ( 10) }, + { "l", tZONE, HOUR ( 11) }, + { "m", tZONE, HOUR ( 12) }, + { "n", tZONE, HOUR (- 1) }, + { "o", tZONE, HOUR (- 2) }, + { "p", tZONE, HOUR (- 3) }, + { "q", tZONE, HOUR (- 4) }, + { "r", tZONE, HOUR (- 5) }, + { "s", tZONE, HOUR (- 6) }, + { "t", tZONE, HOUR (- 7) }, + { "u", tZONE, HOUR (- 8) }, + { "v", tZONE, HOUR (- 9) }, + { "w", tZONE, HOUR (-10) }, + { "x", tZONE, HOUR (-11) }, + { "y", tZONE, HOUR (-12) }, + { "z", tZONE, HOUR ( 0) }, + { NULL, 0, 0 } +}; + + + + +static int yyerror (MAYBE_UNUSED const char *s) +{ + return 0; +} + +static int ToHour (int Hours, MERIDIAN Meridian) +{ + switch (Meridian) + { + case MER24: + if (Hours < 0 || Hours > 23) + return -1; + return Hours; + case MERam: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours; + case MERpm: + if (Hours < 1 || Hours > 12) + return -1; + if (Hours == 12) + Hours = 0; + return Hours + 12; + default: + abort (); + } + /* NOTREACHED */ +} + +static int ToYear (int Year) +{ + if (Year < 0) + Year = -Year; + + /* XPG4 suggests that years 00-68 map to 2000-2068, and + years 69-99 map to 1969-1999. */ + if (Year < 69) + Year += 2000; + else if (Year < 100) + Year += 1900; + + return Year; +} + +static int LookupWord (char *buff) +{ + register char *p; + register char *q; + register const TABLE *tp; + int i; + bool abbrev; + + /* Make it lowercase. */ + for (p = buff; '\0' != *p; p++) + if (isupper (*p)) + *p = tolower (*p); + + if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) + { + yylval.Meridian = MERam; + return tMERIDIAN; + } + if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) + { + yylval.Meridian = MERpm; + return tMERIDIAN; + } + + /* See if we have an abbreviation for a month. */ + if (strlen (buff) == 3) + abbrev = true; + else if (strlen (buff) == 4 && buff[3] == '.') + { + abbrev = true; + buff[3] = '\0'; + } + else + abbrev = false; + + for (tp = MonthDayTable; tp->name; tp++) + { + if (abbrev) + { + if (strncmp (buff, tp->name, 3) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + else if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + for (tp = TimezoneTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + if (strcmp (buff, "dst") == 0) + return tDST; + + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Strip off any plural and try the units table again. */ + i = strlen (buff) - 1; + if (buff[i] == 's') + { + buff[i] = '\0'; + for (tp = UnitsTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + buff[i] = 's'; /* Put back for "this" in OtherTable. */ + } + + for (tp = OtherTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + /* Military timezones. */ + if (buff[1] == '\0' && isalpha (*buff)) + { + for (tp = MilitaryTable; tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + } + + /* Drop out any periods and try the timezone table again. */ + for (i = 0, p = q = buff; '\0' != *q; q++) + if (*q != '.') + *p++ = *q; + else + i++; + *p = '\0'; + if (0 != i) + for (tp = TimezoneTable; NULL != tp->name; tp++) + if (strcmp (buff, tp->name) == 0) + { + yylval.Number = tp->value; + return tp->type; + } + + return tID; +} + +static int +yylex (void) +{ + register char c; + register char *p; + char buff[20]; + int Count; + int sign; + + for (;;) + { + while (isspace (*yyInput)) + yyInput++; + + if (isdigit (c = *yyInput) || c == '-' || c == '+') + { + if (c == '-' || c == '+') + { + sign = c == '-' ? -1 : 1; + if (!isdigit (*++yyInput)) + /* skip the '-' sign */ + continue; + } + else + sign = 0; + for (yylval.Number = 0; isdigit (c = *yyInput++);) + yylval.Number = 10 * yylval.Number + c - '0'; + yyInput--; + if (sign < 0) + yylval.Number = -yylval.Number; + return (0 != sign) ? tSNUMBER : tUNUMBER; + } + if (isalpha (c)) + { + for (p = buff; (c = *yyInput++, isalpha (c)) || c == '.';) + if (p < &buff[sizeof buff - 1]) + *p++ = c; + *p = '\0'; + yyInput--; + return LookupWord (buff); + } + if (c != '(') + return *yyInput++; + Count = 0; + do + { + c = *yyInput++; + if (c == '\0') + return c; + if (c == '(') + Count++; + else if (c == ')') + Count--; + } + while (Count > 0); + } +} + +#define TM_YEAR_ORIGIN 1900 + +/* Yield A - B, measured in seconds. */ +static long difftm (struct tm *a, struct tm *b) +{ + int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); + int by = b->tm_year + (TM_YEAR_ORIGIN - 1); + long days = ( + /* difference in day of year */ + a->tm_yday - b->tm_yday + /* + intervening leap days */ + + ((ay >> 2) - (by >> 2)) + - (ay / 100 - by / 100) + + ((ay / 100 >> 2) - (by / 100 >> 2)) + /* + difference in years * 365 */ + + (long) (ay - by) * 365 + ); + return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) + + (a->tm_min - b->tm_min)) + + (a->tm_sec - b->tm_sec)); +} + +time_t get_date (const char *p, const time_t *now) +{ + struct tm tm, tm0, *tmp; + time_t Start; + + yyInput = p; + Start = now ? *now : time ((time_t *) NULL); + tmp = localtime (&Start); + yyYear = tmp->tm_year + TM_YEAR_ORIGIN; + yyMonth = tmp->tm_mon + 1; + yyDay = tmp->tm_mday; + yyHour = tmp->tm_hour; + yyMinutes = tmp->tm_min; + yySeconds = tmp->tm_sec; + yyMeridian = MER24; + yyRelSeconds = 0; + yyRelMinutes = 0; + yyRelHour = 0; + yyRelDay = 0; + yyRelMonth = 0; + yyRelYear = 0; + yyHaveDate = 0; + yyHaveDay = 0; + yyHaveRel = 0; + yyHaveTime = 0; + yyHaveZone = 0; + + if (yyparse () + || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) + return -1; + + tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; + tm.tm_mon = yyMonth - 1 + yyRelMonth; + tm.tm_mday = yyDay + yyRelDay; + if ((yyHaveTime != 0) || + ( (yyHaveRel != 0) && (yyHaveDate == 0) && (yyHaveDay == 0) )) + { + tm.tm_hour = ToHour (yyHour, yyMeridian); + if (tm.tm_hour < 0) + return -1; + tm.tm_min = yyMinutes; + tm.tm_sec = yySeconds; + } + else + { + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + } + tm.tm_hour += yyRelHour; + tm.tm_min += yyRelMinutes; + tm.tm_sec += yyRelSeconds; + tm.tm_isdst = -1; + tm0 = tm; + + Start = mktime (&tm); + + if (Start == (time_t) -1) + { + + /* Guard against falsely reporting errors near the time_t boundaries + when parsing times in other time zones. For example, if the min + time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead + of UTC, then the min localtime value is 1970-01-01 08:00:00; if + we apply mktime to 1970-01-01 00:00:00 we will get an error, so + we apply mktime to 1970-01-02 08:00:00 instead and adjust the time + zone by 24 hours to compensate. This algorithm assumes that + there is no DST transition within a day of the time_t boundaries. */ + if (yyHaveZone) + { + tm = tm0; + if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) + { + tm.tm_mday++; + yyTimezone -= 24 * 60; + } + else + { + tm.tm_mday--; + yyTimezone += 24 * 60; + } + Start = mktime (&tm); + } + + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveDay && !yyHaveDate) + { + tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 + + 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); + Start = mktime (&tm); + if (Start == (time_t) -1) + return Start; + } + + if (yyHaveZone) + { + long delta = yyTimezone * 60L + difftm (&tm, gmtime (&Start)); + if ((Start + delta < Start) != (delta < 0)) + return -1; /* time_t overflow */ + Start += delta; + } + + return Start; +} + +#if defined (TEST) + +int +main(void) +{ + char buff[MAX_BUFF_LEN + 1]; + time_t d; + + (void) printf ("Enter date, or blank line to exit.\n\t> "); + (void) fflush (stdout); + + buff[MAX_BUFF_LEN] = 0; + while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) + { + d = get_date (buff, (time_t *) NULL); + if (d == -1) + (void) printf ("Bad format - couldn't convert.\n"); + else + (void) printf ("%s", ctime (&d)); + (void) printf ("\t> "); + (void) fflush (stdout); + } + exit (0); + /* NOTREACHED */ +} +#endif /* defined (TEST) */ diff --git a/lib/getdef.c b/lib/getdef.c index dcd1fe7..30f54ba 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -13,6 +13,7 @@ #include "prototypes.h" #include "defines.h" +#include #include #include #include @@ -20,8 +21,14 @@ #ifdef USE_ECONF #include #endif + +#include "alloc.h" +#include "atoi/str2i.h" #include "getdef.h" #include "shadowlog_internal.h" +#include "string/sprintf.h" + + /* * A configuration item definition. */ @@ -33,7 +40,6 @@ struct itemdef { #define PAMDEFS \ {"CHFN_AUTH", NULL}, \ {"CHSH_AUTH", NULL}, \ - {"CRACKLIB_DICTPATH", NULL}, \ {"ENV_HZ", NULL}, \ {"ENVIRON_FILE", NULL}, \ {"ENV_TZ", NULL}, \ @@ -132,10 +138,8 @@ static struct itemdef def_table[] = { #ifndef USE_PAM PAMDEFS #endif -#ifdef USE_SYSLOG {"SYSLOG_SG_ENAB", NULL}, {"SYSLOG_SU_ENAB", NULL}, -#endif #ifdef WITH_TCB {"TCB_AUTH_GROUP", NULL}, {"TCB_SYMLINKS", NULL}, @@ -173,7 +177,7 @@ static const char* def_fname = LOGINDEFS; /* login config defs file */ static bool def_loaded = false; /* are defs already loaded? */ /* local function prototypes */ -static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *); +static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *, const char *); static void def_load (void); @@ -192,8 +196,8 @@ static void def_load (void); def_load (); } - d = def_find (item); - return ((NULL == d)? (const char *) NULL : d->value); + d = def_find (item, NULL); + return (NULL == d) ? NULL : d->value; } @@ -211,7 +215,7 @@ bool getdef_bool (const char *item) def_load (); } - d = def_find (item); + d = def_find (item, NULL); if ((NULL == d) || (NULL == d->value)) { return false; } @@ -237,21 +241,21 @@ int getdef_num (const char *item, int dflt) def_load (); } - d = def_find (item); + d = def_find (item, NULL); if ((NULL == d) || (NULL == d->value)) { return dflt; } - if ( (getlong (d->value, &val) == 0) + if ( (str2sl(&val, d->value) == -1) || (val > INT_MAX) - || (val < INT_MIN)) { + || (val < -1)) { fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); return dflt; } - return (int) val; + return val; } @@ -272,12 +276,12 @@ unsigned int getdef_unum (const char *item, unsigned int dflt) def_load (); } - d = def_find (item); + d = def_find (item, NULL); if ((NULL == d) || (NULL == d->value)) { return dflt; } - if ( (getlong (d->value, &val) == 0) + if ( (str2sl(&val, d->value) == -1) || (val < 0) || (val > INT_MAX)) { fprintf (shadow_logfd, @@ -286,7 +290,7 @@ unsigned int getdef_unum (const char *item, unsigned int dflt) return dflt; } - return (unsigned int) val; + return val; } @@ -307,12 +311,12 @@ long getdef_long (const char *item, long dflt) def_load (); } - d = def_find (item); + d = def_find (item, NULL); if ((NULL == d) || (NULL == d->value)) { return dflt; } - if (getlong (d->value, &val) == 0) { + if (str2sl(&val, d->value) == -1 || val < -1) { fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); @@ -339,12 +343,12 @@ unsigned long getdef_ulong (const char *item, unsigned long dflt) def_load (); } - d = def_find (item); + d = def_find (item, NULL); if ((NULL == d) || (NULL == d->value)) { return dflt; } - if (getulong (d->value, &val) == 0) { + if (str2ul(&val, d->value) == -1) { fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); @@ -359,7 +363,7 @@ unsigned long getdef_ulong (const char *item, unsigned long dflt) * (also used when loading the initial defaults) */ -int putdef_str (const char *name, const char *value) +int putdef_str (const char *name, const char *value, const char *srcfile) { struct itemdef *d; char *cp; @@ -372,10 +376,9 @@ int putdef_str (const char *name, const char *value) * Locate the slot to save the value. If this parameter * is unknown then "def_find" will print an err message. */ - d = def_find (name); - if (NULL == d) { + d = def_find (name, srcfile); + if (NULL == d) return -1; - } /* * Save off the value. @@ -399,9 +402,12 @@ int putdef_str (const char *name, const char *value) * * Search through a table of configurable items to locate the * specified configuration option. + * + * If srcfile is not NULL, and the item is not found, then report an error saying + * the unknown item was used in this file. */ -static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *name) +static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *name, const char *srcfile) { struct itemdef *ptr; @@ -427,10 +433,11 @@ static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *name) fprintf (shadow_logfd, _("configuration error - unknown item '%s' (notify administrator)\n"), name); - SYSLOG ((LOG_CRIT, "unknown configuration item `%s'", name)); + if (srcfile != NULL) + SYSLOG ((LOG_CRIT, "shadow: unknown configuration item '%s' in '%s'", name, srcfile)); out: - return (struct itemdef *) NULL; + return NULL; } /* @@ -442,21 +449,12 @@ out: 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); + char *cp; + + xasprintf(&cp, "%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); + xasprintf(&cp, "%s/%s", file, vendordir); vendordir = cp; #endif #else @@ -470,18 +468,13 @@ void setdef_config_file (const char* file) * Loads the user-configured options from the default configuration file */ +#ifdef USE_ECONF 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. @@ -489,8 +482,6 @@ 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) @@ -510,7 +501,12 @@ static void def_load (void) for (size_t i = 0; i < key_number; i++) { char *value; - econf_getStringValue(defs_file, NULL, keys[i], &value); + error = econf_getStringValue(defs_file, NULL, keys[i], &value); + if (error) { + SYSLOG ((LOG_CRIT, "failed reading key %zu from econf [%s]", + i, econf_errString(error))); + exit (EXIT_FAILURE); + } /* * Store the value in def_table. @@ -519,12 +515,27 @@ static void def_load (void) * 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); + (void)putdef_str (keys[i], value, econf_getPath(defs_file)); + + free(value); } econf_free (keys); econf_free (defs_file); -#else +} +#else /* USE_ECONF */ +static void def_load (void) +{ + int i; + FILE *fp; + char buf[1024], *name, *value, *s; + + /* + * Set the initialized flag. + * (do it early to prevent recursion in putdef_str()) + */ + def_loaded = true; + /* * Open the configuration definitions file. */ @@ -542,12 +553,12 @@ static void def_load (void) /* * Go through all of the lines in the file. */ - while (fgets (buf, (int) sizeof (buf), fp) != NULL) { + while (fgets (buf, sizeof (buf), fp) != NULL) { /* * Trim trailing whitespace. */ - for (i = (int) strlen (buf) - 1; i >= 0; --i) { + for (i = (ptrdiff_t) strlen (buf) - 1; i >= 0; --i) { if (!isspace (buf[i])) { break; } @@ -577,7 +588,7 @@ static void def_load (void) * The error was already reported to the user and to * syslog. The tools will just use their default values. */ - (void)putdef_str (name, value); + (void)putdef_str (name, value, def_fname); } if (ferror (fp) != 0) { @@ -588,8 +599,8 @@ static void def_load (void) } (void) fclose (fp); -#endif } +#endif /* USE_ECONF */ #ifdef CKDEFS @@ -602,7 +613,7 @@ int main (int argc, char **argv) def_load (); for (i = 0; i < NUMDEFS; ++i) { - d = def_find (def_table[i].name); + d = def_find (def_table[i].name, NULL); if (NULL == d) { printf ("error - lookup '%s' failed\n", def_table[i].name); diff --git a/lib/getdef.h b/lib/getdef.h index 2bd3fc5..f55e28b 100644 --- a/lib/getdef.h +++ b/lib/getdef.h @@ -16,7 +16,7 @@ extern int getdef_num (const char *, int); 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 int putdef_str (const char *, const char *, const char *); extern void setdef_config_file (const char* file); /* default UMASK value if not specified in /etc/login.defs */ diff --git a/lib/getgr_nam_gid.c b/lib/getgr_nam_gid.c new file mode 100644 index 0000000..fd0c217 --- /dev/null +++ b/lib/getgr_nam_gid.c @@ -0,0 +1,43 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include "prototypes.h" + +/* + * getgr_nam_gid - Return a pointer to the group specified by a string. + * The string may be a valid GID or a valid groupname. + * If the group does not exist on the system, NULL is returned. + */ +extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname) +{ + char *end; + long long gid; + + if (NULL == grname) { + return NULL; + } + + errno = 0; + gid = strtoll(grname, &end, 10); + if ( ('\0' != *grname) + && ('\0' == *end) + && (0 == errno) + && (/*@+longintegral@*/gid == (gid_t)gid)/*@=longintegral@*/) { + return xgetgrgid (gid); + } + return xgetgrnam (grname); +} + diff --git a/lib/getlong.c b/lib/getlong.c deleted file mode 100644 index ec4aa54..0000000 --- a/lib/getlong.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include "prototypes.h" - -/* - * getlong - extract a long integer provided by the numstr string in *result - * - * It supports decimal, hexadecimal or octal representations. - * - * Returns 0 on failure, 1 on success. - */ -int getlong (const char *numstr, /*@out@*/long int *result) -{ - long val; - char *endptr; - - errno = 0; - val = strtol (numstr, &endptr, 0); - if (('\0' == *numstr) || ('\0' != *endptr) || (ERANGE == errno)) { - return 0; - } - - *result = val; - return 1; -} - diff --git a/lib/getrange.c b/lib/getrange.c new file mode 100644 index 0000000..466e908 --- /dev/null +++ b/lib/getrange.c @@ -0,0 +1,71 @@ +// SPDX-FileCopyrightText: 2008, Nicolas François +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#ident "$Id: $" + +#include +#include + +#include "atoi/a2i.h" +#include "defines.h" +#include "prototypes.h" + + +/* + * Parse a range and indicate if the range is valid. + * Valid ranges are in the form: + * -> min=max=long has_min has_max + * - -> max=long !has_min has_max + * - -> min=long has_min !has_max + * - -> min=long1 max=long2 has_min has_max + */ +int +getrange(const char *range, + unsigned long *min, bool *has_min, + unsigned long *max, bool *has_max) +{ + const char *end; + + if (NULL == range) + return -1; + + *min = 0; + *has_min = false; + *has_max = false; + + if ('-' == range[0]) { + end = range + 1; + goto parse_max; + } + + if (a2ul(min, range, &end, 10, 0, ULONG_MAX) == -1 && errno != ENOTSUP) + return -1; + *has_min = true; + + switch (*end++) { + case '\0': + *has_max = true; + *max = *min; + return 0; /* */ + + case '-': + if ('\0' == *end) + return 0; /* - */ +parse_max: + if (!isdigit((unsigned char) *end)) + return -1; + + if (a2ul(max, end, NULL, 10, *min, ULONG_MAX) == -1) + return -1; + *has_max = true; + + return 0; /* -, or - */ + + default: + return -1; + } +} diff --git a/lib/gettime.c b/lib/gettime.c new file mode 100644 index 0000000..c61c88c --- /dev/null +++ b/lib/gettime.c @@ -0,0 +1,47 @@ +// SPDX-FileCopyrightText: 2017, Chris Lamb +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#ident "$Id$" + +#include +#include +#include + +#include "atoi/a2i.h" +#include "defines.h" +#include "prototypes.h" +#include "shadowlog.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(void) +{ + char *source_date_epoch; + FILE *shadow_logfd = log_get_logfd(); + time_t fallback, epoch; + + fallback = time (NULL); + source_date_epoch = shadow_getenv ("SOURCE_DATE_EPOCH"); + + if (!source_date_epoch) + return fallback; + + if (a2i(time_t, &epoch, source_date_epoch, NULL, 10, 0, fallback) == -1) { + fprintf(shadow_logfd, + _("Environment variable $SOURCE_DATE_EPOCH: a2i(\"%s\"): %s"), + source_date_epoch, strerror(errno)); + return fallback; + } + return epoch; +} diff --git a/lib/getulong.c b/lib/getulong.c deleted file mode 100644 index 33250e3..0000000 --- a/lib/getulong.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id: getlong.c 2763 2009-04-23 09:57:03Z nekral-guest $" - -#include -#include -#include "prototypes.h" - -/* - * getulong - extract an unsigned long integer provided by the numstr string in *result - * - * It supports decimal, hexadecimal or octal representations. - * - * Returns 0 on failure, 1 on success. - */ -int getulong (const char *numstr, /*@out@*/unsigned long int *result) -{ - unsigned long int val; - char *endptr; - - errno = 0; - val = strtoul (numstr, &endptr, 0); - if ( ('\0' == *numstr) - || ('\0' != *endptr) - || (ERANGE == errno) - ) { - return 0; - } - - *result = val; - return 1; -} - diff --git a/lib/groupio.c b/lib/groupio.c index 357a30e..7b9d45f 100644 --- a/lib/groupio.c +++ b/lib/groupio.c @@ -15,12 +15,14 @@ #include #include +#include "alloc.h" #include "prototypes.h" #include "defines.h" #include "commonio.h" #include "getdef.h" #include "groupio.h" + static /*@null@*/struct commonio_entry *merge_group_entries ( /*@null@*/ /*@returned@*/struct commonio_entry *gr1, /*@null@*/struct commonio_entry *gr2); @@ -34,7 +36,8 @@ static /*@null@*/ /*@only@*/void *group_dup (const void *ent) return __gr_dup (gr); } -static void group_free (/*@out@*/ /*@only@*/void *ent) +static void +group_free(/*@only@*/void *ent) { struct group *gr = ent; @@ -50,7 +53,7 @@ static const char *group_getname (const void *ent) static void *group_parse (const char *line) { - return (void *) sgetgrent (line); + return sgetgrent (line); } static int group_put (const void *ent, FILE * file) @@ -159,7 +162,7 @@ int gr_open (int mode) int gr_update (const struct group *gr) { - return commonio_update (&group_db, (const void *) gr); + return commonio_update (&group_db, gr); } int gr_remove (const char *name) @@ -209,17 +212,25 @@ void __gr_del_entry (const struct commonio_entry *ent) static int gr_cmp (const void *p1, const void *p2) { + const struct commonio_entry *const *ce1; + const struct commonio_entry *const *ce2; + const struct group *g1, *g2; gid_t u1, u2; - if ((*(struct commonio_entry **) p1)->eptr == NULL) { + ce1 = p1; + g1 = (*ce1)->eptr; + if (g1 == NULL) { return 1; } - if ((*(struct commonio_entry **) p2)->eptr == NULL) { + + ce2 = p2; + g2 = (*ce2)->eptr; + if (g2 == NULL) { return -1; } - u1 = ((struct group *) (*(struct commonio_entry **) p1)->eptr)->gr_gid; - u2 = ((struct group *) (*(struct commonio_entry **) p2)->eptr)->gr_gid; + u1 = g1->gr_gid; + u2 = g2->gr_gid; if (u1 < u2) { return -1; @@ -247,8 +258,8 @@ static int group_open_hook (void) for (gr1 = group_db.head; NULL != gr1; gr1 = gr1->next) { for (gr2 = gr1->next; NULL != gr2; gr2 = gr2->next) { - struct group *g1 = (struct group *)gr1->eptr; - struct group *g2 = (struct group *)gr2->eptr; + struct group *g1 = gr1->eptr; + struct group *g2 = gr2->eptr; if (NULL != g1 && NULL != g2 && 0 == strcmp (g1->gr_name, g2->gr_name) && @@ -291,32 +302,28 @@ static /*@null@*/struct commonio_entry *merge_group_entries ( /*@null@*/ /*@returned@*/struct commonio_entry *gr1, /*@null@*/struct commonio_entry *gr2) { - struct group *gptr1; - struct group *gptr2; - char **new_members; - size_t members = 0; - char *new_line; - size_t new_line_len, i; + char *new_line; + char **new_members; + size_t i; + size_t members = 0; + struct group *gptr1; + struct group *gptr2; + if (NULL == gr2 || NULL == gr1) { errno = EINVAL; return NULL; } - gptr1 = (struct group *)gr1->eptr; - gptr2 = (struct group *)gr2->eptr; + gptr1 = gr1->eptr; + gptr2 = gr2->eptr; if (NULL == gptr2 || NULL == gptr1) { errno = EINVAL; return NULL; } /* Concatenate the 2 lines */ - new_line_len = strlen (gr1->line) + strlen (gr2->line) +1; - new_line = (char *)malloc (new_line_len + 1); - if (NULL == new_line) { - errno = ENOMEM; + if (asprintf(&new_line, "%s\n%s", gr1->line, gr2->line) == -1) return NULL; - } - 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++); @@ -333,10 +340,9 @@ static /*@null@*/struct commonio_entry *merge_group_entries ( members++; } } - new_members = (char **)calloc ( (members+1), sizeof(char*) ); + new_members = CALLOC (members + 1, char *); if (NULL == new_members) { - free (new_line); - errno = ENOMEM; + free(new_line); return NULL; } for (i=0; NULL != gptr1->gr_mem[i]; i++) { @@ -377,7 +383,7 @@ static int split_groups (unsigned int max_members) struct commonio_entry *gr; for (gr = group_db.head; NULL != gr; gr = gr->next) { - struct group *gptr = (struct group *)gr->eptr; + struct group *gptr = gr->eptr; struct commonio_entry *new; struct group *new_gptr; unsigned int members = 0; @@ -395,9 +401,8 @@ static int split_groups (unsigned int max_members) continue; } - new = (struct commonio_entry *) malloc (sizeof *new); + new = MALLOC(1, struct commonio_entry); if (NULL == new) { - errno = ENOMEM; return 0; } new->eptr = group_dup(gr->eptr); @@ -406,7 +411,7 @@ static int split_groups (unsigned int max_members) errno = ENOMEM; return 0; } - new_gptr = (struct group *)new->eptr; + new_gptr = new->eptr; new->line = NULL; new->changed = true; diff --git a/lib/groupmem.c b/lib/groupmem.c index c858b72..69d4435 100644 --- a/lib/groupmem.c +++ b/lib/groupmem.c @@ -12,6 +12,8 @@ #ident "$Id$" +#include "alloc.h" +#include "memzero.h" #include "prototypes.h" #include "defines.h" #include "groupio.h" @@ -21,12 +23,11 @@ struct group *gr; int i; - gr = (struct group *) malloc (sizeof *gr); + gr = CALLOC(1, struct group); if (NULL == gr) { return NULL; } /* The libc might define other fields. They won't be copied. */ - memset (gr, 0, sizeof *gr); gr->gr_gid = grent->gr_gid; /*@-mustfreeonly@*/ gr->gr_name = strdup (grent->gr_name); @@ -46,7 +47,7 @@ for (i = 0; grent->gr_mem[i]; i++); /*@-mustfreeonly@*/ - gr->gr_mem = (char **) malloc ((i + 1) * sizeof (char *)); + gr->gr_mem = MALLOC(i + 1, char *); /*@=mustfreeonly@*/ if (NULL == gr->gr_mem) { gr_free(gr); @@ -76,7 +77,8 @@ void gr_free_members (struct group *grent) } } -void gr_free (/*@out@*/ /*@only@*/struct group *grent) +void +gr_free(/*@only@*/struct group *grent) { free (grent->gr_name); if (NULL != grent->gr_passwd) { @@ -86,33 +88,3 @@ void gr_free (/*@out@*/ /*@only@*/struct group *grent) gr_free_members(grent); free (grent); } - -bool gr_append_member(struct group *grp, char *member) -{ - int i; - - if (NULL == grp->gr_mem || grp->gr_mem[0] == NULL) { - grp->gr_mem = (char **)malloc(2 * sizeof(char *)); - if (!grp->gr_mem) { - return false; - } - grp->gr_mem[0] = strdup(member); - if (!grp->gr_mem[0]) { - return false; - } - grp->gr_mem[1] = NULL; - return true; - } - - for (i = 0; grp->gr_mem[i]; i++) ; - grp->gr_mem = realloc(grp->gr_mem, (i + 2) * sizeof(char *)); - if (NULL == grp->gr_mem) { - return false; - } - grp->gr_mem[i] = strdup(member); - if (NULL == grp->gr_mem[i]) { - return false; - } - grp->gr_mem[i + 1] = NULL; - return true; -} diff --git a/lib/gshadow.c b/lib/gshadow.c index 2e12923..3c71bea 100644 --- a/lib/gshadow.c +++ b/lib/gshadow.c @@ -15,8 +15,12 @@ #ident "$Id$" #include +#include + +#include "alloc.h" #include "prototypes.h" #include "defines.h" + static /*@null@*/FILE *shadow; static /*@null@*//*@only@*/char **members = NULL; static size_t nmembers = 0; @@ -26,34 +30,6 @@ static struct sgrp sgroup; #define FIELDS 4 -#ifdef USE_NIS -static bool nis_used; -static bool nis_ignore; -static enum { native, start, middle, native2 } nis_state; -static bool nis_bound; -static char *nis_domain; -static char *nis_key; -static int nis_keylen; -static char *nis_val; -static int nis_vallen; - -#define IS_NISCHAR(c) ((c)=='+') -#endif - -#ifdef USE_NIS -/* - * bind_nis - bind to NIS server - */ - -static int bind_nis (void) -{ - if (yp_get_default_domain (&nis_domain)) - return -1; - - nis_bound = true; - return 0; -} -#endif static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist) { @@ -62,21 +38,16 @@ static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist) while (s != NULL && *s != '\0') { size = (nelem + 1) * sizeof (ptr); - ptr = realloc (*list, size); + ptr = REALLOC(*list, size, char *); if (NULL != ptr) { - ptr[nelem] = s; + ptr[nelem] = strsep(&s, ","); nelem++; *list = ptr; *nlist = nelem; - s = strchr (s, ','); - if (NULL != s) { - *s = '\0'; - s++; - } } } size = (nelem + 1) * sizeof (ptr); - ptr = realloc (*list, size); + ptr = REALLOC(*list, size, char *); if (NULL != ptr) { ptr[nelem] = NULL; *list = ptr; @@ -86,9 +57,6 @@ static /*@null@*/char **build_list (char *s, char **list[], size_t * nlist) void setsgent (void) { -#ifdef USE_NIS - nis_state = native; -#endif if (NULL != shadow) { rewind (shadow); } else { @@ -102,7 +70,7 @@ void endsgent (void) (void) fclose (shadow); } - shadow = (FILE *) 0; + shadow = NULL; } /*@observer@*//*@null@*/struct sgrp *sgetsgent (const char *string) @@ -116,7 +84,7 @@ void endsgent (void) size_t len = strlen (string) + 1; if (len > sgrbuflen) { - char *buf = (char *) realloc (sgrbuf, sizeof (char) * len); + char *buf = REALLOC(sgrbuf, len, char); if (NULL == buf) { return NULL; } @@ -124,8 +92,7 @@ void endsgent (void) sgrbuflen = len; } - strncpy (sgrbuf, string, len); - sgrbuf[len-1] = '\0'; + strcpy (sgrbuf, string); cp = strrchr (sgrbuf, '\n'); if (NULL != cp) { @@ -137,30 +104,16 @@ void endsgent (void) * all 4 of them and save the starting addresses in fields[]. */ - for (cp = sgrbuf, i = 0; (i < FIELDS) && (NULL != cp); i++) { - fields[i] = cp; - cp = strchr (cp, ':'); - if (NULL != cp) { - *cp++ = '\0'; - } - } + for (cp = sgrbuf, i = 0; (i < FIELDS) && (NULL != cp); i++) + fields[i] = strsep(&cp, ":"); /* * If there was an extra field somehow, or perhaps not enough, * the line is invalid. */ - if ((NULL != cp) || (i != FIELDS)) { -#ifdef USE_NIS - if (!IS_NISCHAR (fields[0][0])) { - return 0; - } else { - nis_used = true; - } -#else + if (NULL != cp || i != FIELDS) return 0; -#endif - } sgroup.sg_name = fields[0]; sgroup.sg_passwd = fields[1]; @@ -195,7 +148,7 @@ void endsgent (void) char *cp; if (0 == buflen) { - buf = (char *) malloc (BUFSIZ); + buf = MALLOC(BUFSIZ, char); if (NULL == buf) { return NULL; } @@ -206,17 +159,12 @@ void endsgent (void) return NULL; } -#ifdef USE_NIS - while (fgetsx (buf, (int) buflen, fp) == buf) -#else - if (fgetsx (buf, (int) buflen, fp) == buf) -#endif - { + if (fgetsx(buf, buflen, fp) == buf) { while ( ((cp = strrchr (buf, '\n')) == NULL) && (feof (fp) == 0)) { size_t len; - cp = (char *) realloc (buf, buflen*2); + cp = REALLOC(buf, buflen * 2, char); if (NULL == cp) { return NULL; } @@ -234,11 +182,6 @@ void endsgent (void) if (NULL != cp) { *cp = '\0'; } -#ifdef USE_NIS - if (nis_ignore && IS_NISCHAR (buf[0])) { - continue; - } -#endif return (sgetsgent (buf)); } return NULL; @@ -250,96 +193,10 @@ void endsgent (void) /*@observer@*//*@null@*/struct sgrp *getsgent (void) { -#ifdef USE_NIS - bool nis_1_group = false; - struct sgrp *val; -#endif if (NULL == shadow) { setsgent (); } - -#ifdef USE_NIS - again: - /* - * See if we are reading from the local file. - */ - - if (nis_state == native || nis_state == native2) { - - /* - * Get the next entry from the shadow group file. Return - * NULL right away if there is none. - */ - - val = fgetsgent (shadow); - if (NULL == val) { - return 0; - } - - /* - * If this entry began with a NIS escape character, we have - * to see if this is just a single group, or if the entire - * map is being asked for. - */ - - if (IS_NISCHAR (val->sg_name[0])) { - if ('\0' != val->sg_name[1]) { - nis_1_group = true; - } else { - nis_state = start; - } - } - - /* - * If this isn't a NIS group and this isn't an escape to go - * use a NIS map, it must be a regular local group. - */ - - if (!nis_1_group && (nis_state != start)) { - return val; - } - - /* - * If this is an escape to use an NIS map, switch over to - * that bunch of code. - */ - - if (nis_state == start) { - goto again; - } - - /* - * NEEDSWORK. Here we substitute pieces-parts of this entry. - */ - - return 0; - } else { - if (!nis_bound) { - if (bind_nis ()) { - nis_state = native2; - goto again; - } - } - if (nis_state == start) { - if (yp_first (nis_domain, "gshadow.byname", &nis_key, - &nis_keylen, &nis_val, &nis_vallen)) { - nis_state = native2; - goto again; - } - nis_state = middle; - } else if (nis_state == middle) { - if (yp_next (nis_domain, "gshadow.byname", nis_key, - nis_keylen, &nis_key, &nis_keylen, - &nis_val, &nis_vallen)) { - nis_state = native2; - goto again; - } - } - return sgetsgent (nis_val); - } -#else return (fgetsgent (shadow)); -#endif } /* @@ -350,63 +207,13 @@ void endsgent (void) { struct sgrp *sgrp; -#ifdef USE_NIS - static char save_name[16]; - int nis_disabled = 0; -#endif - setsgent (); -#ifdef USE_NIS - if (nis_used) { - again: - - /* - * Search the gshadow.byname map for this group. - */ - - if (!nis_bound) { - bind_nis (); - } - - if (nis_bound) { - char *cp; - - if (yp_match (nis_domain, "gshadow.byname", name, - strlen (name), &nis_val, - &nis_vallen) == 0) { - cp = strchr (nis_val, '\n'); - if (NULL != cp) { - *cp = '\0'; - } - - nis_state = middle; - sgrp = sgetsgent (nis_val); - if (NULL != sgrp) { - strcpy (save_name, sgrp->sg_name); - nis_key = save_name; - nis_keylen = strlen (save_name); - } - return sgrp; - } - } - nis_state = native2; - } -#endif -#ifdef USE_NIS - if (nis_used) { - nis_ignore = true; - nis_disabled = true; - } -#endif - while ((sgrp = getsgent ()) != (struct sgrp *) 0) { + while ((sgrp = getsgent ()) != NULL) { if (strcmp (name, sgrp->sg_name) == 0) { break; } } -#ifdef USE_NIS - nis_ignore = false; -#endif return sgrp; } @@ -437,7 +244,7 @@ int putsgent (const struct sgrp *sgrp, FILE * fp) size += strlen (sgrp->sg_mem[i]) + 1; } - buf = malloc (size); + buf = MALLOC(size, char); if (NULL == buf) { return -1; } @@ -502,5 +309,5 @@ int putsgent (const struct sgrp *sgrp, FILE * fp) return 0; } #else -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /*} SHADOWGRP */ diff --git a/lib/hushed.c b/lib/hushed.c new file mode 100644 index 0000000..86c224f --- /dev/null +++ b/lib/hushed.c @@ -0,0 +1,80 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1991 - 1993, Chip Rosenthal + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include "defines.h" +#include "prototypes.h" +#include "getdef.h" +#include "string/sprintf.h" + + +/* + * hushed - determine if a user receives login messages + * + * Look in the hushed-logins file (or user's home directory) to see + * if the user is to receive the login-time messages. + */ +bool hushed (const char *username) +{ + bool found; + char buf[BUFSIZ]; + FILE *fp; + const char *hushfile; + struct passwd *pw; + + /* + * Get the name of the file to use. If this option is not + * defined, default to a noisy login. + */ + + hushfile = getdef_str ("HUSHLOGIN_FILE"); + if (NULL == hushfile) { + return false; + } + + pw = getpwnam (username); + if (NULL == pw) { + return false; + } + + /* + * If this is not a fully rooted path then see if the + * file exists in the user's home directory. + */ + + if (hushfile[0] != '/') { + SNPRINTF(buf, "%s/%s", pw->pw_dir, hushfile); + return (access (buf, F_OK) == 0); + } + + /* + * If this is a fully rooted path then go through the file + * and see if this user, or its shell is in there. + */ + + fp = fopen (hushfile, "r"); + if (NULL == fp) { + return false; + } + for (found = false; !found && (fgets (buf, sizeof buf, fp) == buf);) { + buf[strcspn (buf, "\n")] = '\0'; + found = (strcmp (buf, pw->pw_shell) == 0) || + (strcmp (buf, pw->pw_name) == 0); + } + (void) fclose (fp); + return found; +} + diff --git a/lib/idmapping.c b/lib/idmapping.c new file mode 100644 index 0000000..56c72ea --- /dev/null +++ b/lib/idmapping.c @@ -0,0 +1,224 @@ +/* + * SPDX-FileCopyrightText: 2013 Eric Biederman + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "alloc.h" +#include "atoi/str2i.h" +#include "prototypes.h" +#include "string/stpeprintf.h" +#include "idmapping.h" +#if HAVE_SYS_CAPABILITY_H +#include +#include +#endif +#include "shadowlog.h" +#include "sizeof.h" + + +struct map_range *get_map_ranges(int ranges, int argc, char **argv) +{ + struct map_range *mappings, *mapping; + int idx, argidx; + + if (ranges < 0 || argc < 0) { + fprintf(log_get_logfd(), "%s: error calculating number of arguments\n", log_get_progname()); + return NULL; + } + + if (ranges * 3 != argc) { + fprintf(log_get_logfd(), "%s: ranges: %u is wrong for argc: %d\n", log_get_progname(), ranges, argc); + return NULL; + } + + mappings = CALLOC(ranges, struct map_range); + if (!mappings) { + fprintf(log_get_logfd(), _( "%s: Memory allocation failure\n"), + log_get_progname()); + exit(EXIT_FAILURE); + } + + /* Gather up the ranges from the command line */ + mapping = mappings; + for (idx = 0, argidx = 0; idx < ranges; idx++, argidx += 3, mapping++) { + if (str2ul(&mapping->upper, argv[argidx + 0]) == -1) { + free(mappings); + return NULL; + } + if (str2ul(&mapping->lower, argv[argidx + 1]) == -1) { + free(mappings); + return NULL; + } + if (str2ul(&mapping->count, argv[argidx + 2]) == -1) { + free(mappings); + return NULL; + } + if (ULONG_MAX - mapping->upper <= mapping->count || ULONG_MAX - mapping->lower <= mapping->count) { + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); + exit(EXIT_FAILURE); + } + if (mapping->upper > UINT_MAX || + mapping->lower > UINT_MAX || + mapping->count > UINT_MAX) { + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); + exit(EXIT_FAILURE); + } + if (mapping->lower + mapping->count > UINT_MAX || + mapping->upper + mapping->count > UINT_MAX) { + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); + 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(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); + exit(EXIT_FAILURE); + } + } + return mappings; +} + +/* Number of ascii digits needed to print any unsigned long in decimal. + * There are approximately 10 bits for every 3 decimal digits. + * So from bits to digits the formula is roundup((Number of bits)/10) * 3. + * For common sizes of integers this works out to: + * 2bytes --> 6 ascii estimate -> 65536 (5 real) + * 4bytes --> 12 ascii estimated -> 4294967296 (10 real) + * 8bytes --> 21 ascii estimated -> 18446744073709551616 (20 real) + * 16bytes --> 39 ascii estimated -> 340282366920938463463374607431768211456 (39 real) + */ +#define ULONG_DIGITS (((WIDTHOF(unsigned long) + 9)/10)*3) + +#if HAVE_SYS_CAPABILITY_H +static inline bool maps_lower_root(int cap, int ranges, const struct map_range *mappings) +{ + int idx; + const struct map_range *mapping; + + if (cap != CAP_SETUID) + return false; + + mapping = mappings; + for (idx = 0; idx < ranges; idx++, mapping++) { + if (mapping->lower == 0) + return true; + } + + return false; +} +#endif + +/* + * 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, const struct map_range *mappings, + const char *map_file, uid_t ruid) +{ + int idx; + const struct map_range *mapping; + size_t bufsize; + char *buf, *pos, *end; + 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(log_get_logfd(), _("%s: Invalid map file %s specified\n"), log_get_progname(), 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(log_get_logfd(), _("%s: Could not prctl(PR_SET_KEEPCAPS)\n"), log_get_progname()); + exit(EXIT_FAILURE); + } + + if (seteuid(ruid) < 0) { + fprintf(log_get_logfd(), _("%s: Could not seteuid to %d\n"), log_get_progname(), ruid); + exit(EXIT_FAILURE); + } + } + + /* Lockdown new{g,u}idmap by dropping all unneeded capabilities. */ + bzero(data, sizeof(data)); + data[0].effective = CAP_TO_MASK(cap); + /* + * When uid 0 from the ancestor userns is supposed to be mapped into + * the child userns we need to retain CAP_SETFCAP. + */ + if (maps_lower_root(cap, ranges, mappings)) + data[0].effective |= CAP_TO_MASK(CAP_SETFCAP); + data[0].permitted = data[0].effective; + if (capset(&hdr, data) < 0) { + fprintf(log_get_logfd(), _("%s: Could not set caps\n"), log_get_progname()); + exit(EXIT_FAILURE); + } +#endif + + bufsize = (ULONG_DIGITS + 1) * 3 * ranges + 1; + pos = buf = XMALLOC(bufsize, char); + end = buf + bufsize; + + /* Build the mapping command */ + mapping = mappings; + for (idx = 0; idx < ranges; idx++, mapping++) { + /* Append this range to the string that will be written */ + pos = stpeprintf(pos, end, "%lu %lu %lu\n", + mapping->upper, + mapping->lower, + mapping->count); + } + if (pos == end || pos == NULL) { + fprintf(log_get_logfd(), _("%s: stpeprintf failed!\n"), log_get_progname()); + exit(EXIT_FAILURE); + } + + /* Write the mapping to the mapping file */ + fd = openat(proc_dir_fd, map_file, O_WRONLY); + if (fd < 0) { + fprintf(log_get_logfd(), _("%s: open of %s failed: %s\n"), + log_get_progname(), map_file, strerror(errno)); + exit(EXIT_FAILURE); + } + if (write_full(fd, buf, pos - buf) == -1) { + fprintf(log_get_logfd(), _("%s: write to %s failed: %s\n"), + log_get_progname(), map_file, strerror(errno)); + exit(EXIT_FAILURE); + } + if (close(fd) != 0 && errno != EINTR) { + fprintf(log_get_logfd(), _("%s: closing %s failed: %s\n"), + log_get_progname(), map_file, strerror(errno)); + exit(EXIT_FAILURE); + } + free(buf); +} diff --git a/lib/idmapping.h b/lib/idmapping.h new file mode 100644 index 0000000..46d4631 --- /dev/null +++ b/lib/idmapping.h @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2013 Eric Biederman + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _IDMAPPING_H_ +#define _IDMAPPING_H_ + +#include + +struct map_range { + unsigned long upper; /* first ID inside the namespace */ + unsigned long lower; /* first ID outside the namespace */ + unsigned long count; /* Length of the inside and outside ranges */ +}; + +extern struct map_range *get_map_ranges(int ranges, int argc, char **argv); +extern void write_mapping(int proc_dir_fd, int ranges, + const struct map_range *mappings, const char *map_file, uid_t ruid); + +#endif /* _ID_MAPPING_H_ */ + diff --git a/lib/isexpired.c b/lib/isexpired.c new file mode 100644 index 0000000..c275691 --- /dev/null +++ b/lib/isexpired.c @@ -0,0 +1,105 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * Extracted from age.c and made part of libshadow.a - may be useful + * in other shadow-aware programs. --marekm + */ + +#include + +#include +#include +#include + +#include "adds.h" +#include "defines.h" +#include "prototypes.h" + +#ident "$Id$" + + +/* + * isexpired - determine if account is expired yet + * + * isexpired calculates the expiration date based on the + * password expiration criteria. + * + * Return value: + * 0: The password is still valid + * 1: The password has expired, it must be changed + * 2: The password has expired since a long time and the account is + * now disabled. (password cannot be changed) + * 3: The account has expired + */ +int isexpired (const struct passwd *pw, /*@null@*/const struct spwd *sp) +{ + long now; + + now = time(NULL) / DAY; + + if (NULL == sp) { + return 0; + } + + /* + * Quick and easy - there is an expired account field + * along with an inactive account field. Do the expired + * one first since it is worse. + */ + + if ((sp->sp_expire > 0) && (now >= sp->sp_expire)) { + return 3; + } + + /* + * Last changed date 1970-01-01 (not very likely) means that + * the password must be changed on next login (passwd -e). + * + * The check for "x" is a workaround for RedHat NYS libc bug - + * if /etc/shadow doesn't exist, getspnam() still succeeds and + * returns sp_lstchg==0 (must change password) instead of -1! + */ + if ( (0 == sp->sp_lstchg) + && (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == 0)) { + return 1; + } + + if ( (sp->sp_lstchg > 0) + && (sp->sp_max >= 0) + && (sp->sp_inact >= 0) + && (now >= addsl(sp->sp_lstchg, sp->sp_max, sp->sp_inact))) + { + return 2; + } + + /* + * The last and max fields must be present for an account + * to have an expired password. A maximum of >10000 days + * is considered to be infinite. + */ + + if ( (-1 == sp->sp_lstchg) + || (-1 == sp->sp_max) + || (sp->sp_max >= 10000)) { + return 0; + } + + /* + * Calculate today's day and the day on which the password + * is going to expire. If that date has already passed, + * the password has expired. + */ + + if (now >= addsl(sp->sp_lstchg, sp->sp_max)) + return 1; + + return 0; +} + diff --git a/lib/limits.c b/lib/limits.c new file mode 100644 index 0000000..813c082 --- /dev/null +++ b/lib/limits.c @@ -0,0 +1,537 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * Separated from setup.c. --marekm + * Resource limits thanks to Cristian Gafton. + * Enhancements of resource limit code by Thomas Orgis + */ + +#include + +#ifndef USE_PAM + +#ident "$Id$" + +#include +#include +#include +#include +#include "prototypes.h" +#include "defines.h" +#include +#include "getdef.h" +#include "shadowlog.h" +#include + +#include "atoi/str2i.h" +#include "memzero.h" + + +#ifndef LIMITS_FILE +#define LIMITS_FILE "/etc/limits" +#endif +#define LOGIN_ERROR_RLIMIT 1 +#define LOGIN_ERROR_LOGIN 2 +/* Set a limit on a resource */ +/* + * rlimit - RLIMIT_XXXX + * value - string value to be read + * multiplier - value*multiplier is the actual limit + */ +static int setrlimit_value (unsigned int resource, + const char *value, + unsigned int multiplier) +{ + char *end; + long l; + rlim_t limit; + struct rlimit rlim; + + /* The "-" is special, not belonging to a strange negative limit. + * It is infinity, in a controlled way. + */ + if ('-' == value[0]) { + limit = RLIM_INFINITY; + } + else { + /* We cannot use str2sl() here because it fails when there + * is more to the value than just this number! + * Also, we are limited to base 10 here (hex numbers will not + * work with the limit string parser as is anyway) + */ + errno = 0; + l = strtol(value, &end, 10); + + if (value == end || errno != 0) + return 0; // FIXME: We could instead throw an error, though. + + if (__builtin_mul_overflow(l, multiplier, &limit)) { + /* FIXME: Again, silent error handling... + * Wouldn't screaming make more sense? + */ + return 0; + } + } + + rlim.rlim_cur = limit; + rlim.rlim_max = limit; + if (setrlimit (resource, &rlim) != 0) { + return LOGIN_ERROR_RLIMIT; + } + return 0; +} + + +static int set_prio (const char *value) +{ + long prio; + + if ( (str2sl(&prio, value) == -1) + || (prio != (int) prio)) { + return 0; + } + if (setpriority (PRIO_PROCESS, 0, prio) != 0) { + return LOGIN_ERROR_RLIMIT; + } + return 0; +} + + +static int set_umask (const char *value) +{ + unsigned long mask; + + if ( (str2ul(&mask, value) == -1) + || (mask != (mode_t) mask)) { + return 0; + } + + (void) umask (mask); + return 0; +} + + +/* Counts the number of user logins and check against the limit */ +static int check_logins (const char *name, const char *maxlogins) +{ + unsigned long limit, count; + + if (str2ul(&limit, maxlogins) == -1) { + return 0; + } + + if (0 == limit) { /* maximum 0 logins ? */ + SYSLOG ((LOG_WARN, "No logins allowed for `%s'\n", name)); + return LOGIN_ERROR_LOGIN; + } + + count = active_sessions_count(name, limit); + + if (count > limit) { + SYSLOG ((LOG_WARN, + "Too many logins (max %lu) for %s\n", + limit, name)); + return LOGIN_ERROR_LOGIN; + } + return 0; +} + +/* Function setup_user_limits - checks/set limits for the current login + * Original idea from Joel Katz's lshell. Ported to shadow-login + * by Cristian Gafton - gafton@sorosis.ro + * + * We are passed a string of the form ('BASH' constants for ulimit) + * [Aa][Cc][Dd][Ff][Mm][Nn][Rr][Ss][Tt][Uu][Ll][Pp][Ii][Oo] + * (eg. 'C2F256D2048N5' or 'C2 F256 D2048 N5') + * where: + * [Aa]: a = RLIMIT_AS max address space (KB) + * [Cc]: c = RLIMIT_CORE max core file size (KB) + * [Dd]: d = RLIMIT_DATA max data size (KB) + * [Ff]: f = RLIMIT_FSIZE max file size (KB) + * [Ii]: i = RLIMIT_NICE max nice value (0..39 translates to 20..-19) + * [Kk]: k = file creation masK (umask) + * [Ll]: l = max number of logins for this user + * [Mm]: m = RLIMIT_MEMLOCK max locked-in-memory address space (KB) + * [Nn]: n = RLIMIT_NOFILE max number of open files + * [Oo]: o = RLIMIT_RTPRIO max real time priority (linux/sched.h 0..MAX_RT_PRIO) + * [Pp]: p = process priority -20..20 (negative = high, positive = low) + * [Rr]: r = RLIMIT_RSS max resident set size (KB) + * [Ss]: s = RLIMIT_STACK max stack size (KB) + * [Tt]: t = RLIMIT_CPU max CPU time (MIN) + * [Uu]: u = RLIMIT_NPROC max number of processes + * + * NOTE: Remember to extend the "no-limits" string below when adding a new + * limit... + * + * Return value: + * 0 = okay, of course + * LOGIN_ERROR_RLIMIT = error setting some RLIMIT + * LOGIN_ERROR_LOGIN = error - too many logins for this user + * + * buf - the limits string + * name - the username + */ +static int do_user_limits (const char *buf, const char *name) +{ + const char *pp; + int retval = 0; + bool reported = false; + + pp = buf; + /* Skip leading whitespace. */ + while ((' ' == *pp) || ('\t' == *pp)) { + pp++; + } + + /* The special limit string "-" results in no limit for all known + * limits. + * We achieve that by parsing a full limit string, parts of it + * being ignored if a limit type is not known to the system. + * Though, there will be complaining for unknown limit types. + */ + if (strcmp (pp, "-") == 0) { + /* Remember to extend this, too, when adding new limits! + * Oh... but "unlimited" does not make sense for umask, + * or does it? (K-) + */ + pp = "A- C- D- F- I- L- M- N- O- P- R- S- T- U-"; + } + + while ('\0' != *pp) { + switch (*pp++) { + case 'a': + case 'A': + /* RLIMIT_AS - max address space (KB) */ + retval |= setrlimit_value (RLIMIT_AS, pp, 1024); + break; + case 'c': + case 'C': + /* RLIMIT_CORE - max core file size (KB) */ + retval |= setrlimit_value (RLIMIT_CORE, pp, 1024); + break; + case 'd': + case 'D': + /* RLIMIT_DATA - max data size (KB) */ + retval |= setrlimit_value (RLIMIT_DATA, pp, 1024); + break; + case 'f': + case 'F': + /* RLIMIT_FSIZE - Maximum filesize (KB) */ + retval |= setrlimit_value (RLIMIT_FSIZE, pp, 1024); + break; +#ifdef RLIMIT_NICE + case 'i': + case 'I': + /* RLIMIT_NICE - max scheduling priority (0..39) */ + retval |= setrlimit_value (RLIMIT_NICE, pp, 1); + break; +#endif + case 'k': + case 'K': + retval |= set_umask (pp); + break; + case 'l': + case 'L': + /* LIMIT the number of concurrent logins */ + retval |= check_logins (name, pp); + break; +#ifdef RLIMIT_MEMLOCK + case 'm': + case 'M': + /* RLIMIT_MEMLOCK - max locked-in-memory address space (KB) */ + retval |= setrlimit_value (RLIMIT_MEMLOCK, pp, 1024); + break; +#endif + case 'n': + case 'N': + /* RLIMIT_NOFILE - max number of open files */ + retval |= setrlimit_value (RLIMIT_NOFILE, pp, 1); + break; +#ifdef RLIMIT_RTPRIO + case 'o': + case 'O': + /* RLIMIT_RTPRIO - max real time priority (0..MAX_RT_PRIO) */ + retval |= setrlimit_value (RLIMIT_RTPRIO, pp, 1); + break; +#endif + case 'p': + case 'P': + retval |= set_prio (pp); + break; +#ifdef RLIMIT_RSS + case 'r': + case 'R': + /* RLIMIT_RSS - max resident set size (KB) */ + retval |= setrlimit_value (RLIMIT_RSS, pp, 1024); + break; +#endif + case 's': + case 'S': + /* RLIMIT_STACK - max stack size (KB) */ + retval |= setrlimit_value (RLIMIT_STACK, pp, 1024); + break; + case 't': + case 'T': + /* RLIMIT_CPU - max CPU time (MIN) */ + retval |= setrlimit_value (RLIMIT_CPU, pp, 60); + break; +#ifdef RLIMIT_NPROC + case 'u': + case 'U': + /* RLIMIT_NPROC - max number of processes */ + retval |= setrlimit_value (RLIMIT_NPROC, pp, 1); + break; +#endif + default: + /* Only report invalid strings once */ + /* Note: A string can be invalid just because a + * specific (theoretically valid) setting is not + * supported by this build. + * It is just a warning in syslog anyway. The line + * is still processed + */ + if (!reported) { + SYSLOG ((LOG_WARN, + "Invalid limit string: '%s'", + pp-1)); + reported = true; + retval |= LOGIN_ERROR_RLIMIT; + } + } + /* After parsing one limit setting (or just complaining + * about it), one still needs to skip its argument to + * prevent a bogus warning on trying to parse that as + * limit specification. + * So, let's skip all digits, "-" and our limited set of + * whitespace. + */ + while ( isdigit (*pp) + || ('-' == *pp) + || (' ' == *pp) + || ('\t' ==*pp)) { + pp++; + } + } + return retval; +} + +/* Check if user uname is in the group gname. + * Can I be sure that gr_mem contains no UID as string? + * Returns true when user is in the group, false when not. + * Any error is treated as false. + */ +static bool user_in_group (const char *uname, const char *gname) +{ + struct group *groupdata; + + if (uname == NULL || gname == NULL) { + return false; + } + + /* We are not claiming to be re-entrant! + * In case of paranoia or a multithreaded login program, + * one needs to add some mess for getgrnam_r. */ + groupdata = getgrnam (gname); + if (NULL == groupdata) { + SYSLOG ((LOG_WARN, "Nonexisting group `%s' in limits file.", + gname)); + return false; + } + + return is_on_list (groupdata->gr_mem, uname); +} + +static int setup_user_limits (const char *uname) +{ + FILE *fil; + char buf[1024]; + char name[1024]; + char limits[1024]; + char deflimits[1024]; + char tempbuf[1024]; + + /* init things */ + MEMZERO(buf); + MEMZERO(name); + MEMZERO(limits); + MEMZERO(deflimits); + MEMZERO(tempbuf); + + /* start the checks */ + fil = fopen (LIMITS_FILE, "r"); + if (fil == NULL) { + return 0; + } + /* The limits file have the following format: + * - '#' (comment) chars only as first chars on a line; + * - username must start on first column (or *, or @group) + * + * FIXME: A better (smarter) checking should be done + */ + while (fgets (buf, 1024, fil) != NULL) { + if (('#' == buf[0]) || ('\n' == buf[0])) { + continue; + } + MEMZERO(tempbuf); + /* a valid line should have a username, then spaces, + * then limits + * we allow the format: + * username L2 D2048 R4096 + * where spaces={' ',\t}. Also, we reject invalid limits. + * Imposing a limit should be done with care, so a wrong + * entry means no care anyway :-). + * + * A '-' as a limits strings means no limits + * + * The username can also be: + * '*': the default limits (only the last is taken into + * account) + * @group: the limit applies to the members of the group + * + * To clarify: The first entry with matching user name rules, + * everything after it is ignored. If there is no user entry, + * the last encountered entry for a matching group rules. + * If there is no matching group entry, the default limits rule. + */ + if (sscanf (buf, "%s%[ACDFIKLMNOPRSTUacdfiklmnoprstu0-9 \t-]", + name, tempbuf) == 2) { + if (strcmp (name, uname) == 0) { + strcpy (limits, tempbuf); + break; + } else if (strcmp (name, "*") == 0) { + strcpy (deflimits, tempbuf); + } else if (name[0] == '@') { + /* If the user is in the group, the group + * limits apply unless later a line for + * the specific user is found. + */ + if (user_in_group (uname, name+1)) { + strcpy (limits, tempbuf); + } + } + } + } + (void) fclose (fil); + if (limits[0] == '\0') { + /* no user specific limits */ + if (deflimits[0] == '\0') { /* no default limits */ + return 0; + } + strcpy (limits, deflimits); /* use the default limits */ + } + return do_user_limits (limits, uname); +} + + +static void setup_usergroups (const struct passwd *info) +{ + const struct group *grp; + +/* + * if not root, and UID == GID, and username is the same as primary + * group name, set umask group bits to be the same as owner bits + * (examples: 022 -> 002, 077 -> 007). + */ + if ((0 != info->pw_uid) && (info->pw_uid == info->pw_gid)) { + /* local, no need for xgetgrgid */ + grp = getgrgid (info->pw_gid); + if ( (NULL != grp) + && (strcmp (info->pw_name, grp->gr_name) == 0)) { + mode_t tmpmask; + tmpmask = umask (0777); + tmpmask = (tmpmask & ~070) | ((tmpmask >> 3) & 070); + (void) umask (tmpmask); + } + } +} + +/* + * set the process nice, ulimit, and umask from the password file entry + */ + +void setup_limits (const struct passwd *info) +{ + char *cp; + + if (getdef_bool ("USERGROUPS_ENAB")) { + setup_usergroups (info); + } + + /* + * See if the GECOS field contains values for NICE, UMASK or ULIMIT. + * If this feature is enabled in /etc/login.defs, we make those + * values the defaults for this login session. + */ + + if (getdef_bool ("QUOTAS_ENAB")) { + if (info->pw_uid != 0) { + if ((setup_user_limits (info->pw_name) & LOGIN_ERROR_LOGIN) != 0) { + (void) fputs (_("Too many logins.\n"), log_get_logfd()); + (void) sleep (2); /* XXX: Should be FAIL_DELAY */ + exit (EXIT_FAILURE); + } + } + for (cp = info->pw_gecos; cp != NULL; cp = strchr (cp, ',')) { + if (',' == *cp) { + cp++; + } + + if (strncmp (cp, "pri=", 4) == 0) { + long inc; + + if ( (str2sl(&inc, cp + 4) == 0) + && (inc >= -20) && (inc <= 20)) { + errno = 0; + if ( (nice (inc) != -1) + || (0 != errno)) { + continue; + } + } + + /* Failed to parse or failed to nice() */ + SYSLOG ((LOG_WARN, + "Can't set the nice value for user %s", + info->pw_name)); + + continue; + } + if (strncmp (cp, "ulimit=", 7) == 0) { + long blocks; + if ( (str2sl(&blocks, cp + 7) == -1) + || (blocks != (int) blocks) + || (set_filesize_limit (blocks) != 0)) { + SYSLOG ((LOG_WARN, + "Can't set the ulimit for user %s", + info->pw_name)); + } + continue; + } + if (strncmp (cp, "umask=", 6) == 0) { + unsigned long mask; + + if ( (str2ul(&mask, cp + 6) == -1) + || (mask != (mode_t) mask)) { + SYSLOG ((LOG_WARN, + "Can't set umask value for user %s", + info->pw_name)); + } else { + (void) umask (mask); + } + + continue; + } + } + } +} + +#else /* !USE_PAM */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* !USE_PAM */ + diff --git a/lib/list.c b/lib/list.c new file mode 100644 index 0000000..9fc6608 --- /dev/null +++ b/lib/list.c @@ -0,0 +1,245 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include + +#include "alloc.h" +#include "prototypes.h" +#include "defines.h" +/* + * add_list - add a member to a list of group members + * + * the array of member names is searched for the new member + * name, and if not present it is added to a freshly allocated + * list of users. + */ +/*@only@*/char ** +add_list(/*@returned@*/ /*@only@*/char **list, const char *member) +{ + int i; + char **tmp; + + assert (NULL != member); + assert (NULL != list); + + /* + * Scan the list for the new name. Return the original list + * pointer if it is present. + */ + + for (i = 0; list[i] != NULL; i++) { + if (strcmp (list[i], member) == 0) { + return list; + } + } + + /* + * Allocate a new list pointer large enough to hold all the + * old entries, and the new entries as well. + */ + + tmp = XMALLOC(i + 2, char *); + + /* + * Copy the original list to the new list, then append the + * new member and NULL terminate the result. This new list + * is returned to the invoker. + */ + + for (i = 0; list[i] != NULL; i++) { + tmp[i] = list[i]; + } + + tmp[i] = xstrdup (member); + tmp[i+1] = NULL; + + return tmp; +} + +/* + * del_list - delete a member from a list of group members + * + * the array of member names is searched for the old member + * name, and if present it is deleted from a freshly allocated + * list of users. + */ + +/*@only@*/char ** +del_list(/*@returned@*/ /*@only@*/char **list, const char *member) +{ + int i, j; + char **tmp; + + assert (NULL != member); + assert (NULL != list); + + /* + * Scan the list for the old name. Return the original list + * pointer if it is not present. + */ + + for (i = j = 0; list[i] != NULL; i++) { + if (strcmp (list[i], member) != 0) { + j++; + } + } + + if (j == i) { + return list; + } + + /* + * Allocate a new list pointer large enough to hold all the + * old entries. + */ + + tmp = XMALLOC(j + 1, char *); + + /* + * Copy the original list except the deleted members to the + * new list, then NULL terminate the result. This new list + * is returned to the invoker. + */ + + for (i = j = 0; list[i] != NULL; i++) { + if (strcmp (list[i], member) != 0) { + tmp[j] = list[i]; + j++; + } + } + + tmp[j] = NULL; + + return tmp; +} + +/* + * Duplicate a list. + * The input list is not modified, but in order to allow the use of this + * function with list of members, the list elements are not enforced to be + * constant strings here. + */ +/*@only@*/char ** +dup_list(char *const *list) +{ + int i; + char **tmp; + + assert (NULL != list); + + for (i = 0; NULL != list[i]; i++); + + tmp = XMALLOC(i + 1, char *); + + i = 0; + while (NULL != *list) { + tmp[i] = xstrdup (*list); + i++; + list++; + } + + tmp[i] = NULL; + return tmp; +} + +/* + * Check if member is part of the input list + * The input list is not modified, but in order to allow the use of this + * function with list of members, the list elements are not enforced to be + * constant strings here. + */ +bool is_on_list (char *const *list, const char *member) +{ + assert (NULL != member); + assert (NULL != list); + + while (NULL != *list) { + if (strcmp (*list, member) == 0) { + return true; + } + list++; + } + + return false; +} + +/* + * comma_to_list - convert comma-separated list to (char *) array + */ + +/*@only@*/char **comma_to_list (const char *comma) +{ + char *members; + char **array; + int i; + char *cp; + char *cp2; + + assert (NULL != comma); + + /* + * Make a copy since we are going to be modifying the list + */ + + members = xstrdup (comma); + + /* + * Count the number of commas in the list + */ + + for (cp = members, i = 0;; i++) { + cp2 = strchr (cp, ','); + if (NULL != cp2) { + cp = cp2 + 1; + } else { + break; + } + } + + /* + * Add 2 - one for the ending NULL, the other for the last item + */ + + i += 2; + + /* + * Allocate the array we're going to store the pointers into. + */ + + array = XMALLOC(i, char *); + + /* + * Empty list is special - 0 members, not 1 empty member. --marekm + */ + + if ('\0' == *members) { + *array = NULL; + free (members); + return array; + } + + /* + * Now go walk that list all over again, this time building the + * array of pointers. + */ + + for (cp = members, i = 0; cp != NULL; i++) + array[i] = strsep(&cp, ","); + array[i] = NULL; + + /* + * Return the new array of pointers + */ + + return array; +} + diff --git a/lib/lockpw.c b/lib/lockpw.c index aaa317f..15e7c8f 100644 --- a/lib/lockpw.c +++ b/lib/lockpw.c @@ -81,5 +81,5 @@ int ulckpwdf (void) return (pw_unlock () && spw_unlock ())? 0 : -1; } #else -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif diff --git a/lib/log.c b/lib/log.c new file mode 100644 index 0000000..9f54d45 --- /dev/null +++ b/lib/log.c @@ -0,0 +1,109 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include "defines.h" +#include +#include "memzero.h" +#include "prototypes.h" +#include "string/strncpy.h" +#include "string/strtcpy.h" + + +/* + * dolastlog - create lastlog entry + * + * A "last login" entry is created for the user being logged in. The + * UID is extracted from the global (struct passwd) entry and the + * TTY information is gotten from the (struct utmpx). + */ +void dolastlog ( + struct lastlog *ll, + const struct passwd *pw, + /*@unique@*/const char *line, + /*@unique@*/const char *host) +{ + int fd; + off_t offset; + struct lastlog newlog; + time_t ll_time; + + /* + * If the file does not exist, don't create it. + */ + + fd = open (LASTLOG_FILE, O_RDWR); + if (-1 == fd) { + return; + } + + /* + * The file is indexed by UID number. Seek to the record + * for this UID. Negative UID's will create problems, but ... + */ + + offset = (off_t) pw->pw_uid * sizeof newlog; + + if (lseek (fd, offset, SEEK_SET) != offset) { + SYSLOG ((LOG_WARN, + "Can't read last lastlog entry for UID %lu in %s. Entry not updated.", + (unsigned long) pw->pw_uid, LASTLOG_FILE)); + (void) close (fd); + return; + } + + /* + * Read the old entry so we can tell the user when they last + * logged in. Then construct the new entry and write it out + * the way we read the old one in. + */ + + if (read (fd, &newlog, sizeof newlog) != (ssize_t) sizeof newlog) { + memzero (&newlog, sizeof newlog); + } + if (NULL != ll) { + *ll = newlog; + } + + ll_time = newlog.ll_time; + (void) time (&ll_time); + newlog.ll_time = ll_time; + STRTCPY(newlog.ll_line, line); +#if HAVE_LL_HOST + STRNCPY(newlog.ll_host, host); +#endif + if ( (lseek (fd, offset, SEEK_SET) != offset) + || (write_full(fd, &newlog, sizeof newlog) == -1)) { + goto err_write; + } + + if (close (fd) != 0 && errno != EINTR) { + goto err_close; + } + + return; + +err_write: + { + int saved_errno = errno; + (void) close (fd); + errno = saved_errno; + } +err_close: + SYSLOG ((LOG_WARN, + "Can't write lastlog entry for UID %lu in %s: %m", + (unsigned long) pw->pw_uid, LASTLOG_FILE)); +} diff --git a/lib/logind.c b/lib/logind.c new file mode 100644 index 0000000..ba7278f --- /dev/null +++ b/lib/logind.c @@ -0,0 +1,52 @@ +/* + * SPDX-FileCopyrightText: 2023, Iker Pedrosa + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include "attr.h" +#include "defines.h" +#include "prototypes.h" + +#include + +int get_session_host (char **out) +{ + char *host = NULL; + char *session = NULL; + int ret; + + ret = sd_pid_get_session (getpid(), &session); + if (ret < 0) { + return ret; + } + ret = sd_session_get_remote_host (session, &host); + if (ret < 0) { + goto done; + } + + *out = host; + +done: + free (session); + return ret; +} + +unsigned long active_sessions_count(const char *name, MAYBE_UNUSED unsigned long limit) +{ + struct passwd *pw; + unsigned long count = 0; + + pw = prefix_getpwnam(name); + if (pw == NULL) { + return 0; + } + + count = sd_uid_get_sessions(pw->pw_uid, 0, NULL); + + return count; +} diff --git a/lib/loginprompt.c b/lib/loginprompt.c new file mode 100644 index 0000000..9b2aa25 --- /dev/null +++ b/lib/loginprompt.c @@ -0,0 +1,111 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include + +#include "alloc.h" +#include "attr.h" +#include "memzero.h" +#include "prototypes.h" +#include "defines.h" +#include "getdef.h" + +static void login_exit (MAYBE_UNUSED int sig) +{ + _exit (EXIT_FAILURE); +} + +/* + * login_prompt - prompt the user for their login name + * + * login_prompt() displays the standard login prompt. If ISSUE_FILE + * is set in login.defs, this file is displayed before the prompt. + */ + +void login_prompt (char *name, int namesize) +{ + char buf[1024]; + + char *cp; + int i; + FILE *fp; + const char *fname = getdef_str ("ISSUE_FILE"); + + sighandler_t sigquit; + sighandler_t sigtstp; + + /* + * There is a small chance that a QUIT character will be part of + * some random noise during a prompt. Deal with this by exiting + * instead of core dumping. Do the same thing for SIGTSTP. + */ + + sigquit = signal (SIGQUIT, login_exit); + sigtstp = signal (SIGTSTP, login_exit); + + /* + * See if the user has configured the issue file to + * be displayed and display it before the prompt. + */ + + if (NULL != fname) { + fp = fopen (fname, "r"); + if (NULL != fp) { + while ((i = getc (fp)) != EOF) { + (void) putc (i, stdout); + } + + (void) fclose (fp); + } + } + (void) gethostname (buf, sizeof buf); + printf (_("\n%s login: "), buf); + (void) fflush (stdout); + + /* + * Read the user's response. The trailing newline will be + * removed. + */ + + MEMZERO(buf); + if (fgets (buf, sizeof buf, stdin) != buf) { + exit (EXIT_FAILURE); + } + + cp = strchr (buf, '\n'); + if (NULL == cp) { + exit (EXIT_FAILURE); + } + *cp = '\0'; /* remove \n [ must be there ] */ + + /* + * Skip leading whitespace. This makes " username" work right. + * Then copy the rest (up to the end) into the username. + */ + + for (cp = buf; *cp == ' ' || *cp == '\t'; cp++); + + for (i = 0; i < namesize - 1 && *cp != '\0'; name[i++] = *cp++); + + name[i] = '\0'; + + /* + * Set the SIGQUIT handler back to its original value + */ + + (void) signal (SIGQUIT, sigquit); + (void) signal (SIGTSTP, sigtstp); +} + diff --git a/lib/mail.c b/lib/mail.c new file mode 100644 index 0000000..d14bdb1 --- /dev/null +++ b/lib/mail.c @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include "prototypes.h" +#include "defines.h" +#include +#include +#include +#include + +#include "alloc.h" +#include "getdef.h" +#include "string/sprintf.h" + +#ident "$Id$" + + +void mailcheck (void) +{ + struct stat statbuf; + char *mailbox; + + if (!getdef_bool ("MAIL_CHECK_ENAB")) { + return; + } + + /* + * Check incoming mail in Maildir format - J. + */ + mailbox = getenv ("MAILDIR"); + if (NULL != mailbox) { + char *newmail; + + xasprintf(&newmail, "%s/new", mailbox); + + if (stat (newmail, &statbuf) != -1 && statbuf.st_size != 0) { + if (statbuf.st_mtime > statbuf.st_atime) { + free(newmail); + (void) puts (_("You have new mail.")); + return; + } + } + free(newmail); + } + + mailbox = getenv ("MAIL"); + if (NULL == mailbox) { + return; + } + + if ( (stat (mailbox, &statbuf) == -1) + || (statbuf.st_size == 0)) { + (void) puts (_("No mail.")); + } else if (statbuf.st_atime > statbuf.st_mtime) { + (void) puts (_("You have mail.")); + } else { + (void) puts (_("You have new mail.")); + } +} + diff --git a/lib/memzero.c b/lib/memzero.c new file mode 100644 index 0000000..8979e5f --- /dev/null +++ b/lib/memzero.c @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#ident "$Id$" + +#include + +#include "memzero.h" + + +extern inline void memzero(void *ptr, size_t size); +extern inline void strzero(char *s); diff --git a/lib/memzero.h b/lib/memzero.h new file mode 100644 index 0000000..1137e83 --- /dev/null +++ b/lib/memzero.h @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 2022-2023, Christian Göttsche + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIBMISC_MEMZERO_H_ +#define SHADOW_INCLUDE_LIBMISC_MEMZERO_H_ + + +#include + +#include +#include +#include + +#include "sizeof.h" + + +#define MEMZERO(arr) memzero(arr, SIZEOF_ARRAY(arr)) + + +inline void memzero(void *ptr, size_t size); +inline void strzero(char *s); + + +inline void +memzero(void *ptr, size_t size) +{ +#if defined(HAVE_MEMSET_EXPLICIT) + memset_explicit(ptr, 0, size); +#elif defined(HAVE_EXPLICIT_BZERO) + explicit_bzero(ptr, size); +#else + bzero(ptr, size); + __asm__ __volatile__ ("" : : "r"(ptr) : "memory"); +#endif +} + + +inline void +strzero(char *s) +{ + memzero(s, strlen(s)); +} + + +#endif // include guard diff --git a/lib/motd.c b/lib/motd.c new file mode 100644 index 0000000..d1d5bf6 --- /dev/null +++ b/lib/motd.c @@ -0,0 +1,60 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2010 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include + +#include "alloc.h" +#include "defines.h" +#include "getdef.h" +#include "prototypes.h" +/* + * motd -- output the /etc/motd file + * + * motd() determines the name of a login announcement file and outputs + * it to the user's terminal at login time. The MOTD_FILE configuration + * option is a colon-delimited list of filenames. + */ +void motd (void) +{ + FILE *fp; + char *motdlist; + const char *motdfile; + char *mb; + int c; + + motdfile = getdef_str ("MOTD_FILE"); + if (NULL == motdfile) { + return; + } + + motdlist = xstrdup (motdfile); + + for (mb = motdlist; ;mb = NULL) { + motdfile = strtok (mb, ":"); + if (NULL == motdfile) { + break; + } + + fp = fopen (motdfile, "r"); + if (NULL != fp) { + while ((c = getc (fp)) != EOF) { + putchar (c); + } + fclose (fp); + } + } + fflush (stdout); + + free (motdlist); +} + diff --git a/lib/must_be.h b/lib/must_be.h new file mode 100644 index 0000000..a7365cb --- /dev/null +++ b/lib/must_be.h @@ -0,0 +1,99 @@ +/* + * SPDX-FileCopyrightText: 2019-2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIBMISC_MUST_BE_H_ +#define SHADOW_INCLUDE_LIBMISC_MUST_BE_H_ + + +#include + +#include + + +/* + * SYNOPSIS + * int must_be(bool e); + * + * ARGUMENTS + * e Expression to be asserted. + * + * DESCRIPTION + * This macro fails compilation if 'e' is false. If 'e' is true, + * it returns (int) 0, so it doesn't affect the expression in which + * it is contained. + * + * This macro is similar to static_assert(3). While + * static_assert(3) can only be used where a statement is allowed, + * this must_be() macro can be used wherever an expression is + * allowed. + * + * RETURN VALUE + * 0 + * + * ERRORS + * If 'e' is false, the compilation will fail, as when using + * static_assert(3). + * + * EXAMPLES + * #define must_be_array(a) must_be(is_array(a)) + * + * #define NITEMS(a) (sizeof(a) / sizeof(*(a)) + must_be_array(a)) + * + * int foo[42]; + * int bar[NITEMS(foo)]; + */ + + +#define must_be(e) \ +( \ + 0 * (int) sizeof( \ + struct { \ + static_assert(e, ""); \ + int ISO_C_forbids_a_struct_with_no_members_; \ + } \ + ) \ +) + + +/* + * SYNOPSIS + * int must_be_array(a); + * + * ARGUMENTS + * a Array. + * + * DESCRIPTION + * This macro fails compilation if 'a' is not an array. It is + * useful in macros that accept an array as a parameter, where this + * macro can validate the macro argument. It prevent passing a + * pointer to such macros, which would otherwise produce silent + * bugs. + * + * RETURN VALUE + * 0 + * + * ERRORS + * If 'a' is not an array, the compilation will fail. + * + * EXAMPLES + * int a[10]; + * int *p; + * + * must_be_array(a); // Ok + * must_be_array(p); // Compile-time error + * + * SEE ALSO + * must_be() + */ + + +#define is_same_type(a, b) __builtin_types_compatible_p(a, b) +#define is_same_typeof(a, b) is_same_type(typeof(a), typeof(b)) +#define is_array(a) (!is_same_typeof((a), &(a)[0])) +#define must_be_array(a) must_be(is_array(a)) + + +#endif // include guard diff --git a/lib/myname.c b/lib/myname.c new file mode 100644 index 0000000..1b02617 --- /dev/null +++ b/lib/myname.c @@ -0,0 +1,49 @@ +/* + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * myname.c - determine the current username and get the passwd entry + * + */ + +#include + +#ident "$Id$" + +#include "defines.h" +#include +#include "prototypes.h" +/*@null@*/ /*@only@*/struct passwd *get_my_pwent (void) +{ + struct passwd *pw; + const char *cp = getlogin (); + uid_t ruid = getuid (); + + /* + * Try getlogin() first - if it fails or returns a non-existent + * username, or a username which doesn't match the real UID, fall + * back to getpwuid(getuid()). This should work reasonably with + * usernames longer than the utmp limit (8 characters), as well as + * shared UIDs - but not both at the same time... + * + * XXX - when running from su, will return the current user (not + * the original user, like getlogin() does). Does this matter? + */ + if ((NULL != cp) && ('\0' != *cp)) { + pw = xgetpwnam (cp); + if ((NULL != pw) && (pw->pw_uid == ruid)) { + return pw; + } + if (NULL != pw) { + pw_free (pw); + } + } + + return xgetpwuid (ruid); +} + diff --git a/lib/nscd.c b/lib/nscd.c index 2c2251a..451a5a3 100644 --- a/lib/nscd.c +++ b/lib/nscd.c @@ -53,6 +53,6 @@ int nscd_flush_cache (const char *service) return 0; } #else /* USE_NSCD */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* USE_NSCD */ diff --git a/lib/nss.c b/lib/nss.c index 23d0518..779d825 100644 --- a/lib/nss.c +++ b/lib/nss.c @@ -1,3 +1,5 @@ +#include + #include #include #include @@ -6,10 +8,14 @@ #include #include #include + +#include "alloc.h" #include "prototypes.h" #include "../libsubid/subid.h" #include "shadowlog_internal.h" #include "shadowlog.h" +#include "string/sprintf.h" + #define NSSWITCH "/etc/nsswitch.conf" @@ -40,10 +46,12 @@ static void nss_exit(void) { // nsswitch_path is an argument only to support testing. void nss_init(const char *nsswitch_path) { - FILE *nssfp = NULL; - char *line = NULL, *p, *token, *saveptr; - size_t len = 0; - FILE *shadow_logfd = log_get_logfd(); + char *line = NULL, *p, *token, *saveptr; + char libname[64]; + FILE *nssfp = NULL; + FILE *shadow_logfd = log_get_logfd(); + void *h; + size_t len = 0; if (atomic_flag_test_and_set(&nss_init_started)) { // Another thread has started nss_init, wait for it to complete @@ -59,82 +67,78 @@ void nss_init(const char *nsswitch_path) { // subid: files nssfp = fopen(nsswitch_path, "r"); if (!nssfp) { + if (errno != ENOENT) + fprintf(shadow_logfd, "Failed opening %s: %m\n", nsswitch_path); + atomic_store(&nss_init_completed, true); return; } - while ((getline(&line, &len, nssfp)) != -1) { - if (line[0] == '\0' || line[0] == '#') + p = NULL; + while (getline(&line, &len, nssfp) != -1) { + if (line[0] == '#') continue; if (strlen(line) < 8) continue; if (strncasecmp(line, "subid:", 6) != 0) continue; p = &line[6]; - while ((*p) && isspace(*p)) + while (isspace(*p)) p++; - if (!*p) - continue; - for (token = strtok_r(p, " \n\t", &saveptr); - token; - token = strtok_r(NULL, " \n\t", &saveptr)) { - char libname[65]; - void *h; - if (strcmp(token, "files") == 0) { - subid_nss = NULL; - goto done; - } - if (strlen(token) > 50) { - fprintf(shadow_logfd, "Subid NSS module name too long (longer than 50 characters): %s\n", token); - fprintf(shadow_logfd, "Using files\n"); - subid_nss = NULL; - goto done; - } - snprintf(libname, 64, "libsubid_%s.so", token); - h = dlopen(libname, RTLD_LAZY); - if (!h) { - fprintf(shadow_logfd, "Error opening %s: %s\n", libname, dlerror()); - fprintf(shadow_logfd, "Using files\n"); - subid_nss = NULL; - goto done; - } - subid_nss = malloc(sizeof(*subid_nss)); - if (!subid_nss) { - dlclose(h); - goto done; - } - subid_nss->has_range = dlsym(h, "shadow_subid_has_range"); - if (!subid_nss->has_range) { - fprintf(shadow_logfd, "%s did not provide @has_range@\n", libname); - dlclose(h); - free(subid_nss); - subid_nss = NULL; - goto done; - } - subid_nss->list_owner_ranges = dlsym(h, "shadow_subid_list_owner_ranges"); - if (!subid_nss->list_owner_ranges) { - fprintf(shadow_logfd, "%s did not provide @list_owner_ranges@\n", libname); - dlclose(h); - free(subid_nss); - subid_nss = NULL; - goto done; - } - subid_nss->find_subid_owners = dlsym(h, "shadow_subid_find_subid_owners"); - if (!subid_nss->find_subid_owners) { - fprintf(shadow_logfd, "%s did not provide @find_subid_owners@\n", libname); - dlclose(h); - free(subid_nss); - subid_nss = NULL; - goto done; - } - subid_nss->handle = h; - goto done; - } + if (*p != '\0') + break; + p = NULL; + } + if (p == NULL) { + goto null_subid; + } + token = strtok_r(p, " \n\t", &saveptr); + if (token == NULL) { fprintf(shadow_logfd, "No usable subid NSS module found, using files\n"); // subid_nss has to be null here, but to ease reviews: - free(subid_nss); - subid_nss = NULL; - goto done; + goto null_subid; } + if (strcmp(token, "files") == 0) { + goto null_subid; + } + if (strlen(token) > 50) { + fprintf(shadow_logfd, "Subid NSS module name too long (longer than 50 characters): %s\n", token); + fprintf(shadow_logfd, "Using files\n"); + goto null_subid; + } + SNPRINTF(libname, "libsubid_%s.so", token); + h = dlopen(libname, RTLD_LAZY); + if (!h) { + fprintf(shadow_logfd, "Error opening %s: %s\n", libname, dlerror()); + fprintf(shadow_logfd, "Using files\n"); + goto null_subid; + } + subid_nss = MALLOC(1, struct subid_nss_ops); + if (!subid_nss) { + goto close_lib; + } + subid_nss->has_range = dlsym(h, "shadow_subid_has_range"); + if (!subid_nss->has_range) { + fprintf(shadow_logfd, "%s did not provide @has_range@\n", libname); + goto close_lib; + } + subid_nss->list_owner_ranges = dlsym(h, "shadow_subid_list_owner_ranges"); + if (!subid_nss->list_owner_ranges) { + fprintf(shadow_logfd, "%s did not provide @list_owner_ranges@\n", libname); + goto close_lib; + } + subid_nss->find_subid_owners = dlsym(h, "shadow_subid_find_subid_owners"); + if (!subid_nss->find_subid_owners) { + fprintf(shadow_logfd, "%s did not provide @find_subid_owners@\n", libname); + goto close_lib; + } + subid_nss->handle = h; + goto done; + +close_lib: + dlclose(h); + free(subid_nss); +null_subid: + subid_nss = NULL; done: atomic_store(&nss_init_completed, true); diff --git a/lib/obscure.c b/lib/obscure.c new file mode 100644 index 0000000..549c2a8 --- /dev/null +++ b/lib/obscure.c @@ -0,0 +1,224 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + + +#include +#include + +#include "alloc.h" +#include "attr.h" +#include "memzero.h" +#include "prototypes.h" +#include "defines.h" +#include "getdef.h" + +#if WITH_LIBBSD == 0 +#include "freezero.h" +#endif /* WITH_LIBBSD */ + +/* + * can't be a palindrome - like `R A D A R' or `M A D A M' + */ +static bool palindrome (MAYBE_UNUSED const char *old, const char *new) +{ + size_t i, j; + + i = strlen (new); + + for (j = 0; j < i; j++) { + if (new[i - j - 1] != new[j]) { + return false; + } + } + + return true; +} + +/* + * more than half of the characters are different ones. + */ + +static bool similar (/*@notnull@*/const char *old, /*@notnull@*/const char *new) +{ + int i, j; + + /* + * XXX - sometimes this fails when changing from a simple password + * to a really long one (MD5). For now, I just return success if + * the new password is long enough. Please feel free to suggest + * something better... --marekm + */ + if (strlen (new) >= 8) { + return false; + } + + for (i = j = 0; ('\0' != new[i]) && ('\0' != old[i]); i++) { + if (strchr (new, old[i]) != NULL) { + j++; + } + } + + if (i >= j * 2) { + return false; + } + + return true; +} + +static char *str_lower (/*@returned@*/char *string) +{ + char *cp; + + for (cp = string; '\0' != *cp; cp++) { + *cp = tolower (*cp); + } + return string; +} + +static /*@observer@*//*@null@*/const char *password_check ( + /*@notnull@*/const char *old, + /*@notnull@*/const char *new, + /*@notnull@*/MAYBE_UNUSED const struct passwd *pwdp) +{ + const char *msg = NULL; + char *oldmono, *newmono, *wrapped; + + if (strcmp (new, old) == 0) { + return _("no change"); + } + + newmono = str_lower (xstrdup (new)); + oldmono = str_lower (xstrdup (old)); + wrapped = XMALLOC(strlen(oldmono) * 2 + 1, char); + strcpy (wrapped, oldmono); + strcat (wrapped, oldmono); + + if (palindrome (oldmono, newmono)) { + msg = _("a palindrome"); + } else if (strcmp (oldmono, newmono) == 0) { + msg = _("case changes only"); + } else if (similar (oldmono, newmono)) { + msg = _("too similar"); + } else if (strstr (wrapped, newmono) != NULL) { + msg = _("rotated"); + } + strzero (newmono); + strzero (oldmono); + strzero (wrapped); + free (newmono); + free (oldmono); + free (wrapped); + + return msg; +} + +static /*@observer@*//*@null@*/const char *obscure_msg ( + /*@notnull@*/const char *old, + /*@notnull@*/const char *new, + /*@notnull@*/const struct passwd *pwdp) +{ + size_t maxlen, oldlen, newlen; + char *new1, *old1; + const char *msg; + const char *result; + + oldlen = strlen (old); + newlen = strlen (new); + + if (newlen < (size_t) getdef_num ("PASS_MIN_LEN", 0)) { + return _("too short"); + } + + /* + * Remaining checks are optional. + */ + if (!getdef_bool ("OBSCURE_CHECKS_ENAB")) { + return NULL; + } + + msg = password_check (old, new, pwdp); + if (NULL != msg) { + return msg; + } + + result = getdef_str ("ENCRYPT_METHOD"); + if (NULL == result) { + /* The traditional crypt() truncates passwords to 8 chars. It is + possible to circumvent the above checks by choosing an easy + 8-char password and adding some random characters to it... + Example: "password$%^&*123". So check it again, this time + truncated to the maximum length. Idea from npasswd. --marekm */ + + if (getdef_bool ("MD5_CRYPT_ENAB")) { + return NULL; + } + + } else { + + if ( (strcmp (result, "MD5") == 0) +#ifdef USE_SHA_CRYPT + || (strcmp (result, "SHA256") == 0) + || (strcmp (result, "SHA512") == 0) +#endif +#ifdef USE_BCRYPT + || (strcmp (result, "BCRYPT") == 0) +#endif +#ifdef USE_YESCRYPT + || (strcmp (result, "YESCRYPT") == 0) +#endif + ) { + return NULL; + } + + } + maxlen = getdef_num ("PASS_MAX_LEN", 8); + if ( (oldlen <= maxlen) + && (newlen <= maxlen)) { + return NULL; + } + + new1 = xstrdup (new); + old1 = xstrdup (old); + if (newlen > maxlen) { + new1[maxlen] = '\0'; + } + if (oldlen > maxlen) { + old1[maxlen] = '\0'; + } + + msg = password_check (old1, new1, pwdp); + + freezero (new1, newlen); + freezero (old1, oldlen); + + return msg; +} + +/* + * Obscure - see if password is obscure enough. + * + * The programmer is encouraged to add as much complexity to this + * routine as desired. Included are some of my favorite ways to + * check passwords. + */ + +bool obscure (const char *old, const char *new, const struct passwd *pwdp) +{ + const char *msg = obscure_msg (old, new, pwdp); + + if (NULL != msg) { + printf (_("Bad password: %s. "), msg); + return false; + } + return true; +} diff --git a/lib/pam_defs.h b/lib/pam_defs.h index 2dcda3c..dd016e5 100644 --- a/lib/pam_defs.h +++ b/lib/pam_defs.h @@ -15,7 +15,7 @@ #endif -static struct pam_conv conv = { +static const struct pam_conv conv = { SHADOW_PAM_CONVERSATION, NULL }; diff --git a/lib/pam_pass.c b/lib/pam_pass.c new file mode 100644 index 0000000..ff49173 --- /dev/null +++ b/lib/pam_pass.c @@ -0,0 +1,59 @@ +/* + * SPDX-FileCopyrightText: 1997 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef USE_PAM + +#ident "$Id$" + + +/* + * Change the user's password using PAM. + */ +#include +#include +#include +#include +#include "defines.h" +#include "pam_defs.h" +#include "prototypes.h" +#include "shadowlog.h" + +void do_pam_passwd (const char *user, bool silent, bool change_expired) +{ + pam_handle_t *pamh = NULL; + int flags = 0, ret; + FILE *shadow_logfd = log_get_logfd(); + + if (silent) + flags |= PAM_SILENT; + if (change_expired) + flags |= PAM_CHANGE_EXPIRED_AUTHTOK; + + ret = pam_start ("passwd", user, &conv, &pamh); + if (ret != PAM_SUCCESS) { + fprintf (shadow_logfd, + _("passwd: pam_start() failed, error %d\n"), ret); + exit (10); /* XXX */ + } + + ret = pam_chauthtok (pamh, flags); + if (ret != PAM_SUCCESS) { + fprintf (shadow_logfd, _("passwd: %s\n"), pam_strerror (pamh, ret)); + fputs (_("passwd: password unchanged\n"), shadow_logfd); + pam_end (pamh, ret); + exit (10); /* XXX */ + } + + fputs (_("passwd: password updated successfully\n"), shadow_logfd); + (void) pam_end (pamh, PAM_SUCCESS); +} +#else /* !USE_PAM */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* !USE_PAM */ diff --git a/lib/pam_pass_non_interactive.c b/lib/pam_pass_non_interactive.c new file mode 100644 index 0000000..3d10908 --- /dev/null +++ b/lib/pam_pass_non_interactive.c @@ -0,0 +1,149 @@ +/* + * SPDX-FileCopyrightText: 2009 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id:$" + +#ifdef USE_PAM +#include +#include +#include +#include +#include + +#include + +#include "alloc.h" +#include "attr.h" +#include "memzero.h" +#include "prototypes.h" +#include "shadowlog.h" + +/*@null@*/ /*@only@*/static const char *non_interactive_password = NULL; +static int ni_conv (int num_msg, + const struct pam_message **msg, + struct pam_response **resp, + MAYBE_UNUSED void *appdata_ptr); +static const struct pam_conv non_interactive_pam_conv = { + ni_conv, + NULL +}; + + + +static int ni_conv (int num_msg, + const struct pam_message **msg, + struct pam_response **resp, + MAYBE_UNUSED void *appdata_ptr) +{ + struct pam_response *responses; + int count; + + assert (NULL != non_interactive_password); + + if (num_msg <= 0) { + return PAM_CONV_ERR; + } + + responses = CALLOC (num_msg, struct pam_response); + if (NULL == responses) { + return PAM_CONV_ERR; + } + + for (count=0; count < num_msg; count++) { + responses[count].resp_retcode = 0; + + switch (msg[count]->msg_style) { + case PAM_PROMPT_ECHO_ON: + fprintf (log_get_logfd(), + _("%s: PAM modules requesting echoing are not supported.\n"), + log_get_progname()); + goto failed_conversation; + case PAM_PROMPT_ECHO_OFF: + responses[count].resp = strdup (non_interactive_password); + if (NULL == responses[count].resp) { + goto failed_conversation; + } + break; + case PAM_ERROR_MSG: + if ( (NULL == msg[count]->msg) + || (fprintf (log_get_logfd(), "%s\n", msg[count]->msg) <0)) { + goto failed_conversation; + } + responses[count].resp = NULL; + break; + case PAM_TEXT_INFO: + if ( (NULL == msg[count]->msg) + || (fprintf (stdout, "%s\n", msg[count]->msg) <0)) { + goto failed_conversation; + } + responses[count].resp = NULL; + break; + default: + (void) fprintf (log_get_logfd(), + _("%s: conversation type %d not supported.\n"), + log_get_progname(), msg[count]->msg_style); + goto failed_conversation; + } + } + + *resp = responses; + + return PAM_SUCCESS; + +failed_conversation: + for (count=0; count < num_msg; count++) { + if (NULL != responses[count].resp) { + strzero(responses[count].resp); + free(responses[count].resp); + responses[count].resp = NULL; + } + } + + free (responses); + *resp = NULL; + + return PAM_CONV_ERR; +} + + +/* + * Change non interactively the user's password using PAM. + * + * Return 0 on success, 1 on failure. + */ +int do_pam_passwd_non_interactive (const char *pam_service, + const char *username, + const char* password) +{ + pam_handle_t *pamh = NULL; + int ret; + + ret = pam_start (pam_service, username, &non_interactive_pam_conv, &pamh); + if (ret != PAM_SUCCESS) { + fprintf (log_get_logfd(), + _("%s: (user %s) pam_start failure %d\n"), + log_get_progname(), username, ret); + return 1; + } + + non_interactive_password = password; + ret = pam_chauthtok (pamh, 0); + if (ret != PAM_SUCCESS) { + fprintf (log_get_logfd(), + _("%s: (user %s) pam_chauthtok() failed, error:\n" + "%s\n"), + log_get_progname(), username, pam_strerror (pamh, ret)); + } + + (void) pam_end (pamh, PAM_SUCCESS); + + return ((PAM_SUCCESS == ret) ? 0 : 1); +} +#else /* !USE_PAM */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* !USE_PAM */ diff --git a/lib/port.c b/lib/port.c index 0bea2ef..60ff898 100644 --- a/lib/port.c +++ b/lib/port.c @@ -79,7 +79,7 @@ static void endportent (void) (void) fclose (ports); } - ports = (FILE *) 0; + ports = NULL; } /* @@ -127,14 +127,14 @@ static struct port *getportent (void) * - parse off a list of days and times */ - again: +again: /* - * Get the next line and remove the last character, which - * is a '\n'. Lines which begin with '#' are all ignored. + * Get the next line and remove optional trailing '\n'. + * Lines which begin with '#' are all ignored. */ - if (fgets (buf, (int) sizeof buf, ports) == 0) { + if (fgets (buf, sizeof buf, ports) == 0) { errno = saveerr; return 0; } @@ -149,18 +149,14 @@ static struct port *getportent (void) * TTY devices. */ - buf[strlen (buf) - 1] = 0; + buf[strcspn (buf, "\n")] = 0; port.pt_names = ttys; for (cp = buf, j = 0; j < PORT_TTY; j++) { port.pt_names[j] = cp; - while (('\0' != *cp) && (':' != *cp) && (',' != *cp)) { - cp++; - } - - if ('\0' == *cp) { + cp = strpbrk(cp, ":,"); + if (cp == NULL) goto again; /* line format error */ - } if (':' == *cp) { /* end of tty name list */ break; @@ -172,13 +168,13 @@ static struct port *getportent (void) } *cp = '\0'; cp++; - port.pt_names[j + 1] = (char *) 0; + port.pt_names[j] = NULL; /* * Get the list of user names. It is the second colon * separated field, and is a comma separated list of user * names. The entry '*' is used to specify all usernames. - * The last entry in the list is a (char *) 0 pointer. + * The last entry in the list is a NULL pointer. */ if (':' != *cp) { @@ -243,9 +239,7 @@ static struct port *getportent (void) * week or the other two values. */ - for (i = 0; - ('\0' != cp[i]) && ('\0' != cp[i + 1]) && isalpha (cp[i]); - i += 2) { + for (i = 0; isalpha(cp[i]) && ('\0' != cp[i + 1]); i += 2) { switch ((cp[i] << 8) | (cp[i + 1])) { case ('S' << 8) | 'u': port.pt_times[j].t_days |= 01; @@ -294,7 +288,7 @@ static struct port *getportent (void) * representing the times of day. */ - for (dtime = 0; ('\0' != cp[i]) && isdigit (cp[i]); i++) { + for (dtime = 0; isdigit (cp[i]); i++) { dtime = dtime * 10 + cp[i] - '0'; } @@ -304,9 +298,7 @@ static struct port *getportent (void) port.pt_times[j].t_start = dtime; cp = cp + i + 1; - for (dtime = 0, i = 0; - ('\0' != cp[i]) && isdigit (cp[i]); - i++) { + for (dtime = 0, i = 0; isdigit (cp[i]); i++) { dtime = dtime * 10 + cp[i] - '0'; } diff --git a/lib/prefix_flag.c b/lib/prefix_flag.c new file mode 100644 index 0000000..bba7102 --- /dev/null +++ b/lib/prefix_flag.c @@ -0,0 +1,360 @@ +/* + * SPDX-FileCopyrightText: 2011 , Julian Pidancet + * SPDX-FileCopyrightText: 2011 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include + +#include "defines.h" +#include "alloc.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" +#include "shadowlog.h" +#include "string/sprintf.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, *val; + + for (i = 0; i < argc; i++) { + val = NULL; + if ( (strcmp (argv[i], "--prefix") == 0) + || ((strncmp (argv[i], "--prefix=", 9) == 0) + && (val = argv[i] + 9)) + || (strcmp (argv[i], short_opt) == 0)) { + if (NULL != prefix) { + fprintf (log_get_logfd(), + _("%s: multiple --prefix options\n"), + log_get_progname()); + exit (E_BAD_ARG); + } + + if (val) { + prefix = val; + } else if (i + 1 == argc) { + fprintf (log_get_logfd(), + _("%s: option '%s' requires an argument\n"), + log_get_progname(), argv[i]); + exit (E_BAD_ARG); + } else { + prefix = argv[++ i]; + } + } + } + + + + if (prefix != NULL) { + /* Drop privileges */ + if ( (setregid (getgid (), getgid ()) != 0) + || (setreuid (getuid (), getuid ()) != 0)) { + fprintf (log_get_logfd(), + _("%s: failed to drop privileges (%s)\n"), + log_get_progname(), strerror (errno)); + exit (EXIT_FAILURE); + } + + 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? */ + + if ( prefix[0] != '/') { + fprintf (log_get_logfd(), + _("%s: prefix must be an absolute path\n"), + log_get_progname()); + exit (E_BAD_ARG); + } + + xasprintf(&passwd_db_file, "%s/%s", prefix, PASSWD_FILE); + pw_setdbname(passwd_db_file); + + xasprintf(&group_db_file, "%s/%s", prefix, GROUP_FILE); + gr_setdbname(group_db_file); + +#ifdef SHADOWGRP + xasprintf(&sgroup_db_file, "%s/%s", prefix, SGROUP_FILE); + sgr_setdbname(sgroup_db_file); +#endif + + xasprintf(&spw_db_file, "%s/%s", prefix, SHADOW_FILE); + spw_setdbname(spw_db_file); + +#ifdef ENABLE_SUBIDS + xasprintf(&suid_db_file, "%s/%s", prefix, SUBUID_FILE); + sub_uid_setdbname(suid_db_file); + + xasprintf(&sgid_db_file, "%s/%s", prefix, SUBGID_FILE); + sub_gid_setdbname(sgid_db_file); +#endif + +#ifdef USE_ECONF + setdef_config_file(prefix); +#else + xasprintf(&def_conf_file, "%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)) != NULL) { + 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)) != NULL) { + 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)) != NULL) { + 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)) != NULL) { + if (!strcmp(name, pwd->pw_name)) + break; + } + fclose(fg); + return pwd; + } + else { + return getpwnam(name); + } +} +#if HAVE_FGETPWENT_R +extern int prefix_getpwnam_r(const char* name, struct passwd* pwd, + char* buf, size_t buflen, struct passwd** result) +{ + if (passwd_db_file) { + FILE* fg; + int ret = 0; + + fg = fopen(passwd_db_file, "rt"); + if (!fg) + return errno; + while ((ret = fgetpwent_r(fg, pwd, buf, buflen, result)) == 0) { + if (!strcmp(name, pwd->pw_name)) + break; + } + fclose(fg); + return ret; + } + else { + return getpwnam_r(name, pwd, buf, buflen, result); + } +} +#endif +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)) != NULL) { + if (!strcmp(name, sp->sp_namp)) + break; + } + fclose(fg); + return sp; + } + else { + return getspnam(name); + } +} + +extern void prefix_setpwent(void) +{ + 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(void) +{ + if (!passwd_db_file) { + return getpwent(); + } + if (!fp_pwent) { + return NULL; + } + return fgetpwent(fp_pwent); +} +extern void prefix_endpwent(void) +{ + if (!passwd_db_file) { + endpwent(); + return; + } + if (fp_pwent) + fclose(fp_pwent); + fp_pwent = NULL; +} + +extern void prefix_setgrent(void) +{ + 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(void) +{ + if (!group_db_file) { + return getgrent(); + } + return fgetgrent(fp_grent); +} +extern void prefix_endgrent(void) +{ + 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) +{ + char *end; + long long gid; + struct group *g; + + if (NULL == grname) { + return NULL; + } + + if (!group_db_file) + return getgr_nam_gid(grname); + + errno = 0; + gid = strtoll(grname, &end, 10); + if ( ('\0' != *grname) + && ('\0' == *end) + && (0 == errno) + && (gid == (gid_t)gid)) + { + return prefix_getgrgid(gid); + } + + g = prefix_getgrnam(grname); + return g ? __gr_dup(g) : NULL; +} diff --git a/lib/prototypes.h b/lib/prototypes.h index 1172b5d..5c56e77 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -10,7 +10,7 @@ /* * prototypes.h * - * prototypes of libmisc functions, and private lib functions. + * prototypes of some lib functions, and private lib functions. * * $Id$ * @@ -21,18 +21,17 @@ #include +#include #include -#ifdef USE_UTMPX -#include -#else -#include -#endif #include #include #include #include +#ifdef ENABLE_LASTLOG #include +#endif /* ENABLE_LASTLOG */ +#include "attr.h" #include "defines.h" #include "commonio.h" @@ -44,6 +43,7 @@ extern int add_groups (const char *); /* age.c */ extern void agecheck (/*@null@*/const struct spwd *); extern int expire (const struct passwd *, /*@null@*/const struct spwd *); + /* isexpired.c */ extern int isexpired (const struct passwd *, /*@null@*/const struct spwd *); @@ -92,11 +92,11 @@ void cleanup_report_del_group_gshadow (void *group_name); void cleanup_report_mod_passwd (void *cleanup_info); void cleanup_report_mod_group (void *cleanup_info); void cleanup_report_mod_gshadow (void *cleanup_info); -void cleanup_unlock_group (/*@null@*/void *unused); +void cleanup_unlock_group (/*@null@*/void *MAYBE_UNUSED); #ifdef SHADOWGRP -void cleanup_unlock_gshadow (/*@null@*/void *unused); +void cleanup_unlock_gshadow (/*@null@*/void *MAYBE_UNUSED); #endif -void cleanup_unlock_passwd (/*@null@*/void *unused); +void cleanup_unlock_passwd (/*@null@*/void *MAYBE_UNUSED); /* console.c */ extern bool console (const char *); @@ -108,21 +108,18 @@ extern int copy_tree (const char *src_root, const char *dst_root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid); -/* date_to_str.c */ -extern void date_to_str (size_t size, char buf[size], long date); - /* encrypt.c */ extern /*@exposed@*//*@null@*/char *pw_encrypt (const char *, const char *); -/* entry.c */ -extern void pw_entry (const char *, struct passwd *); - /* env.c */ extern void addenv (const char *, /*@null@*/const char *); extern void initenv (void); extern void set_env (int, char *const *); extern void sanitize_env (void); +/* fd.c */ +extern void check_fds (void); + /* fields.c */ extern void change_field (char *, size_t, const char *); extern int valid_field (const char *, const char *); @@ -152,11 +149,10 @@ extern int get_gid (const char *gidstr, gid_t *gid); /* getgr_nam_gid.c */ extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname); -/* getlong.c */ -extern int getlong (const char *numstr, /*@out@*/long int *result); - /* get_pid.c */ extern int get_pid (const char *pidstr, pid_t *pid); +extern int get_pidfd_from_fd(const char *pidfdstr); +extern int open_pidfd(const char *pidstr); /* getrange */ extern int getrange (const char *range, @@ -169,11 +165,9 @@ extern time_t gettime (void); /* get_uid.c */ extern int get_uid (const char *uidstr, uid_t *uid); -/* getulong.c */ -extern int getulong (const char *numstr, /*@out@*/unsigned long int *result); - /* fputsx.c */ -extern /*@null@*/char *fgetsx (/*@returned@*/ /*@out@*/char *, int, FILE *); +ATTR_ACCESS(write_only, 1, 2) +extern /*@null@*/char *fgetsx(/*@returned@*/char *restrict, int, FILE *restrict); extern int fputsx (const char *, FILE *); /* groupio.c */ @@ -185,8 +179,7 @@ extern void __gr_set_changed (void); /* groupmem.c */ extern /*@null@*/ /*@only@*/struct group *__gr_dup (const struct group *grent); extern void gr_free_members (struct group *grent); -extern void gr_free (/*@out@*/ /*@only@*/struct group *grent); -extern bool gr_append_member (struct group *grp, char *member); +extern void gr_free(/*@only@*/struct group *grent); /* hushed.c */ extern bool hushed (const char *username); @@ -212,24 +205,26 @@ extern void setup_limits (const struct passwd *); #endif /* list.c */ -extern /*@only@*/ /*@out@*/char **add_list (/*@returned@*/ /*@only@*/char **, const char *); -extern /*@only@*/ /*@out@*/char **del_list (/*@returned@*/ /*@only@*/char **, const char *); -extern /*@only@*/ /*@out@*/char **dup_list (char *const *); +extern /*@only@*/char **add_list (/*@returned@*/ /*@only@*/char **, const char *); +extern /*@only@*/char **del_list (/*@returned@*/ /*@only@*/char **, const char *); +extern /*@only@*/char **dup_list (char *const *); extern bool is_on_list (char *const *list, const char *member); extern /*@only@*/char **comma_to_list (const char *); +#ifdef ENABLE_LASTLOG /* log.c */ extern void dolastlog ( struct lastlog *ll, const struct passwd *pw, /*@unique@*/const char *line, /*@unique@*/const char *host); +#endif /* ENABLE_LASTLOG */ /* login_nopam.c */ extern int login_access (const char *user, const char *from); /* loginprompt.c */ -extern void login_prompt (const char *, char *, int); +extern void login_prompt (char *, int); /* mail.c */ extern void mailcheck (void); @@ -304,9 +299,7 @@ extern int do_pam_passwd_non_interactive (const char *pam_service, #endif /* USE_PAM */ /* obscure.c */ -#ifndef USE_PAM extern bool obscure (const char *, const char *, const struct passwd *); -#endif /* pam_pass.c */ #ifdef USE_PAM @@ -322,6 +315,10 @@ 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); +#if HAVE_FGETPWENT_R +extern int prefix_getpwnam_r(const char* name, struct passwd* pwd, + char* buf, size_t buflen, struct passwd** result); +#endif extern struct spwd *prefix_getspnam(const char* name); extern struct group *prefix_getgr_nam_gid(const char *grname); extern void prefix_setpwent(void); @@ -332,9 +329,7 @@ extern struct group* prefix_getgrent(void); extern void prefix_endgrent(void); /* pwd2spwd.c */ -#ifndef USE_PAM extern struct spwd *pwd_to_spwd (const struct passwd *); -#endif /* pwdcheck.c */ #ifndef USE_PAM @@ -351,14 +346,19 @@ extern /*@dependent@*/ /*@null@*/struct commonio_entry *__pw_get_head (void); /* pwmem.c */ extern /*@null@*/ /*@only@*/struct passwd *__pw_dup (const struct passwd *pwent); -extern void pw_free (/*@out@*/ /*@only@*/struct passwd *pwent); +extern void pw_free(/*@only@*/struct passwd *pwent); + +/* csrand.c */ +unsigned long csrand (void); +unsigned long csrand_uniform (unsigned long n); +unsigned long csrand_interval (unsigned long min, unsigned long max); /* remove_tree.c */ extern int remove_tree (const char *root, bool remove_root); /* rlogin.c */ -extern int do_rlogin (const char *remote_host, char *name, size_t namelen, - char *term, size_t termlen); +extern int do_rlogin(const char *remote_host, char *name, size_t namesize, + char *term, size_t termsize); /* root_flag.c */ extern void process_root_flag (const char* short_opt, int argc, char **argv); @@ -376,7 +376,7 @@ extern int check_selinux_permit (const char *perm_name); /* semanage.c */ #ifdef WITH_SELINUX -extern int set_seuser(const char *login_name, const char *seuser_name); +extern int set_seuser(const char *login_name, const char *seuser_name, const char *serange); extern int del_seuser(const char *login_name); #endif @@ -409,7 +409,7 @@ extern struct spwd *sgetspent (const char *string); /* sgroupio.c */ extern void __sgr_del_entry (const struct commonio_entry *ent); extern /*@null@*/ /*@only@*/struct sgrp *__sgr_dup (const struct sgrp *sgent); -extern void sgr_free (/*@out@*/ /*@only@*/struct sgrp *sgent); +extern void sgr_free(/*@only@*/struct sgrp *sgent); extern /*@dependent@*/ /*@null@*/struct commonio_entry *__sgr_get_head (void); extern void __sgr_set_changed (void); @@ -419,14 +419,15 @@ extern void __spw_del_entry (const struct commonio_entry *ent); /* shadowmem.c */ extern /*@null@*/ /*@only@*/struct spwd *__spw_dup (const struct spwd *spent); -extern void spw_free (/*@out@*/ /*@only@*/struct spwd *spent); +extern void spw_free(/*@only@*/struct spwd *spent); /* shell.c */ extern int shell (const char *file, /*@null@*/const char *arg, char *const envp[]); /* spawn.c */ -extern int run_command (const char *cmd, const char *argv[], - /*@null@*/const char *envp[], /*@out@*/int *status); +ATTR_ACCESS(write_only, 4) +extern int run_command(const char *cmd, const char *argv[], + /*@null@*/const char *envp[], int *restrict status); /* strtoday.c */ extern long strtoday (const char *); @@ -459,33 +460,68 @@ extern int set_filesize_limit (int blocks); /* user_busy.c */ 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); -#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 utmpx *ut); -extern int setutmpx (struct utmpx *utx); -#endif /* USE_UTMPX */ +/* + * Session management: utmp.c or logind.c + */ + +/** + * @brief Get host for the current session + * + * @param[out] out Host name + * + * @return 0 or a positive integer if the host was obtained properly, + * another value on error. + */ +extern int get_session_host (char **out); +#ifndef ENABLE_LOGIND +/** + * @brief Update or create an utmp entry in utmp, wtmp, utmpw, or wtmpx + * + * @param[in] user username + * @param[in] tty tty + * @param[in] host hostname + * + * @return 0 if utmp was updated properly, + * 1 on error. + */ +extern int update_utmp (const char *user, + const char *tty, + const char *host); +/** + * @brief Update the cumulative failure log + * + * @param[in] failent_user username + * @param[in] tty tty + * @param[in] host hostname + * + */ +extern void record_failure(const char *failent_user, + const char *tty, + const char *hostname); +#endif /* ENABLE_LOGIND */ + +/** + * @brief Number of active user sessions + * + * @param[in] name username + * @param[in] limit maximum number of active sessions + * + * @return number of active sessions. + * + */ +extern unsigned long active_sessions_count(const char *name, + unsigned long limit); /* valid.c */ extern bool valid (const char *, const struct passwd *); -/* xmalloc.c */ -extern /*@maynotreturn@*/ /*@only@*//*@out@*//*@notnull@*/void *xmalloc (size_t size) - /*@ensures MaxSet(result) == (size - 1); @*/; -extern /*@maynotreturn@*/ /*@only@*//*@notnull@*/char *xstrdup (const char *); +/* write_full.c */ +extern int write_full(int fd, const void *buf, size_t count); /* xgetpwnam.c */ extern /*@null@*/ /*@only@*/struct passwd *xgetpwnam (const char *); +/* xprefix_getpwnam.c */ +extern /*@null@*/ /*@only@*/struct passwd *xprefix_getpwnam (const char *); /* xgetpwuid.c */ extern /*@null@*/ /*@only@*/struct passwd *xgetpwuid (uid_t); /* xgetgrnam.c */ diff --git a/lib/pwauth.c b/lib/pwauth.c index 62de472..0cd3412 100644 --- a/lib/pwauth.c +++ b/lib/pwauth.c @@ -18,21 +18,26 @@ #include #include #include -#include "prototypes.h" + +#include "agetpass.h" #include "defines.h" +#include "memzero.h" +#include "prototypes.h" #include "pwauth.h" #include "getdef.h" +#include "string/sprintf.h" + #ifdef SKEY #include #endif + + #ifdef __linux__ /* standard password prompt by default */ static const char *PROMPT = gettext_noop ("Password: "); #else static const char *PROMPT = gettext_noop ("%s's Password: "); #endif -bool wipe_clear_pass = true; -/*@null@*/char *clear_pass = NULL; /* * pw_auth - perform getpass/crypt authentication @@ -47,16 +52,16 @@ int pw_auth (const char *cipher, int reason, /*@null@*/const char *input) { - char prompt[1024]; - char *clear = NULL; - const char *cp; - const char *encrypted; - int retval; + int retval; + char prompt[1024]; + char *clear = NULL; + const char *cp; + const char *encrypted; #ifdef SKEY - bool use_skey = false; - char challenge_info[40]; - struct skey skey; + bool use_skey = false; + char challenge_info[40]; + struct skey skey; #endif /* @@ -137,15 +142,9 @@ int pw_auth (const char *cipher, } #endif - snprintf (prompt, sizeof prompt, cp, user); - clear = getpass (prompt); - if (NULL == clear) { - static char c[1]; - - c[0] = '\0'; - clear = c; - } - input = clear; + SNPRINTF(prompt, cp, user); + clear = agetpass(prompt); + input = (clear == NULL) ? "" : clear; } /* @@ -171,14 +170,9 @@ int pw_auth (const char *cipher, * -- AR 8/22/1999 */ if ((0 != retval) && ('\0' == input[0]) && use_skey) { - clear = getpass (prompt); - if (NULL == clear) { - static char c[1]; - - c[0] = '\0'; - clear = c; - } - input = clear; + erase_pass(clear); + clear = agetpass(prompt); + input = (clear == NULL) ? "" : clear; } if ((0 != retval) && use_skey) { @@ -192,20 +186,10 @@ int pw_auth (const char *cipher, } } #endif + erase_pass(clear); - /* - * Things like RADIUS authentication may need the password - - * if the external variable wipe_clear_pass is zero, we will - * not wipe it (the caller should wipe clear_pass when it is - * no longer needed). --marekm - */ - - clear_pass = clear; - if (wipe_clear_pass && (NULL != clear) && ('\0' != *clear)) { - strzero (clear); - } return retval; } #else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* !USE_PAM */ diff --git a/lib/pwd2spwd.c b/lib/pwd2spwd.c new file mode 100644 index 0000000..eea9519 --- /dev/null +++ b/lib/pwd2spwd.c @@ -0,0 +1,62 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include "prototypes.h" +#include "defines.h" +#include + +/* + * pwd_to_spwd - create entries for new spwd structure + * + * pwd_to_spwd() creates a new (struct spwd) containing the + * information in the pointed-to (struct passwd). + */ + +struct spwd *pwd_to_spwd (const struct passwd *pw) +{ + static struct spwd sp; + + /* + * Nice, easy parts first. The name and passwd map directly + * from the old password structure to the new one. + */ + sp.sp_namp = pw->pw_name; + sp.sp_pwdp = pw->pw_passwd; + + { + /* + * Defaults used if there is no pw_age information. + */ + sp.sp_min = 0; + sp.sp_max = 10000; + sp.sp_lstchg = gettime () / DAY; + if (0 == sp.sp_lstchg) { + /* Better disable aging than requiring a password + * change */ + sp.sp_lstchg = -1; + } + } + + /* + * These fields have no corresponding information in the password + * file. They are set to uninitialized values. + */ + sp.sp_warn = -1; + sp.sp_expire = -1; + sp.sp_inact = -1; + sp.sp_flag = SHADOW_SP_FLAG_UNSET; + + return &sp; +} + diff --git a/lib/pwd_init.c b/lib/pwd_init.c new file mode 100644 index 0000000..b3f94e1 --- /dev/null +++ b/lib/pwd_init.c @@ -0,0 +1,56 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 , Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include "defines.h" +#include +#include +#include +#include + +#include "prototypes.h" + +/* + * pwd_init - ignore signals, and set resource limits to safe + * values. Call this before modifying password files, so that + * it is less likely to fail in the middle of operation. + */ +void pwd_init (void) +{ + struct rlimit rlim; + + rlim.rlim_cur = rlim.rlim_max = 0; + setrlimit (RLIMIT_CORE, &rlim); + + rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY; + setrlimit (RLIMIT_AS, &rlim); + + setrlimit (RLIMIT_CPU, &rlim); + setrlimit (RLIMIT_DATA, &rlim); + setrlimit (RLIMIT_FSIZE, &rlim); + setrlimit (RLIMIT_NOFILE, &rlim); +#ifdef RLIMIT_RSS + setrlimit (RLIMIT_RSS, &rlim); +#endif + setrlimit (RLIMIT_STACK, &rlim); + + signal (SIGALRM, SIG_IGN); + signal (SIGHUP, SIG_IGN); + signal (SIGINT, SIG_IGN); + signal (SIGPIPE, SIG_IGN); + signal (SIGQUIT, SIG_IGN); + signal (SIGTERM, SIG_IGN); + signal (SIGTSTP, SIG_IGN); + signal (SIGTTOU, SIG_IGN); + + umask (077); +} diff --git a/lib/pwdcheck.c b/lib/pwdcheck.c new file mode 100644 index 0000000..93c9f5c --- /dev/null +++ b/lib/pwdcheck.c @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: 2000 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#ifndef USE_PAM + +#include +#include + +#include "attr.h" +#include "prototypes.h" +#include "defines.h" +#include "pwauth.h" +#include "shadowlog.h" + +void passwd_check (const char *user, const char *passwd, MAYBE_UNUSED const char *progname) +{ + struct spwd *sp; + + sp = getspnam (user); /* !USE_PAM, no need for xgetspnam */ + if (NULL != sp) { + passwd = sp->sp_pwdp; + } + if (pw_auth (passwd, user, PW_LOGIN, NULL) != 0) { + SYSLOG ((LOG_WARN, "incorrect password for `%s'", user)); + (void) sleep (1); + fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user); + exit (EXIT_FAILURE); + } +} +#else /* USE_PAM */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* USE_PAM */ diff --git a/lib/pwio.c b/lib/pwio.c index e59b473..3497c75 100644 --- a/lib/pwio.c +++ b/lib/pwio.c @@ -26,7 +26,8 @@ static /*@null@*/ /*@only@*/void *passwd_dup (const void *ent) return __pw_dup (pw); } -static void passwd_free (/*@out@*/ /*@only@*/void *ent) +static void +passwd_free(/*@only@*/void *ent) { struct passwd *pw = ent; @@ -42,7 +43,7 @@ static const char *passwd_getname (const void *ent) static void *passwd_parse (const char *line) { - return (void *) sgetpwent (line); + return sgetpwent (line); } static int passwd_put (const void *ent, FILE * file) @@ -137,7 +138,7 @@ int pw_open (int mode) int pw_update (const struct passwd *pw) { - return commonio_update (&passwd_db, (const void *) pw); + return commonio_update (&passwd_db, pw); } int pw_remove (const char *name) @@ -182,15 +183,23 @@ struct commonio_db *__pw_get_db (void) static int pw_cmp (const void *p1, const void *p2) { + const struct commonio_entry *const *ce1; + const struct commonio_entry *const *ce2; + const struct passwd *pw1, *pw2; uid_t u1, u2; - if ((*(struct commonio_entry **) p1)->eptr == NULL) + ce1 = p1; + pw1 = (*ce1)->eptr; + if (pw1 == NULL) return 1; - if ((*(struct commonio_entry **) p2)->eptr == NULL) + + ce2 = p2; + pw2 = (*ce2)->eptr; + if (pw2 == NULL) return -1; - u1 = ((struct passwd *) (*(struct commonio_entry **) p1)->eptr)->pw_uid; - u2 = ((struct passwd *) (*(struct commonio_entry **) p2)->eptr)->pw_uid; + u1 = pw1->pw_uid; + u2 = pw2->pw_uid; if (u1 < u2) return -1; diff --git a/lib/pwmem.c b/lib/pwmem.c index 867e3f7..9c6e58d 100644 --- a/lib/pwmem.c +++ b/lib/pwmem.c @@ -13,7 +13,10 @@ #ident "$Id$" #include + +#include "alloc.h" #include "defines.h" +#include "memzero.h" #include "prototypes.h" #include "pwio.h" @@ -21,12 +24,11 @@ { struct passwd *pw; - pw = (struct passwd *) malloc (sizeof *pw); + pw = CALLOC (1, struct passwd); if (NULL == pw) { return NULL; } /* The libc might define other fields. They won't be copied. */ - memset (pw, 0, sizeof *pw); pw->pw_uid = pwent->pw_uid; pw->pw_gid = pwent->pw_gid; /*@-mustfreeonly@*/ @@ -68,7 +70,8 @@ return pw; } -void pw_free (/*@out@*/ /*@only@*/struct passwd *pwent) +void +pw_free(/*@only@*/struct passwd *pwent) { if (pwent != NULL) { free (pwent->pw_name); diff --git a/lib/readpassphrase.c b/lib/readpassphrase.c new file mode 100644 index 0000000..5ff060c --- /dev/null +++ b/lib/readpassphrase.c @@ -0,0 +1,198 @@ +/* $OpenBSD: readpassphrase.c,v 1.26 2016/10/18 12:47:18 millert Exp $ */ + +/* + * Copyright (c) 2000-2002, 2007, 2010 + * Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Sponsored in part by the Defense Advanced Research Projects + * Agency (DARPA) and Air Force Research Laboratory, Air Force + * Materiel Command, USAF, under agreement number F39502-99-1-0512. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef TCSASOFT +#define TCSASOFT 0 +#endif + +#ifndef _NSIG +#if defined(NSIG) +#define _NSIG NSIG +#else +/* The SIGRTMAX define might be set to a function such as sysconf(). */ +#define _NSIG (SIGRTMAX + 1) +#endif +#endif + +static volatile sig_atomic_t signo[_NSIG]; + +static void handler(int); + +char * +readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags) +{ + ssize_t nr; + int input, output, save_errno, i, need_restart; + char ch, *p, *end; + struct termios term, oterm; + struct sigaction sa, savealrm, saveint, savehup, savequit, saveterm; + struct sigaction savetstp, savettin, savettou, savepipe; + + /* I suppose we could alloc on demand in this case (XXX). */ + if (bufsiz == 0) { + errno = EINVAL; + return(NULL); + } + +restart: + for (i = 0; i < _NSIG; i++) + signo[i] = 0; + nr = -1; + save_errno = 0; + need_restart = 0; + /* + * Read and write to /dev/tty if available. If not, read from + * stdin and write to stderr unless a tty is required. + */ + if ((flags & RPP_STDIN) || + (input = output = open(_PATH_TTY, O_RDWR)) == -1) { + if (flags & RPP_REQUIRE_TTY) { + errno = ENOTTY; + return(NULL); + } + input = STDIN_FILENO; + output = STDERR_FILENO; + } + + /* + * Turn off echo if possible. + * If we are using a tty but are not the foreground pgrp this will + * generate SIGTTOU, so do it *before* installing the signal handlers. + */ + if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) { + memcpy(&term, &oterm, sizeof(term)); + if (!(flags & RPP_ECHO_ON)) + term.c_lflag &= ~(ECHO | ECHONL); +#ifdef VSTATUS + if (term.c_cc[VSTATUS] != _POSIX_VDISABLE) + term.c_cc[VSTATUS] = _POSIX_VDISABLE; +#endif + (void)tcsetattr(input, TCSAFLUSH|TCSASOFT, &term); + } else { + memset(&term, 0, sizeof(term)); + term.c_lflag |= ECHO; + memset(&oterm, 0, sizeof(oterm)); + oterm.c_lflag |= ECHO; + } + + /* + * Catch signals that would otherwise cause the user to end + * up with echo turned off in the shell. Don't worry about + * things like SIGXCPU and SIGVTALRM for now. + */ + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; /* don't restart system calls */ + sa.sa_handler = handler; + (void)sigaction(SIGALRM, &sa, &savealrm); + (void)sigaction(SIGHUP, &sa, &savehup); + (void)sigaction(SIGINT, &sa, &saveint); + (void)sigaction(SIGPIPE, &sa, &savepipe); + (void)sigaction(SIGQUIT, &sa, &savequit); + (void)sigaction(SIGTERM, &sa, &saveterm); + (void)sigaction(SIGTSTP, &sa, &savetstp); + (void)sigaction(SIGTTIN, &sa, &savettin); + (void)sigaction(SIGTTOU, &sa, &savettou); + + if (!(flags & RPP_STDIN)) + (void)write(output, prompt, strlen(prompt)); + end = buf + bufsiz - 1; + p = buf; + while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') { + if (p < end) { + if ((flags & RPP_SEVENBIT)) + ch &= 0x7f; + if (isalpha((unsigned char)ch)) { + if ((flags & RPP_FORCELOWER)) + ch = (char)tolower((unsigned char)ch); + if ((flags & RPP_FORCEUPPER)) + ch = (char)toupper((unsigned char)ch); + } + *p++ = ch; + } + } + *p = '\0'; + save_errno = errno; + if (!(term.c_lflag & ECHO)) + (void)write(output, "\n", 1); + + /* Restore old terminal settings and signals. */ + if (memcmp(&term, &oterm, sizeof(term)) != 0) { + const int sigttou = signo[SIGTTOU]; + + /* Ignore SIGTTOU generated when we are not the fg pgrp. */ + while (tcsetattr(input, TCSAFLUSH|TCSASOFT, &oterm) == -1 && + errno == EINTR && !signo[SIGTTOU]) + continue; + signo[SIGTTOU] = sigttou; + } + (void)sigaction(SIGALRM, &savealrm, NULL); + (void)sigaction(SIGHUP, &savehup, NULL); + (void)sigaction(SIGINT, &saveint, NULL); + (void)sigaction(SIGQUIT, &savequit, NULL); + (void)sigaction(SIGPIPE, &savepipe, NULL); + (void)sigaction(SIGTERM, &saveterm, NULL); + (void)sigaction(SIGTSTP, &savetstp, NULL); + (void)sigaction(SIGTTIN, &savettin, NULL); + (void)sigaction(SIGTTOU, &savettou, NULL); + if (input != STDIN_FILENO) + (void)close(input); + + /* + * If we were interrupted by a signal, resend it to ourselves + * now that we have restored the signal handlers. + */ + for (i = 0; i < _NSIG; i++) { + if (signo[i]) { + kill(getpid(), i); + switch (i) { + case SIGTSTP: + case SIGTTIN: + case SIGTTOU: + need_restart = 1; + } + } + } + if (need_restart) + goto restart; + + if (save_errno) + errno = save_errno; + return(nr == -1 ? NULL : buf); +} + +static void handler(int s) +{ + + signo[s] = 1; +} diff --git a/lib/readpassphrase.h b/lib/readpassphrase.h new file mode 100644 index 0000000..2530b7f --- /dev/null +++ b/lib/readpassphrase.h @@ -0,0 +1,47 @@ +/* $OpenBSD: readpassphrase.h,v 1.4 2003/06/03 01:52:39 millert Exp $ */ + +/* + * Copyright (c) 2000, 2002 Todd C. Miller + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Sponsored in part by the Defense Advanced Research Projects + * Agency (DARPA) and Air Force Research Laboratory, Air Force + * Materiel Command, USAF, under agreement number F39502-99-1-0512. + */ + +#ifndef LIBBSD_READPASSPHRASE_H +#define LIBBSD_READPASSPHRASE_H + +#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */ +#define RPP_ECHO_ON 0x01 /* Leave echo on. */ +#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */ +#define RPP_FORCELOWER 0x04 /* Force input to lower case. */ +#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */ +#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */ +#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */ + +#ifdef LIBBSD_OVERLAY +#include +#endif +#include + +#ifdef __cplusplus +extern "C" { +#endif +char * readpassphrase(const char *, char *, size_t, int); +#ifdef __cplusplus +} +#endif + +#endif /* !LIBBSD_READPASSPHRASE_H */ diff --git a/lib/remove_tree.c b/lib/remove_tree.c new file mode 100644 index 0000000..3d76b95 --- /dev/null +++ b/lib/remove_tree.c @@ -0,0 +1,101 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "prototypes.h" +#include "defines.h" + +static int remove_tree_at (int at_fd, const char *path, bool remove_root) +{ + DIR *dir; + const struct dirent *ent; + int dir_fd, rc = 0; + + dir_fd = openat (at_fd, path, O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC); + if (dir_fd < 0) { + return -1; + } + + dir = fdopendir (dir_fd); + if (!dir) { + (void) close (dir_fd); + return -1; + } + + /* + * Open the source directory and delete each entry. + */ + while ((ent = readdir (dir))) { + struct stat ent_sb; + + /* + * Skip the "." and ".." entries + */ + if (strcmp (ent->d_name, ".") == 0 || + strcmp (ent->d_name, "..") == 0) { + continue; + } + + rc = fstatat (dirfd(dir), ent->d_name, &ent_sb, AT_SYMLINK_NOFOLLOW); + if (rc < 0) { + break; + } + + if (S_ISDIR (ent_sb.st_mode)) { + /* + * Recursively delete this directory. + */ + if (remove_tree_at (dirfd(dir), ent->d_name, true) != 0) { + rc = -1; + break; + } + } else { + /* + * Delete the file. + */ + if (unlinkat (dirfd(dir), ent->d_name, 0) != 0) { + rc = -1; + break; + } + } + } + + (void) closedir (dir); + + if (remove_root && (0 == rc)) { + if (unlinkat (at_fd, path, AT_REMOVEDIR) != 0) { + rc = -1; + } + } + + return rc; +} + +/* + * remove_tree - delete a directory tree + * + * remove_tree() walks a directory tree and deletes all the files + * and directories. + * At the end, it deletes the root directory itself. + */ +int remove_tree (const char *root, bool remove_root) +{ + return remove_tree_at (AT_FDCWD, root, remove_root); +} diff --git a/lib/rlogin.c b/lib/rlogin.c new file mode 100644 index 0000000..cbc05dd --- /dev/null +++ b/lib/rlogin.c @@ -0,0 +1,135 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef RLOGIN + +#ident "$Id$" + +#include "prototypes.h" +#include "defines.h" +#include +#include +#include + +#include "atoi/str2i.h" + + +static struct { + int spd_name; + int spd_baud; +} speed_table[] = +{ + { B50, 50}, + { B75, 75}, + { B110, 110}, + { B134, 134}, + { B150, 150}, + { B200, 200}, + { B300, 300}, + { B600, 600}, + { B1200, 1200}, + { B1800, 1800}, + { B2400, 2400}, + { B4800, 4800}, + { B9600, 9600}, + { B19200, 19200}, + { B38400, 38400}, + { -1, -1} +}; + + +static void +get_remote_string(char *buf, size_t size) +{ + for (;;) { + if (read (0, buf, 1) != 1) { + exit (EXIT_FAILURE); + } + if ('\0' == *buf) { + return; + } + --size; + if (size > 0) { + ++buf; + } + } + /*NOTREACHED*/ +} + + +int +do_rlogin(const char *remote_host, char *name, size_t namesize, char *term, + size_t termsize) +{ + struct passwd *pwd; + char remote_name[32]; + char *cp; + unsigned long remote_speed = 9600; + int speed_name = B9600; + int i; + TERMIO termio; + + get_remote_string(remote_name, sizeof(remote_name)); + get_remote_string(name, namesize); + get_remote_string(term, termsize); + + cp = strchr (term, '/'); + if (NULL != cp) { + *cp = '\0'; + cp++; + + if (str2ul(&remote_speed, cp) == -1) + remote_speed = 9600; + } + for (i = 0; + ( (speed_table[i].spd_baud != remote_speed) + && (speed_table[i].spd_name != -1)); + i++); + + if (-1 != speed_table[i].spd_name) { + speed_name = speed_table[i].spd_name; + } + + /* + * Put the terminal in cooked mode with echo turned on. + */ + + GTTY (0, &termio); + termio.c_iflag |= ICRNL | IXON; + termio.c_oflag |= OPOST | ONLCR; + termio.c_lflag |= ICANON | ECHO | ECHOE; +#ifdef CBAUD + termio.c_cflag = (termio.c_cflag & ~CBAUD) | speed_name; +#else + termio.c_cflag = (termio.c_cflag) | speed_name; +#endif + STTY (0, &termio); + + pwd = getpwnam (name); /* local, no need for xgetpwnam */ + if (NULL == pwd) { + return 0; + } + + /* + * ruserok() returns 0 for success on modern systems, and 1 on + * older ones. If you are having trouble with people logging + * in without giving a required password, THIS is the culprit - + * go fix the #define in config.h. + */ + +#ifndef RUSEROK + return 0; +#else + return ruserok (remote_host, pwd->pw_uid == 0, + remote_name, name) == RUSEROK; +#endif +} +#endif /* RLOGIN */ diff --git a/lib/root_flag.c b/lib/root_flag.c new file mode 100644 index 0000000..5572831 --- /dev/null +++ b/lib/root_flag.c @@ -0,0 +1,108 @@ +/* + * SPDX-FileCopyrightText: 2011 , Julian Pidancet + * SPDX-FileCopyrightText: 2011 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include "defines.h" +#include "prototypes.h" +/*@-exitarg@*/ +#include "exitcodes.h" +#include "shadowlog.h" + +static void change_root (const char* newroot); + +/* + * process_root_flag - chroot if given the --root 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 void process_root_flag (const char* short_opt, int argc, char **argv) +{ + /* + * Parse the command line options. + */ + int i; + const char *newroot = NULL, *val; + + for (i = 0; i < argc; i++) { + val = NULL; + if ( (strcmp (argv[i], "--root") == 0) + || ((strncmp (argv[i], "--root=", 7) == 0) + && (val = argv[i] + 7)) + || (strcmp (argv[i], short_opt) == 0)) { + if (NULL != newroot) { + fprintf (log_get_logfd(), + _("%s: multiple --root options\n"), + log_get_progname()); + exit (E_BAD_ARG); + } + + if (val) { + newroot = val; + } else if (i + 1 == argc) { + fprintf (log_get_logfd(), + _("%s: option '%s' requires an argument\n"), + log_get_progname(), argv[i]); + exit (E_BAD_ARG); + } else { + newroot = argv[++ i]; + } + } + } + + if (NULL != newroot) { + change_root (newroot); + } +} + +static void change_root (const char* newroot) +{ + /* Drop privileges */ + if ( (setregid (getgid (), getgid ()) != 0) + || (setreuid (getuid (), getuid ()) != 0)) { + fprintf (log_get_logfd(), _("%s: failed to drop privileges (%s)\n"), + log_get_progname(), strerror (errno)); + exit (EXIT_FAILURE); + } + + if ('/' != newroot[0]) { + fprintf (log_get_logfd(), + _("%s: invalid chroot path '%s', only absolute paths are supported.\n"), + log_get_progname(), newroot); + exit (E_BAD_ARG); + } + + if (access (newroot, F_OK) != 0) { + fprintf(log_get_logfd(), + _("%s: cannot access chroot directory %s: %s\n"), + log_get_progname(), newroot, strerror (errno)); + exit (E_BAD_ARG); + } + + if (chroot (newroot) != 0) { + fprintf(log_get_logfd(), + _("%s: unable to chroot to directory %s: %s\n"), + log_get_progname(), newroot, strerror (errno)); + exit (E_BAD_ARG); + } + + if (chdir ("/") != 0) { + fprintf(log_get_logfd(), + _("%s: cannot chdir in chroot directory %s: %s\n"), + log_get_progname(), newroot, strerror (errno)); + exit (E_BAD_ARG); + } +} + diff --git a/lib/run_part.c b/lib/run_part.c index bce11d3..670d815 100644 --- a/lib/run_part.c +++ b/lib/run_part.c @@ -1,3 +1,5 @@ +#include + #include #include #include @@ -8,9 +10,12 @@ #include #include #include + +#include "alloc.h" #include "run_part.h" #include "shadowlog_internal.h" + int run_part (char *script_path, const char *name, const char *action) { int pid; @@ -53,25 +58,22 @@ int run_parts (const char *directory, const char *name, const char *action) } for (n=0; nd_name) + 2; - char *s = (char*)malloc(path_length); - if (!s) { - printf ("could not allocate memory\n"); + if (asprintf(&s, "%s/%s", directory, namelist[n]->d_name) == -1) { + fprintf(stderr, "could not allocate memory\n"); for (; nd_name); execute_result = 0; if (stat (s, &sb) == -1) { perror ("stat"); - free (s); + free(s); for (; n + * SPDX-FileCopyrightText: J.T. Conklin + * + * SPDX-License-Identifier: Unlicense + */ + +/* + * salt.c - generate a random salt string for crypt() + * + * Written by Marek Michalkiewicz , + * it is in the public domain. + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include + +#include "prototypes.h" +#include "defines.h" +#include "getdef.h" +#include "shadowlog.h" + +#if (defined CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY && \ + CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY) +#define USE_XCRYPT_GENSALT 1 +#else +#define USE_XCRYPT_GENSALT 0 +#endif + +/* Add the salt prefix. */ +#define MAGNUM(array,ch) (array)[0]=(array)[2]='$',(array)[1]=(ch),(array)[3]='\0' + +#ifdef USE_BCRYPT +/* Use $2b$ as prefix for compatibility with OpenBSD's bcrypt. */ +#define BCRYPTMAGNUM(array) (array)[0]=(array)[3]='$',(array)[1]='2',(array)[2]='b',(array)[4]='\0' +#define BCRYPT_SALT_SIZE 22 +/* 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 +#endif /* USE_BCRYPT */ + +#ifdef USE_SHA_CRYPT +/* Fixed salt len for sha{256,512}crypt. */ +#define SHA_CRYPT_SALT_SIZE 16 +/* Default number of rounds if not explicitly specified. */ +#define SHA_ROUNDS_DEFAULT 5000 +/* Minimum number of rounds. */ +#define SHA_ROUNDS_MIN 1000 +/* Maximum number of rounds. */ +#define SHA_ROUNDS_MAX 999999999 +#endif + +#ifdef USE_YESCRYPT +/* + * Default number of base64 characters used for the salt. + * 24 characters gives a 144 bits (18 bytes) salt. Unlike the more + * traditional 128 bits (16 bytes) salt, this 144 bits salt is always + * represented by the same number of base64 characters without padding + * issue, even with a non-standard base64 encoding scheme. + */ +#define YESCRYPT_SALT_SIZE 24 +/* Default cost if not explicitly specified. */ +#define Y_COST_DEFAULT 5 +/* Minimum cost. */ +#define Y_COST_MIN 1 +/* Maximum cost. */ +#define Y_COST_MAX 11 +#endif + +/* Fixed salt len for md5crypt. */ +#define MD5_CRYPT_SALT_SIZE 8 + +/* Generate salt of size salt_size. */ +#define MAX_SALT_SIZE 44 +#define MIN_SALT_SIZE 8 + +/* Maximum size of the generated salt string. */ +#define GENSALT_SETTING_SIZE 100 + +/* local function prototypes */ +#if !USE_XCRYPT_GENSALT +static /*@observer@*/const char *gensalt (size_t salt_size); +#endif /* !USE_XCRYPT_GENSALT */ +#ifdef USE_SHA_CRYPT +static /*@observer@*/unsigned long SHA_get_salt_rounds (/*@null@*/const int *prefered_rounds); +static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, unsigned long rounds); +#endif /* USE_SHA_CRYPT */ +#ifdef USE_BCRYPT +static /*@observer@*/unsigned long BCRYPT_get_salt_rounds (/*@null@*/const int *prefered_rounds); +static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, unsigned long rounds); +#endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT +static /*@observer@*/unsigned long YESCRYPT_get_salt_cost (/*@null@*/const int *prefered_cost); +static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, unsigned long cost); +#endif /* USE_YESCRYPT */ + + +#ifdef USE_SHA_CRYPT +/* Return the the rounds number for the SHA crypt methods. */ +static /*@observer@*/unsigned long SHA_get_salt_rounds (/*@null@*/const int *prefered_rounds) +{ + unsigned long rounds; + + if (NULL == prefered_rounds) { + long min_rounds = getdef_long ("SHA_CRYPT_MIN_ROUNDS", -1); + long max_rounds = getdef_long ("SHA_CRYPT_MAX_ROUNDS", -1); + + if ((-1 == min_rounds) && (-1 == max_rounds)) { + rounds = SHA_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 = csrand_interval (min_rounds, max_rounds); + } + } else if (0 == *prefered_rounds) { + rounds = SHA_ROUNDS_DEFAULT; + } else { + rounds = (unsigned long) *prefered_rounds; + } + + /* Sanity checks. The libc should also check this, but this + * protects against a rounds_prefix overflow. */ + if (rounds < SHA_ROUNDS_MIN) { + rounds = SHA_ROUNDS_MIN; + } + + if (rounds > SHA_ROUNDS_MAX) { + rounds = SHA_ROUNDS_MAX; + } + + return rounds; +} + +/* + * Fill a salt prefix specifying the rounds number for the SHA crypt methods + * to a buffer. + */ +static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, unsigned long rounds) +{ + const size_t buf_begin = strlen (buf); + + /* Nothing to do here if SHA_ROUNDS_DEFAULT is used. */ + if (rounds == SHA_ROUNDS_DEFAULT) { + return; + } + + /* + * Check if the result buffer is long enough. + * We are going to write a maximum of 17 bytes, + * plus one byte for the terminator. + * rounds=XXXXXXXXX$ + * 00000000011111111 + * 12345678901234567 + */ + assert (GENSALT_SETTING_SIZE > buf_begin + 17); + + (void) snprintf (buf + buf_begin, 18, "rounds=%lu$", rounds); +} +#endif /* USE_SHA_CRYPT */ + +#ifdef USE_BCRYPT +/* Return the the rounds number for the BCRYPT method. */ +static /*@observer@*/unsigned long BCRYPT_get_salt_rounds (/*@null@*/const int *prefered_rounds) +{ + unsigned 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)) { + 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 = csrand_interval (min_rounds, max_rounds); + } + } else if (0 == *prefered_rounds) { + rounds = B_ROUNDS_DEFAULT; + } else { + rounds = (unsigned long) *prefered_rounds; + } + + /* Sanity checks. */ + if (rounds < B_ROUNDS_MIN) { + rounds = B_ROUNDS_MIN; + } + +#if USE_XCRYPT_GENSALT + if (rounds > B_ROUNDS_MAX) { + rounds = B_ROUNDS_MAX; + } +#else /* USE_XCRYPT_GENSALT */ + /* + * Use 19 as an upper bound for now, + * because musl doesn't allow rounds >= 20. + * If musl ever supports > 20 rounds, + * rounds should be set to B_ROUNDS_MAX. + */ + if (rounds > 19) { + rounds = 19; + } +#endif /* USE_XCRYPT_GENSALT */ + + return rounds; +} + +/* + * Fill a salt prefix specifying the rounds number for the BCRYPT method + * to a buffer. + */ +static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, unsigned long rounds) +{ + const size_t buf_begin = strlen (buf); + + /* + * Check if the result buffer is long enough. + * We are going to write three bytes, + * plus one byte for the terminator. + * XX$ + * 000 + * 123 + */ + assert (GENSALT_SETTING_SIZE > buf_begin + 3); + + (void) snprintf (buf + buf_begin, 4, "%2.2lu$", rounds); +} +#endif /* USE_BCRYPT */ + +#ifdef USE_YESCRYPT +/* Return the the cost number for the YESCRYPT method. */ +static /*@observer@*/unsigned long YESCRYPT_get_salt_cost (/*@null@*/const int *prefered_cost) +{ + unsigned long cost; + + if (NULL == prefered_cost) { + cost = getdef_num ("YESCRYPT_COST_FACTOR", Y_COST_DEFAULT); + } else if (0 == *prefered_cost) { + cost = Y_COST_DEFAULT; + } else { + cost = (unsigned long) *prefered_cost; + } + + /* Sanity checks. */ + if (cost < Y_COST_MIN) { + cost = Y_COST_MIN; + } + + if (cost > Y_COST_MAX) { + cost = Y_COST_MAX; + } + + return cost; +} + +/* + * Fill a salt prefix specifying the cost for the YESCRYPT method + * to a buffer. + */ +static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, unsigned long cost) +{ + const size_t buf_begin = strlen (buf); + + /* + * Check if the result buffer is long enough. + * We are going to write four bytes, + * plus one byte for the terminator. + * jXX$ + * 0000 + * 1234 + */ + assert (GENSALT_SETTING_SIZE > buf_begin + 4); + + buf[buf_begin + 0] = 'j'; + if (cost < 3) { + buf[buf_begin + 1] = 0x36 + cost; + } else if (cost < 6) { + buf[buf_begin + 1] = 0x34 + cost; + } else { + buf[buf_begin + 1] = 0x3b + cost; + } + buf[buf_begin + 2] = cost >= 3 ? 'T' : '5'; + buf[buf_begin + 3] = '$'; + buf[buf_begin + 4] = '\0'; +} +#endif /* USE_YESCRYPT */ + +#if !USE_XCRYPT_GENSALT +static /*@observer@*/const char *gensalt (size_t salt_size) +{ + static char salt[MAX_SALT_SIZE + 6]; + + bzero(salt, MAX_SALT_SIZE + 6); + + assert (salt_size >= MIN_SALT_SIZE && + salt_size <= MAX_SALT_SIZE); + strcat (salt, l64a (csrand ())); + do { + strcat (salt, l64a (csrand ())); + } while (strlen (salt) < salt_size); + + salt[salt_size] = '\0'; + + return salt; +} +#endif /* !USE_XCRYPT_GENSALT */ + +/* + * Generate 8 base64 ASCII characters of random salt. If MD5_CRYPT_ENAB + * in /etc/login.defs is "yes", the salt string will be prefixed by "$1$" + * (magic) and pw_encrypt() will execute the MD5-based FreeBSD-compatible + * version of crypt() instead of the standard one. + * Other methods can be set with ENCRYPT_METHOD + * + * The method can be forced with the meth parameter. + * If NULL, the method will be defined according to the ENCRYPT_METHOD + * variable, and if not set according to the MD5_CRYPT_ENAB variable, + * which can both be set inside the login.defs file. + * + * If meth is specified, an additional parameter can be provided. + * * For the SHA256 and SHA512 method, this specifies the number of rounds + * (if not NULL). + * * For the YESCRYPT method, this specifies the cost factor (if not NULL). + */ +/*@observer@*/const char *crypt_make_salt (/*@null@*//*@observer@*/const char *meth, /*@null@*/void *arg) +{ + static char result[GENSALT_SETTING_SIZE]; + size_t salt_len = MAX_SALT_SIZE; + const char *method; + unsigned long rounds = 0; + + bzero(result, GENSALT_SETTING_SIZE); + + if (NULL != meth) + method = meth; + else { + method = getdef_str ("ENCRYPT_METHOD"); + if (NULL == method) { + method = getdef_bool ("MD5_CRYPT_ENAB") ? "MD5" : "DES"; + } + } + + if (0 == strcmp (method, "MD5")) { + MAGNUM(result, '1'); + salt_len = MD5_CRYPT_SALT_SIZE; + rounds = 0; +#ifdef USE_BCRYPT + } else if (0 == strcmp (method, "BCRYPT")) { + BCRYPTMAGNUM(result); + salt_len = BCRYPT_SALT_SIZE; + rounds = BCRYPT_get_salt_rounds (arg); + BCRYPT_salt_rounds_to_buf (result, rounds); +#endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT + } else if (0 == strcmp (method, "YESCRYPT")) { + MAGNUM(result, 'y'); + salt_len = YESCRYPT_SALT_SIZE; + rounds = YESCRYPT_get_salt_cost (arg); + YESCRYPT_salt_cost_to_buf (result, rounds); +#endif /* USE_YESCRYPT */ +#ifdef USE_SHA_CRYPT + } else if (0 == strcmp (method, "SHA256")) { + MAGNUM(result, '5'); + salt_len = SHA_CRYPT_SALT_SIZE; + rounds = SHA_get_salt_rounds (arg); + SHA_salt_rounds_to_buf (result, rounds); + } else if (0 == strcmp (method, "SHA512")) { + MAGNUM(result, '6'); + salt_len = SHA_CRYPT_SALT_SIZE; + rounds = SHA_get_salt_rounds (arg); + SHA_salt_rounds_to_buf (result, rounds); +#endif /* USE_SHA_CRYPT */ + } else if (0 != strcmp (method, "DES")) { + fprintf (log_get_logfd(), + _("Invalid ENCRYPT_METHOD value: '%s'.\n" + "Defaulting to DES.\n"), + method); + salt_len = MAX_SALT_SIZE; + rounds = 0; + bzero(result, GENSALT_SETTING_SIZE); + } + +#if USE_XCRYPT_GENSALT + /* + * Prepare DES setting for crypt_gensalt(), if result + * has not been filled with anything previously. + */ + if ('\0' == result[0]) { + /* Avoid -Wunused-but-set-variable. */ + salt_len = GENSALT_SETTING_SIZE - 1; + rounds = 0; + memset(result, '.', salt_len); + result[salt_len] = '\0'; + } + + char *retval = crypt_gensalt (result, rounds, NULL, 0); + + /* Should not happen, but... */ + if (NULL == retval) { + fprintf (log_get_logfd(), + _("Unable to generate a salt from setting " + "\"%s\", check your settings in " + "ENCRYPT_METHOD and the corresponding " + "configuration for your selected hash " + "method.\n"), result); + + exit (1); + } + + return retval; +#else /* USE_XCRYPT_GENSALT */ + /* Check if the result buffer is long enough. */ + assert (GENSALT_SETTING_SIZE > strlen (result) + salt_len); + + /* Concatenate a pseudo random salt. */ + strncat (result, gensalt (salt_len), + GENSALT_SETTING_SIZE - strlen (result) - 1); + + return result; +#endif /* USE_XCRYPT_GENSALT */ +} diff --git a/lib/selinux.c b/lib/selinux.c index ad639bd..6eb2894 100644 --- a/lib/selinux.c +++ b/lib/selinux.c @@ -188,7 +188,7 @@ int check_selinux_permit (const char *perm_name) return 0; } - selinux_set_callback (SELINUX_CB_LOG, (union selinux_callback) selinux_log_cb); + selinux_set_callback (SELINUX_CB_LOG, (union selinux_callback) { .func_log = selinux_log_cb }); if (getprevcon_raw (&user_context_raw) != 0) { fprintf (shadow_logfd, @@ -206,5 +206,5 @@ int check_selinux_permit (const char *perm_name) } #else /* !WITH_SELINUX */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* !WITH_SELINUX */ diff --git a/lib/semanage.c b/lib/semanage.c index 082a6e8..277e20e 100644 --- a/lib/semanage.c +++ b/lib/semanage.c @@ -16,19 +16,19 @@ #endif #include #include + #include + #include + +#include "attr.h" #include "prototypes.h" #include "shadowlog_internal.h" -#ifndef DEFAULT_SERANGE -#define DEFAULT_SERANGE "s0" -#endif - format_attr(printf, 3, 4) -static void semanage_error_callback (unused void *varg, +static void semanage_error_callback (MAYBE_UNUSED void *varg, semanage_handle_t *handle, const char *fmt, ...) { @@ -101,6 +101,8 @@ static semanage_handle_t *semanage_init (void) return handle; fail: + if (handle) + semanage_disconnect (handle); semanage_handle_destroy (handle); return NULL; } @@ -109,7 +111,8 @@ fail: static int semanage_user_mod (semanage_handle_t *handle, semanage_seuser_key_t *key, const char *login_name, - const char *seuser_name) + const char *seuser_name, + const char *serange) { int ret; semanage_seuser_t *seuser = NULL; @@ -122,11 +125,12 @@ static int semanage_user_mod (semanage_handle_t *handle, goto done; } - if (semanage_mls_enabled(handle)) { - ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE); + if (serange && semanage_mls_enabled(handle)) { + ret = semanage_seuser_set_mlsrange (handle, seuser, serange); if (ret != 0) { fprintf (shadow_logfd, - _("Could not set serange for %s\n"), login_name); + _("Could not set serange for %s to %s\n"), + login_name, serange); ret = 1; goto done; } @@ -158,9 +162,10 @@ done: static int semanage_user_add (semanage_handle_t *handle, - semanage_seuser_key_t *key, + const semanage_seuser_key_t *key, const char *login_name, - const char *seuser_name) + const char *seuser_name, + const char *serange) { int ret; semanage_seuser_t *seuser = NULL; @@ -181,11 +186,12 @@ static int semanage_user_add (semanage_handle_t *handle, goto done; } - if (semanage_mls_enabled(handle)) { - ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE); + if (serange && semanage_mls_enabled(handle)) { + ret = semanage_seuser_set_mlsrange (handle, seuser, serange); if (ret != 0) { fprintf (shadow_logfd, - _("Could not set serange for %s\n"), login_name); + _("Could not set serange for %s to %s\n"), + login_name, serange); ret = 1; goto done; } @@ -216,7 +222,7 @@ done: } -int set_seuser (const char *login_name, const char *seuser_name) +int set_seuser (const char *login_name, const char *seuser_name, const char *serange) { semanage_handle_t *handle = NULL; semanage_seuser_key_t *key = NULL; @@ -250,7 +256,7 @@ int set_seuser (const char *login_name, const char *seuser_name) } if (0 != seuser_exists) { - ret = semanage_user_mod (handle, key, login_name, seuser_name); + ret = semanage_user_mod (handle, key, login_name, seuser_name, serange); if (ret != 0) { fprintf (shadow_logfd, _("Cannot modify SELinux user mapping\n")); @@ -258,7 +264,7 @@ int set_seuser (const char *login_name, const char *seuser_name) goto done; } } else { - ret = semanage_user_add (handle, key, login_name, seuser_name); + ret = semanage_user_add (handle, key, login_name, seuser_name, serange); if (ret != 0) { fprintf (shadow_logfd, _("Cannot add SELinux user mapping\n")); @@ -279,6 +285,8 @@ int set_seuser (const char *login_name, const char *seuser_name) done: semanage_seuser_key_free (key); + if (handle) + semanage_disconnect (handle); semanage_handle_destroy (handle); return ret; } @@ -353,9 +361,12 @@ int del_seuser (const char *login_name) ret = 0; done: + semanage_seuser_key_free (key); + if (handle) + semanage_disconnect (handle); semanage_handle_destroy (handle); return ret; } #else /* !WITH_SELINUX */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* !WITH_SELINUX */ diff --git a/lib/setugid.c b/lib/setugid.c new file mode 100644 index 0000000..6dbe38e --- /dev/null +++ b/lib/setugid.c @@ -0,0 +1,125 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * Separated from setup.c. --marekm + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include "prototypes.h" +#include "defines.h" +#include +#include "getdef.h" + +/* + * setup_groups - set the group credentials + * set the group ID to the value from the password file entry + * set the supplementary group IDs + * + * In case of PAM enabled configurations, this shall be called before + * pam_setcred. + * + * Returns 0 on success, or -1 on failure. + */ +int setup_groups (const struct passwd *info) +{ + /* + * Set the real group ID to the primary group ID in the password + * file. + */ + if (setgid (info->pw_gid) == -1) { + int err = errno; + perror ("setgid"); + SYSLOG ((LOG_ERR, "bad group ID `%d' for user `%s': %s\n", + info->pw_gid, info->pw_name, strerror (err))); + closelog (); + return -1; + } +#ifdef HAVE_INITGROUPS + /* + * For systems which support multiple concurrent groups, go get + * the group set from the /etc/group file. + */ + if (initgroups (info->pw_name, info->pw_gid) == -1) { + int err = errno; + perror ("initgroups"); + SYSLOG ((LOG_ERR, "initgroups failed for user `%s': %s\n", + info->pw_name, strerror (err))); + closelog (); + return -1; + } +#endif + return 0; +} + +/* + * change_uid - Set the real UID + * + * Returns 0 on success, or -1 on failure. + */ +int change_uid (const struct passwd *info) +{ + /* + * Set the real UID to the UID value in the password file. + */ + if (setuid (info->pw_uid) != 0) { + int err = errno; + perror ("setuid"); + SYSLOG ((LOG_ERR, "bad user ID `%d' for user `%s': %s\n", + (int) info->pw_uid, info->pw_name, strerror (err))); + closelog (); + return -1; + } + return 0; +} + +/* + * setup_uid_gid() performs the following steps - + * + * set the group ID to the value from the password file entry + * set the supplementary group IDs + * optionally call specified function which may add more groups + * set the user ID to the value from the password file entry + * + * Returns 0 on success, or -1 on failure. + */ + +#if defined (HAVE_INITGROUPS) && ! (defined USE_PAM) +int setup_uid_gid (const struct passwd *info, bool is_console) +#else +int setup_uid_gid (const struct passwd *info) +#endif +{ + if (setup_groups (info) < 0) { + return -1; + } + +#if defined (HAVE_INITGROUPS) && ! defined (USE_PAM) + if (is_console) { + const char *cp = getdef_str ("CONSOLE_GROUPS"); + + if ((NULL != cp) && (add_groups (cp) != 0)) { + perror ("Warning: add_groups"); + } + } +#endif /* HAVE_INITGROUPS && !USE_PAM*/ + + if (change_uid (info) < 0) { + return -1; + } + + return 0; +} + diff --git a/lib/setupenv.c b/lib/setupenv.c new file mode 100644 index 0000000..c9b7f26 --- /dev/null +++ b/lib/setupenv.c @@ -0,0 +1,285 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * Separated from setup.c. --marekm + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include + +#include "alloc.h" +#include "prototypes.h" +#include "defines.h" +#include +#include "getdef.h" +#include "shadowlog.h" +#include "string/sprintf.h" + + +#ifndef USE_PAM +static void +addenv_path(const char *varname, const char *dirname, const char *filename) +{ + char *buf; + + xasprintf(&buf, "%s/%s", dirname, filename); + addenv(varname, buf); + free(buf); +} + +static void read_env_file (const char *filename) +{ + FILE *fp; + char buf[1024]; + char *cp, *name, *val; + + fp = fopen (filename, "r"); + if (NULL == fp) { + return; + } + while (fgets (buf, (int)(sizeof buf), fp) == buf) { + cp = strrchr (buf, '\n'); + if (NULL == cp) { + break; + } + *cp = '\0'; + + cp = buf; + /* ignore whitespace and comments */ + while (isspace (*cp)) { + cp++; + } + if (('\0' == *cp) || ('#' == *cp)) { + continue; + } + /* + * ignore lines which don't follow the name=value format + * (for example, the "export NAME" shell commands) + */ + name = cp; + while (('\0' != *cp) && !isspace (*cp) && ('=' != *cp)) { + cp++; + } + if ('=' != *cp) { + continue; + } + /* NUL-terminate the name */ + *cp = '\0'; + cp++; + val = cp; +#if 0 /* XXX untested, and needs rewrite with fewer goto's :-) */ +/* + (state, char_type) -> (state, action) + + state: unquoted, single_quoted, double_quoted, escaped, double_quoted_escaped + char_type: normal, white, backslash, single, double + action: remove_curr, remove_curr_skip_next, remove_prev, finish XXX +*/ + no_quote: + if (*cp == '\\') { + /* remove the backslash */ + remove_char (cp); + /* skip over the next character */ + if (*cp) + cp++; + goto no_quote; + } else if (*cp == '\'') { + /* remove the quote */ + remove_char (cp); + /* now within single quotes */ + goto s_quote; + } else if (*cp == '"') { + /* remove the quote */ + remove_char (cp); + /* now within double quotes */ + goto d_quote; + } else if (*cp == '\0') { + /* end of string */ + goto finished; + } else if (isspace (*cp)) { + /* unescaped whitespace - end of string */ + *cp = '\0'; + goto finished; + } else { + cp++; + goto no_quote; + } + s_quote: + if (*cp == '\'') { + /* remove the quote */ + remove_char (cp); + /* unquoted again */ + goto no_quote; + } else if (*cp == '\0') { + /* end of string */ + goto finished; + } else { + /* preserve everything within single quotes */ + cp++; + goto s_quote; + } + d_quote: + if (*cp == '\"') { + /* remove the quote */ + remove_char (cp); + /* unquoted again */ + goto no_quote; + } else if (*cp == '\\') { + cp++; + /* if backslash followed by double quote, remove backslash + else skip over the backslash and following char */ + if (*cp == '"') + remove_char (cp - 1); + else if (*cp) + cp++; + goto d_quote; + } + else if (*cp == '\0') { + /* end of string */ + goto finished; + } else { + /* preserve everything within double quotes */ + goto d_quote; + } + finished: +#endif /* 0 */ + /* + * XXX - should handle quotes, backslash escapes, etc. + * like the shell does. + */ + addenv (name, val); + } + (void) fclose (fp); +} +#endif /* USE_PAM */ + + +/* + * change to the user's home directory + * set the HOME, SHELL, MAIL, PATH, and LOGNAME or USER environmental + * variables. + */ + +void setup_env (struct passwd *info) +{ +#ifndef USE_PAM + const char *envf; +#endif + const char *cp; + + /* + * Change the current working directory to be the home directory + * of the user. It is a fatal error for this process to be unable + * to change to that directory. There is no "default" home + * directory. + * + * We no longer do it as root - should work better on NFS-mounted + * home directories. Some systems default to HOME=/, so we make + * this a configurable option. --marekm + */ + + if (chdir (info->pw_dir) == -1) { + if (!getdef_bool ("DEFAULT_HOME") || chdir ("/") == -1) { + fprintf (log_get_logfd(), _("Unable to cd to '%s'\n"), + info->pw_dir); + SYSLOG ((LOG_WARN, + "unable to cd to `%s' for user `%s'\n", + info->pw_dir, info->pw_name)); + closelog (); + exit (EXIT_FAILURE); + } + (void) puts (_("No directory, logging in with HOME=/")); + free (info->pw_dir); + info->pw_dir = xstrdup ("/"); + } + + /* + * Create the HOME environmental variable and export it. + */ + + addenv ("HOME", info->pw_dir); + + /* + * Create the SHELL environmental variable and export it. + */ + + if ((NULL == info->pw_shell) || ('\0' == *info->pw_shell)) { + free (info->pw_shell); + info->pw_shell = xstrdup (SHELL); + } + + addenv ("SHELL", info->pw_shell); + + /* + * Export the user name. For BSD derived systems, it's "USER", for + * all others it's "LOGNAME". We set both of them. + */ + + addenv ("USER", info->pw_name); + addenv ("LOGNAME", info->pw_name); + + /* + * Create the PATH environmental variable and export it. + */ + + cp = getdef_str ((info->pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH"); + + if (NULL == cp) { + /* not specified, use a minimal default */ + addenv ((info->pw_uid == 0) ? "PATH=/sbin:/bin:/usr/sbin:/usr/bin" : "PATH=/bin:/usr/bin", NULL); + } else if (strchr (cp, '=')) { + /* specified as name=value (PATH=...) */ + addenv (cp, NULL); + } else { + /* only value specified without "PATH=" */ + addenv ("PATH", cp); + } + +#ifndef USE_PAM + /* + * Create the MAIL environmental variable and export it. login.defs + * knows the prefix. + */ + + if (getdef_bool ("MAIL_CHECK_ENAB")) { + cp = getdef_str ("MAIL_DIR"); + if (NULL != cp) { + addenv_path ("MAIL", cp, info->pw_name); + } else { + cp = getdef_str ("MAIL_FILE"); + if (NULL != cp) { + addenv_path ("MAIL", info->pw_dir, cp); + } else { +#if defined(MAIL_SPOOL_FILE) + addenv_path ("MAIL", info->pw_dir, MAIL_SPOOL_FILE); +#elif defined(MAIL_SPOOL_DIR) + addenv_path ("MAIL", MAIL_SPOOL_DIR, info->pw_name); +#endif + } + } + } + + /* + * Read environment from optional config file. --marekm + */ + envf = getdef_str ("ENVIRON_FILE"); + if (NULL != envf) { + read_env_file (envf); + } +#endif /* !USE_PAM */ +} + diff --git a/lib/sgetgrent.c b/lib/sgetgrent.c index ad4fcc8..6cde15c 100644 --- a/lib/sgetgrent.c +++ b/lib/sgetgrent.c @@ -14,6 +14,9 @@ #include #include #include +#include + +#include "alloc.h" #include "defines.h" #include "prototypes.h" @@ -25,19 +28,15 @@ * list() converts the comma-separated list of member names into * an array of character pointers. * - * WARNING: I profiled this once with and without strchr() calls - * and found that using a register variable and an explicit loop - * works best. For large /etc/group files, this is a major win. - * * FINALLY added dynamic allocation. Still need to fix sgetsgent(). * --marekm */ -static char **list (char *s) +static char ** +list(char *s) { - static char **members = 0; - static int size = 0; /* max members + 1 */ - int i; - char **rbuf; + static char **members = NULL; + static size_t size = 0; /* max members + 1 */ + size_t i; i = 0; for (;;) { @@ -45,40 +44,24 @@ static char **list (char *s) member name, or terminating NULL). */ if (i >= size) { size = i + 100; /* at least: i + 1 */ - if (members) { - rbuf = - realloc (members, size * sizeof (char *)); - } else { - /* for old (before ANSI C) implementations of - realloc() that don't handle NULL properly */ - rbuf = malloc (size * sizeof (char *)); - } - if (!rbuf) { - free (members); - members = 0; + members = REALLOCF(members, size, char *); + if (!members) { size = 0; - return (char **) 0; + return NULL; } - members = rbuf; } if (!s || s[0] == '\0') break; - members[i++] = s; - while (('\0' != *s) && (',' != *s)) { - s++; - } - if ('\0' != *s) { - *s++ = '\0'; - } + members[i++] = strsep(&s, ","); } - members[i] = (char *) 0; + members[i] = NULL; return members; } struct group *sgetgrent (const char *buf) { - static char *grpbuf = 0; + static char *grpbuf = NULL; static size_t size = 0; static char *grpfields[NFIELDS]; static struct group grent; @@ -90,10 +73,10 @@ struct group *sgetgrent (const char *buf) allocate a larger block */ free (grpbuf); size = strlen (buf) + 1000; /* at least: strlen(buf) + 1 */ - grpbuf = malloc (size); - if (!grpbuf) { + grpbuf = MALLOC(size, char); + if (grpbuf == NULL) { size = 0; - return 0; + return NULL; } } strcpy (grpbuf, buf); @@ -103,25 +86,20 @@ struct group *sgetgrent (const char *buf) *cp = '\0'; } - for (cp = grpbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) { - grpfields[i] = cp; - cp = strchr (cp, ':'); - if (NULL != cp) { - *cp = '\0'; - cp++; - } - } + for (cp = grpbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) + grpfields[i] = strsep(&cp, ":"); + if (i < (NFIELDS - 1) || *grpfields[2] == '\0' || cp != NULL) { - return (struct group *) 0; + return NULL; } grent.gr_name = grpfields[0]; grent.gr_passwd = grpfields[1]; - if (get_gid (grpfields[2], &grent.gr_gid) == 0) { - return (struct group *) 0; + if (get_gid(grpfields[2], &grent.gr_gid) == -1) { + return NULL; } grent.gr_mem = list (grpfields[3]); if (NULL == grent.gr_mem) { - return (struct group *) 0; /* out of memory */ + return NULL; /* out of memory */ } return &grent; diff --git a/lib/sgetpwent.c b/lib/sgetpwent.c index 1c8c63e..75c9177 100644 --- a/lib/sgetpwent.c +++ b/lib/sgetpwent.c @@ -12,9 +12,11 @@ #ident "$Id$" #include -#include "defines.h" #include #include +#include + +#include "defines.h" #include "prototypes.h" #include "shadowlog_internal.h" @@ -32,7 +34,8 @@ * performance reasons. I am going to come up with some conditional * compilation glarp to improve on this in the future. */ -struct passwd *sgetpwent (const char *buf) +struct passwd * +sgetpwent(const char *buf) { static struct passwd pwent; static char pwdbuf[PASSWD_ENTRY_MAX_LENGTH]; @@ -58,19 +61,8 @@ struct passwd *sgetpwent (const char *buf) * field. The fields are converted into NUL terminated strings. */ - for (cp = pwdbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) { - fields[i] = cp; - while (('\0' != *cp) && (':' != *cp)) { - cp++; - } - - if ('\0' != *cp) { - *cp = '\0'; - cp++; - } else { - cp = NULL; - } - } + for (cp = pwdbuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) + fields[i] = strsep(&cp, ":"); /* something at the end, columns over shot */ if ( cp != NULL ) { @@ -94,10 +86,10 @@ struct passwd *sgetpwent (const char *buf) pwent.pw_name = fields[0]; pwent.pw_passwd = fields[1]; - if (get_uid (fields[2], &pwent.pw_uid) == 0) { + if (get_uid(fields[2], &pwent.pw_uid) == -1) { return NULL; } - if (get_gid (fields[3], &pwent.pw_gid) == 0) { + if (get_gid(fields[3], &pwent.pw_gid) == -1) { return NULL; } pwent.pw_gecos = fields[4]; diff --git a/lib/sgetspent.c b/lib/sgetspent.c index f1d4b20..bd2ef8b 100644 --- a/lib/sgetspent.c +++ b/lib/sgetspent.c @@ -14,17 +14,26 @@ #ident "$Id$" +#include +#include #include +#include + +#include "atoi/str2i.h" #include "prototypes.h" #include "shadowlog_internal.h" #include "defines.h" -#include + + #define FIELDS 9 #define OFIELDS 5 + + /* * sgetspent - convert string in shadow file format to (struct spwd *) */ -struct spwd *sgetspent (const char *string) +struct spwd * +sgetspent(const char *string) { static char spwbuf[PASSWD_ENTRY_MAX_LENGTH]; static struct spwd spwd; @@ -41,7 +50,7 @@ struct spwd *sgetspent (const char *string) fprintf (shadow_logfd, "%s: Too long passwd entry encountered, file corruption?\n", shadow_progname); - return 0; /* fail if too long */ + return NULL; /* fail if too long */ } strcpy (spwbuf, string); @@ -57,9 +66,7 @@ struct spwd *sgetspent (const char *string) for (cp = spwbuf, i = 0; ('\0' != *cp) && (i < FIELDS); i++) { fields[i] = cp; - while (('\0' != *cp) && (':' != *cp)) { - cp++; - } + cp = strchrnul(cp, ':'); if ('\0' != *cp) { *cp = '\0'; @@ -67,13 +74,12 @@ struct spwd *sgetspent (const char *string) } } - if (i == (FIELDS - 1)) { - fields[i++] = cp; - } + if (i == (FIELDS - 1)) + fields[i++] = ""; if ( ((NULL != cp) && ('\0' != *cp)) || ((i != FIELDS) && (i != OFIELDS)) ) { - return 0; + return NULL; } /* @@ -92,9 +98,9 @@ struct spwd *sgetspent (const char *string) if (fields[2][0] == '\0') { spwd.sp_lstchg = -1; - } else if ( (getlong (fields[2], &spwd.sp_lstchg) == 0) + } else if ( (str2sl(&spwd.sp_lstchg, fields[2]) == -1) || (spwd.sp_lstchg < 0)) { - return 0; + return NULL; } /* @@ -103,9 +109,9 @@ struct spwd *sgetspent (const char *string) if (fields[3][0] == '\0') { spwd.sp_min = -1; - } else if ( (getlong (fields[3], &spwd.sp_min) == 0) + } else if ( (str2sl(&spwd.sp_min, fields[3]) == -1) || (spwd.sp_min < 0)) { - return 0; + return NULL; } /* @@ -114,9 +120,9 @@ struct spwd *sgetspent (const char *string) if (fields[4][0] == '\0') { spwd.sp_max = -1; - } else if ( (getlong (fields[4], &spwd.sp_max) == 0) + } else if ( (str2sl(&spwd.sp_max, fields[4]) == -1) || (spwd.sp_max < 0)) { - return 0; + return NULL; } /* @@ -139,9 +145,9 @@ struct spwd *sgetspent (const char *string) if (fields[5][0] == '\0') { spwd.sp_warn = -1; - } else if ( (getlong (fields[5], &spwd.sp_warn) == 0) + } else if ( (str2sl(&spwd.sp_warn, fields[5]) == -1) || (spwd.sp_warn < 0)) { - return 0; + return NULL; } /* @@ -151,9 +157,9 @@ struct spwd *sgetspent (const char *string) if (fields[6][0] == '\0') { spwd.sp_inact = -1; - } else if ( (getlong (fields[6], &spwd.sp_inact) == 0) + } else if ( (str2sl(&spwd.sp_inact, fields[6]) == -1) || (spwd.sp_inact < 0)) { - return 0; + return NULL; } /* @@ -163,9 +169,9 @@ struct spwd *sgetspent (const char *string) if (fields[7][0] == '\0') { spwd.sp_expire = -1; - } else if ( (getlong (fields[7], &spwd.sp_expire) == 0) + } else if ( (str2sl(&spwd.sp_expire, fields[7]) == -1) || (spwd.sp_expire < 0)) { - return 0; + return NULL; } /* @@ -175,13 +181,12 @@ struct spwd *sgetspent (const char *string) if (fields[8][0] == '\0') { spwd.sp_flag = SHADOW_SP_FLAG_UNSET; - } else if (getulong (fields[8], &spwd.sp_flag) == 0) { - return 0; + } else if (str2ul(&spwd.sp_flag, fields[8]) == -1) { + return NULL; } return (&spwd); } #else -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif - diff --git a/lib/sgroupio.c b/lib/sgroupio.c index 871749b..0297df4 100644 --- a/lib/sgroupio.c +++ b/lib/sgroupio.c @@ -14,10 +14,12 @@ #ident "$Id$" +#include "alloc.h" #include "prototypes.h" #include "defines.h" #include "commonio.h" #include "getdef.h" +#include "memzero.h" #include "sgroupio.h" /*@null@*/ /*@only@*/struct sgrp *__sgr_dup (const struct sgrp *sgent) @@ -25,13 +27,12 @@ struct sgrp *sg; int i; - sg = (struct sgrp *) malloc (sizeof *sg); + sg = CALLOC (1, struct sgrp); if (NULL == sg) { return NULL; } /* Do the same as the other _dup function, even if we know the * structure. */ - memset (sg, 0, sizeof *sg); /*@-mustfreeonly@*/ sg->sg_name = strdup (sgent->sg_name); /*@=mustfreeonly@*/ @@ -50,7 +51,7 @@ for (i = 0; NULL != sgent->sg_adm[i]; i++); /*@-mustfreeonly@*/ - sg->sg_adm = (char **) malloc ((i + 1) * sizeof (char *)); + sg->sg_adm = MALLOC(i + 1, char *); /*@=mustfreeonly@*/ if (NULL == sg->sg_adm) { free (sg->sg_passwd); @@ -75,7 +76,7 @@ for (i = 0; NULL != sgent->sg_mem[i]; i++); /*@-mustfreeonly@*/ - sg->sg_mem = (char **) malloc ((i + 1) * sizeof (char *)); + sg->sg_mem = MALLOC(i + 1, char *); /*@=mustfreeonly@*/ if (NULL == sg->sg_mem) { for (i = 0; NULL != sg->sg_adm[i]; i++) { @@ -116,14 +117,16 @@ static /*@null@*/ /*@only@*/void *gshadow_dup (const void *ent) return __sgr_dup (sg); } -static void gshadow_free (/*@out@*/ /*@only@*/void *ent) +static void +gshadow_free(/*@only@*/void *ent) { struct sgrp *sg = ent; sgr_free (sg); } -void sgr_free (/*@out@*/ /*@only@*/struct sgrp *sgent) +void +sgr_free(/*@only@*/struct sgrp *sgent) { size_t i; free (sgent->sg_name); @@ -151,7 +154,7 @@ static const char *gshadow_getname (const void *ent) static void *gshadow_parse (const char *line) { - return (void *) sgetsgent (line); + return sgetsgent (line); } static int gshadow_put (const void *ent, FILE * file) @@ -253,7 +256,7 @@ int sgr_open (int mode) int sgr_update (const struct sgrp *sg) { - return commonio_update (&gshadow_db, (const void *) sg); + return commonio_update (&gshadow_db, sg); } int sgr_remove (const char *name) @@ -302,5 +305,5 @@ int sgr_sort () return commonio_sort_wrt (&gshadow_db, __gr_get_db ()); } #else -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif diff --git a/lib/shadow.c b/lib/shadow.c index b628b65..f17d09e 100644 --- a/lib/shadow.c +++ b/lib/shadow.c @@ -18,54 +18,15 @@ #include "prototypes.h" #include "defines.h" #include -#ifdef USE_NIS -static bool nis_used; -static bool nis_ignore; -static enum { native, start, middle, native2 } nis_state; -static bool nis_bound; -static char *nis_domain; -static char *nis_key; -static int nis_keylen; -static char *nis_val; -static int nis_vallen; - -#define IS_NISCHAR(c) ((c)=='+') -#endif + +#include "atoi/str2i.h" + static FILE *shadow; #define FIELDS 9 #define OFIELDS 5 -#ifdef USE_NIS - -/* - * __setspNIS - turn on or off NIS searches - */ - -void __setspNIS (bool flag) -{ - nis_ignore = !flag; - - if (nis_ignore) { - nis_used = false; - } -} - -/* - * bind_nis - bind to NIS server - */ - -static int bind_nis (void) -{ - if (yp_get_default_domain (&nis_domain)) { - return -1; - } - - nis_bound = true; - return 0; -} -#endif /* * setspent - initialize access to shadow text and DBM files @@ -78,10 +39,6 @@ void setspent (void) }else { shadow = fopen (SHADOW_FILE, "r"); } - -#ifdef USE_NIS - nis_state = native; -#endif } /* @@ -94,7 +51,7 @@ void endspent (void) (void) fclose (shadow); } - shadow = (FILE *) 0; + shadow = NULL; } /* @@ -150,11 +107,6 @@ static struct spwd *my_sgetspent (const char *string) */ spwd.sp_namp = fields[0]; -#ifdef USE_NIS - if (IS_NISCHAR (fields[0][0])) { - nis_used = true; - } -#endif spwd.sp_pwdp = fields[1]; /* @@ -166,16 +118,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[2][0] == '\0') { spwd.sp_lstchg = -1; } else { - if (getlong (fields[2], &spwd.sp_lstchg) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_lstchg = -1; - } else -#endif - return 0; - } else if (spwd.sp_lstchg < 0) { + if (str2sl(&spwd.sp_lstchg, fields[2]) == -1) + return 0; + if (spwd.sp_lstchg < 0) return 0; - } } /* @@ -185,18 +131,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[3][0] == '\0') { spwd.sp_min = -1; } else { - if (getlong (fields[3], &spwd.sp_min) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_min = -1; - } else -#endif - { - return 0; - } - } else if (spwd.sp_min < 0) { + if (str2sl(&spwd.sp_min, fields[3]) == -1) + return 0; + if (spwd.sp_min < 0) return 0; - } } /* @@ -206,16 +144,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[4][0] == '\0') { spwd.sp_max = -1; } else { - if (getlong (fields[4], &spwd.sp_max) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_max = -1; - } else -#endif - return 0; - } else if (spwd.sp_max < 0) { + if (str2sl(&spwd.sp_max, fields[4]) == -1) + return 0; + if (spwd.sp_max < 0) return 0; - } } /* @@ -239,18 +171,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[5][0] == '\0') { spwd.sp_warn = -1; } else { - if (getlong (fields[5], &spwd.sp_warn) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_warn = -1; - } else -#endif - { - return 0; - } - } else if (spwd.sp_warn < 0) { + if (str2sl(&spwd.sp_warn, fields[5]) == -1) + return 0; + if (spwd.sp_warn < 0) return 0; - } } /* @@ -261,18 +185,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[6][0] == '\0') { spwd.sp_inact = -1; } else { - if (getlong (fields[6], &spwd.sp_inact) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_inact = -1; - } else -#endif - { - return 0; - } - } else if (spwd.sp_inact < 0) { + if (str2sl(&spwd.sp_inact, fields[6]) == -1) + return 0; + if (spwd.sp_inact < 0) return 0; - } } /* @@ -283,18 +199,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[7][0] == '\0') { spwd.sp_expire = -1; } else { - if (getlong (fields[7], &spwd.sp_expire) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_expire = -1; - } else -#endif - { - return 0; - } - } else if (spwd.sp_expire < 0) { + if (str2sl(&spwd.sp_expire, fields[7]) == -1) + return 0; + if (spwd.sp_expire < 0) return 0; - } } /* @@ -305,18 +213,10 @@ static struct spwd *my_sgetspent (const char *string) if (fields[8][0] == '\0') { spwd.sp_flag = SHADOW_SP_FLAG_UNSET; } else { - if (getulong (fields[8], &spwd.sp_flag) == 0) { -#ifdef USE_NIS - if (nis_used) { - spwd.sp_flag = SHADOW_SP_FLAG_UNSET; - } else -#endif - { - return 0; - } - } else if (spwd.sp_flag < 0) { + if (str2ul(&spwd.sp_flag, fields[8]) == -1) + return 0; + if (spwd.sp_flag < 0) return 0; - } } return (&spwd); @@ -335,21 +235,12 @@ struct spwd *fgetspent (FILE * fp) return (0); } -#ifdef USE_NIS - while (fgets (buf, (int) sizeof buf, fp) != (char *) 0) -#else - if (fgets (buf, (int) sizeof buf, fp) != (char *) 0) -#endif + if (fgets (buf, sizeof buf, fp) != NULL) { cp = strchr (buf, '\n'); if (NULL != cp) { *cp = '\0'; } -#ifdef USE_NIS - if (nis_ignore && IS_NISCHAR (buf[0])) { - continue; - } -#endif return my_sgetspent (buf); } return 0; @@ -361,92 +252,10 @@ struct spwd *fgetspent (FILE * fp) struct spwd *getspent (void) { -#ifdef USE_NIS - int nis_1_user = 0; - struct spwd *val; -#endif if (NULL == shadow) { setspent (); } - -#ifdef USE_NIS - again: - /* - * See if we are reading from the local file. - */ - - if (nis_state == native || nis_state == native2) { - - /* - * Get the next entry from the shadow file. Return NULL - * right away if there is none. - */ - - val = fgetspent (shadow); - if (NULL == val) - return 0; - - /* - * If this entry began with a NIS escape character, we have - * to see if this is just a single user, or if the entire - * map is being asked for. - */ - - if (IS_NISCHAR (val->sp_namp[0])) { - if (val->sp_namp[1]) - nis_1_user = 1; - else - nis_state = start; - } - - /* - * If this isn't a NIS user and this isn't an escape to go - * use a NIS map, it must be a regular local user. - */ - - if (nis_1_user == 0 && nis_state != start) - return val; - - /* - * If this is an escape to use an NIS map, switch over to - * that bunch of code. - */ - - if (nis_state == start) - goto again; - - /* - * NEEDSWORK. Here we substitute pieces-parts of this entry. - */ - - return 0; - } else { - if (!nis_bound) { - if (bind_nis ()) { - nis_state = native2; - goto again; - } - } - if (nis_state == start) { - if (yp_first (nis_domain, "shadow.bynam", &nis_key, - &nis_keylen, &nis_val, &nis_vallen)) { - nis_state = native2; - goto again; - } - nis_state = middle; - } else if (nis_state == middle) { - if (yp_next (nis_domain, "shadow.bynam", nis_key, - nis_keylen, &nis_key, &nis_keylen, - &nis_val, &nis_vallen)) { - nis_state = native2; - goto again; - } - } - return my_sgetspent (nis_val); - } -#else return (fgetspent (shadow)); -#endif } /* @@ -457,74 +266,16 @@ struct spwd *getspnam (const char *name) { struct spwd *sp; -#ifdef USE_NIS - static char save_name[16]; - bool nis_disabled = false; -#endif - setspent (); -#ifdef USE_NIS - /* - * Search the shadow.byname map for this user. - */ - - if (!nis_ignore && !nis_bound) { - bind_nis (); - } - - if (!nis_ignore && nis_bound) { - char *cp; - - if (yp_match (nis_domain, "shadow.byname", name, - strlen (name), &nis_val, &nis_vallen) == 0) { - - cp = strchr (nis_val, '\n'); - if (NULL != cp) { - *cp = '\0'; - } - - nis_state = middle; - sp = my_sgetspent (nis_val); - if (NULL != sp) { - strcpy (save_name, sp->sp_namp); - nis_key = save_name; - nis_keylen = strlen (save_name); - } - endspent (); - return sp; - } else { - nis_state = native2; - } - } -#endif -#ifdef USE_NIS - /* - * NEEDSWORK -- this is a mess, and it is the same mess in the - * other three files. I can't just blindly turn off NIS because - * this might be the first pass through the local files. In - * that case, I never discover that NIS is present. - */ - - if (nis_used) { - nis_ignore = true; - nis_disabled = true; - } -#endif - while ((sp = getspent ()) != (struct spwd *) 0) { + while ((sp = getspent ()) != NULL) { if (strcmp (name, sp->sp_namp) == 0) { break; } } -#ifdef USE_NIS - if (nis_disabled) { - nis_ignore = false; - } -#endif endspent (); return (sp); } #else -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif - diff --git a/lib/shadowio.c b/lib/shadowio.c index 683b6c8..d2c3b47 100644 --- a/lib/shadowio.c +++ b/lib/shadowio.c @@ -31,7 +31,8 @@ static /*@null@*/ /*@only@*/void *shadow_dup (const void *ent) return __spw_dup (sp); } -static void shadow_free (/*@out@*//*@only@*/void *ent) +static void +shadow_free(/*@only@*/void *ent) { struct spwd *sp = ent; @@ -47,7 +48,7 @@ static const char *shadow_getname (const void *ent) static void *shadow_parse (const char *line) { - return (void *) sgetspent (line); + return sgetspent (line); } static int shadow_put (const void *ent, FILE * file) @@ -164,7 +165,7 @@ int spw_open (int mode) int spw_update (const struct spwd *sp) { - return commonio_update (&shadow_db, (const void *) sp); + return commonio_update (&shadow_db, sp); } int spw_remove (const char *name) diff --git a/lib/shadowlog_internal.h b/lib/shadowlog_internal.h index 72a0e0c..f972a3c 100644 --- a/lib/shadowlog_internal.h +++ b/lib/shadowlog_internal.h @@ -2,6 +2,6 @@ #define _SHADOWLOG_INTERNAL_H extern const char *shadow_progname; /* Program name showed in error messages */ -extern FILE *shadow_logfd; /* file descripter to which error messages are printed */ +extern FILE *shadow_logfd; /* file descriptor to which error messages are printed */ #endif /* _SHADOWLOG_INTERNAL_H */ diff --git a/lib/shadowmem.c b/lib/shadowmem.c index 82f99e7..9d8f193 100644 --- a/lib/shadowmem.c +++ b/lib/shadowmem.c @@ -16,18 +16,20 @@ #include "defines.h" #include #include + +#include "alloc.h" +#include "memzero.h" #include "shadowio.h" /*@null@*/ /*@only@*/struct spwd *__spw_dup (const struct spwd *spent) { struct spwd *sp; - sp = (struct spwd *) malloc (sizeof *sp); + sp = CALLOC (1, struct spwd); if (NULL == sp) { return NULL; } /* The libc might define other fields. They won't be copied. */ - memset (sp, 0, sizeof *sp); sp->sp_lstchg = spent->sp_lstchg; sp->sp_min = spent->sp_min; sp->sp_max = spent->sp_max; @@ -54,7 +56,8 @@ return sp; } -void spw_free (/*@out@*/ /*@only@*/struct spwd *spent) +void +spw_free(/*@only@*/struct spwd *spent) { if (spent != NULL) { free (spent->sp_namp); diff --git a/lib/shell.c b/lib/shell.c new file mode 100644 index 0000000..25ef3e3 --- /dev/null +++ b/lib/shell.c @@ -0,0 +1,82 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2009 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include "prototypes.h" +#include "defines.h" +#include "string/sprintf.h" + + +extern char **newenvp; +extern size_t newenvc; + +/* + * shell - execute the named program + * + * shell begins by trying to figure out what argv[0] is going to + * be for the named process. The user may pass in that argument, + * or it will be the last pathname component of the file with a + * '-' prepended. + * Then, it executes the named file. + */ + +int shell (const char *file, /*@null@*/const char *arg, char *const envp[]) +{ + int err; + char arg0[1024]; + + if (file == NULL) { + errno = EINVAL; + return errno; + } + + /* + * The argv[0]'th entry is usually the path name, but + * for various reasons the invoker may want to override + * that. So, we determine the 0'th entry only if they + * don't want to tell us what it is themselves. + */ + if (arg == NULL) { + SNPRINTF(arg0, "-%s", Basename(file)); + arg = arg0; + } + + /* + * First we try the direct approach. The system should be + * able to figure out what we are up to without too much + * grief. + */ + (void) execle (file, arg, (char *) NULL, envp); + err = errno; + + if (access (file, R_OK|X_OK) == 0) { + /* + * Assume this is a shell script (with no shebang). + * Interpret it with /bin/sh + */ + (void) execle (SHELL, "sh", "-", file, (char *) NULL, envp); + err = errno; + } + + /* + * Obviously something is really wrong - I can't figure out + * how to execute this stupid shell, so I might as well give + * up in disgust ... + */ + SNPRINTF(arg0, _("Cannot execute %s"), file); + errno = err; + perror (arg0); + return err; +} + diff --git a/lib/sizeof.h b/lib/sizeof.h new file mode 100644 index 0000000..6847068 --- /dev/null +++ b/lib/sizeof.h @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2022-2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIBMISC_SIZEOF_H_ +#define SHADOW_INCLUDE_LIBMISC_SIZEOF_H_ + + +#include + +#include + +#include "must_be.h" + + +#define memberof(T, member) ((T){}.member) +#define WIDTHOF(x) (sizeof(x) * CHAR_BIT) +#define SIZEOF_ARRAY(a) (sizeof(a) + must_be_array(a)) +#define NITEMS(a) (SIZEOF_ARRAY((a)) / sizeof((a)[0])) +#define STRLEN(s) (NITEMS(s) - 1) + + +#endif // include guard diff --git a/lib/spawn.c b/lib/spawn.c index ce1a97d..57a4121 100644 --- a/lib/spawn.c +++ b/lib/spawn.c @@ -17,8 +17,9 @@ #include "shadowlog_internal.h" -int run_command (const char *cmd, const char *argv[], - /*@null@*/const char *envp[], /*@out@*/int *status) +int +run_command(const char *cmd, const char *argv[], + /*@null@*/const char *envp[], int *restrict status) { pid_t pid, wpid; diff --git a/lib/sssd.c b/lib/sssd.c index 786ccd6..fadb378 100644 --- a/lib/sssd.c +++ b/lib/sssd.c @@ -4,8 +4,11 @@ #ifdef USE_SSSD #include +#include #include #include + +#include "alloc.h" #include "exitcodes.h" #include "defines.h" #include "prototypes.h" @@ -19,12 +22,17 @@ int sssd_flush_cache (int dbflags) { int status, code, rv; const char *cmd = "/usr/sbin/sss_cache"; + struct stat sb; char *sss_cache_args = NULL; const char *spawnedArgs[] = {"sss_cache", NULL, NULL}; const char *spawnedEnv[] = {NULL}; int i = 0; - sss_cache_args = malloc(4); + rv = stat(cmd, &sb); + if (rv == -1 && errno == ENOENT) + return 0; + + sss_cache_args = MALLOC(4, char); if (sss_cache_args == NULL) { return -1; } @@ -70,6 +78,6 @@ int sssd_flush_cache (int dbflags) return 0; } #else /* USE_SSSD */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* USE_SSSD */ diff --git a/lib/string/sprintf.c b/lib/string/sprintf.c new file mode 100644 index 0000000..cf3c210 --- /dev/null +++ b/lib/string/sprintf.c @@ -0,0 +1,24 @@ +/* + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include "string/sprintf.h" + +#include +#include +#include + + +extern inline int xasprintf(char **restrict s, const char *restrict fmt, ...); +extern inline int xvasprintf(char **restrict s, const char *restrict fmt, + va_list ap); + +extern inline int snprintf_(char *restrict s, size_t size, + const char *restrict fmt, ...); +extern inline int vsnprintf_(char *restrict s, size_t size, + const char *restrict fmt, va_list ap); diff --git a/lib/string/sprintf.h b/lib/string/sprintf.h new file mode 100644 index 0000000..7485369 --- /dev/null +++ b/lib/string/sprintf.h @@ -0,0 +1,97 @@ +/* + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_SPRINTF_H_ +#define SHADOW_INCLUDE_LIB_SPRINTF_H_ + + +#include + +#include +#include +#include + +#include "attr.h" +#include "defines.h" +#include "sizeof.h" + + +#define SNPRINTF(s, fmt, ...) \ + snprintf_(s, NITEMS(s), fmt __VA_OPT__(,) __VA_ARGS__) + + +format_attr(printf, 2, 3) +inline int xasprintf(char **restrict s, const char *restrict fmt, ...); +format_attr(printf, 2, 0) +inline int xvasprintf(char **restrict s, const char *restrict fmt, va_list ap); + +format_attr(printf, 3, 4) +inline int snprintf_(char *restrict s, size_t size, const char *restrict fmt, + ...); +format_attr(printf, 3, 0) +inline int vsnprintf_(char *restrict s, size_t size, const char *restrict fmt, + va_list ap); + + +inline int +xasprintf(char **restrict s, const char *restrict fmt, ...) +{ + int len; + va_list ap; + + va_start(ap, fmt); + len = xvasprintf(s, fmt, ap); + va_end(ap); + + return len; +} + + +inline int +xvasprintf(char **restrict s, const char *restrict fmt, va_list ap) +{ + int len; + + len = vasprintf(s, fmt, ap); + if (len == -1) { + perror("asprintf"); + exit(EXIT_FAILURE); + } + + return len; +} + + +inline int +snprintf_(char *restrict s, size_t size, const char *restrict fmt, ...) +{ + int len; + va_list ap; + + va_start(ap, fmt); + len = vsnprintf_(s, size, fmt, ap); + va_end(ap); + + return len; +} + + +inline int +vsnprintf_(char *restrict s, size_t size, const char *restrict fmt, va_list ap) +{ + int len; + + len = vsnprintf(s, size, fmt, ap); + if (len == -1) + return -1; + if ((size_t) len >= size) + return -1; + + return len; +} + + +#endif // include guard diff --git a/lib/string/stpecpy.c b/lib/string/stpecpy.c new file mode 100644 index 0000000..9759388 --- /dev/null +++ b/lib/string/stpecpy.c @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#if !defined(HAVE_STPECPY) + +#ident "$Id$" + +#include "string/stpecpy.h" + + +extern inline char *stpecpy(char *dst, char *end, const char *restrict src); + + +#endif // !HAVE_STPECPY diff --git a/lib/string/stpecpy.h b/lib/string/stpecpy.h new file mode 100644 index 0000000..2324baa --- /dev/null +++ b/lib/string/stpecpy.h @@ -0,0 +1,90 @@ +/* + * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_STPECPY_H_ +#define SHADOW_INCLUDE_LIB_STPECPY_H_ + + +#include + +#if !defined(HAVE_STPECPY) + +#include +#include +#include + +#include "attr.h" + + +ATTR_STRING(3) +inline char *stpecpy(char *dst, char *end, const char *restrict src); + + +/* + * SYNOPSIS + * [[gnu::null_terminated_string_arg(3)]] + * char *_Nullable stpecpy(char *_Nullable dst, char end[0], + * const char *restrict src); + * + * ARGUMENTS + * dst Destination buffer where to copy a string. + * + * end Pointer to one after the last element of the buffer + * pointed to by `dst`. Usually, it should be calculated + * as `dst + NITEMS(dst)`. + * + * src Source string to be copied into dst. + * + * DESCRIPTION + * This function copies the string pointed to by src, into a string + * at the buffer pointed to by dst. If the destination buffer, + * limited by a pointer to its end --one after its last element--, + * isn't large enough to hold the copy, the resulting string is + * truncated. + * + * This function can be chained with calls to [v]stpeprintf(). + * + * RETURN VALUE + * dst + strlen(dst) + * • On success, this function returns a pointer to the + * terminating NUL byte. + * + * end + * • If this call truncated the resulting string. + * • If `dst == end` (a previous chained call to these + * functions truncated). + * NULL + * • If `dst == NULL` (a previous chained call to + * [v]stpeprintf() failed). + * + * ERRORS + * This function doesn't set errno. + */ + + +inline char * +stpecpy(char *dst, char *end, const char *restrict src) +{ + bool trunc; + size_t dsize, dlen, slen; + + if (dst == end) + return end; + if (dst == NULL) + return NULL; + + dsize = end - dst; + slen = strnlen(src, dsize); + trunc = (slen == dsize); + dlen = slen - trunc; + + return stpcpy(mempcpy(dst, src, dlen), "") + trunc; +} + + +#endif // !HAVE_STPECPY +#endif // include guard diff --git a/lib/string/stpeprintf.c b/lib/string/stpeprintf.c new file mode 100644 index 0000000..cecd95d --- /dev/null +++ b/lib/string/stpeprintf.c @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#if !defined(HAVE_STPEPRINTF) + +#ident "$Id$" + +#include "string/stpeprintf.h" + +#include + + +extern inline char *stpeprintf(char *dst, char *end, const char *restrict fmt, + ...); +extern inline char *vstpeprintf(char *dst, char *end, const char *restrict fmt, + va_list ap); + + +#endif // !HAVE_STPEPRINTF diff --git a/lib/string/stpeprintf.h b/lib/string/stpeprintf.h new file mode 100644 index 0000000..14ee7b6 --- /dev/null +++ b/lib/string/stpeprintf.h @@ -0,0 +1,120 @@ +/* + * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_STPEPRINTF_H_ +#define SHADOW_INCLUDE_LIB_STPEPRINTF_H_ + + +#include + +#if !defined(HAVE_STPEPRINTF) + +#include +#include +#include + +#include "attr.h" +#include "defines.h" + + +format_attr(printf, 3, 4) +inline char *stpeprintf(char *dst, char *end, const char *restrict fmt, ...); + +format_attr(printf, 3, 0) +inline char *vstpeprintf(char *dst, char *end, const char *restrict fmt, + va_list ap); + + +/* + * SYNOPSIS + * [[gnu::format(printf, 3, 4)]] + * char *_Nullable stpeprintf(char *_Nullable dst, char end[0], + * const char *restrict fmt, ...); + * + * [[gnu::format(printf, 3, 0)]] + * char *_Nullable vstpeprintf(char *_Nullable dst, char end[0], + * const char *restrict fmt, va_list ap); + * + * + * ARGUMENTS + * dst Destination buffer where to write a string. + * + * end Pointer to one after the last element of the buffer + * pointed to by `dst`. Usually, it should be calculated + * as `dst + NITEMS(dst)`. + * + * fmt Format string + * + * ... + * ap Variadic argument list + * + * DESCRIPTION + * These functions are very similar to [v]snprintf(3). + * + * The destination buffer is limited by a pointer to its end --one + * after its last element-- instead of a size. This allows + * chaining calls to it safely, unlike [v]snprintf(3), which is + * difficult to chain without invoking Undefined Behavior. + * + * RETURN VALUE + * dst + strlen(dst) + * • On success, these functions return a pointer to the + * terminating NUL byte. + * + * end + * • If this call truncated the resulting string. + * • If `dst == end` (a previous chained call to these + * functions truncated). + * NULL + * • If this function failed (see ERRORS). + * • If `dst == NULL` (a previous chained call to these + * functions failed). + * + * ERRORS + * These functions may fail for the same reasons as vsnprintf(3). + */ + + +inline char * +stpeprintf(char *dst, char *end, const char *restrict fmt, ...) +{ + char *p; + va_list ap; + + va_start(ap, fmt); + p = vstpeprintf(dst, end, fmt, ap); + va_end(ap); + + return p; +} + + +inline char * +vstpeprintf(char *dst, char *end, const char *restrict fmt, va_list ap) +{ + int len; + ptrdiff_t size; + + if (dst == end) + return end; + if (dst == NULL) + return NULL; + + size = end - dst; + len = vsnprintf(dst, size, fmt, ap); + + if (len == -1) + return NULL; + if (len >= size) + return end; + + return dst + len; +} + + +#endif // !HAVE_STPEPRINTF +#endif // include guard diff --git a/lib/string/strftime.c b/lib/string/strftime.c new file mode 100644 index 0000000..ea1deb3 --- /dev/null +++ b/lib/string/strftime.c @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "strftime.h" diff --git a/lib/string/strftime.h b/lib/string/strftime.h new file mode 100644 index 0000000..bebb31a --- /dev/null +++ b/lib/string/strftime.h @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRFTIME_H_ +#define SHADOW_INCLUDE_LIB_STRFTIME_H_ + + +#include + +#include + +#include "sizeof.h" + + +#define STRFTIME(dst, fmt, ...) strftime(dst, NITEMS(dst), fmt, __VA_ARGS__) + + +#endif // include guard diff --git a/lib/string/strncpy.h b/lib/string/strncpy.h new file mode 100644 index 0000000..fc6fcc9 --- /dev/null +++ b/lib/string/strncpy.h @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_STRNCPY_H_ +#define SHADOW_INCLUDE_LIB_STRNCPY_H_ + + +#include + +#include + +#include "sizeof.h" + + +#define STRNCPY(dst, src) strncpy(dst, src, NITEMS(dst)) + + +#endif // include guard diff --git a/lib/string/strtcpy.c b/lib/string/strtcpy.c new file mode 100644 index 0000000..74de4fc --- /dev/null +++ b/lib/string/strtcpy.c @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2022-2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#include +#include + +#ident "$Id$" + +#include "string/strtcpy.h" + + +extern inline ssize_t strtcpy(char *restrict dst, const char *restrict src, + size_t dsize); diff --git a/lib/string/strtcpy.h b/lib/string/strtcpy.h new file mode 100644 index 0000000..4ff6e11 --- /dev/null +++ b/lib/string/strtcpy.h @@ -0,0 +1,80 @@ +/* + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#ifndef SHADOW_INCLUDE_LIB_STRTCPY_H_ +#define SHADOW_INCLUDE_LIB_STRTCPY_H_ + + +#include + +#include +#include +#include +#include + +#include "attr.h" +#include "defines.h" +#include "sizeof.h" + + +/* + * SYNOPSIS + * [[gnu::null_terminated_string_arg(2)]] + * int STRTCPY(char dst[restrict], const char *restrict src); + * + * ARGUMENTS + * dst Destination buffer where to copy a string. + * src Source string to be copied into dst. + * + * DESCRIPTION + * This macro copies the string pointed to by src, into a string + * at the buffer pointed to by dst. If the destination buffer, + * isn't large enough to hold the copy, the resulting string is + * truncated. The size of the buffer is calculated internally via + * NITEMS(). + * + * RETURN VALUE + * -1 If this call truncated the resulting string. + * + * strlen(dst) + * On success. + * + * ERRORS + * This function doesn't set errno. + */ + + +#define STRTCPY(dst, src) strtcpy(dst, src, NITEMS(dst)) + + +ATTR_STRING(2) +inline ssize_t strtcpy(char *restrict dst, const char *restrict src, + size_t dsize); + + +inline ssize_t +strtcpy(char *restrict dst, const char *restrict src, size_t dsize) +{ + bool trunc; + size_t dlen, slen; + + if (dsize == 0) + return -1; + + slen = strnlen(src, dsize); + trunc = (slen == dsize); + dlen = slen - trunc; + + stpcpy(mempcpy(dst, src, dlen), ""); + + if (trunc) + return -1; + + return slen; +} + + +#endif // include guard diff --git a/lib/string/zustr2stp.h b/lib/string/zustr2stp.h new file mode 100644 index 0000000..152102b --- /dev/null +++ b/lib/string/zustr2stp.h @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_ZUSTR2STP_H_ +#define SHADOW_INCLUDE_LIB_STRING_ZUSTR2STP_H_ + + +#include + +#include +#include + +#include "must_be.h" +#include "sizeof.h" + + +/* + * SYNOPSIS + * char *ZUSTR2STP(char *restrict dst, const char src[restrict]); + * + * ARGUMENTS + * dst Destination buffer. + * src Source null-padded character sequence. + * + * DESCRIPTION + * This macro copies at most NITEMS(src) non-null bytes from the + * array pointed to by src, followed by a null character, to the + * buffer pointed to by dst. + * + * RETURN VALUE + * dst + strlen(dst) + * This function returns a pointer to the terminating NUL + * byte. + * + * CAVEATS + * This function doesn't know the size of the destination buffer. + * It assumes it will always be large enough. Since the size of + * the source buffer is known to the caller, it should make sure to + * allocate a destination buffer of at least `NITEMS(src) + 1`. + * + * EXAMPLES + * char hostname[NITEMS(utmp->ut_host) + 1]; + * + * len = ZUSTR2STP(hostname, utmp->ut_host) - hostname; + * puts(hostname); + */ + + +#define ZUSTR2STP(dst, src) \ +({ \ + static_assert(!is_array(dst) || sizeof(dst) > SIZEOF_ARRAY(src), ""); \ + \ + stpcpy(mempcpy(dst, src, strnlen(src, NITEMS(src))), ""); \ +}) + + +#endif // include guard diff --git a/lib/strtoday.c b/lib/strtoday.c new file mode 100644 index 0000000..dabd5b5 --- /dev/null +++ b/lib/strtoday.c @@ -0,0 +1,77 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include + +#ident "$Id$" + +#include "atoi/str2i.h" +#include "prototypes.h" +#include "getdate.h" + + +/* + * strtoday() now uses get_date() (borrowed from GNU shellutils) + * which can handle many date formats, for example: + * 1970-09-17 # ISO 8601. + * 70-9-17 # This century assumed by default. + * 70-09-17 # Leading zeros are ignored. + * 9/17/72 # Common U.S. writing. + * 24 September 1972 + * 24 Sept 72 # September has a special abbreviation. + * 24 Sep 72 # Three-letter abbreviations always allowed. + * Sep 24, 1972 + * 24-sep-72 + * 24sep72 + */ +long strtoday (const char *str) +{ + time_t t; + bool isnum = true; + const char *s = str; + + /* + * get_date() interprets an empty string as the current date, + * which is not what we expect, unless you're a BOFH :-). + * (useradd sets sp_expire = current date for new lusers) + */ + if ((NULL == str) || ('\0' == *str)) { + return -1; + } + + /* If a numerical value is provided, this is already a number of + * days since EPOCH. + */ + if ('-' == *s) { + s++; + } + while (' ' == *s) { + s++; + } + while (isnum && ('\0' != *s)) { + if (!isdigit (*s)) { + isnum = false; + } + s++; + } + if (isnum) { + long retdate; + if (str2sl(&retdate, str) == -1) + return -2; + return retdate; + } + + t = get_date(str, NULL); + if ((time_t) - 1 == t) { + return -2; + } + return t / DAY; +} diff --git a/lib/sub.c b/lib/sub.c new file mode 100644 index 0000000..d8e2447 --- /dev/null +++ b/lib/sub.c @@ -0,0 +1,69 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include "prototypes.h" +#include "defines.h" +#define MAX_SUBROOT2 "maximum subsystem depth reached\n" +#define BAD_SUBROOT2 "invalid root `%s' for user `%s'\n" +#define NO_SUBROOT2 "no subsystem root `%s' for user `%s'\n" +#define MAX_DEPTH 1024 +/* + * subsystem - change to subsystem root + * + * A subsystem login is indicated by the presence of a "*" as + * the first character of the login shell. The given home + * directory will be used as the root of a new filesystem which + * the user is actually logged into. + */ +void subsystem (const struct passwd *pw) +{ + static int depth = 0; + + /* + * Prevent endless loop on misconfigured systems. + */ + if (++depth > MAX_DEPTH) { + printf (_("Maximum subsystem depth reached\n")); + SYSLOG ((LOG_WARN, MAX_SUBROOT2)); + closelog (); + exit (EXIT_FAILURE); + } + + /* + * The new root directory must begin with a "/" character. + */ + + if (pw->pw_dir[0] != '/') { + printf (_("Invalid root directory '%s'\n"), pw->pw_dir); + SYSLOG ((LOG_WARN, BAD_SUBROOT2, pw->pw_dir, pw->pw_name)); + closelog (); + exit (EXIT_FAILURE); + } + + /* + * The directory must be accessible and the current process + * must be able to change into it. + */ + + if ( (chroot (pw->pw_dir) != 0) + || (chdir ("/") != 0)) { + (void) printf (_("Can't change root directory to '%s'\n"), + pw->pw_dir); + SYSLOG ((LOG_WARN, NO_SUBROOT2, pw->pw_dir, pw->pw_name)); + closelog (); + exit (EXIT_FAILURE); + } +} + diff --git a/lib/subordinateio.c b/lib/subordinateio.c index bd1af26..e7cd4b4 100644 --- a/lib/subordinateio.c +++ b/lib/subordinateio.c @@ -16,6 +16,12 @@ #include #include #include +#include + +#include "alloc.h" +#include "atoi/str2i.h" +#include "string/sprintf.h" + #define ID_SIZE 31 @@ -32,7 +38,7 @@ static /*@null@*/ /*@only@*/void *subordinate_dup (const void *ent) const struct subordinate_range *rangeent = ent; struct subordinate_range *range; - range = (struct subordinate_range *) malloc (sizeof *range); + range = MALLOC(1, struct subordinate_range); if (NULL == range) { return NULL; } @@ -52,7 +58,8 @@ static /*@null@*/ /*@only@*/void *subordinate_dup (const void *ent) * * @ent: pointer to a subordinate_range struct to free. */ -static void subordinate_free (/*@out@*/ /*@only@*/void *ent) +static void +subordinate_free(/*@only@*/void *ent) { struct subordinate_range *rangeent = ent; @@ -69,7 +76,8 @@ static void subordinate_free (/*@out@*/ /*@only@*/void *ent) * in @line, or NULL on failure. Note that the returned value should not * be freed by the caller. */ -static void *subordinate_parse (const char *line) +static void * +subordinate_parse(const char *line) { static struct subordinate_range range; static char rangebuf[1024]; @@ -90,19 +98,8 @@ static void *subordinate_parse (const char *line) * field. The fields are converted into NUL terminated strings. */ - for (cp = rangebuf, i = 0; (i < SUBID_NFIELDS) && (NULL != cp); i++) { - fields[i] = cp; - while (('\0' != *cp) && (':' != *cp)) { - cp++; - } - - if ('\0' != *cp) { - *cp = '\0'; - cp++; - } else { - cp = NULL; - } - } + for (cp = rangebuf, i = 0; (i < SUBID_NFIELDS) && (NULL != cp); i++) + fields[i] = strsep(&cp, ":"); /* * There must be exactly SUBID_NFIELDS colon separated fields or @@ -111,9 +108,9 @@ static void *subordinate_parse (const char *line) if (i != SUBID_NFIELDS || *fields[0] == '\0' || *fields[1] == '\0' || *fields[2] == '\0') return NULL; range.owner = fields[0]; - if (getulong (fields[1], &range.start) == 0) + if (str2ul(&range.start, fields[1]) == -1) return NULL; - if (getulong (fields[2], &range.count) == 0) + if (str2ul(&range.count, fields[2]) == -1) return NULL; return ⦥ @@ -208,7 +205,7 @@ static const struct subordinate_range *find_range(struct commonio_db *db, /* * We only do special handling for these two files */ - if ((0 != strcmp(db->filename, "/etc/subuid")) && (0 != strcmp(db->filename, "/etc/subgid"))) + if ((0 != strcmp(db->filename, SUBUID_FILE)) && (0 != strcmp(db->filename, SUBGID_FILE))) return NULL; /* @@ -218,9 +215,9 @@ static const struct subordinate_range *find_range(struct commonio_db *db, * (It may be specified as literal UID or as another username which * has the same UID as the username we are looking for.) */ - struct passwd *pwd; + char owner_uid_string[33]; uid_t owner_uid; - char owner_uid_string[33] = ""; + struct passwd *pwd; /* Get UID of the username we are looking for */ @@ -230,7 +227,8 @@ static const struct subordinate_range *find_range(struct commonio_db *db, return NULL; } owner_uid = pwd->pw_uid; - sprintf(owner_uid_string, "%lu", (unsigned long int)owner_uid); + if (SNPRINTF(owner_uid_string, "%lu", (unsigned long) owner_uid) == -1) + return NULL; commonio_rewind(db); while ((range = commonio_next(db)) != NULL) { @@ -313,19 +311,16 @@ static bool have_range(struct commonio_db *db, static bool append_range(struct subid_range **ranges, const struct subordinate_range *new, int n) { - if (!*ranges) { - *ranges = malloc(sizeof(struct subid_range)); - if (!*ranges) - return false; - } else { - struct subid_range *alloced; - alloced = realloc(*ranges, (n + 1) * (sizeof(struct subid_range))); - if (!alloced) - return false; - *ranges = alloced; - } - (*ranges)[n].start = new->start; - (*ranges)[n].count = new->count; + struct subid_range *sr; + + sr = REALLOC(*ranges, n + 1, struct subid_range); + if (!sr) + return false; + + sr[n].start = new->start; + sr[n].count = new->count; + *ranges = sr; + return true; } @@ -353,15 +348,19 @@ void free_subordinate_ranges(struct subordinate_range **ranges, int count) */ static int subordinate_range_cmp (const void *p1, const void *p2) { - struct subordinate_range *range1, *range2; + const struct commonio_entry *const *ce1; + const struct commonio_entry *const *ce2; + const struct subordinate_range *range1, *range2; - if ((*(struct commonio_entry **) p1)->eptr == NULL) + ce1 = p1; + range1 = (*ce1)->eptr; + if (range1 == NULL) return 1; - if ((*(struct commonio_entry **) p2)->eptr == NULL) - return -1; - range1 = ((struct subordinate_range *) (*(struct commonio_entry **) p1)->eptr); - range2 = ((struct subordinate_range *) (*(struct commonio_entry **) p2)->eptr); + ce2 = p2; + range2 = (*ce2)->eptr; + if (range2 == NULL) + return -1; if (range1->start < range2->start) return -1; @@ -556,7 +555,7 @@ static int remove_range (struct commonio_db *db, } static struct commonio_db subordinate_uid_db = { - "/etc/subuid", /* filename */ + SUBUID_FILE, /* filename */ &subordinate_ops, /* ops */ NULL, /* fp */ #ifdef WITH_SELINUX @@ -620,17 +619,28 @@ bool have_sub_uids(const char *owner, uid_t start, unsigned long count) return have_range (&subordinate_uid_db, owner, start, count); } +/* + * sub_uid_add: add a subuid range, perhaps through nss. + * + * Return 1 if the range is already present or on success. On error + * return 0 and set errno appropriately. + */ int sub_uid_add (const char *owner, uid_t start, unsigned long count) { - if (get_subid_nss_handle()) - return -EOPNOTSUPP; + if (get_subid_nss_handle()) { + errno = EOPNOTSUPP; + return 0; + } return add_range (&subordinate_uid_db, owner, start, count); } +/* Return 1 on success. on failure, return 0 and set errno appropriately */ int sub_uid_remove (const char *owner, uid_t start, unsigned long count) { - if (get_subid_nss_handle()) - return -EOPNOTSUPP; + if (get_subid_nss_handle()) { + errno = EOPNOTSUPP; + return 0; + } return remove_range (&subordinate_uid_db, owner, start, count); } @@ -652,7 +662,7 @@ uid_t sub_uid_find_free_range(uid_t min, uid_t max, unsigned long count) } static struct commonio_db subordinate_gid_db = { - "/etc/subgid", /* filename */ + SUBGID_FILE, /* filename */ &subordinate_ops, /* ops */ NULL, /* fp */ #ifdef WITH_SELINUX @@ -716,17 +726,28 @@ bool local_sub_gid_assigned(const char *owner) return range_exists (&subordinate_gid_db, owner); } +/* + * sub_gid_add: add a subgid range, perhaps through nss. + * + * Return 1 if the range is already present or on success. On error + * return 0 and set errno appropriately. + */ int sub_gid_add (const char *owner, gid_t start, unsigned long count) { - if (get_subid_nss_handle()) - return -EOPNOTSUPP; + if (get_subid_nss_handle()) { + errno = EOPNOTSUPP; + return 0; + } return add_range (&subordinate_gid_db, owner, start, count); } +/* Return 1 on success. on failure, return 0 and set errno appropriately */ int sub_gid_remove (const char *owner, gid_t start, unsigned long count) { - if (get_subid_nss_handle()) - return -EOPNOTSUPP; + if (get_subid_nss_handle()) { + errno = EOPNOTSUPP; + return 0; + } return remove_range (&subordinate_gid_db, owner, start, count); } @@ -910,7 +931,7 @@ static int append_uids(uid_t **uids, const char *owner, int n) return n; } - ret = realloc(*uids, (n + 1) * sizeof(uid_t)); + ret = REALLOC(*uids, n + 1, uid_t); if (!ret) { free(*uids); return -1; @@ -985,7 +1006,7 @@ bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, b switch (id_type) { case ID_TYPE_UID: if (!sub_uid_lock()) { - printf("Failed loging subuids (errno %d)\n", errno); + printf("Failed locking subuids (errno %d)\n", errno); return false; } if (!sub_uid_open(O_CREAT | O_RDWR)) { @@ -997,7 +1018,7 @@ bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, b break; case ID_TYPE_GID: if (!sub_gid_lock()) { - printf("Failed loging subgids (errno %d)\n", errno); + printf("Failed locking subgids (errno %d)\n", errno); return false; } if (!sub_gid_open(O_CREAT | O_RDWR)) { @@ -1057,7 +1078,7 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ switch (id_type) { case ID_TYPE_UID: if (!sub_uid_lock()) { - printf("Failed loging subuids (errno %d)\n", errno); + printf("Failed locking subuids (errno %d)\n", errno); return false; } if (!sub_uid_open(O_CREAT | O_RDWR)) { @@ -1069,7 +1090,7 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ break; case ID_TYPE_GID: if (!sub_gid_lock()) { - printf("Failed loging subgids (errno %d)\n", errno); + printf("Failed locking subgids (errno %d)\n", errno); return false; } if (!sub_gid_open(O_CREAT | O_RDWR)) { @@ -1097,6 +1118,6 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ } #else /* !ENABLE_SUBIDS */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* !ENABLE_SUBIDS */ diff --git a/lib/sulog.c b/lib/sulog.c new file mode 100644 index 0000000..2ef22b2 --- /dev/null +++ b/lib/sulog.c @@ -0,0 +1,83 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include +#include +#include "prototypes.h" +#include "defines.h" +#include "getdef.h" + +/* + * sulog - log a SU command execution result + */ +void sulog (const char *tty, bool success, const char *oldname, const char *name) +{ + const char *sulog_file; + time_t now; + struct tm *tm; + FILE *fp; + mode_t oldmask; + gid_t oldgid = 0; + + if (success) { + SYSLOG ((LOG_INFO, + "Successful su for %s by %s",name,oldname)); + } else { + SYSLOG ((LOG_NOTICE, + "FAILED su for %s by %s",name,oldname)); + } + + sulog_file = getdef_str ("SULOG_FILE"); + if (NULL == sulog_file) { + return; + } + + oldgid = getgid (); + oldmask = umask (077); + /* Switch to group root to avoid creating the sulog file with + * the wrong group ownership. */ + if ((oldgid != 0) && (setgid (0) != 0)) { + SYSLOG ((LOG_INFO, + "su session not logged to %s", sulog_file)); + /* Continue, but do not switch back to oldgid later */ + oldgid = 0; + } + fp = fopen (sulog_file, "a+"); + (void) umask (oldmask); + if ((oldgid != 0) && (setgid (oldgid) != 0)) { + perror ("setgid"); + SYSLOG ((LOG_ERR, + "can't switch back to group `%d' in sulog", + oldgid)); + /* Do not return if the group permission were raised. */ + exit (EXIT_FAILURE); + } + if (fp == NULL) { + return; /* can't open or create logfile */ + } + + (void) time (&now); + tm = localtime (&now); + + fprintf (fp, "SU %.02d/%.02d %.02d:%.02d %c %s %s-%s\n", + tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, + success ? '+' : '-', tty, oldname, name); + + (void) fflush (fp); + fsync (fileno (fp)); + fclose (fp); + /* TODO: log if failure */ +} + diff --git a/lib/tcbfuncs.c b/lib/tcbfuncs.c index 1ed5d03..b5915fc 100644 --- a/lib/tcbfuncs.c +++ b/lib/tcbfuncs.c @@ -141,7 +141,7 @@ static /*@null@*/ char *shadowtcb_path_rel_existing (const char *name) shadow_progname, link); return NULL; } - link[(size_t)ret] = '\0'; + link[ret] = '\0'; rval = strdup (link); if (NULL == rval) { OUT_OF_MEMORY; @@ -527,7 +527,7 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) struct stat tcbdir_stat; gid_t shadowgid, authgid; struct group *gr; - int fd; + int fd = -1; shadowtcb_status ret = SHADOWTCB_FAILURE; if (!getdef_bool ("USE_TCB")) { @@ -566,14 +566,13 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) shadow_progname, shadow, strerror (errno)); goto out_free; } - close (fd); - if (chown (shadow, 0, authgid) != 0) { + if (fchown (fd, 0, authgid) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), shadow_progname, shadow, strerror (errno)); goto out_free; } - if (chmod (shadow, (mode_t) ((authgid == shadowgid) ? 0600 : 0640)) != 0) { + if (fchmod (fd, (mode_t) ((authgid == shadowgid) ? 0600 : 0640)) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), shadow_progname, shadow, strerror (errno)); @@ -597,6 +596,8 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) } ret = SHADOWTCB_SUCCESS; out_free: + if (fd != -1) + close(fd); free (dir); free (shadow); return ret; diff --git a/lib/time/day_to_str.c b/lib/time/day_to_str.c new file mode 100644 index 0000000..e3e4221 --- /dev/null +++ b/lib/time/day_to_str.c @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2021-2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2024, Tobias Stoeckmann +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "time/day_to_str.h" + + +extern inline void day_to_str(size_t size, char buf[size], long day); diff --git a/lib/time/day_to_str.h b/lib/time/day_to_str.h new file mode 100644 index 0000000..96cec6e --- /dev/null +++ b/lib/time/day_to_str.h @@ -0,0 +1,51 @@ +// SPDX-FileCopyrightText: 2021-2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2024, Tobias Stoeckmann +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_TIME_DAY_TO_STR_H_ +#define SHADOW_INCLUDE_LIB_TIME_DAY_TO_STR_H_ + + +#include + +#include + +#include "defines.h" +#include "sizeof.h" +#include "string/strtcpy.h" + + +#define DAY_TO_STR(str, day) day_to_str(NITEMS(str), str, day) + + +inline void day_to_str(size_t size, char buf[size], long day); + + +inline void +day_to_str(size_t size, char buf[size], long day) +{ + time_t date; + struct tm tm; + + if (day < 0) { + strtcpy(buf, "never", size); + return; + } + + if (__builtin_mul_overflow(day, DAY, &date)) { + strtcpy(buf, "future", size); + return; + } + + if (gmtime_r(&date, &tm) == NULL) { + strtcpy(buf, "future", size); + return; + } + + if (strftime(buf, size, "%Y-%m-%d", &tm) == 0) + strtcpy(buf, "future", size); +} + + +#endif // include guard diff --git a/lib/ttytype.c b/lib/ttytype.c new file mode 100644 index 0000000..a9fb0e8 --- /dev/null +++ b/lib/ttytype.c @@ -0,0 +1,65 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include "prototypes.h" +#include "defines.h" +#include "getdef.h" +/* + * ttytype - set ttytype from port to terminal type mapping database + */ +void ttytype (const char *line) +{ + FILE *fp; + char buf[BUFSIZ]; + const char *typefile; + char *cp; + char type[1024] = ""; + char port[1024]; + + if (getenv ("TERM") != NULL) { + return; + } + typefile = getdef_str ("TTYTYPE_FILE"); + if (NULL == typefile) { + return; + } + + fp = fopen (typefile, "r"); + if (NULL == fp) { + if (errno != ENOENT) + perror (typefile); + return; + } + while (fgets (buf, sizeof buf, fp) == buf) { + if (buf[0] == '#') { + continue; + } + + cp = strchr (buf, '\n'); + if (NULL != cp) { + *cp = '\0'; + } + + if ( (sscanf (buf, "%1023s %1023s", type, port) == 2) + && (strcmp (line, port) == 0)) { + break; + } + } + if ((feof (fp) == 0) && (ferror (fp) == 0) && (type[0] != '\0')) { + addenv ("TERM", type); + } + + (void) fclose (fp); +} + diff --git a/lib/tz.c b/lib/tz.c new file mode 100644 index 0000000..83b295c --- /dev/null +++ b/lib/tz.c @@ -0,0 +1,58 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1991 - 1994, Chip Rosenthal + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifndef USE_PAM + +#ident "$Id$" + +#include +#include +#include "defines.h" +#include "prototypes.h" +#include "getdef.h" + +/* + * tz - return local timezone name + * + * tz() determines the name of the local timezone by reading the + * contents of the file named by ``fname''. + */ +/*@observer@*/const char *tz (const char *fname) +{ + FILE *fp = NULL; + static char tzbuf[BUFSIZ]; + const char *def_tz = "TZ=CST6CDT"; + + fp = fopen (fname, "r"); + if ( (NULL == fp) + || (fgets (tzbuf, sizeof (tzbuf), fp) == NULL)) { + def_tz = getdef_str ("ENV_TZ"); + if ((NULL == def_tz) || ('/' == def_tz[0])) { + def_tz = "TZ=CST6CDT"; + } + + strcpy (tzbuf, def_tz); + } else { + /* Remove optional trailing '\n'. */ + tzbuf[strcspn (tzbuf, "\n")] = '\0'; + } + + if (NULL != fp) { + (void) fclose (fp); + } + + return tzbuf; +} +#else /* !USE_PAM */ +extern int ISO_C_forbids_an_empty_translation_unit; +#endif /* !USE_PAM */ + diff --git a/lib/ulimit.c b/lib/ulimit.c new file mode 100644 index 0000000..45a184a --- /dev/null +++ b/lib/ulimit.c @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include "prototypes.h" + +int set_filesize_limit (int blocks) +{ + int ret = -1; + struct rlimit rlimit_fsize; + + rlimit_fsize.rlim_cur = 512L * blocks; + rlimit_fsize.rlim_max = rlimit_fsize.rlim_cur; + ret = setrlimit (RLIMIT_FSIZE, &rlimit_fsize); + + return ret; +} + diff --git a/lib/user_busy.c b/lib/user_busy.c new file mode 100644 index 0000000..a622376 --- /dev/null +++ b/lib/user_busy.c @@ -0,0 +1,269 @@ +/* + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id: $" + +#include +#include +#include +#include +#include +#include +#include "defines.h" +#include "prototypes.h" +#ifdef ENABLE_SUBIDS +#include "subordinateio.h" +#endif /* ENABLE_SUBIDS */ +#include "shadowlog.h" +#include "string/sprintf.h" + + +#ifdef __linux__ +static int check_status (const char *name, const char *sname, uid_t uid); +static int user_busy_processes (const char *name, uid_t uid); +#else /* !__linux__ */ +static int user_busy_utmp (const char *name); +#endif /* !__linux__ */ + +/* + * user_busy - check if a user is currently running processes + */ +int user_busy (const char *name, uid_t uid) +{ + /* There are no standard ways to get the list of processes. + * An option could be to run an external tool (ps). + */ +#ifdef __linux__ + /* On Linux, directly parse /proc */ + return user_busy_processes (name, uid); +#else /* !__linux__ */ + /* If we cannot rely on /proc, check if there is a record in utmp + * indicating that the user is still logged in */ + return user_busy_utmp (name); +#endif /* !__linux__ */ +} + + +#ifndef __linux__ +static int +user_busy_utmp(const char *name) +{ + struct utmpx *utent; + + setutxent(); + while ((utent = getutxent()) != NULL) + { + if (utent->ut_type != USER_PROCESS) { + continue; + } + if (strncmp (utent->ut_user, name, sizeof utent->ut_user) != 0) { + continue; + } + if (kill (utent->ut_pid, 0) != 0) { + continue; + } + + fprintf (log_get_logfd(), + _("%s: user %s is currently logged in\n"), + log_get_progname(), name); + return 1; + } + + return 0; +} +#endif /* !__linux__ */ + + +#ifdef __linux__ +#ifdef ENABLE_SUBIDS +#define in_parentuid_range(uid) ((uid) >= parentuid && (uid) < parentuid + range) +static int different_namespace (const char *sname) +{ + /* 41: /proc/xxxxxxxxxx/task/xxxxxxxxxx/ns/user + \0 */ + char path[41]; + char buf[512], buf2[512]; + ssize_t llen1, llen2; + + SNPRINTF(path, "/proc/%s/ns/user", sname); + + if ((llen1 = readlink (path, buf, sizeof(buf))) == -1) + return 0; + + if ((llen2 = readlink ("/proc/self/ns/user", buf2, sizeof(buf2))) == -1) + return 0; + + if (llen1 == llen2 && memcmp (buf, buf2, llen1) == 0) + return 0; /* same namespace */ + + return 1; +} +#endif /* ENABLE_SUBIDS */ + + +static int check_status (const char *name, const char *sname, uid_t uid) +{ + /* 40: /proc/xxxxxxxxxx/task/xxxxxxxxxx/status + \0 */ + char status[40]; + char line[1024]; + FILE *sfile; + + SNPRINTF(status, "/proc/%s/status", sname); + + sfile = fopen (status, "r"); + if (NULL == sfile) { + return 0; + } + while (fgets (line, sizeof (line), sfile) == line) { + if (strncmp (line, "Uid:\t", 5) == 0) { + unsigned long ruid, euid, suid; + + assert (uid == (unsigned long) uid); + (void) fclose (sfile); + if (sscanf (line, + "Uid:\t%lu\t%lu\t%lu\n", + &ruid, &euid, &suid) == 3) { + if ( (ruid == (unsigned long) uid) + || (euid == (unsigned long) uid) + || (suid == (unsigned long) uid) ) { + return 1; + } +#ifdef ENABLE_SUBIDS + if ( different_namespace (sname) + && ( have_sub_uids(name, ruid, 1) + || have_sub_uids(name, euid, 1) + || have_sub_uids(name, suid, 1)) + ) { + return 1; + } +#endif /* ENABLE_SUBIDS */ + } else { + /* Ignore errors. This is just a best effort. */ + } + return 0; + } + } + (void) fclose (sfile); + return 0; +} + +static int user_busy_processes (const char *name, uid_t uid) +{ + DIR *proc; + DIR *task_dir; + char *tmp_d_name; + /* 22: /proc/xxxxxxxxxx/task + \0 */ + char task_path[22]; + char root_path[22]; + pid_t pid; + struct stat sbroot; + struct stat sbroot_process; + struct dirent *ent; + +#ifdef ENABLE_SUBIDS + sub_uid_open (O_RDONLY); +#endif /* ENABLE_SUBIDS */ + + proc = opendir ("/proc"); + if (proc == NULL) { + perror ("opendir /proc"); +#ifdef ENABLE_SUBIDS + sub_uid_close(); +#endif + return 0; + } + if (stat ("/", &sbroot) != 0) { + perror ("stat (\"/\")"); + (void) closedir (proc); +#ifdef ENABLE_SUBIDS + sub_uid_close(); +#endif + return 0; + } + + while ((ent = readdir (proc)) != NULL) { + tmp_d_name = ent->d_name; + /* + * Ingo Molnar's patch introducing NPTL for 2.4 hides + * threads in the /proc directory by prepending a period. + * This patch is applied by default in some RedHat + * kernels. + */ + if ( (strcmp (tmp_d_name, ".") == 0) + || (strcmp (tmp_d_name, "..") == 0)) { + continue; + } + if (*tmp_d_name == '.') { + tmp_d_name++; + } + + /* Check if this is a valid PID */ + if (get_pid(tmp_d_name, &pid) == -1) { + continue; + } + + /* Check if the process is in our chroot */ + SNPRINTF(root_path, "/proc/%lu/root", (unsigned long) pid); + if (stat (root_path, &sbroot_process) != 0) { + continue; + } + if ( (sbroot.st_dev != sbroot_process.st_dev) + || (sbroot.st_ino != sbroot_process.st_ino)) { + continue; + } + + if (check_status (name, tmp_d_name, uid) != 0) { + (void) closedir (proc); +#ifdef ENABLE_SUBIDS + sub_uid_close(); +#endif + fprintf (log_get_logfd(), + _("%s: user %s is currently used by process %d\n"), + log_get_progname(), name, pid); + return 1; + } + + SNPRINTF(task_path, "/proc/%lu/task", (unsigned long) pid); + task_dir = opendir (task_path); + if (task_dir != NULL) { + while ((ent = readdir (task_dir)) != NULL) { + pid_t tid; + if (get_pid(ent->d_name, &tid) == -1) { + continue; + } + if (tid == pid) { + continue; + } + if (check_status (name, task_path+6, uid) != 0) { + (void) closedir (proc); + (void) closedir (task_dir); +#ifdef ENABLE_SUBIDS + sub_uid_close(); +#endif + fprintf (log_get_logfd(), + _("%s: user %s is currently used by process %d\n"), + log_get_progname(), name, pid); + return 1; + } + } + (void) closedir (task_dir); + } else { + /* Ignore errors. This is just a best effort */ + } + } + + (void) closedir (proc); +#ifdef ENABLE_SUBIDS + sub_uid_close(); +#endif /* ENABLE_SUBIDS */ + return 0; +} +#endif /* __linux__ */ + diff --git a/lib/utent.c b/lib/utent.c deleted file mode 100644 index d5e6dae..0000000 --- a/lib/utent.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1993 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifndef HAVE_GETUTENT - -#include "defines.h" -#include -#include -#include - -#ifndef lint -static char rcsid[] = "$Id$"; -#endif - -static int utmp_fd = -1; -static struct utmp utmp_buf; - -/* - * setutent - open or rewind the utmp file - */ - -void setutent (void) -{ - if (utmp_fd == -1) - if ((utmp_fd = open (_UTMP_FILE, O_RDWR)) == -1) - utmp_fd = open (_UTMP_FILE, O_RDONLY); - - if (utmp_fd != -1) - lseek (utmp_fd, (off_t) 0L, SEEK_SET); -} - -/* - * endutent - close the utmp file - */ - -void endutent (void) -{ - if (utmp_fd != -1) - close (utmp_fd); - - utmp_fd = -1; -} - -/* - * getutent - get the next record from the utmp file - */ - -struct utmp *getutent (void) -{ - if (utmp_fd == -1) - setutent (); - - if (utmp_fd == -1) - return 0; - - if (read (utmp_fd, &utmp_buf, sizeof utmp_buf) != sizeof utmp_buf) - return 0; - - return &utmp_buf; -} -#else -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif diff --git a/lib/utmp.c b/lib/utmp.c new file mode 100644 index 0000000..08e9b62 --- /dev/null +++ b/lib/utmp.c @@ -0,0 +1,434 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#include "defines.h" +#include "prototypes.h" +#include "getdef.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "alloc.h" +#include "sizeof.h" +#include "string/strncpy.h" +#include "string/strtcpy.h" +#include "string/zustr2stp.h" + +#ident "$Id$" + + +#define UTX_LINESIZE NITEMS(memberof(struct utmpx, ut_line)) + + +/* + * is_my_tty -- determine if "tty" is the same TTY stdin is using + */ +static bool +is_my_tty(const char tty[UTX_LINESIZE]) +{ + char full_tty[STRLEN("/dev/") + UTX_LINESIZE + 1]; + /* tmptty shall be bigger than full_tty */ + static char tmptty[sizeof(full_tty) + 1]; + + full_tty[0] = '\0'; + if (tty[0] != '/') + strcpy (full_tty, "/dev/"); + strncat(full_tty, tty, UTX_LINESIZE); + + if ('\0' == tmptty[0]) { + const char *tname = ttyname (STDIN_FILENO); + if (NULL != tname) + STRTCPY(tmptty, tname); + } + + if ('\0' == tmptty[0]) { + (void) puts (_("Unable to determine your tty name.")); + exit (EXIT_FAILURE); + } + + return strcmp (full_tty, tmptty) == 0; +} + + +/* + * failtmp - update the cumulative failure log + * + * failtmp updates the (struct utmpx) formatted failure log which + * maintains a record of all login failures. + */ +static void +failtmp(const char *username, const struct utmpx *failent) +{ + const char *ftmp; + int fd; + + /* + * Get the name of the failure file. If no file has been defined + * in login.defs, don't do this. + */ + + ftmp = getdef_str ("FTMP_FILE"); + if (NULL == ftmp) { + return; + } + + /* + * Open the file for append. It must already exist for this + * feature to be used. + */ + + fd = open (ftmp, O_WRONLY | O_APPEND); + if (-1 == fd) { + if (errno != ENOENT) { + SYSLOG ((LOG_WARN, + "Can't append failure of user %s to %s: %m", + username, ftmp)); + } + return; + } + + /* + * Append the new failure record and close the log file. + */ + + if (write_full(fd, failent, sizeof *failent) == -1) { + goto err_write; + } + + if (close (fd) != 0 && errno != EINTR) { + goto err_close; + } + + return; + +err_write: + { + int saved_errno = errno; + (void) close (fd); + errno = saved_errno; + } +err_close: + SYSLOG ((LOG_WARN, + "Can't append failure of user %s to %s: %m", + username, ftmp)); +} + + +/* + * get_current_utmp - return the most probable utmp entry for the current + * session + * + * The utmp file is scanned for an entry with the same process ID. + * 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 utmpx + * structure has a ut_id field, this field should be used to update + * the entry information. + * + * Return NULL if no entries exist in utmp for the current process. + */ +static /*@null@*/ /*@only@*/struct utmpx * +get_current_utmp(void) +{ + struct utmpx *ut; + struct utmpx *ret = NULL; + + setutxent(); + + /* First, try to find a valid utmp entry for this process. */ + while ((ut = getutxent()) != NULL) { + if ( (ut->ut_pid == getpid ()) + && ('\0' != ut->ut_id[0]) + && ( (LOGIN_PROCESS == ut->ut_type) + || (USER_PROCESS == ut->ut_type)) + /* A process may have failed to close an entry + * Check if this entry refers to the current tty */ + && is_my_tty(ut->ut_line)) + { + break; + } + } + + if (NULL != ut) { + ret = XMALLOC(1, struct utmpx); + memcpy (ret, ut, sizeof (*ret)); + } + + endutxent(); + + return ret; +} + + +int +get_session_host(char **out) +{ + int ret = 0; + struct utmpx *ut; + + ut = get_current_utmp(); + +#if defined(HAVE_STRUCT_UTMPX_UT_HOST) + if ((ut != NULL) && (ut->ut_host[0] != '\0')) { + char *hostname; + + hostname = XMALLOC(sizeof(ut->ut_host) + 1, char); + ZUSTR2STP(hostname, ut->ut_host); + *out = hostname; + free (ut); + } else { + *out = NULL; + ret = -2; + } +#else + *out = NULL; + ret = -2; +#endif + + return ret; +} + + +#if !defined(USE_PAM) && !defined(HAVE_UPDWTMPX) +/* + * Some systems already have updwtmpx(). Others + * don't, so we re-implement these functions if necessary. + */ +static void +updwtmpx(const char *filename, const struct utmpx *ut) +{ + int fd; + + fd = open (filename, O_APPEND | O_WRONLY, 0); + if (fd >= 0) { + write_full(fd, ut, sizeof(*ut)); + close (fd); + } +} +#endif + + +/* + * prepare_utmp - prepare an utmp entry so that it can be logged in a + * utmp/wtmp file. + * + * It accepts an utmp entry in input (ut) to return an entry with + * the right ut_id. This is typically an entry returned by + * get_current_utmp + * If ut is NULL, ut_id will be forged based on the line argument. + * + * The ut_host field of the input structure may also be kept, and is + * used to define the ut_addr/ut_addr_v6 fields. (if these fields + * exist) + * + * Other fields are discarded and filed with new values (if they + * exist). + * + * The returned structure shall be freed by the caller. + */ +static /*@only@*/struct utmpx * +prepare_utmp(const char *name, const char *line, const char *host, + /*@null@*/const struct utmpx *ut) +{ + char *hostname = NULL; + struct utmpx *utent; + struct timeval tv; + + assert (NULL != name); + assert (NULL != line); + + + + if ( (NULL != host) + && ('\0' != host[0])) { + hostname = XMALLOC(strlen(host) + 1, char); + strcpy (hostname, host); +#if defined(HAVE_STRUCT_UTMPX_UT_HOST) + } else if ( (NULL != ut) + && ('\0' != ut->ut_host[0])) { + hostname = XMALLOC(NITEMS(ut->ut_host) + 1, char); + ZUSTR2STP(hostname, ut->ut_host); +#endif + } + + if (strncmp(line, "/dev/", 5) == 0) { + line += 5; + } + + + utent = XCALLOC(1, struct utmpx); + + + utent->ut_type = USER_PROCESS; + utent->ut_pid = getpid (); + STRNCPY(utent->ut_line, line); + if (NULL != ut) { + STRNCPY(utent->ut_id, ut->ut_id); + } else { + /* XXX - assumes /dev/tty?? */ + STRNCPY(utent->ut_id, line + 3); + } +#if defined(HAVE_STRUCT_UTMPX_UT_NAME) + STRNCPY(utent->ut_name, name); +#endif + STRNCPY(utent->ut_user, name); + if (NULL != hostname) { + struct addrinfo *info = NULL; +#if defined(HAVE_STRUCT_UTMPX_UT_HOST) + STRNCPY(utent->ut_host, hostname); +#endif +#if defined(HAVE_STRUCT_UTMPX_UT_SYSLEN) + utent->ut_syslen = MIN (strlen (hostname), + sizeof (utent->ut_host)); +#endif +#if defined(HAVE_STRUCT_UTMPX_UT_ADDR) || defined(HAVE_STRUCT_UTMPX_UT_ADDR_V6) + if (getaddrinfo (hostname, NULL, NULL, &info) == 0) { + /* getaddrinfo might not be reliable. + * Just try to log what may be useful. + */ + if (info->ai_family == AF_INET) { + struct sockaddr_in *sa = + (struct sockaddr_in *) info->ai_addr; +# if defined(HAVE_STRUCT_UTMPX_UT_ADDR) + memcpy (&(utent->ut_addr), + &(sa->sin_addr), + MIN (sizeof (utent->ut_addr), + sizeof (sa->sin_addr))); +# endif +# if defined(HAVE_STRUCT_UTMPX_UT_ADDR_V6) + memcpy (utent->ut_addr_v6, + &(sa->sin_addr), + MIN (sizeof (utent->ut_addr_v6), + sizeof (sa->sin_addr))); + } else if (info->ai_family == AF_INET6) { + struct sockaddr_in6 *sa = + (struct sockaddr_in6 *) info->ai_addr; + memcpy (utent->ut_addr_v6, + &(sa->sin6_addr), + MIN (sizeof (utent->ut_addr_v6), + sizeof (sa->sin6_addr))); +# endif + } + freeaddrinfo (info); + } +#endif + free (hostname); + } + /* ut_exit is only for DEAD_PROCESS */ + utent->ut_session = getsid (0); + if (gettimeofday (&tv, NULL) == 0) { +#if defined(HAVE_STRUCT_UTMPX_UT_TIME) + utent->ut_time = tv.tv_sec; +#endif +#if defined(HAVE_STRUCT_UTMPX_UT_XTIME) + utent->ut_xtime = tv.tv_usec; +#endif + utent->ut_tv.tv_sec = tv.tv_sec; + utent->ut_tv.tv_usec = tv.tv_usec; + } + + return utent; +} + + +/* + * setutmp - Update an entry in utmp and log an entry in wtmp + * + * Return 1 on failure and 0 on success. + */ +static int +setutmp(struct utmpx *ut) +{ + int err = 0; + + assert (NULL != ut); + + setutxent(); + if (pututxline(ut) == NULL) { + err = 1; + } + endutxent(); + +#if !defined(USE_PAM) + /* This is done by pam_lastlog */ + updwtmpx(_WTMP_FILE, ut); +#endif + + return err; +} + + +int +update_utmp(const char *user, const char *tty, const char *host) +{ + struct utmpx *utent, *ut; + + utent = get_current_utmp (); + ut = prepare_utmp (user, tty, host, utent); + + (void) setutmp (ut); /* make entry in the utmp & wtmp files */ + + free(utent); + free(ut); + + return 0; +} + + +void +record_failure(const char *failent_user, const char *tty, const char *hostname) +{ + struct utmpx *utent, *failent; + + if (getdef_str ("FTMP_FILE") != NULL) { + utent = get_current_utmp (); + failent = prepare_utmp (failent_user, tty, hostname, utent); + failtmp (failent_user, failent); + free (utent); + free (failent); + } +} + + +unsigned long +active_sessions_count(const char *name, unsigned long limit) +{ + struct utmpx *ut; + unsigned long count = 0; + + setutxent(); + while ((ut = getutxent())) + { + if (USER_PROCESS != ut->ut_type) { + continue; + } + if ('\0' == ut->ut_user[0]) { + continue; + } + if (strncmp (name, ut->ut_user, sizeof (ut->ut_user)) != 0) { + continue; + } + count++; + if (count > limit) { + break; + } + } + endutxent(); + + return count; +} diff --git a/lib/valid.c b/lib/valid.c new file mode 100644 index 0000000..326635f --- /dev/null +++ b/lib/valid.c @@ -0,0 +1,82 @@ +/* + * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ident "$Id$" + +#include +#include +#include "prototypes.h" +#include "defines.h" +#include +/* + * valid - compare encrypted passwords + * + * Valid() compares the DES encrypted password from the password file + * against the password which the user has entered after it has been + * encrypted using the same salt as the original. Entries which do + * not have a password file entry have a NULL pw_name field and this + * is used to indicate that a dummy salt must be used to encrypt the + * password anyway. + */ +bool valid (const char *password, const struct passwd *ent) +{ + const char *encrypted; + /*@observer@*/const char *salt; + + /* + * Start with blank or empty password entries. Always encrypt + * a password if no such user exists. Only if the ID exists and + * the password is really empty do you return quickly. This + * routine is meant to waste CPU time. + */ + + if ((NULL != ent->pw_name) && ('\0' == ent->pw_passwd[0])) { + if ('\0' == password[0]) { + return true; /* user entered nothing */ + } else { + return false; /* user entered something! */ + } + } + + /* + * If there is no entry then we need a salt to use. + */ + + if ((NULL == ent->pw_name) || ('\0' == ent->pw_passwd[0])) { + salt = "xx"; + } else { + salt = ent->pw_passwd; + } + + /* + * Now, perform the encryption using the salt from before on + * the users input. Since we always encrypt the string, it + * should be very difficult to determine if the user exists by + * looking at execution time. + */ + + encrypted = pw_encrypt (password, salt); + + /* + * One last time we must deal with there being no password file + * entry for the user. We use the pw_name == NULL idiom to + * cause non-existent users to not be validated. + */ + + if ( (NULL != ent->pw_name) + && (NULL != encrypted) + && (strcmp (encrypted, ent->pw_passwd) == 0)) { + return true; + } else { + return false; + } +} + diff --git a/lib/write_full.c b/lib/write_full.c new file mode 100644 index 0000000..4ef902c --- /dev/null +++ b/lib/write_full.c @@ -0,0 +1,77 @@ +/* + * SPDX-FileCopyrightText: 2023, Christian Göttsche + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#ident "$Id$" + +#include +#include + +#include "prototypes.h" + + +/* + * SYNOPSIS + * int write_full(int fd, const void *buf, size_t count); + * + * ARGUMENTS + * fd File descriptor. + * buf Source buffer to write(2) into 'fd'. + * count Size of 'buf'. + * + * DESCRIPTION + * Write 'count' bytes from the buffer starting at 'buf' to the + * file referred to by 'fd'. + * + * This function is similar to write(2), except that it retries + * in case of a short write. + * + * Since this function either performs a full write, or fails, the + * return value is simpler than for write(2). + * + * RETURN VALUE + * 0 On success. + * -1 On error. + * + * ERRORS + * See write(2). + * + * CAVEATS + * This function can still perform partial writes: if the function + * fails in the loop after one or more write(2) calls have + * succeeded, it will report a failure, but some data may have been + * written. In such a case, it's the caller's responsibility to + * make sure that the partial write is not problematic, and + * remediate it if it is --maybe by trying to remove the file--. + */ + + +int +write_full(int fd, const void *buf, size_t count) +{ + ssize_t w; + const unsigned char *p; + + p = buf; + + while (count > 0) { + w = write(fd, p, count); + if (w == -1) { + if (errno == EINTR) + continue; + + return -1; + } + + p += w; + count -= w; + } + + return 0; +} diff --git a/lib/xgetXXbyYY.c b/lib/xgetXXbyYY.c new file mode 100644 index 0000000..7d5e914 --- /dev/null +++ b/lib/xgetXXbyYY.c @@ -0,0 +1,118 @@ +/* + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the name or name_r functions. + */ + +#include +#include +#include +#include + +#include "alloc.h" +#include "prototypes.h" +#include "shadowlog.h" + +#define XFUNCTION_NAME XPREFIX (FUNCTION_NAME) +#define XPREFIX(name) XPREFIX1 (name) +#define XPREFIX1(name) x##name +#define REENTRANT_NAME APPEND_R (FUNCTION_NAME) +#define APPEND_R(name) APPEND_R1 (name) +#define APPEND_R1(name) name##_r +#define STRINGIZE(name) STRINGIZE1 (name) +#define STRINGIZE1(name) #name + +/*@null@*/ /*@only@*/LOOKUP_TYPE *XFUNCTION_NAME (ARG_TYPE ARG_NAME) +{ +#if HAVE_FUNCTION_R + LOOKUP_TYPE *result=NULL; + char *buffer=NULL; + /* we have to start with something */ + size_t length = 0x100; + + result = MALLOC(1, LOOKUP_TYPE); + if (NULL == result) { + goto oom; + } + + while (true) { + int status; + LOOKUP_TYPE *resbuf = NULL; + buffer = XREALLOC(buffer, length, char); + status = REENTRANT_NAME(ARG_NAME, result, buffer, + length, &resbuf); + if ((0 == status) && (resbuf == result)) { + /* Build a result structure that can be freed by + * the shadow *_free functions. */ + LOOKUP_TYPE *ret_result = DUP_FUNCTION(result); + if (NULL == ret_result) { + goto oom; + } + free(buffer); + free(result); + return ret_result; + } + + if (ERANGE != status) { + break; + } + + if (length == SIZE_MAX) { + break; + } + + length = (length <= SIZE_MAX / 4) ? length * 4 : SIZE_MAX; + } + + free(buffer); + free(result); + return NULL; + +#else /* !HAVE_FUNCTION_R */ + + /* No reentrant function. + * Duplicate the structure to avoid other call to overwrite it. + * + * We should also restore the initial structure. But that would be + * overkill. + */ + LOOKUP_TYPE *result = FUNCTION_NAME(ARG_NAME); + + if (result) { + result = DUP_FUNCTION(result); + if (NULL == result) { + goto oom; + } + } + + return result; +#endif + +oom: + fprintf (log_get_logfd(), _("%s: out of memory\n"), + "x" STRINGIZE(FUNCTION_NAME)); + exit (13); +} + diff --git a/lib/xgetgrgid.c b/lib/xgetgrgid.c new file mode 100644 index 0000000..6419196 --- /dev/null +++ b/lib/xgetgrgid.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the getgrgid or getgrgid_r functions. + */ + +#include + +#include "groupio.h" + +#define LOOKUP_TYPE struct group +#define FUNCTION_NAME getgrgid +#define ARG_TYPE gid_t +#define ARG_NAME gid +#define DUP_FUNCTION __gr_dup +#define HAVE_FUNCTION_R 1 + +#include "xgetXXbyYY.c" + diff --git a/lib/xgetgrnam.c b/lib/xgetgrnam.c new file mode 100644 index 0000000..35ad9ee --- /dev/null +++ b/lib/xgetgrnam.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the getgrnam or getgrnam_r functions. + */ + +#include + +#include "groupio.h" + +#define LOOKUP_TYPE struct group +#define FUNCTION_NAME getgrnam +#define ARG_TYPE const char * +#define ARG_NAME name +#define DUP_FUNCTION __gr_dup +#define HAVE_FUNCTION_R 1 + +#include "xgetXXbyYY.c" + diff --git a/lib/xgetpwnam.c b/lib/xgetpwnam.c new file mode 100644 index 0000000..4387e79 --- /dev/null +++ b/lib/xgetpwnam.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the getpwnam or getpwnam_r functions. + */ + +#include + +#include "pwio.h" + +#define LOOKUP_TYPE struct passwd +#define FUNCTION_NAME getpwnam +#define ARG_TYPE const char * +#define ARG_NAME name +#define DUP_FUNCTION __pw_dup +#define HAVE_FUNCTION_R 1 + +#include "xgetXXbyYY.c" + diff --git a/lib/xgetpwuid.c b/lib/xgetpwuid.c new file mode 100644 index 0000000..d663a42 --- /dev/null +++ b/lib/xgetpwuid.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the getpwuid or getpwuid_r functions. + */ + +#include + +#include "pwio.h" + +#define LOOKUP_TYPE struct passwd +#define FUNCTION_NAME getpwuid +#define ARG_TYPE uid_t +#define ARG_NAME uid +#define DUP_FUNCTION __pw_dup +#define HAVE_FUNCTION_R 1 + +#include "xgetXXbyYY.c" + diff --git a/lib/xgetspnam.c b/lib/xgetspnam.c new file mode 100644 index 0000000..ebda94b --- /dev/null +++ b/lib/xgetspnam.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the getspnam or getspnam_r functions. + */ + +#include + +#include "shadowio.h" + +#define LOOKUP_TYPE struct spwd +#define FUNCTION_NAME getspnam +#define ARG_TYPE const char * +#define ARG_NAME name +#define DUP_FUNCTION __spw_dup +#define HAVE_FUNCTION_R (defined HAVE_GETSPNAM_R) + +#include "xgetXXbyYY.c" + diff --git a/lib/xprefix_getpwnam.c b/lib/xprefix_getpwnam.c new file mode 100644 index 0000000..cec0106 --- /dev/null +++ b/lib/xprefix_getpwnam.c @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* + * According to the Linux-PAM documentation: + * + * 4.1. Care about standard library calls + * + * In general, writers of authorization-granting applications should + * assume that each module is likely to call any or all 'libc' functions. + * For 'libc' functions that return pointers to static/dynamically + * allocated structures (ie. the library allocates the memory and the + * user is not expected to 'free()' it) any module call to this function + * is likely to corrupt a pointer previously obtained by the application. + * The application programmer should either re-call such a 'libc' + * function after a call to the Linux-PAM library, or copy the structure + * contents to some safe area of memory before passing control to the + * Linux-PAM library. + * + * Two important function classes that fall into this category are + * getpwnam(3) and syslog(3). + * + * This file provides wrapper to the prefix_getpwnam or prefix_getpwnam_r functions. + */ + +#include + +#include "pwio.h" + +#define LOOKUP_TYPE struct passwd +#define FUNCTION_NAME prefix_getpwnam +#define ARG_TYPE const char * +#define ARG_NAME name +#define DUP_FUNCTION __pw_dup +#define HAVE_FUNCTION_R HAVE_FGETPWENT_R + +#include "xgetXXbyYY.c" + diff --git a/lib/yesno.c b/lib/yesno.c new file mode 100644 index 0000000..029cd81 --- /dev/null +++ b/lib/yesno.c @@ -0,0 +1,87 @@ +/* + * SPDX-FileCopyrightText: 1992 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François + * SPDX-FileCopyrightText: 2023, Alejandro Colomar + * + * SPDX-License-Identifier: BSD-3-Clause + */ + + +#include + +#ident "$Id$" + +#include +#include +#include +#include "prototypes.h" + + +/* + * Synopsis + * bool yes_or_no(bool read_only); + * + * Arguments + * read_only + * In read-only mode, all questions are answered "no". It + * will print "No" to stdout. + * + * Description + * After a yes/no question, this function gets the answer from the + * user. + * + * Calls to this function will normally be preceeded by a prompt on + * stdout, so we should fflush(3). + * + * Return value + * false "no" + * true "yes" + * + * See also + * rpmatch(3) + */ + + +#if !defined(HAVE_RPMATCH) +static int rpmatch(const char *response); +#endif + + +bool +yes_or_no(bool read_only) +{ + bool ret; + char *buf; + size_t size; + + if (read_only) { + puts(_("No")); + return false; + } + + fflush(stdout); + + buf = NULL; + ret = false; + size = 0; + if (getline(&buf, &size, stdin) != -1) + ret = rpmatch(buf) == 1; + + free(buf); + return ret; +} + + +#if !defined(HAVE_RPMATCH) +static int +rpmatch(const char *response) +{ + if (response[0] == 'y' || response[0] == 'Y') + return 1; + + if (response[0] == 'n' || response[0] == 'n') + return 0; + + return -1; +} +#endif diff --git a/libmisc/.indent.pro b/libmisc/.indent.pro deleted file mode 100644 index fe572bb..0000000 --- a/libmisc/.indent.pro +++ /dev/null @@ -1,5 +0,0 @@ --kr --i8 --bad --pcs --l80 diff --git a/libmisc/Makefile.am b/libmisc/Makefile.am deleted file mode 100644 index 3d319cd..0000000 --- a/libmisc/Makefile.am +++ /dev/null @@ -1,80 +0,0 @@ - -EXTRA_DIST = .indent.pro xgetXXbyYY.c - -AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS) - -noinst_LTLIBRARIES = libmisc.la - -libmisc_la_SOURCES = \ - addgrps.c \ - age.c \ - audit_help.c \ - basename.c \ - chkname.c \ - chkname.h \ - chowndir.c \ - chowntty.c \ - cleanup.c \ - cleanup_group.c \ - cleanup_user.c \ - console.c \ - copydir.c \ - date_to_str.c \ - entry.c \ - env.c \ - failure.c \ - failure.h \ - find_new_gid.c \ - find_new_uid.c \ - find_new_sub_gids.c \ - find_new_sub_uids.c \ - getdate.h \ - getdate.y \ - getgr_nam_gid.c \ - getrange.c \ - gettime.c \ - hushed.c \ - idmapping.h \ - idmapping.c \ - isexpired.c \ - limits.c \ - list.c log.c \ - loginprompt.c \ - mail.c \ - motd.c \ - myname.c \ - obscure.c \ - pam_pass.c \ - pam_pass_non_interactive.c \ - prefix_flag.c \ - pwd2spwd.c \ - pwdcheck.c \ - pwd_init.c \ - remove_tree.c \ - rlogin.c \ - root_flag.c \ - salt.c \ - setugid.c \ - setupenv.c \ - shell.c \ - strtoday.c \ - sub.c \ - sulog.c \ - ttytype.c \ - tz.c \ - ulimit.c \ - user_busy.c \ - utmp.c \ - valid.c \ - xgetpwnam.c \ - xgetpwuid.c \ - xgetgrnam.c \ - xgetgrgid.c \ - xgetspnam.c \ - xmalloc.c \ - yesno.c - -if WITH_BTRFS -libmisc_la_SOURCES += btrfs.c -endif - diff --git a/libmisc/Makefile.in b/libmisc/Makefile.in deleted file mode 100644 index 2defd8e..0000000 --- a/libmisc/Makefile.in +++ /dev/null @@ -1,927 +0,0 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2021 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@WITH_BTRFS_TRUE@am__append_1 = btrfs.c -subdir = libmisc -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ - $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ - $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libmisc_la_LIBADD = -am__libmisc_la_SOURCES_DIST = addgrps.c age.c audit_help.c basename.c \ - chkname.c chkname.h chowndir.c chowntty.c cleanup.c \ - cleanup_group.c cleanup_user.c console.c copydir.c \ - date_to_str.c entry.c env.c failure.c failure.h find_new_gid.c \ - find_new_uid.c find_new_sub_gids.c find_new_sub_uids.c \ - getdate.h getdate.y getgr_nam_gid.c getrange.c gettime.c \ - hushed.c idmapping.h idmapping.c isexpired.c limits.c list.c \ - log.c loginprompt.c mail.c motd.c myname.c obscure.c \ - pam_pass.c pam_pass_non_interactive.c prefix_flag.c pwd2spwd.c \ - pwdcheck.c pwd_init.c remove_tree.c rlogin.c root_flag.c \ - salt.c setugid.c setupenv.c shell.c strtoday.c sub.c sulog.c \ - ttytype.c tz.c ulimit.c user_busy.c utmp.c valid.c xgetpwnam.c \ - xgetpwuid.c xgetgrnam.c xgetgrgid.c xgetspnam.c xmalloc.c \ - yesno.c btrfs.c -@WITH_BTRFS_TRUE@am__objects_1 = btrfs.lo -am_libmisc_la_OBJECTS = addgrps.lo age.lo audit_help.lo basename.lo \ - chkname.lo chowndir.lo chowntty.lo cleanup.lo cleanup_group.lo \ - cleanup_user.lo console.lo copydir.lo date_to_str.lo entry.lo \ - env.lo failure.lo find_new_gid.lo find_new_uid.lo \ - find_new_sub_gids.lo find_new_sub_uids.lo getdate.lo \ - getgr_nam_gid.lo getrange.lo gettime.lo hushed.lo idmapping.lo \ - isexpired.lo limits.lo list.lo log.lo loginprompt.lo mail.lo \ - motd.lo myname.lo obscure.lo pam_pass.lo \ - pam_pass_non_interactive.lo prefix_flag.lo pwd2spwd.lo \ - pwdcheck.lo pwd_init.lo remove_tree.lo rlogin.lo root_flag.lo \ - salt.lo setugid.lo setupenv.lo shell.lo strtoday.lo sub.lo \ - sulog.lo ttytype.lo tz.lo ulimit.lo user_busy.lo utmp.lo \ - valid.lo xgetpwnam.lo xgetpwuid.lo xgetgrnam.lo xgetgrgid.lo \ - xgetspnam.lo xmalloc.lo yesno.lo $(am__objects_1) -libmisc_la_OBJECTS = $(am_libmisc_la_OBJECTS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/addgrps.Plo ./$(DEPDIR)/age.Plo \ - ./$(DEPDIR)/audit_help.Plo ./$(DEPDIR)/basename.Plo \ - ./$(DEPDIR)/btrfs.Plo ./$(DEPDIR)/chkname.Plo \ - ./$(DEPDIR)/chowndir.Plo ./$(DEPDIR)/chowntty.Plo \ - ./$(DEPDIR)/cleanup.Plo ./$(DEPDIR)/cleanup_group.Plo \ - ./$(DEPDIR)/cleanup_user.Plo ./$(DEPDIR)/console.Plo \ - ./$(DEPDIR)/copydir.Plo ./$(DEPDIR)/date_to_str.Plo \ - ./$(DEPDIR)/entry.Plo ./$(DEPDIR)/env.Plo \ - ./$(DEPDIR)/failure.Plo ./$(DEPDIR)/find_new_gid.Plo \ - ./$(DEPDIR)/find_new_sub_gids.Plo \ - ./$(DEPDIR)/find_new_sub_uids.Plo ./$(DEPDIR)/find_new_uid.Plo \ - ./$(DEPDIR)/getdate.Plo ./$(DEPDIR)/getgr_nam_gid.Plo \ - ./$(DEPDIR)/getrange.Plo ./$(DEPDIR)/gettime.Plo \ - ./$(DEPDIR)/hushed.Plo ./$(DEPDIR)/idmapping.Plo \ - ./$(DEPDIR)/isexpired.Plo ./$(DEPDIR)/limits.Plo \ - ./$(DEPDIR)/list.Plo ./$(DEPDIR)/log.Plo \ - ./$(DEPDIR)/loginprompt.Plo ./$(DEPDIR)/mail.Plo \ - ./$(DEPDIR)/motd.Plo ./$(DEPDIR)/myname.Plo \ - ./$(DEPDIR)/obscure.Plo ./$(DEPDIR)/pam_pass.Plo \ - ./$(DEPDIR)/pam_pass_non_interactive.Plo \ - ./$(DEPDIR)/prefix_flag.Plo ./$(DEPDIR)/pwd2spwd.Plo \ - ./$(DEPDIR)/pwd_init.Plo ./$(DEPDIR)/pwdcheck.Plo \ - ./$(DEPDIR)/remove_tree.Plo ./$(DEPDIR)/rlogin.Plo \ - ./$(DEPDIR)/root_flag.Plo ./$(DEPDIR)/salt.Plo \ - ./$(DEPDIR)/setugid.Plo ./$(DEPDIR)/setupenv.Plo \ - ./$(DEPDIR)/shell.Plo ./$(DEPDIR)/strtoday.Plo \ - ./$(DEPDIR)/sub.Plo ./$(DEPDIR)/sulog.Plo \ - ./$(DEPDIR)/ttytype.Plo ./$(DEPDIR)/tz.Plo \ - ./$(DEPDIR)/ulimit.Plo ./$(DEPDIR)/user_busy.Plo \ - ./$(DEPDIR)/utmp.Plo ./$(DEPDIR)/valid.Plo \ - ./$(DEPDIR)/xgetgrgid.Plo ./$(DEPDIR)/xgetgrnam.Plo \ - ./$(DEPDIR)/xgetpwnam.Plo ./$(DEPDIR)/xgetpwuid.Plo \ - ./$(DEPDIR)/xgetspnam.Plo ./$(DEPDIR)/xmalloc.Plo \ - ./$(DEPDIR)/yesno.Plo -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = -@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ || -am__yacc_c2h = sed -e s/cc$$/hh/ -e s/cpp$$/hpp/ -e s/cxx$$/hxx/ \ - -e s/c++$$/h++/ -e s/c$$/h/ -YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS) -LTYACCCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(YACC) $(AM_YFLAGS) $(YFLAGS) -AM_V_YACC = $(am__v_YACC_@AM_V@) -am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) -am__v_YACC_0 = @echo " YACC " $@; -am__v_YACC_1 = -YLWRAP = $(top_srcdir)/ylwrap -SOURCES = $(libmisc_la_SOURCES) -DIST_SOURCES = $(am__libmisc_la_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/ylwrap getdate.c -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CSCOPE = @CSCOPE@ -CTAGS = @CTAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ -EGREP = @EGREP@ -ETAGS = @ETAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GREP = @GREP@ -GROUP_NAME_MAX_LENGTH = @GROUP_NAME_MAX_LENGTH@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTLLIBS = @INTLLIBS@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBACL = @LIBACL@ -LIBATTR = @LIBATTR@ -LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ -LIBCRYPT = @LIBCRYPT@ -LIBECONF = @LIBECONF@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBMD = @LIBMD@ -LIBOBJS = @LIBOBJS@ -LIBPAM = @LIBPAM@ -LIBS = @LIBS@ -LIBSELINUX = @LIBSELINUX@ -LIBSEMANAGE = @LIBSEMANAGE@ -LIBSKEY = @LIBSKEY@ -LIBSUBID_ABI = @LIBSUBID_ABI@ -LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ -LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ -LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ -LIBTCB = @LIBTCB@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ -LN_S = @LN_S@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ -MSGMERGE = @MSGMERGE@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -USE_NLS = @USE_NLS@ -VENDORDIR = @VENDORDIR@ -VERSION = @VERSION@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -XMLCATALOG = @XMLCATALOG@ -XML_CATALOG_FILE = @XML_CATALOG_FILE@ -XSLTPROC = @XSLTPROC@ -YACC = @YACC@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -capcmd = @capcmd@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = .indent.pro xgetXXbyYY.c -AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS) -noinst_LTLIBRARIES = libmisc.la -libmisc_la_SOURCES = addgrps.c age.c audit_help.c basename.c chkname.c \ - chkname.h chowndir.c chowntty.c cleanup.c cleanup_group.c \ - cleanup_user.c console.c copydir.c date_to_str.c entry.c env.c \ - failure.c failure.h find_new_gid.c find_new_uid.c \ - find_new_sub_gids.c find_new_sub_uids.c getdate.h getdate.y \ - getgr_nam_gid.c getrange.c gettime.c hushed.c idmapping.h \ - idmapping.c isexpired.c limits.c list.c log.c loginprompt.c \ - mail.c motd.c myname.c obscure.c pam_pass.c \ - pam_pass_non_interactive.c prefix_flag.c pwd2spwd.c pwdcheck.c \ - pwd_init.c remove_tree.c rlogin.c root_flag.c salt.c setugid.c \ - setupenv.c shell.c strtoday.c sub.c sulog.c ttytype.c tz.c \ - ulimit.c user_busy.c utmp.c valid.c xgetpwnam.c xgetpwuid.c \ - xgetgrnam.c xgetgrgid.c xgetspnam.c xmalloc.c yesno.c \ - $(am__append_1) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj .y -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libmisc/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign libmisc/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; \ - locs=`for p in $$list; do echo $$p; done | \ - sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ - sort -u`; \ - test -z "$$locs" || { \ - echo rm -f $${locs}; \ - rm -f $${locs}; \ - } - -libmisc.la: $(libmisc_la_OBJECTS) $(libmisc_la_DEPENDENCIES) $(EXTRA_libmisc_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libmisc_la_OBJECTS) $(libmisc_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addgrps.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/age.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audit_help.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkname.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chowndir.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chowntty.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup_group.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup_user.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copydir.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date_to_str.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entry.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/failure.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_gid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_sub_gids.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_sub_uids.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_uid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgr_nam_gid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrange.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hushed.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idmapping.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isexpired.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loginprompt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/motd.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/myname.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obscure.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pass.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pass_non_interactive.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefix_flag.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd2spwd.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd_init.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwdcheck.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remove_tree.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rlogin.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/root_flag.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/salt.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setugid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setupenv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoday.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sub.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sulog.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ttytype.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tz.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ulimit.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user_busy.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utmp.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetgrgid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetgrnam.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetpwnam.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetpwuid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetspnam.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Plo@am__quote@ # am--include-marker - -$(am__depfiles_remade): - @$(MKDIR_P) $(@D) - @echo '# dummy' >$@-t && $(am__mv) $@-t $@ - -am--depfiles: $(am__depfiles_remade) - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< - -.y.c: - $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -rm -f getdate.c -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -f ./$(DEPDIR)/addgrps.Plo - -rm -f ./$(DEPDIR)/age.Plo - -rm -f ./$(DEPDIR)/audit_help.Plo - -rm -f ./$(DEPDIR)/basename.Plo - -rm -f ./$(DEPDIR)/btrfs.Plo - -rm -f ./$(DEPDIR)/chkname.Plo - -rm -f ./$(DEPDIR)/chowndir.Plo - -rm -f ./$(DEPDIR)/chowntty.Plo - -rm -f ./$(DEPDIR)/cleanup.Plo - -rm -f ./$(DEPDIR)/cleanup_group.Plo - -rm -f ./$(DEPDIR)/cleanup_user.Plo - -rm -f ./$(DEPDIR)/console.Plo - -rm -f ./$(DEPDIR)/copydir.Plo - -rm -f ./$(DEPDIR)/date_to_str.Plo - -rm -f ./$(DEPDIR)/entry.Plo - -rm -f ./$(DEPDIR)/env.Plo - -rm -f ./$(DEPDIR)/failure.Plo - -rm -f ./$(DEPDIR)/find_new_gid.Plo - -rm -f ./$(DEPDIR)/find_new_sub_gids.Plo - -rm -f ./$(DEPDIR)/find_new_sub_uids.Plo - -rm -f ./$(DEPDIR)/find_new_uid.Plo - -rm -f ./$(DEPDIR)/getdate.Plo - -rm -f ./$(DEPDIR)/getgr_nam_gid.Plo - -rm -f ./$(DEPDIR)/getrange.Plo - -rm -f ./$(DEPDIR)/gettime.Plo - -rm -f ./$(DEPDIR)/hushed.Plo - -rm -f ./$(DEPDIR)/idmapping.Plo - -rm -f ./$(DEPDIR)/isexpired.Plo - -rm -f ./$(DEPDIR)/limits.Plo - -rm -f ./$(DEPDIR)/list.Plo - -rm -f ./$(DEPDIR)/log.Plo - -rm -f ./$(DEPDIR)/loginprompt.Plo - -rm -f ./$(DEPDIR)/mail.Plo - -rm -f ./$(DEPDIR)/motd.Plo - -rm -f ./$(DEPDIR)/myname.Plo - -rm -f ./$(DEPDIR)/obscure.Plo - -rm -f ./$(DEPDIR)/pam_pass.Plo - -rm -f ./$(DEPDIR)/pam_pass_non_interactive.Plo - -rm -f ./$(DEPDIR)/prefix_flag.Plo - -rm -f ./$(DEPDIR)/pwd2spwd.Plo - -rm -f ./$(DEPDIR)/pwd_init.Plo - -rm -f ./$(DEPDIR)/pwdcheck.Plo - -rm -f ./$(DEPDIR)/remove_tree.Plo - -rm -f ./$(DEPDIR)/rlogin.Plo - -rm -f ./$(DEPDIR)/root_flag.Plo - -rm -f ./$(DEPDIR)/salt.Plo - -rm -f ./$(DEPDIR)/setugid.Plo - -rm -f ./$(DEPDIR)/setupenv.Plo - -rm -f ./$(DEPDIR)/shell.Plo - -rm -f ./$(DEPDIR)/strtoday.Plo - -rm -f ./$(DEPDIR)/sub.Plo - -rm -f ./$(DEPDIR)/sulog.Plo - -rm -f ./$(DEPDIR)/ttytype.Plo - -rm -f ./$(DEPDIR)/tz.Plo - -rm -f ./$(DEPDIR)/ulimit.Plo - -rm -f ./$(DEPDIR)/user_busy.Plo - -rm -f ./$(DEPDIR)/utmp.Plo - -rm -f ./$(DEPDIR)/valid.Plo - -rm -f ./$(DEPDIR)/xgetgrgid.Plo - -rm -f ./$(DEPDIR)/xgetgrnam.Plo - -rm -f ./$(DEPDIR)/xgetpwnam.Plo - -rm -f ./$(DEPDIR)/xgetpwuid.Plo - -rm -f ./$(DEPDIR)/xgetspnam.Plo - -rm -f ./$(DEPDIR)/xmalloc.Plo - -rm -f ./$(DEPDIR)/yesno.Plo - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/addgrps.Plo - -rm -f ./$(DEPDIR)/age.Plo - -rm -f ./$(DEPDIR)/audit_help.Plo - -rm -f ./$(DEPDIR)/basename.Plo - -rm -f ./$(DEPDIR)/btrfs.Plo - -rm -f ./$(DEPDIR)/chkname.Plo - -rm -f ./$(DEPDIR)/chowndir.Plo - -rm -f ./$(DEPDIR)/chowntty.Plo - -rm -f ./$(DEPDIR)/cleanup.Plo - -rm -f ./$(DEPDIR)/cleanup_group.Plo - -rm -f ./$(DEPDIR)/cleanup_user.Plo - -rm -f ./$(DEPDIR)/console.Plo - -rm -f ./$(DEPDIR)/copydir.Plo - -rm -f ./$(DEPDIR)/date_to_str.Plo - -rm -f ./$(DEPDIR)/entry.Plo - -rm -f ./$(DEPDIR)/env.Plo - -rm -f ./$(DEPDIR)/failure.Plo - -rm -f ./$(DEPDIR)/find_new_gid.Plo - -rm -f ./$(DEPDIR)/find_new_sub_gids.Plo - -rm -f ./$(DEPDIR)/find_new_sub_uids.Plo - -rm -f ./$(DEPDIR)/find_new_uid.Plo - -rm -f ./$(DEPDIR)/getdate.Plo - -rm -f ./$(DEPDIR)/getgr_nam_gid.Plo - -rm -f ./$(DEPDIR)/getrange.Plo - -rm -f ./$(DEPDIR)/gettime.Plo - -rm -f ./$(DEPDIR)/hushed.Plo - -rm -f ./$(DEPDIR)/idmapping.Plo - -rm -f ./$(DEPDIR)/isexpired.Plo - -rm -f ./$(DEPDIR)/limits.Plo - -rm -f ./$(DEPDIR)/list.Plo - -rm -f ./$(DEPDIR)/log.Plo - -rm -f ./$(DEPDIR)/loginprompt.Plo - -rm -f ./$(DEPDIR)/mail.Plo - -rm -f ./$(DEPDIR)/motd.Plo - -rm -f ./$(DEPDIR)/myname.Plo - -rm -f ./$(DEPDIR)/obscure.Plo - -rm -f ./$(DEPDIR)/pam_pass.Plo - -rm -f ./$(DEPDIR)/pam_pass_non_interactive.Plo - -rm -f ./$(DEPDIR)/prefix_flag.Plo - -rm -f ./$(DEPDIR)/pwd2spwd.Plo - -rm -f ./$(DEPDIR)/pwd_init.Plo - -rm -f ./$(DEPDIR)/pwdcheck.Plo - -rm -f ./$(DEPDIR)/remove_tree.Plo - -rm -f ./$(DEPDIR)/rlogin.Plo - -rm -f ./$(DEPDIR)/root_flag.Plo - -rm -f ./$(DEPDIR)/salt.Plo - -rm -f ./$(DEPDIR)/setugid.Plo - -rm -f ./$(DEPDIR)/setupenv.Plo - -rm -f ./$(DEPDIR)/shell.Plo - -rm -f ./$(DEPDIR)/strtoday.Plo - -rm -f ./$(DEPDIR)/sub.Plo - -rm -f ./$(DEPDIR)/sulog.Plo - -rm -f ./$(DEPDIR)/ttytype.Plo - -rm -f ./$(DEPDIR)/tz.Plo - -rm -f ./$(DEPDIR)/ulimit.Plo - -rm -f ./$(DEPDIR)/user_busy.Plo - -rm -f ./$(DEPDIR)/utmp.Plo - -rm -f ./$(DEPDIR)/valid.Plo - -rm -f ./$(DEPDIR)/xgetgrgid.Plo - -rm -f ./$(DEPDIR)/xgetgrnam.Plo - -rm -f ./$(DEPDIR)/xgetpwnam.Plo - -rm -f ./$(DEPDIR)/xgetpwuid.Plo - -rm -f ./$(DEPDIR)/xgetspnam.Plo - -rm -f ./$(DEPDIR)/xmalloc.Plo - -rm -f ./$(DEPDIR)/yesno.Plo - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLTLIBRARIES \ - cscopelist-am ctags ctags-am distclean distclean-compile \ - distclean-generic distclean-libtool distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libmisc/addgrps.c b/libmisc/addgrps.c deleted file mode 100644 index 845d383..0000000 --- a/libmisc/addgrps.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) - -#include "prototypes.h" -#include "defines.h" - -#include -#include -#include -#include "shadowlog.h" - -#ident "$Id$" - -#define SEP ",:" -/* - * Add groups with names from LIST (separated by commas or colons) - * to the supplementary group set. Silently ignore groups which are - * already there. Warning: uses strtok(). - */ -int add_groups (const char *list) -{ - GETGROUPS_T *grouplist, *tmp; - size_t i; - int ngroups; - bool added; - char *token; - char buf[1024]; - int ret; - FILE *shadow_logfd = log_get_logfd(); - - if (strlen (list) >= sizeof (buf)) { - errno = EINVAL; - return -1; - } - strcpy (buf, list); - - i = 16; - for (;;) { - grouplist = (gid_t *) malloc (i * sizeof (GETGROUPS_T)); - if (NULL == grouplist) { - return -1; - } - ngroups = getgroups (i, grouplist); - if ( ( (-1 == ngroups) - && (EINVAL != errno)) - || (i > (size_t)ngroups)) { - /* Unexpected failure of getgroups or successful - * reception of the groups */ - break; - } - /* not enough room, so try allocating a larger buffer */ - free (grouplist); - i *= 2; - } - if (ngroups < 0) { - free (grouplist); - return -1; - } - - added = false; - for (token = strtok (buf, SEP); NULL != token; token = strtok (NULL, SEP)) { - struct group *grp; - - grp = getgrnam (token); /* local, no need for xgetgrnam */ - if (NULL == grp) { - fprintf (shadow_logfd, _("Warning: unknown group %s\n"), - token); - continue; - } - - for (i = 0; i < (size_t)ngroups && grouplist[i] != grp->gr_gid; i++); - - if (i < (size_t)ngroups) { - continue; - } - - if (ngroups >= sysconf (_SC_NGROUPS_MAX)) { - fputs (_("Warning: too many groups\n"), shadow_logfd); - break; - } - tmp = (gid_t *) realloc (grouplist, (size_t)(ngroups + 1) * sizeof (GETGROUPS_T)); - if (NULL == tmp) { - free (grouplist); - return -1; - } - tmp[ngroups] = grp->gr_gid; - ngroups++; - grouplist = tmp; - added = true; - } - - if (added) { - ret = setgroups ((size_t)ngroups, grouplist); - free (grouplist); - return ret; - } - - free (grouplist); - return 0; -} -#else /* HAVE_SETGROUPS && !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* HAVE_SETGROUPS && !USE_PAM */ - diff --git a/libmisc/age.c b/libmisc/age.c deleted file mode 100644 index d10f71b..0000000 --- a/libmisc/age.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include "exitcodes.h" -#include -#include - -#ident "$Id$" - -#ifndef PASSWD_PROGRAM -#define PASSWD_PROGRAM "/bin/passwd" -#endif -/* - * expire - force password change if password expired - * - * expire() calls /bin/passwd to change the user's password - * if it has expired. - */ -int expire (const struct passwd *pw, /*@null@*/const struct spwd *sp) -{ - int status; - pid_t child; - pid_t pid; - - if (NULL == sp) { - return 0; - } - - /* - * See if the user's password has expired, and if so - * force them to change their password. - */ - - status = isexpired (pw, sp); - switch (status) { - case 0: - return 0; - case 1: - (void) fputs (_("Your password has expired."), stdout); - break; - case 2: - (void) fputs (_("Your password is inactive."), stdout); - break; - case 3: - (void) fputs (_("Your login has expired."), stdout); - break; - } - - /* - * Setting the maximum valid period to less than the minimum - * valid period means that the minimum period will never - * occur while the password is valid, so the user can never - * change that password. - */ - - if ((status > 1) || (sp->sp_max < sp->sp_min)) { - (void) puts (_(" Contact the system administrator.")); - exit (EXIT_FAILURE); - } - (void) puts (_(" Choose a new password.")); - (void) fflush (stdout); - - /* - * Close all the files so that unauthorized access won't - * occur. This needs to be done anyway because those files - * might become stale after "passwd" is executed. - */ - - endspent (); - endpwent (); -#ifdef SHADOWGRP - endsgent (); -#endif - endgrent (); - - /* - * Execute the /bin/passwd command. The exit status will be - * examined to see what the result is. If there are any - * errors the routine will exit. This forces the user to - * change their password before being able to use the account. - */ - - pid = fork (); - if (0 == pid) { - int err; - - /* - * Set the UID to be that of the user. This causes - * passwd to work just like it would had they executed - * it from the command line while logged in. - */ -#if defined(HAVE_INITGROUPS) && ! defined(USE_PAM) - if (setup_uid_gid (pw, false) != 0) -#else - if (setup_uid_gid (pw) != 0) -#endif - { - _exit (126); - } - - (void) execl (PASSWD_PROGRAM, PASSWD_PROGRAM, pw->pw_name, (char *) 0); - err = errno; - perror ("Can't execute " PASSWD_PROGRAM); - _exit ((ENOENT == err) ? E_CMD_NOTFOUND : E_CMD_NOEXEC); - } else if ((pid_t) -1 == pid) { - perror ("fork"); - exit (EXIT_FAILURE); - } - - while (((child = wait (&status)) != pid) && (child != (pid_t)-1)); - - if ((child == pid) && (0 == status)) { - return 1; - } - - exit (EXIT_FAILURE); - /*@notreached@*/} - -/* - * agecheck - see if warning is needed for password expiration - * - * agecheck sees how many days until the user's password is going - * to expire and warns the user of the pending password expiration. - */ - -void agecheck (/*@null@*/const struct spwd *sp) -{ - long now = (long) time ((time_t *) 0) / SCALE; - long remain; - - if (NULL == sp) { - return; - } - - /* - * The last, max, and warn fields must be supported or the - * warning period cannot be calculated. - */ - - if ( (-1 == sp->sp_lstchg) - || (-1 == sp->sp_max) - || (-1 == sp->sp_warn)) { - return; - } - - if (0 == sp->sp_lstchg) { - (void) puts (_("You must change your password.")); - return; - } - - remain = sp->sp_lstchg + sp->sp_max - now; - if (remain <= sp->sp_warn) { - remain /= DAY / SCALE; - if (remain > 1) { - (void) printf (_("Your password will expire in %ld days.\n"), - remain); - } else if (1 == remain) { - (void) puts (_("Your password will expire tomorrow.")); - } else if (remain == 0) { - (void) puts (_("Your password will expire today.")); - } - } -} - diff --git a/libmisc/audit_help.c b/libmisc/audit_help.c deleted file mode 100644 index e6c2006..0000000 --- a/libmisc/audit_help.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2005 , Red Hat, Inc. - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * Audit helper functions used throughout shadow - * - */ - -#include - -#ifdef WITH_AUDIT - -#include -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "shadowlog.h" -int audit_fd; - -void audit_help_open (void) -{ - audit_fd = audit_open (); - if (audit_fd < 0) { - /* You get these only when the kernel doesn't have - * audit compiled in. */ - if ( (errno == EINVAL) - || (errno == EPROTONOSUPPORT) - || (errno == EAFNOSUPPORT)) { - return; - } - (void) fputs (_("Cannot open audit interface - aborting.\n"), - log_get_logfd()); - exit (EXIT_FAILURE); - } -} - -/* - * This function will log a message to the audit system using a predefined - * message format. Parameter usage is as follows: - * - * type - type of message: AUDIT_USER_CHAUTHTOK for changing any account - * attributes. - * pgname - program's name - * op - operation. "adding user", "changing finger info", "deleting group" - * name - user's account or group name. If not available use NULL. - * id - uid or gid that the operation is being performed on. This is used - * only when user is NULL. - */ -void audit_logger (int type, unused const char *pgname, const char *op, - const char *name, unsigned int id, - shadow_audit_result result) -{ - if (audit_fd < 0) { - return; - } else { - audit_log_acct_message (audit_fd, type, NULL, op, name, id, - NULL, NULL, NULL, (int) result); - } -} - -void audit_logger_message (const char *message, shadow_audit_result result) -{ - if (audit_fd < 0) { - return; - } else { - audit_log_user_message (audit_fd, - AUDIT_USYS_CONFIG, - message, - NULL, /* hostname */ - NULL, /* addr */ - NULL, /* tty */ - (int) result); - } -} - -#else /* WITH_AUDIT */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* WITH_AUDIT */ - diff --git a/libmisc/basename.c b/libmisc/basename.c deleted file mode 100644 index fe91653..0000000 --- a/libmisc/basename.c +++ /dev/null @@ -1,27 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * basename.c - not worth copyrighting :-). Some versions of Linux libc - * already have basename(), other versions don't. To avoid confusion, - * we will not use the function from libc and use a different name here. - * --marekm - */ - -#include - -#ident "$Id$" - -#include "defines.h" -#include "prototypes.h" -/*@observer@*/const char *Basename (const char *str) -{ - char *cp = strrchr (str, '/'); - - return (NULL != cp) ? cp + 1 : str; -} diff --git a/libmisc/btrfs.c b/libmisc/btrfs.c deleted file mode 100644 index a2563f7..0000000 --- a/libmisc/btrfs.c +++ /dev/null @@ -1,110 +0,0 @@ -#include -#include -#include -#include - -#include "prototypes.h" - -static bool path_exists(const char *p) -{ - struct stat sb; - - return stat(p, &sb) == 0; -} - -static const char *btrfs_cmd(void) -{ - const char *const 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; -} - diff --git a/libmisc/chkname.c b/libmisc/chkname.c deleted file mode 100644 index e31ee8c..0000000 --- a/libmisc/chkname.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2005 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * is_valid_user_name(), is_valid_group_name() - check the new user/group - * name for validity; - * return values: - * true - OK - * false - bad name - */ - -#include - -#ident "$Id$" - -#include -#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 gnu e-regex: - * [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]? - * - * as a non-POSIX, extension, allow "$" as the last char for - * sake of Samba 3.x "add machine script" - * - * Also do not allow fully numeric names or just "." or "..". - */ - int numeric; - - if ('\0' == *name || - ('.' == *name && (('.' == name[1] && '\0' == name[2]) || - '\0' == name[1])) || - !((*name >= 'a' && *name <= 'z') || - (*name >= 'A' && *name <= 'Z') || - (*name >= '0' && *name <= '9') || - *name == '_' || - *name == '.')) { - return false; - } - - numeric = isdigit(*name); - - while ('\0' != *++name) { - if (!((*name >= 'a' && *name <= 'z') || - (*name >= 'A' && *name <= 'Z') || - (*name >= '0' && *name <= '9') || - *name == '_' || - *name == '.' || - *name == '-' || - (*name == '$' && name[1] == '\0') - )) { - return false; - } - numeric &= isdigit(*name); - } - - return !numeric; -} - -bool is_valid_user_name (const char *name) -{ - /* - * User names are limited by whatever utmp can - * handle. - */ - if (strlen (name) > USER_NAME_MAX_LENGTH) { - return false; - } - - return is_valid_name (name); -} - -bool is_valid_group_name (const char *name) -{ - /* - * Arbitrary limit for group names. - * HP-UX 10 limits to 16 characters - */ - if ( (GROUP_NAME_MAX_LENGTH > 0) - && (strlen (name) > GROUP_NAME_MAX_LENGTH)) { - return false; - } - - return is_valid_name (name); -} - diff --git a/libmisc/chkname.h b/libmisc/chkname.h deleted file mode 100644 index 0771347..0000000 --- a/libmisc/chkname.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* $Id$ */ -#ifndef _CHKNAME_H_ -#define _CHKNAME_H_ - -/* - * is_valid_user_name(), is_valid_group_name() - check the new user/group - * name for validity; - * return values: - * true - OK - * false - bad name - */ - -#include "defines.h" - -extern bool is_valid_user_name (const char *name); -extern bool is_valid_group_name (const char *name); - -#endif diff --git a/libmisc/chowndir.c b/libmisc/chowndir.c deleted file mode 100644 index d31618a..0000000 --- a/libmisc/chowndir.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1992 - 1993, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2010 - , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include "prototypes.h" -#include "defines.h" -#include -#include -#include - -static int chown_tree_at (int at_fd, - const char *path, - uid_t old_uid, - uid_t new_uid, - gid_t old_gid, - gid_t new_gid) -{ - DIR *dir; - const struct dirent *ent; - struct stat dir_sb; - int dir_fd, rc = 0; - - dir_fd = openat (at_fd, path, O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC); - if (dir_fd < 0) { - return -1; - } - - dir = fdopendir (dir_fd); - if (!dir) { - (void) close (dir_fd); - return -1; - } - - /* - * Open the directory and read each entry. Every entry is tested - * to see if it is a directory, and if so this routine is called - * recursively. If not, it is checked to see if an ownership - * shall be changed. - */ - while ((ent = readdir (dir))) { - uid_t tmpuid = (uid_t) -1; - gid_t tmpgid = (gid_t) -1; - struct stat ent_sb; - - /* - * Skip the "." and ".." entries - */ - if ( (strcmp (ent->d_name, ".") == 0) - || (strcmp (ent->d_name, "..") == 0)) { - continue; - } - - rc = fstatat (dirfd(dir), ent->d_name, &ent_sb, AT_SYMLINK_NOFOLLOW); - if (rc < 0) { - break; - } - - if (S_ISDIR (ent_sb.st_mode)) { - /* - * Do the entire subdirectory. - */ - rc = chown_tree_at (dirfd(dir), ent->d_name, old_uid, new_uid, old_gid, new_gid); - if (0 != rc) { - break; - } - } - - /* - * By default, the IDs are not changed (-1). - * - * If the file is not owned by the user, the owner is not - * changed. - * - * If the file is not group-owned by the group, the - * group-owner is not changed. - */ - if (((uid_t) -1 == old_uid) || (ent_sb.st_uid == old_uid)) { - tmpuid = new_uid; - } - if (((gid_t) -1 == old_gid) || (ent_sb.st_gid == old_gid)) { - tmpgid = new_gid; - } - if (((uid_t) -1 != tmpuid) || ((gid_t) -1 != tmpgid)) { - rc = fchownat (dirfd(dir), ent->d_name, tmpuid, tmpgid, AT_SYMLINK_NOFOLLOW); - if (0 != rc) { - break; - } - } - } - - /* - * Now do the root of the tree - */ - if ((0 == rc) && (fstat (dirfd(dir), &dir_sb) == 0)) { - uid_t tmpuid = (uid_t) -1; - gid_t tmpgid = (gid_t) -1; - if (((uid_t) -1 == old_uid) || (dir_sb.st_uid == old_uid)) { - tmpuid = new_uid; - } - if (((gid_t) -1 == old_gid) || (dir_sb.st_gid == old_gid)) { - tmpgid = new_gid; - } - if (((uid_t) -1 != tmpuid) || ((gid_t) -1 != tmpgid)) { - rc = fchown (dirfd(dir), tmpuid, tmpgid); - } - } else { - rc = -1; - } - - (void) closedir (dir); - - return rc; -} - -/* - * chown_tree - change ownership of files in a directory tree - * - * chown_dir() walks a directory tree and changes the ownership - * of all files owned by the provided user ID. - * - * Only files owned (resp. group-owned) by old_uid (resp. by old_gid) - * will have their ownership (resp. group-ownership) modified, unless - * old_uid (resp. old_gid) is set to -1. - * - * new_uid and new_gid can be set to -1 to indicate that no owner or - * group-owner shall be changed. - */ -int chown_tree (const char *root, - uid_t old_uid, - uid_t new_uid, - gid_t old_gid, - gid_t new_gid) -{ - return chown_tree_at (AT_FDCWD, root, old_uid, new_uid, old_gid, new_gid); -} diff --git a/libmisc/chowntty.c b/libmisc/chowntty.c deleted file mode 100644 index 8043d8c..0000000 --- a/libmisc/chowntty.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include -#include "getdef.h" -#include "shadowlog.h" - -/* - * chown_tty() sets the login tty to be owned by the new user ID - * with TTYPERM modes - */ - -void chown_tty (const struct passwd *info) -{ - struct group *grent; - gid_t gid; - - /* - * See if login.defs has some value configured for the port group - * ID. Otherwise, use the user's primary group ID. - */ - - grent = getgr_nam_gid (getdef_str ("TTYGROUP")); - if (NULL != grent) { - gid = grent->gr_gid; - gr_free (grent); - } else { - gid = info->pw_gid; - } - - /* - * Change the permissions on the TTY to be owned by the user with - * the group as determined above. - */ - - if ( (fchown (STDIN_FILENO, info->pw_uid, gid) != 0) - || (fchmod (STDIN_FILENO, (mode_t)getdef_num ("TTYPERM", 0600)) != 0)) { - int err = errno; - FILE *shadow_logfd = log_get_logfd(); - - fprintf (shadow_logfd, - _("Unable to change owner or mode of tty stdin: %s"), - strerror (err)); - SYSLOG ((LOG_WARN, - "unable to change owner or mode of tty stdin for user `%s': %s\n", - info->pw_name, strerror (err))); - if (EROFS != err) { - closelog (); - exit (EXIT_FAILURE); - } - } -#ifdef __linux__ - /* - * Please don't add code to chown /dev/vcs* to the user logging in - - * it's a potential security hole. I wouldn't like the previous user - * to hold the file descriptor open and watch my screen. We don't - * have the *BSD revoke() system call yet, and vhangup() only works - * for tty devices (which vcs* is not). --marekm - */ -#endif -} - diff --git a/libmisc/cleanup.c b/libmisc/cleanup.c deleted file mode 100644 index c16f1bc..0000000 --- a/libmisc/cleanup.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include - -#include "prototypes.h" - -/* - * The cleanup_functions stack. - */ -#define CLEANUP_FUNCTIONS 10 - -typedef /*@null@*/void * parg_t; - -static cleanup_function cleanup_functions[CLEANUP_FUNCTIONS]; -static parg_t cleanup_function_args[CLEANUP_FUNCTIONS]; -static pid_t cleanup_pid = 0; - -/* - * - Cleanup functions shall not fail. - * - You should register do_cleanups with atexit. - * - You should add cleanup functions to the stack with add_cleanup when - * an operation is expected to be executed later, and remove it from the - * stack with del_cleanup when it has been executed. - * - **/ - -/* - * do_cleanups - perform the actions stored in the cleanup_functions stack. - * - * Cleanup action are not executed on exit of the processes started by the - * parent (first caller of add_cleanup). - * - * It is intended to be used as: - * atexit (do_cleanups); - */ -void do_cleanups (void) -{ - unsigned int i; - - /* Make sure there were no overflow */ - assert (NULL == cleanup_functions[CLEANUP_FUNCTIONS-1]); - - if (getpid () != cleanup_pid) { - return; - } - - i = CLEANUP_FUNCTIONS; - do { - i--; - if (cleanup_functions[i] != NULL) { - cleanup_functions[i] (cleanup_function_args[i]); - } - } while (i>0); -} - -/* - * add_cleanup - Add a cleanup_function to the cleanup_functions stack. - */ -void add_cleanup (/*@notnull@*/cleanup_function pcf, /*@null@*/void *arg) -{ - unsigned int i; - assert (NULL != pcf); - - assert (NULL == cleanup_functions[CLEANUP_FUNCTIONS-2]); - - if (0 == cleanup_pid) { - cleanup_pid = getpid (); - } - - /* Add the cleanup_function at the end of the stack */ - for (i=0; NULL != cleanup_functions[i]; i++); - cleanup_functions[i] = pcf; - cleanup_function_args[i] = arg; -} - -/* - * del_cleanup - Remove a cleanup_function from the cleanup_functions stack. - */ -void del_cleanup (/*@notnull@*/cleanup_function pcf) -{ - unsigned int i; - assert (NULL != pcf); - - /* Find the pcf cleanup function */ - for (i=0; i - -#include -#include - -#include "defines.h" -#include "groupio.h" -#include "sgroupio.h" -#include "prototypes.h" -#include "shadowlog.h" - -/* - * cleanup_report_add_group - Report failure to add a group to the system - * - * It should be registered when it is decided to add a group to the system. - */ -void cleanup_report_add_group (void *group_name) -{ - const char *name = (const char *)group_name; - - SYSLOG ((LOG_ERR, "failed to add group %s", name)); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), - "", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -/* - * cleanup_report_del_group - Report failure to remove a group from the system - * - * It should be registered when it is decided to remove a group from the system. - */ -void cleanup_report_del_group (void *group_name) -{ - const char *name = (const char *)group_name; - - SYSLOG ((LOG_ERR, "failed to remove group %s", name)); -#ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_GROUP, log_get_progname(), - "", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -void cleanup_report_mod_group (void *cleanup_info) -{ - const struct cleanup_info_mod *info; - info = (const struct cleanup_info_mod *)cleanup_info; - - SYSLOG ((LOG_ERR, - "failed to change %s (%s)", - gr_dbname (), - info->action)); -#ifdef WITH_AUDIT - audit_logger (AUDIT_USER_ACCT, log_get_progname(), - info->audit_msg, - info->name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -#ifdef SHADOWGRP -void cleanup_report_mod_gshadow (void *cleanup_info) -{ - const struct cleanup_info_mod *info; - info = (const struct cleanup_info_mod *)cleanup_info; - - SYSLOG ((LOG_ERR, - "failed to change %s (%s)", - sgr_dbname (), - info->action)); -#ifdef WITH_AUDIT - audit_logger (AUDIT_USER_ACCT, log_get_progname(), - info->audit_msg, - info->name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} -#endif - -/* - * cleanup_report_add_group_group - Report failure to add a group to group - * - * It should be registered when it is decided to add a group to the - * group database. - */ -void cleanup_report_add_group_group (void *group_name) -{ - const char *name = (const char *)group_name; - - SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), - "adding group to /etc/group", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -#ifdef SHADOWGRP -/* - * cleanup_report_add_group_gshadow - Report failure to add a group to gshadow - * - * It should be registered when it is decided to add a group to the - * gshadow database. - */ -void cleanup_report_add_group_gshadow (void *group_name) -{ - const char *name = (const char *)group_name; - - SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), - "adding group to /etc/gshadow", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} -#endif - -/* - * cleanup_report_del_group_group - Report failure to remove a group from the - * regular group database - * - * It should be registered when it is decided to remove a group from the - * regular group database. - */ -void cleanup_report_del_group_group (void *group_name) -{ - const char *name = (const char *)group_name; - - SYSLOG ((LOG_ERR, - "failed to remove group %s from %s", - name, gr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), - "removing group from /etc/group", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -#ifdef SHADOWGRP -/* - * cleanup_report_del_group_gshadow - Report failure to remove a group from - * gshadow - * - * It should be registered when it is decided to remove a group from the - * gshadow database. - */ -void cleanup_report_del_group_gshadow (void *group_name) -{ - const char *name = (const char *)group_name; - - SYSLOG ((LOG_ERR, - "failed to remove group %s from %s", - name, sgr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), - "removing group from /etc/gshadow", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} -#endif - -/* - * cleanup_unlock_group - Unlock the group file - * - * It should be registered after the group file is successfully locked. - */ -void cleanup_unlock_group (unused void *arg) -{ - if (gr_unlock () == 0) { - fprintf (log_get_logfd(), - _("%s: failed to unlock %s\n"), - log_get_progname(), gr_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); -#ifdef WITH_AUDIT - audit_logger_message ("unlocking group file", - SHADOW_AUDIT_FAILURE); -#endif - } -} - -#ifdef SHADOWGRP -/* - * cleanup_unlock_gshadow - Unlock the gshadow file - * - * It should be registered after the gshadow file is successfully locked. - */ -void cleanup_unlock_gshadow (unused void *arg) -{ - if (sgr_unlock () == 0) { - fprintf (log_get_logfd(), - _("%s: failed to unlock %s\n"), - log_get_progname(), sgr_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); -#ifdef WITH_AUDIT - audit_logger_message ("unlocking gshadow file", - SHADOW_AUDIT_FAILURE); -#endif - } -} -#endif - diff --git a/libmisc/cleanup_user.c b/libmisc/cleanup_user.c deleted file mode 100644 index 26675c6..0000000 --- a/libmisc/cleanup_user.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include - -#include "defines.h" -#include "pwio.h" -#include "shadowio.h" -#include "prototypes.h" -#include "shadowlog.h" - -/* - * cleanup_report_add_user - Report failure to add an user to the system - * - * It should be registered when it is decided to add an user to the system. - */ -void cleanup_report_add_user (void *user_name) -{ - const char *name = (const char *)user_name; - - SYSLOG ((LOG_ERR, "failed to add user %s", name)); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, log_get_progname(), - "", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -void cleanup_report_mod_passwd (void *cleanup_info) -{ - const struct cleanup_info_mod *info; - info = (const struct cleanup_info_mod *)cleanup_info; - - SYSLOG ((LOG_ERR, - "failed to change %s (%s)", - pw_dbname (), - info->action)); -#ifdef WITH_AUDIT - audit_logger (AUDIT_USER_ACCT, log_get_progname(), - info->audit_msg, - info->name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -/* - * cleanup_report_add_user_passwd - Report failure to add an user to - * /etc/passwd - * - * It should be registered when it is decided to add an user to the - * /etc/passwd database. - */ -void cleanup_report_add_user_passwd (void *user_name) -{ - const char *name = (const char *)user_name; - - SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, pw_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, log_get_progname(), - "adding user to /etc/passwd", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -/* - * cleanup_report_add_user_shadow - Report failure to add an user to - * /etc/shadow - * - * It should be registered when it is decided to add an user to the - * /etc/shadow database. - */ -void cleanup_report_add_user_shadow (void *user_name) -{ - const char *name = (const char *)user_name; - - SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, spw_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, log_get_progname(), - "adding user to /etc/shadow", - name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif -} - -/* - * cleanup_unlock_passwd - Unlock the /etc/passwd database - * - * It should be registered after the passwd database is successfully locked. - */ -void cleanup_unlock_passwd (unused void *arg) -{ - if (pw_unlock () == 0) { - fprintf (log_get_logfd(), - _("%s: failed to unlock %s\n"), - log_get_progname(), pw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); -#ifdef WITH_AUDIT - audit_logger_message ("unlocking passwd file", - SHADOW_AUDIT_FAILURE); -#endif - } -} - -/* - * cleanup_unlock_shadow - Unlock the /etc/shadow database - * - * It should be registered after the shadow database is successfully locked. - */ -void cleanup_unlock_shadow (unused void *arg) -{ - if (spw_unlock () == 0) { - fprintf (log_get_logfd(), - _("%s: failed to unlock %s\n"), - log_get_progname(), spw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); -#ifdef WITH_AUDIT - audit_logger_message ("unlocking shadow file", - SHADOW_AUDIT_FAILURE); -#endif - } -} - diff --git a/libmisc/console.c b/libmisc/console.c deleted file mode 100644 index c475aa2..0000000 --- a/libmisc/console.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 , Julianne Frances Haugh - * SPDX-FileCopyrightText: 1991 , Chip Rosenthal - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include -#include "defines.h" -#include -#include "getdef.h" -#include "prototypes.h" - -#ident "$Id$" - -/* - * This is now rather generic function which decides if "tty" is listed - * under "cfgin" in config (directly or indirectly). Fallback to default if - * something is bad. - */ -static bool is_listed (const char *cfgin, const char *tty, bool def) -{ - FILE *fp; - char buf[1024], *s; - const char *cons; - - /* - * If the CONSOLE configuration definition isn't given, - * fallback to default. - */ - - cons = getdef_str (cfgin); - if (NULL == cons) { - return def; - } - - /* - * If this isn't a filename, then it is a ":" delimited list of - * console devices upon which root logins are allowed. - */ - - if (*cons != '/') { - char *pbuf; - strncpy (buf, cons, sizeof (buf)); - buf[sizeof (buf) - 1] = '\0'; - pbuf = &buf[0]; - while ((s = strtok (pbuf, ":")) != NULL) { - if (strcmp (s, tty) == 0) { - return true; - } - - pbuf = NULL; - } - return false; - } - - /* - * If we can't open the console list, then call everything a - * console - otherwise root will never be allowed to login. - */ - - fp = fopen (cons, "r"); - if (NULL == fp) { - return def; - } - - /* - * See if this tty is listed in the console file. - */ - - while (fgets (buf, (int) sizeof (buf), fp) != NULL) { - buf[strlen (buf) - 1] = '\0'; - if (strcmp (buf, tty) == 0) { - (void) fclose (fp); - return true; - } - } - - /* - * This tty isn't a console. - */ - - (void) fclose (fp); - return false; -} - -/* - * console - return 1 if the "tty" is a console device, else 0. - * - * Note - we need to take extreme care here to avoid locking out root logins - * if something goes awry. That's why we do things like call everything a - * console if the consoles file can't be opened. Because of this, we must - * warn the user to protect against the remove of the consoles file since - * that would allow an unauthorized root login. - */ - -bool console (const char *tty) -{ - if (strncmp (tty, "/dev/", 5) == 0) { - tty += 5; - } - - return is_listed ("CONSOLE", tty, true); -} - diff --git a/libmisc/copydir.c b/libmisc/copydir.c deleted file mode 100644 index b692aa9..0000000 --- a/libmisc/copydir.c +++ /dev/null @@ -1,968 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#ifdef WITH_SELINUX -#include -#endif /* WITH_SELINUX */ -#if defined(WITH_ACL) || defined(WITH_ATTR) -#include -#include -#endif /* WITH_ACL || WITH_ATTR */ -#ifdef WITH_ACL -#include -#endif /* WITH_ACL */ -#ifdef WITH_ATTR -#include -#endif /* WITH_ATTR */ -#include "shadowlog.h" - - -static /*@null@*/const char *src_orig; -static /*@null@*/const char *dst_orig; - -struct link_name { - dev_t ln_dev; - ino_t ln_ino; - nlink_t ln_count; - char *ln_name; - /*@dependent@*/struct link_name *ln_next; -}; -static /*@exposed@*/struct link_name *links; - -struct path_info { - const char *full_path; - int dirfd; - const char *name; -}; - -static int copy_entry (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); -static int copy_dir (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); -static /*@null@*/char *readlink_malloc (const char *filename); -static int copy_symlink (const struct path_info *src, const struct path_info *dst, - unused bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); -static int copy_hardlink (const struct path_info *dst, - unused bool reset_selinux, - struct link_name *lp); -static int copy_special (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); -static int copy_file (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); -static int chownat_if_needed (const struct path_info *dst, const struct stat *statp, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); -static int fchown_if_needed (int fdst, const struct stat *statp, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid); - -#if defined(WITH_ACL) || defined(WITH_ATTR) -/* - * error_acl - format the error messages for the ACL and EQ libraries. - */ -format_attr(printf, 2, 3) -static void error_acl (unused struct error_context *ctx, const char *fmt, ...) -{ - va_list ap; - FILE *shadow_logfd = log_get_logfd(); - - /* ignore the case when destination does not support ACLs - * or extended attributes */ - if (ENOTSUP == errno) { - errno = 0; - return; - } - - va_start (ap, fmt); - (void) fprintf (shadow_logfd, _("%s: "), log_get_progname()); - if (vfprintf (shadow_logfd, fmt, ap) != 0) { - (void) fputs (_(": "), shadow_logfd); - } - (void) fprintf (shadow_logfd, "%s\n", strerror (errno)); - va_end (ap); -} - -static struct error_context ctx = { - error_acl, NULL, NULL -}; -#endif /* WITH_ACL || WITH_ATTR */ - -#ifdef WITH_ACL -static int perm_copy_path(const struct path_info *src, - const struct path_info *dst, - struct error_context *errctx) -{ - int src_fd, dst_fd, ret; - - src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); - if (src_fd < 0) { - return -1; - } - - dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); - if (dst_fd < 0) { - (void) close (src_fd); - return -1; - } - - ret = perm_copy_fd(src->full_path, src_fd, dst->full_path, dst_fd, errctx); - (void) close (src_fd); - (void) close (dst_fd); - return ret; -} -#endif /* WITH_ACL */ - -#ifdef WITH_ATTR -static int attr_copy_path(const struct path_info *src, - const struct path_info *dst, - int (*callback) (const char *, struct error_context *), - struct error_context *errctx) -{ - int src_fd, dst_fd, ret; - - src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); - if (src_fd < 0) { - return -1; - } - - dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC); - if (dst_fd < 0) { - (void) close (src_fd); - return -1; - } - - ret = attr_copy_fd(src->full_path, src_fd, dst->full_path, dst_fd, callback, errctx); - (void) close (src_fd); - (void) close (dst_fd); - return ret; -} -#endif /* WITH_ATTR */ - -/* - * remove_link - delete a link from the linked list - */ -static void remove_link (/*@only@*/struct link_name *ln) -{ - struct link_name *lp; - - if (links == ln) { - links = ln->ln_next; - free (ln->ln_name); - free (ln); - return; - } - for (lp = links; NULL !=lp; lp = lp->ln_next) { - if (lp->ln_next == ln) { - break; - } - } - - if (NULL == lp) { - free (ln->ln_name); - free (ln); - return; - } - - lp->ln_next = lp->ln_next->ln_next; - free (ln->ln_name); - free (ln); -} - -/* - * check_link - see if a file is really a link - */ - -static /*@exposed@*/ /*@null@*/struct link_name *check_link (const char *name, const struct stat *sb) -{ - struct link_name *lp; - size_t src_len; - size_t dst_len; - size_t name_len; - size_t len; - - /* copy_tree () must be the entry point */ - assert (NULL != src_orig); - assert (NULL != dst_orig); - - for (lp = links; NULL != lp; lp = lp->ln_next) { - if ((lp->ln_dev == sb->st_dev) && (lp->ln_ino == sb->st_ino)) { - return lp; - } - } - - if (sb->st_nlink == 1) { - return NULL; - } - - lp = (struct link_name *) xmalloc (sizeof *lp); - src_len = strlen (src_orig); - dst_len = strlen (dst_orig); - name_len = strlen (name); - lp->ln_dev = sb->st_dev; - lp->ln_ino = sb->st_ino; - lp->ln_count = sb->st_nlink; - len = name_len - src_len + dst_len + 1; - lp->ln_name = (char *) xmalloc (len); - (void) snprintf (lp->ln_name, len, "%s%s", dst_orig, name + src_len); - lp->ln_next = links; - links = lp; - - return NULL; -} - -static int copy_tree_impl (const struct path_info *src, const struct path_info *dst, - bool copy_root, bool reset_selinux, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - int dst_fd, src_fd, err = 0; - bool set_orig = false; - const struct dirent *ent; - DIR *dir; - - if (copy_root) { - struct stat sb; - - if ( fstatat (dst->dirfd, dst->name, &sb, 0) == 0 - || errno != ENOENT) { - return -1; - } - - if (fstatat (src->dirfd, src->name, &sb, AT_SYMLINK_NOFOLLOW) == -1) { - return -1; - } - - if (!S_ISDIR (sb.st_mode)) { - fprintf (log_get_logfd(), - "%s: %s is not a directory", - log_get_progname(), src->full_path); - return -1; - } - - return copy_entry (src, dst, reset_selinux, - old_uid, new_uid, old_gid, new_gid); - } - - /* - * Make certain both directories exist. This routine is called - * after the home directory is created, or recursively after the - * target is created. It assumes the target directory exists. - */ - - src_fd = openat (src->dirfd, src->name, O_DIRECTORY | O_RDONLY | O_NOFOLLOW | O_CLOEXEC); - if (src_fd < 0) { - return -1; - } - - dst_fd = openat (dst->dirfd, dst->name, O_DIRECTORY | O_RDONLY | O_NOFOLLOW | O_CLOEXEC); - if (dst_fd < 0) { - (void) close (src_fd); - return -1; - } - - /* - * Open the source directory and read each entry. Every file - * entry in the directory is copied with the UID and GID set - * to the provided values. As an added security feature only - * regular files (and directories ...) are copied, and no file - * is made set-ID. - */ - dir = fdopendir (src_fd); - if (NULL == dir) { - (void) close (src_fd); - (void) close (dst_fd); - return -1; - } - - if (src_orig == NULL) { - src_orig = src->full_path; - dst_orig = dst->full_path; - set_orig = true; - } - while ((0 == err) && (ent = readdir (dir)) != NULL) { - /* - * Skip the "." and ".." entries - */ - if ((strcmp (ent->d_name, ".") != 0) && - (strcmp (ent->d_name, "..") != 0)) { - char *src_name; - char *dst_name; - size_t src_len = strlen (ent->d_name) + 2; - size_t dst_len = strlen (ent->d_name) + 2; - src_len += strlen (src->full_path); - dst_len += strlen (dst->full_path); - - src_name = (char *) malloc (src_len); - dst_name = (char *) malloc (dst_len); - - if ((NULL == src_name) || (NULL == dst_name)) { - err = -1; - } else { - /* - * Build the filename for both the source and - * the destination files. - */ - struct path_info src_entry, dst_entry; - - (void) snprintf (src_name, src_len, "%s/%s", - src->full_path, ent->d_name); - (void) snprintf (dst_name, dst_len, "%s/%s", - dst->full_path, ent->d_name); - - src_entry.full_path = src_name; - src_entry.dirfd = dirfd(dir); - src_entry.name = ent->d_name; - - dst_entry.full_path = dst_name; - dst_entry.dirfd = dst_fd; - dst_entry.name = ent->d_name; - - err = copy_entry (&src_entry, &dst_entry, - reset_selinux, - old_uid, new_uid, - old_gid, new_gid); - } - free (src_name); - free (dst_name); - } - } - (void) closedir (dir); - (void) close (dst_fd); - - if (set_orig) { - src_orig = NULL; - dst_orig = NULL; - /* FIXME: clean links - * Since there can be hardlinks elsewhere on the device, - * we cannot check that all the hardlinks were found: - assert (NULL == links); - */ - } - -#ifdef WITH_SELINUX - /* Reset SELinux to create files with default contexts. - * Note that the context is only reset on exit of copy_tree (it is - * assumed that the program would quit without needing a restored - * context if copy_tree failed previously), and that copy_tree can - * be called recursively (hence the context is set on the - * sub-functions of copy_entry). - */ - if (reset_selinux_file_context () != 0) { - err = -1; - } -#endif /* WITH_SELINUX */ - - return err; -} - -/* - * copy_entry - copy the entry of a directory - * - * Copy the entry src to dst. - * Depending on the type of entry, this function will forward the - * request to copy_dir(), copy_symlink(), copy_hardlink(), - * copy_special(), or copy_file(). - * - * The access and modification time will not be modified. - * - * The permissions will be set to new_uid/new_gid. - * - * If new_uid (resp. new_gid) is equal to -1, the user (resp. group) will - * not be modified. - * - * Only the files owned (resp. group-owned) by old_uid (resp. - * old_gid) will be modified, unless old_uid (resp. old_gid) is set - * to -1. - */ -static int copy_entry (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - int err = 0; - struct stat sb; - struct link_name *lp; - struct timespec mt[2]; - - if (fstatat(src->dirfd, src->name, &sb, AT_SYMLINK_NOFOLLOW) == -1) { - /* If we cannot stat the file, do not care. */ - } else { -#ifdef HAVE_STRUCT_STAT_ST_ATIM - mt[0].tv_sec = sb.st_atim.tv_sec; - mt[0].tv_nsec = sb.st_atim.tv_nsec; -#else /* !HAVE_STRUCT_STAT_ST_ATIM */ - mt[0].tv_sec = sb.st_atime; -# ifdef HAVE_STRUCT_STAT_ST_ATIMENSEC - mt[0].tv_nsec = sb.st_atimensec; -# else /* !HAVE_STRUCT_STAT_ST_ATIMENSEC */ - mt[0].tv_nsec = 0; -# endif /* !HAVE_STRUCT_STAT_ST_ATIMENSEC */ -#endif /* !HAVE_STRUCT_STAT_ST_ATIM */ - -#ifdef HAVE_STRUCT_STAT_ST_MTIM - mt[1].tv_sec = sb.st_mtim.tv_sec; - mt[1].tv_nsec = sb.st_mtim.tv_nsec; -#else /* !HAVE_STRUCT_STAT_ST_MTIM */ - mt[1].tv_sec = sb.st_mtime; -# ifdef HAVE_STRUCT_STAT_ST_MTIMENSEC - mt[1].tv_nsec = sb.st_mtimensec; -# else /* !HAVE_STRUCT_STAT_ST_MTIMENSEC */ - mt[1].tv_nsec = 0; -# endif /* !HAVE_STRUCT_STAT_ST_MTIMENSEC */ -#endif /* !HAVE_STRUCT_STAT_ST_MTIM */ - - if (S_ISDIR (sb.st_mode)) { - err = copy_dir (src, dst, reset_selinux, &sb, mt, - old_uid, new_uid, old_gid, new_gid); - } - - /* - * Copy any symbolic links - */ - - else if (S_ISLNK (sb.st_mode)) { - err = copy_symlink (src, dst, reset_selinux, &sb, mt, - old_uid, new_uid, old_gid, new_gid); - } - - /* - * See if this is a previously copied link - */ - - else if ((lp = check_link (src->full_path, &sb)) != NULL) { - err = copy_hardlink (dst, reset_selinux, lp); - } - - /* - * Deal with FIFOs and special files. The user really - * shouldn't have any of these, but it seems like it - * would be nice to copy everything ... - */ - - else if (!S_ISREG (sb.st_mode)) { - err = copy_special (src, dst, reset_selinux, &sb, mt, - old_uid, new_uid, old_gid, new_gid); - } - - /* - * Create the new file and copy the contents. The new - * file will be owned by the provided UID and GID values. - */ - - else { - err = copy_file (src, dst, reset_selinux, &sb, mt, - old_uid, new_uid, old_gid, new_gid); - } - } - - return err; -} - -/* - * copy_dir - copy a directory - * - * Copy a directory (recursively) from src to dst. - * - * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set - * the access and modification and the access rights. - * - * Return 0 on success, -1 on error. - */ -static int copy_dir (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - int err = 0; - - /* - * Create a new target directory, make it owned by - * the user and then recursively copy that directory. - */ - -#ifdef WITH_SELINUX - if (set_selinux_file_context (dst->full_path, S_IFDIR) != 0) { - return -1; - } -#endif /* WITH_SELINUX */ - if ( (mkdirat (dst->dirfd, dst->name, 0700) != 0) - || (chownat_if_needed (dst, statp, - old_uid, new_uid, old_gid, new_gid) != 0) - || (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0) -#ifdef WITH_ACL - || ( (perm_copy_path (src, dst, &ctx) != 0) - && (errno != 0)) -#endif /* WITH_ACL */ -#ifdef WITH_ATTR - /* - * If the third parameter is NULL, all extended attributes - * except those that define Access Control Lists are copied. - * ACLs are excluded by default because copying them between - * file systems with and without ACL support needs some - * additional logic so that no unexpected permissions result. - */ - || ( !reset_selinux - && (attr_copy_path (src, dst, NULL, &ctx) != 0) - && (errno != 0)) -#endif /* WITH_ATTR */ - || (copy_tree_impl (src, dst, false, reset_selinux, - old_uid, new_uid, old_gid, new_gid) != 0) - || (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0)) { - err = -1; - } - - return err; -} - -/* - * readlink_malloc - wrapper for readlink - * - * return NULL on error. - * The return string shall be freed by the caller. - */ -static /*@null@*/char *readlink_malloc (const char *filename) -{ - size_t size = 1024; - - while (true) { - ssize_t nchars; - char *buffer = (char *) malloc (size); - if (NULL == buffer) { - return NULL; - } - - nchars = readlink (filename, buffer, size); - - if (nchars < 0) { - free(buffer); - return NULL; - } - - if ((size_t) nchars < size) { /* The buffer was large enough */ - /* readlink does not nul-terminate */ - buffer[nchars] = '\0'; - return buffer; - } - - /* Try again with a bigger buffer */ - free (buffer); - size *= 2; - } -} - -/* - * copy_symlink - copy a symlink - * - * Copy a symlink from src to dst. - * - * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set - * the access and modification and the access rights. - * - * Return 0 on success, -1 on error. - */ -static int copy_symlink (const struct path_info *src, const struct path_info *dst, - unused bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - char *oldlink; - - /* copy_tree () must be the entry point */ - assert (NULL != src_orig); - assert (NULL != dst_orig); - - /* - * Get the name of the file which the link points - * to. If that name begins with the original - * source directory name, that part of the link - * name will be replaced with the original - * destination directory name. - */ - - oldlink = readlink_malloc (src->full_path); - if (NULL == oldlink) { - return -1; - } - - /* If src was a link to an entry of the src_orig directory itself, - * create a link to the corresponding entry in the dst_orig - * directory. - */ - if (strncmp (oldlink, src_orig, strlen (src_orig)) == 0) { - size_t len = strlen (dst_orig) + strlen (oldlink) - strlen (src_orig) + 1; - char *dummy = (char *) xmalloc (len); - (void) snprintf (dummy, len, "%s%s", - dst_orig, - oldlink + strlen (src_orig)); - free (oldlink); - oldlink = dummy; - } - -#ifdef WITH_SELINUX - if (set_selinux_file_context (dst->full_path, S_IFLNK) != 0) { - free (oldlink); - return -1; - } -#endif /* WITH_SELINUX */ - if ( (symlinkat (oldlink, dst->dirfd, dst->name) != 0) - || (chownat_if_needed (dst, statp, - old_uid, new_uid, old_gid, new_gid) != 0)) { - /* FIXME: there are no modes on symlinks, right? - * ACL could be copied, but this would be much more - * complex than calling perm_copy_file. - * Ditto for Extended Attributes. - * We currently only document that ACL and Extended - * Attributes are not copied. - */ - free (oldlink); - return -1; - } - free (oldlink); - - if (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0) { - return -1; - } - - return 0; -} - -/* - * copy_hardlink - copy a hardlink - * - * Copy a hardlink from src to dst. - * - * Return 0 on success, -1 on error. - */ -static int copy_hardlink (const struct path_info *dst, - unused bool reset_selinux, - struct link_name *lp) -{ - /* FIXME: selinux, ACL, Extended Attributes needed? */ - - if (linkat (AT_FDCWD, lp->ln_name, dst->dirfd, dst->name, 0) != 0) { - return -1; - } - - /* If the file could be unlinked, decrement the links counter, - * and forget about this link if it was the last reference */ - lp->ln_count--; - if (lp->ln_count <= 0) { - remove_link (lp); - } - - return 0; -} - -/* - * copy_special - copy a special file - * - * Copy a special file from src to dst. - * - * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set - * the access and modification and the access rights. - * - * Return 0 on success, -1 on error. - */ -static int copy_special (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - int err = 0; - -#ifdef WITH_SELINUX - if (set_selinux_file_context (dst->full_path, statp->st_mode & S_IFMT) != 0) { - return -1; - } -#endif /* WITH_SELINUX */ - - if ( (mknodat (dst->dirfd, dst->name, statp->st_mode & ~07777U, statp->st_rdev) != 0) - || (chownat_if_needed (dst, statp, - old_uid, new_uid, old_gid, new_gid) != 0) - || (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0) -#ifdef WITH_ACL - || ( (perm_copy_path (src, dst, &ctx) != 0) - && (errno != 0)) -#endif /* WITH_ACL */ -#ifdef WITH_ATTR - /* - * If the third parameter is NULL, all extended attributes - * except those that define Access Control Lists are copied. - * ACLs are excluded by default because copying them between - * file systems with and without ACL support needs some - * additional logic so that no unexpected permissions result. - */ - || ( !reset_selinux - && (attr_copy_path (src, dst, NULL, &ctx) != 0) - && (errno != 0)) -#endif /* WITH_ATTR */ - || (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0)) { - err = -1; - } - - return err; -} - -/* - * full_write - write entire buffer - * - * Write up to count bytes from the buffer starting at buf to the - * file referred to by the file descriptor fd. - * Retry in case of a short write. - * - * Returns the number of bytes written on success, -1 on error. - */ -static ssize_t full_write(int fd, const void *buf, size_t count) { - ssize_t written = 0; - - while (count > 0) { - ssize_t res; - - res = write(fd, buf, count); - if (res < 0) { - if (errno == EINTR) { - continue; - } - - return res; - } - - if (res == 0) { - break; - } - - written += res; - buf = (const unsigned char*)buf + res; - count -= (size_t)res; - } - - return written; -} - -/* - * copy_file - copy a file - * - * Copy a file from src to dst. - * - * statp, mt, old_uid, new_uid, old_gid, and new_gid are used to set - * the access and modification and the access rights. - * - * Return 0 on success, -1 on error. - */ -static int copy_file (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, - const struct stat *statp, const struct timespec mt[], - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - int err = 0; - int ifd; - int ofd; - - ifd = openat (src->dirfd, src->name, O_RDONLY|O_NOFOLLOW|O_CLOEXEC); - if (ifd < 0) { - return -1; - } -#ifdef WITH_SELINUX - if (set_selinux_file_context (dst->full_path, S_IFREG) != 0) { - (void) close (ifd); - return -1; - } -#endif /* WITH_SELINUX */ - ofd = openat (dst->dirfd, dst->name, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | O_NOFOLLOW | O_CLOEXEC, 0600); - if ( (ofd < 0) - || (fchown_if_needed (ofd, statp, - old_uid, new_uid, old_gid, new_gid) != 0) - || (fchmod (ofd, statp->st_mode & 07777) != 0) -#ifdef WITH_ACL - || ( (perm_copy_fd (src->full_path, ifd, dst->full_path, ofd, &ctx) != 0) - && (errno != 0)) -#endif /* WITH_ACL */ -#ifdef WITH_ATTR - /* - * If the third parameter is NULL, all extended attributes - * except those that define Access Control Lists are copied. - * ACLs are excluded by default because copying them between - * file systems with and without ACL support needs some - * additional logic so that no unexpected permissions result. - */ - || ( !reset_selinux - && (attr_copy_fd (src->full_path, ifd, dst->full_path, ofd, NULL, &ctx) != 0) - && (errno != 0)) -#endif /* WITH_ATTR */ - ) { - if (ofd >= 0) { - (void) close (ofd); - } - (void) close (ifd); - return -1; - } - - while (true) { - char buf[8192]; - ssize_t cnt; - - cnt = read (ifd, buf, sizeof buf); - if (cnt < 0) { - if (errno == EINTR) { - continue; - } - (void) close (ofd); - (void) close (ifd); - return -1; - } - if (cnt == 0) { - break; - } - - if (full_write (ofd, buf, (size_t)cnt) < 0) { - (void) close (ofd); - (void) close (ifd); - return -1; - } - } - - (void) close (ifd); - if (close (ofd) != 0) { - return -1; - } - - if (utimensat (dst->dirfd, dst->name, mt, AT_SYMLINK_NOFOLLOW) != 0) { - return -1; - } - - return err; -} - -#define def_chown_if_needed(chown_function, type_dst) \ -static int chown_function ## _if_needed (type_dst dst, \ - const struct stat *statp, \ - uid_t old_uid, uid_t new_uid, \ - gid_t old_gid, gid_t new_gid) \ -{ \ - uid_t tmpuid = (uid_t) -1; \ - gid_t tmpgid = (gid_t) -1; \ - \ - /* Use new_uid if old_uid is set to -1 or if the file was \ - * owned by the user. */ \ - if (((uid_t) -1 == old_uid) || (statp->st_uid == old_uid)) { \ - tmpuid = new_uid; \ - } \ - /* Otherwise, or if new_uid was set to -1, we keep the same \ - * owner. */ \ - if ((uid_t) -1 == tmpuid) { \ - tmpuid = statp->st_uid; \ - } \ - \ - if (((gid_t) -1 == old_gid) || (statp->st_gid == old_gid)) { \ - tmpgid = new_gid; \ - } \ - if ((gid_t) -1 == tmpgid) { \ - tmpgid = statp->st_gid; \ - } \ - \ - return chown_function (dst, tmpuid, tmpgid); \ -} - -def_chown_if_needed (fchown, int) - -static int chownat_if_needed (const struct path_info *dst, - const struct stat *statp, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - uid_t tmpuid = (uid_t) -1; - gid_t tmpgid = (gid_t) -1; - - /* Use new_uid if old_uid is set to -1 or if the file was - * owned by the user. */ - if (((uid_t) -1 == old_uid) || (statp->st_uid == old_uid)) { - tmpuid = new_uid; - } - /* Otherwise, or if new_uid was set to -1, we keep the same - * owner. */ - if ((uid_t) -1 == tmpuid) { - tmpuid = statp->st_uid; - } - - if (((gid_t) -1 == old_gid) || (statp->st_gid == old_gid)) { - tmpgid = new_gid; - } - if ((gid_t) -1 == tmpgid) { - tmpgid = statp->st_gid; - } - - return fchownat (dst->dirfd, dst->name, tmpuid, tmpgid, AT_SYMLINK_NOFOLLOW); -} - -/* - * copy_tree - copy files in a directory tree - * - * copy_tree() walks a directory tree and copies ordinary files - * as it goes. - * - * When reset_selinux is enabled, extended attributes (and thus - * SELinux attributes) are not copied. - * - * old_uid and new_uid are used to set the ownership of the copied - * files. Unless old_uid is set to -1, only the files owned by - * old_uid have their ownership changed to new_uid. In addition, if - * new_uid is set to -1, no ownership will be changed. - * - * The same logic applies for the group-ownership and - * old_gid/new_gid. - */ -int copy_tree (const char *src_root, const char *dst_root, - bool copy_root, bool reset_selinux, - uid_t old_uid, uid_t new_uid, - gid_t old_gid, gid_t new_gid) -{ - const struct path_info src = { - .full_path = src_root, - .dirfd = AT_FDCWD, - .name = src_root - }; - const struct path_info dst = { - .full_path = dst_root, - .dirfd = AT_FDCWD, - .name = dst_root - }; - - return copy_tree_impl(&src, &dst, copy_root, reset_selinux, - old_uid, new_uid, old_gid, new_gid); -} diff --git a/libmisc/date_to_str.c b/libmisc/date_to_str.c deleted file mode 100644 index 07e99f1..0000000 --- a/libmisc/date_to_str.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2021, Alejandro Colomar - * - * 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 -#include - -#ident "$Id$" - -#include "prototypes.h" - -void date_to_str (size_t size, char buf[size], long date) -{ - time_t t; - - t = date; - if (date < 0) - (void) strncpy (buf, "never", size); - else - (void) strftime (buf, size, "%Y-%m-%d", gmtime (&t)); - buf[size - 1] = '\0'; -} diff --git a/libmisc/entry.c b/libmisc/entry.c deleted file mode 100644 index 87f5754..0000000 --- a/libmisc/entry.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include "prototypes.h" -#include "defines.h" -#include - -void pw_entry (const char *name, struct passwd *pwent) -{ - struct passwd *passwd; - - struct spwd *spwd; - - if (!(passwd = getpwnam (name))) { /* local, no need for xgetpwnam */ - pwent->pw_name = (char *) 0; - return; - } else { - pwent->pw_name = xstrdup (passwd->pw_name); - pwent->pw_uid = passwd->pw_uid; - pwent->pw_gid = passwd->pw_gid; - pwent->pw_gecos = xstrdup (passwd->pw_gecos); - pwent->pw_dir = xstrdup (passwd->pw_dir); - pwent->pw_shell = xstrdup (passwd->pw_shell); -#if !defined(AUTOSHADOW) - /* local, no need for xgetspnam */ - if ((spwd = getspnam (name))) { - pwent->pw_passwd = xstrdup (spwd->sp_pwdp); - return; - } -#endif - pwent->pw_passwd = xstrdup (passwd->pw_passwd); - } -} diff --git a/libmisc/env.c b/libmisc/env.c deleted file mode 100644 index fc6dbce..0000000 --- a/libmisc/env.c +++ /dev/null @@ -1,253 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include "shadowlog.h" -/* - * NEWENVP_STEP must be a power of two. This is the number - * of (char *) pointers to allocate at a time, to avoid using - * realloc() too often. - */ -#define NEWENVP_STEP 16 -size_t newenvc = 0; -/*@null@*/char **newenvp = NULL; -extern char **environ; - -static const char *const forbid[] = { - "_RLD_=", - "BASH_ENV=", /* GNU creeping featurism strikes again... */ - "ENV=", - "HOME=", - "IFS=", - "KRB_CONF=", - "LD_", /* anything with the LD_ prefix */ - "LIBPATH=", - "MAIL=", - "NLSPATH=", - "PATH=", - "SHELL=", - "SHLIB_PATH=", - (char *) 0 -}; - -/* these are allowed, but with no slashes inside - (to work around security problems in GNU gettext) */ -static const char *const noslash[] = { - "LANG=", - "LANGUAGE=", - "LC_", /* anything with the LC_ prefix */ - (char *) 0 -}; - -/* - * initenv() must be called once before using addenv(). - */ -void initenv (void) -{ - newenvp = (char **) xmalloc (NEWENVP_STEP * sizeof (char *)); - *newenvp = NULL; -} - - -void addenv (const char *string, /*@null@*/const char *value) -{ - char *cp, *newstring; - size_t i; - size_t n; - - if (NULL != value) { - size_t len = strlen (string) + strlen (value) + 2; - int wlen; - newstring = xmalloc (len); - wlen = snprintf (newstring, len, "%s=%s", string, value); - assert (wlen == (int) len -1); - } else { - newstring = xstrdup (string); - } - - /* - * Search for a '=' character within the string and if none is found - * just ignore the whole string. - */ - - cp = strchr (newstring, '='); - if (NULL == cp) { - free (newstring); - return; - } - - n = (size_t) (cp - newstring); - - /* - * If this environment variable is already set, change its value. - */ - for (i = 0; i < newenvc; i++) { - if ( (strncmp (newstring, newenvp[i], n) == 0) - && (('=' == newenvp[i][n]) || ('\0' == newenvp[i][n]))) { - break; - } - } - - if (i < newenvc) { - free (newenvp[i]); - newenvp[i] = newstring; - return; - } - - /* - * Otherwise, save the new environment variable - */ - newenvp[newenvc++] = newstring; - - /* - * And extend the environment if needed. - */ - - /* - * Check whether newenvc is a multiple of NEWENVP_STEP. - * If so we have to resize the vector. - * the expression (newenvc & (NEWENVP_STEP - 1)) == 0 - * is equal to (newenvc % NEWENVP_STEP) == 0 - * as long as NEWENVP_STEP is a power of 2. - */ - - if ((newenvc & (NEWENVP_STEP - 1)) == 0) { - char **__newenvp; - size_t newsize; - - /* - * If the resize operation succeeds we can - * happily go on, else print a message. - */ - - newsize = (newenvc + NEWENVP_STEP) * sizeof (char *); - __newenvp = (char **) realloc (newenvp, newsize); - - if (NULL != __newenvp) { - /* - * If this is our current environment, update - * environ so that it doesn't point to some - * free memory area (realloc() could move it). - */ - if (environ == newenvp) { - environ = __newenvp; - } - newenvp = __newenvp; - } else { - (void) fputs (_("Environment overflow\n"), log_get_logfd()); - newenvc--; - free (newenvp[newenvc]); - } - } - - /* - * The last entry of newenvp must be NULL - */ - - newenvp[newenvc] = NULL; -} - - -/* - * set_env - copy command line arguments into the environment - */ -void set_env (int argc, char *const *argv) -{ - int noname = 1; - char variable[1024]; - char *cp; - - for (; argc > 0; argc--, argv++) { - if (strlen (*argv) >= sizeof variable) { - continue; /* ignore long entries */ - } - - cp = strchr (*argv, '='); - if (NULL == cp) { - int wlen; - wlen = snprintf (variable, sizeof variable, "L%d", noname); - assert (wlen < (int) sizeof(variable)); - noname++; - addenv (variable, *argv); - } else { - const char *const *p; - - for (p = forbid; NULL != *p; p++) { - if (strncmp (*argv, *p, strlen (*p)) == 0) { - break; - } - } - - if (NULL != *p) { - strncpy (variable, *argv, (size_t)(cp - *argv)); - variable[cp - *argv] = '\0'; - printf (_("You may not change $%s\n"), - variable); - continue; - } - - addenv (*argv, NULL); - } - } -} - -/* - * sanitize_env - remove some nasty environment variables - * If you fall into a total paranoia, you should call this - * function for any root-setuid program or anything the user - * might change the environment with. 99% useless as almost - * all modern Unixes will handle setuid executables properly, - * but... I feel better with that silly precaution. -j. - */ - -void sanitize_env (void) -{ - char **envp = environ; - const char *const *bad; - char **cur; - char **move; - - for (cur = envp; NULL != *cur; cur++) { - for (bad = forbid; NULL != *bad; bad++) { - if (strncmp (*cur, *bad, strlen (*bad)) == 0) { - for (move = cur; NULL != *move; move++) { - *move = *(move + 1); - } - cur--; - break; - } - } - } - - for (cur = envp; NULL != *cur; cur++) { - for (bad = noslash; NULL != *bad; bad++) { - if (strncmp (*cur, *bad, strlen (*bad)) != 0) { - continue; - } - if (strchr (*cur, '/') == NULL) { - continue; /* OK */ - } - for (move = cur; NULL != *move; move++) { - *move = *(move + 1); - } - cur--; - break; - } - } -} - diff --git a/libmisc/failure.c b/libmisc/failure.c deleted file mode 100644 index 1aab299..0000000 --- a/libmisc/failure.c +++ /dev/null @@ -1,295 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2002 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include "defines.h" -#include "faillog.h" -#include "getdef.h" -#include "failure.h" -#define YEAR (365L*DAY) -/* - * failure - make failure entry - * - * failure() creates a new (struct faillog) entry or updates an - * existing one with the current failed login information. - */ -void failure (uid_t uid, const char *tty, struct faillog *fl) -{ - int fd; - off_t offset_uid = (off_t) (sizeof *fl) * uid; - - /* - * Don't do anything if failure logging isn't set up. - */ - - if (access (FAILLOG_FILE, F_OK) != 0) { - return; - } - - fd = open (FAILLOG_FILE, O_RDWR); - if (fd < 0) { - SYSLOG ((LOG_WARN, - "Can't write faillog entry for UID %lu in %s.", - (unsigned long) uid, FAILLOG_FILE)); - return; - } - - /* - * The file is indexed by UID value meaning that shared UID's - * share failure log records. That's OK since they really - * share just about everything else ... - */ - - if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (read (fd, (char *) fl, sizeof *fl) != (ssize_t) sizeof *fl)) { - /* This is not necessarily a failure. The file is - * initially zero length. - * - * If lseek() or read() failed for any other reason, this - * might reset the counter. But the new failure will be - * logged. - */ - memzero (fl, sizeof *fl); - } - - /* - * Update the record. We increment the failure count to log the - * latest failure. The only concern here is overflow, and we'll - * check for that. The line name and time of day are both - * updated as well. - */ - - if (fl->fail_cnt + 1 > 0) { - fl->fail_cnt++; - } - - strncpy (fl->fail_line, tty, sizeof (fl->fail_line) - 1); - (void) time (&fl->fail_time); - - /* - * Seek back to the correct position in the file and write the - * record out. Ideally we should lock the file in case the same - * account is being logged simultaneously. But the risk doesn't - * seem that great. - */ - - if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write (fd, (char *) fl, sizeof *fl) != (ssize_t) sizeof *fl) - || (close (fd) != 0)) { - SYSLOG ((LOG_WARN, - "Can't write faillog entry for UID %lu in %s.", - (unsigned long) uid, FAILLOG_FILE)); - (void) close (fd); - } -} - -static bool too_many_failures (const struct faillog *fl) -{ - time_t now; - - if ((0 == fl->fail_max) || (fl->fail_cnt < fl->fail_max)) { - return false; - } - - if (0 == fl->fail_locktime) { - return true; /* locked until reset manually */ - } - - (void) time (&now); - if ((fl->fail_time + fl->fail_locktime) < now) { - return false; /* enough time since last failure */ - } - - return true; -} - -/* - * failcheck - check for failures > allowable - * - * failcheck() is called AFTER the password has been validated. If the - * account has been "attacked" with too many login failures, failcheck() - * returns 0 to indicate that the login should be denied even though - * the password is valid. - * - * failed indicates if the login failed AFTER the password has been - * validated. - */ - -int failcheck (uid_t uid, struct faillog *fl, bool failed) -{ - int fd; - struct faillog fail; - off_t offset_uid = (off_t) (sizeof *fl) * uid; - - /* - * Suppress the check if the log file isn't there. - */ - - if (access (FAILLOG_FILE, F_OK) != 0) { - return 1; - } - - fd = open (FAILLOG_FILE, failed?O_RDONLY:O_RDWR); - if (fd < 0) { - SYSLOG ((LOG_WARN, - "Can't open the faillog file (%s) to check UID %lu. " - "User access authorized.", - FAILLOG_FILE, (unsigned long) uid)); - return 1; - } - - /* - * Get the record from the file and determine if the user has - * exceeded the failure limit. If "max" is zero, any number - * of failures are permitted. Only when "max" is non-zero and - * "cnt" is greater than or equal to "max" is the account - * considered to be locked. - * - * If read fails, there is no record for this user yet (the - * file is initially zero length and extended by writes), so - * no need to reset the count. - */ - - if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (read (fd, (char *) fl, sizeof *fl) != (ssize_t) sizeof *fl)) { - (void) close (fd); - return 1; - } - - if (too_many_failures (fl)) { - (void) close (fd); - return 0; - } - - /* - * The record is updated if this is not a failure. The count will - * be reset to zero, but the rest of the information will be left - * in the record in case someone wants to see where the failed - * login originated. - */ - - if (!failed) { - fail = *fl; - fail.fail_cnt = 0; - - if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write (fd, (const void *) &fail, sizeof fail) != (ssize_t) sizeof fail) - || (close (fd) != 0)) { - SYSLOG ((LOG_WARN, - "Can't reset faillog entry for UID %lu in %s.", - (unsigned long) uid, FAILLOG_FILE)); - (void) close (fd); - } - } else { - (void) close (fd); - } - - return 1; -} - -/* - * failprint - print line of failure information - * - * failprint takes a (struct faillog) entry and formats it into a - * message which is displayed at login time. - */ - -void failprint (const struct faillog *fail) -{ - struct tm *tp; - char lasttimeb[256]; - char *lasttime = lasttimeb; - time_t NOW; - - if (0 == fail->fail_cnt) { - return; - } - - tp = localtime (&(fail->fail_time)); - (void) time (&NOW); - - /* - * Print all information we have. - */ - (void) strftime (lasttimeb, sizeof lasttimeb, "%c", tp); - - /*@-formatconst@*/ - (void) printf (ngettext ("%d failure since last login.\n" - "Last was %s on %s.\n", - "%d failures since last login.\n" - "Last was %s on %s.\n", - (unsigned long) fail->fail_cnt), - fail->fail_cnt, lasttime, fail->fail_line); - /*@=formatconst@*/ -} - -/* - * failtmp - update the cumulative failure log - * - * failtmp updates the (struct utmp) formatted failure log which - * maintains a record of all login failures. - */ - -void failtmp (const char *username, -#ifdef USE_UTMPX - const struct utmpx *failent -#else /* !USE_UTMPX */ - const struct utmp *failent -#endif /* !USE_UTMPX */ - ) -{ - const char *ftmp; - int fd; - - /* - * Get the name of the failure file. If no file has been defined - * in login.defs, don't do this. - */ - - ftmp = getdef_str ("FTMP_FILE"); - if (NULL == ftmp) { - return; - } - - /* - * Open the file for append. It must already exist for this - * feature to be used. - */ - - if (access (ftmp, F_OK) != 0) { - return; - } - - fd = open (ftmp, O_WRONLY | O_APPEND); - if (-1 == fd) { - SYSLOG ((LOG_WARN, - "Can't append failure of user %s to %s.", - username, ftmp)); - return; - } - - /* - * Append the new failure record and close the log file. - */ - - if ( (write (fd, (const void *) failent, sizeof *failent) != (ssize_t) sizeof *failent) - || (close (fd) != 0)) { - SYSLOG ((LOG_WARN, - "Can't append failure of user %s to %s.", - username, ftmp)); - (void) close (fd); - } -} - diff --git a/libmisc/failure.h b/libmisc/failure.h deleted file mode 100644 index 2ac30d7..0000000 --- a/libmisc/failure.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* $Id$ */ -#ifndef _FAILURE_H_ -#define _FAILURE_H_ - -#include "defines.h" -#include "faillog.h" -#ifdef USE_UTMPX -#include -#else /* !USE_UTMPX */ -#include -#endif /* !USE_UTMPX */ - -/* - * failure - make failure entry - * - * failure() creates a new (struct faillog) entry or updates an - * existing one with the current failed login information. - */ -extern void failure (uid_t, const char *, struct faillog *); - -/* - * failcheck - check for failures > allowable - * - * failcheck() is called AFTER the password has been validated. If the - * account has been "attacked" with too many login failures, failcheck() - * returns FALSE to indicate that the login should be denied even though - * the password is valid. - */ -extern int failcheck (uid_t uid, struct faillog *fl, bool failed); - -/* - * failprint - print line of failure information - * - * failprint takes a (struct faillog) entry and formats it into a - * message which is displayed at login time. - */ -extern void failprint (const struct faillog *); - -/* - * failtmp - update the cumulative failure log - * - * failtmp updates the (struct utmp) formatted failure log which - * maintains a record of all login failures. - */ -#ifdef USE_UTMPX -extern void failtmp (const char *username, const struct utmpx *); -#else /* !USE_UTMPX */ -extern void failtmp (const char *username, const struct utmp *); -#endif /* !USE_UTMPX */ - -#endif - diff --git a/libmisc/find_new_gid.c b/libmisc/find_new_gid.c deleted file mode 100644 index 65ab5d0..0000000 --- a/libmisc/find_new_gid.c +++ /dev/null @@ -1,483 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François - * SPDX-FileCopyrightText: 2014, Red Hat, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include -#include - -#include "prototypes.h" -#include "groupio.h" -#include "getdef.h" -#include "shadowlog.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 (log_get_logfd(), - _("%s: Invalid configuration: SYS_GID_MIN (%lu), " - "GID_MIN (%lu), SYS_GID_MAX (%lu)\n"), - log_get_progname(), (unsigned long) *min_id, - getdef_ulong ("GID_MIN", 1000UL), - (unsigned long) *max_id); - return EINVAL; - } - /* - * Zero is reserved for root and the allocation algorithm does not - * work right with it. - */ - if (*min_id == 0) { - *min_id = (gid_t) 1; - } - } 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 (log_get_logfd(), - _("%s: Invalid configuration: GID_MIN (%lu), " - "GID_MAX (%lu)\n"), - log_get_progname(), (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, - const 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. - * - * If successful, find_new_gid provides an unused group ID in the - * [GID_MIN:GID_MAX] range. - * This ID should be higher than all the used GID, but if not possible, - * the lowest unused ID in the range will be returned. - * - * 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) -{ - 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); - - /* - * 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 (log_get_logfd(), - _("%s: Encountered error attempting to use " - "preferred GID: %s\n"), - log_get_progname(), 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 (log_get_logfd(), - _("%s: failed to allocate memory: %s\n"), - log_get_progname(), strerror (errno)); - return -1; - } - memset (used_gids, false, sizeof (bool) * (gid_max + 1)); - - /* 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? - */ - if ((grp->gr_gid <= lowest_found) && (grp->gr_gid >= gid_min)) { - lowest_found = grp->gr_gid - 1; - } - - /* - * 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; - } - - /* create index of used GIDs */ - if (grp->gr_gid >= gid_min - && grp->gr_gid <= gid_max) { - - used_gids[grp->gr_gid] = true; - } - } - - if (sys_group) { - /* - * 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 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 (log_get_logfd(), - _("%s: Can't get unique system GID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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_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 (log_get_logfd(), - _("%s: Can't get unique system GID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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 { /* !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 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 (log_get_logfd(), - _("%s: Can't get unique GID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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 (log_get_logfd(), - _("%s: Can't get unique GID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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 (log_get_logfd(), - _("%s: Can't get unique GID (no more available GIDs)\n"), - log_get_progname()); - SYSLOG ((LOG_WARN, "no more available GIDs on the system")); - free (used_gids); - return -1; -} - diff --git a/libmisc/find_new_sub_gids.c b/libmisc/find_new_sub_gids.c deleted file mode 100644 index bbd4570..0000000 --- a/libmisc/find_new_sub_gids.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2012 Eric Biederman - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifdef ENABLE_SUBIDS - -#include -#include -#include - -#include "prototypes.h" -#include "subordinateio.h" -#include "getdef.h" -#include "shadowlog.h" - -/* - * find_new_sub_gids - Find a new unused range of GIDs. - * - * If successful, find_new_sub_gids provides a range of unused - * user IDs in the [SUB_GID_MIN:SUB_GID_MAX] range. - * - * Return 0 on success, -1 if no unused GIDs are available. - */ -int find_new_sub_gids (gid_t *range_start, unsigned long *range_count) -{ - unsigned long min, max; - unsigned long count; - gid_t start; - - assert (range_start != NULL); - assert (range_count != NULL); - - min = getdef_ulong ("SUB_GID_MIN", 100000UL); - max = getdef_ulong ("SUB_GID_MAX", 600100000UL); - count = getdef_ulong ("SUB_GID_COUNT", 65536); - - if (min > max || count >= max || (min + count - 1) > max) { - (void) fprintf (log_get_logfd(), - _("%s: Invalid configuration: SUB_GID_MIN (%lu)," - " SUB_GID_MAX (%lu), SUB_GID_COUNT (%lu)\n"), - log_get_progname(), min, max, count); - return -1; - } - - start = sub_gid_find_free_range(min, max, count); - if (start == (gid_t)-1) { - fprintf (log_get_logfd(), - _("%s: Can't get unique subordinate GID range\n"), - log_get_progname()); - SYSLOG ((LOG_WARN, "no more available subordinate GIDs on the system")); - return -1; - } - *range_start = start; - *range_count = count; - return 0; -} -#else /* !ENABLE_SUBIDS */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !ENABLE_SUBIDS */ - diff --git a/libmisc/find_new_sub_uids.c b/libmisc/find_new_sub_uids.c deleted file mode 100644 index a86b311..0000000 --- a/libmisc/find_new_sub_uids.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2012 Eric Biederman - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifdef ENABLE_SUBIDS - -#include -#include -#include - -#include "prototypes.h" -#include "subordinateio.h" -#include "getdef.h" -#include "shadowlog.h" - -/* - * find_new_sub_uids - Find a new unused range of UIDs. - * - * If successful, find_new_sub_uids provides a range of unused - * user IDs in the [SUB_UID_MIN:SUB_UID_MAX] range. - * - * Return 0 on success, -1 if no unused UIDs are available. - */ -int find_new_sub_uids (uid_t *range_start, unsigned long *range_count) -{ - unsigned long min, max; - unsigned long count; - uid_t start; - - assert (range_start != NULL); - assert (range_count != NULL); - - min = getdef_ulong ("SUB_UID_MIN", 100000UL); - max = getdef_ulong ("SUB_UID_MAX", 600100000UL); - count = getdef_ulong ("SUB_UID_COUNT", 65536); - - if (min > max || count >= max || (min + count - 1) > max) { - (void) fprintf (log_get_logfd(), - _("%s: Invalid configuration: SUB_UID_MIN (%lu)," - " SUB_UID_MAX (%lu), SUB_UID_COUNT (%lu)\n"), - log_get_progname(), min, max, count); - return -1; - } - - start = sub_uid_find_free_range(min, max, count); - if (start == (uid_t)-1) { - fprintf (log_get_logfd(), - _("%s: Can't get unique subordinate UID range\n"), - log_get_progname()); - SYSLOG ((LOG_WARN, "no more available subordinate UIDs on the system")); - return -1; - } - *range_start = start; - *range_count = count; - return 0; -} -#else /* !ENABLE_SUBIDS */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !ENABLE_SUBIDS */ - diff --git a/libmisc/find_new_uid.c b/libmisc/find_new_uid.c deleted file mode 100644 index 5f7e74b..0000000 --- a/libmisc/find_new_uid.c +++ /dev/null @@ -1,483 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François - * SPDX-FileCopyrightText: 2014, Red Hat, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include -#include - -#include "prototypes.h" -#include "pwio.h" -#include "getdef.h" -#include "shadowlog.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 (log_get_logfd(), - _("%s: Invalid configuration: SYS_UID_MIN (%lu), " - "UID_MIN (%lu), SYS_UID_MAX (%lu)\n"), - log_get_progname(), (unsigned long) *min_id, - getdef_ulong ("UID_MIN", 1000UL), - (unsigned long) *max_id); - return EINVAL; - } - /* - * Zero is reserved for root and the allocation algorithm does not - * work right with it. - */ - if (*min_id == 0) { - *min_id = (uid_t) 1; - } - } 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 (log_get_logfd(), - _("%s: Invalid configuration: UID_MIN (%lu), " - "UID_MAX (%lu)\n"), - log_get_progname(), (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, - const 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. - * - * If successful, find_new_uid provides an unused user ID in the - * [UID_MIN:UID_MAX] range. - * This ID should be higher than all the used UID, but if not possible, - * the lowest unused ID in the range will be returned. - * - * 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) -{ - 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); - - /* - * 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 (log_get_logfd(), - _("%s: Encountered error attempting to use " - "preferred UID: %s\n"), - log_get_progname(), 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 (log_get_logfd(), - _("%s: failed to allocate memory: %s\n"), - log_get_progname(), strerror (errno)); - return -1; - } - memset (used_uids, false, sizeof (bool) * (uid_max + 1)); - - /* 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? - */ - if ((pwd->pw_uid <= lowest_found) && (pwd->pw_uid >= uid_min)) { - lowest_found = pwd->pw_uid - 1; - } - - /* - * 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; - } - - /* create index of used UIDs */ - if (pwd->pw_uid >= uid_min - && pwd->pw_uid <= uid_max) { - - used_uids[pwd->pw_uid] = true; - } - } - - if (sys_user) { - /* - * 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 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 (log_get_logfd(), - _("%s: Can't get unique system UID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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_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 (log_get_logfd(), - _("%s: Can't get unique system UID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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 { /* !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 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 (log_get_logfd(), - _("%s: Can't get unique UID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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 (log_get_logfd(), - _("%s: Can't get unique UID (%s). " - "Suppressing additional messages.\n"), - log_get_progname(), 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 (log_get_logfd(), - _("%s: Can't get unique UID (no more available UIDs)\n"), - log_get_progname()); - SYSLOG ((LOG_WARN, "no more available UIDs on the system")); - free (used_uids); - return -1; -} - diff --git a/libmisc/getdate.c b/libmisc/getdate.c deleted file mode 100644 index fc17c18..0000000 --- a/libmisc/getdate.c +++ /dev/null @@ -1,2540 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.8.2. */ - -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Identify Bison output, and Bison version. */ -#define YYBISON 30802 - -/* Bison version string. */ -#define YYBISON_VERSION "3.8.2" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ -#define YYPURE 0 - -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* First part of user prologue. */ -#line 1 "getdate.y" - -/* -** Originally written by Steven M. Bellovin while -** at the University of North Carolina at Chapel Hill. Later tweaked by -** a couple of people on Usenet. Completely overhauled by Rich $alz -** and Jim Berets in August, 1990; -** -** This grammar has 13 shift/reduce conflicts. -** -** This code is in the public domain and has no copyright. -*/ - -#ifdef HAVE_CONFIG_H -# include -# ifdef FORCE_ALLOCA_H -# include -# endif -#endif - -/* Since the code of getdate.y is not included in the Emacs executable - itself, there is no need to #define static in this file. Even if - the code were included in the Emacs executable, it probably - wouldn't do any harm to #undef it here; this will only cause - problems if we try to write to a static variable, which I don't - think this code needs to do. */ -#ifdef emacs -# undef static -#endif - -#include -#include -#include - -#include "getdate.h" - -#include - -/* Some old versions of bison generate parsers that use bcopy. - That loses on systems that don't provide the function, so we have - to redefine it here. */ -#if !defined (HAVE_BCOPY) && !defined (bcopy) -# define bcopy(from, to, len) memcpy ((to), (from), (len)) -#endif - -/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), - 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, - then those parser generators need to be fixed instead of adding those - names to this list. */ - -#define yymaxdepth gd_maxdepth -#define yyparse gd_parse -#define yylex gd_lex -#define yyerror gd_error -#define yylval gd_lval -#define yychar gd_char -#define yydebug gd_debug -#define yypact gd_pact -#define yyr1 gd_r1 -#define yyr2 gd_r2 -#define yydef gd_def -#define yychk gd_chk -#define yypgo gd_pgo -#define yyact gd_act -#define yyexca gd_exca -#define yyerrflag gd_errflag -#define yynerrs gd_nerrs -#define yyps gd_ps -#define yypv gd_pv -#define yys gd_s -#define yy_yys gd_yys -#define yystate gd_state -#define yytmp gd_tmp -#define yyv gd_v -#define yy_yyv gd_yyv -#define yyval gd_val -#define yylloc gd_lloc -#define yyreds gd_reds /* With YYDEBUG defined */ -#define yytoks gd_toks /* With YYDEBUG defined */ -#define yylhs gd_yylhs -#define yylen gd_yylen -#define yydefred gd_yydefred -#define yydgoto gd_yydgoto -#define yysindex gd_yysindex -#define yyrindex gd_yyrindex -#define yygindex gd_yygindex -#define yytable gd_yytable -#define yycheck gd_yycheck - -static int yylex (void); -static int yyerror (const char *s); - -#define EPOCH 1970 -#define HOUR(x) ((x) * 60) - -#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ - -/* -** An entry in the lexical lookup table. -*/ -typedef struct _TABLE { - const char *name; - int type; - int value; -} TABLE; - - -/* -** Meridian: am, pm, or 24-hour style. -*/ -typedef enum _MERIDIAN { - MERam, MERpm, MER24 -} MERIDIAN; - - -/* -** Global variables. We could get rid of most of these by using a good -** union as the yacc stack. (This routine was originally written before -** yacc had the %union construct.) Maybe someday; right now we only use -** the %union very rarely. -*/ -static const char *yyInput; -static int yyDayOrdinal; -static int yyDayNumber; -static int yyHaveDate; -static int yyHaveDay; -static int yyHaveRel; -static int yyHaveTime; -static int yyHaveZone; -static int yyTimezone; -static int yyDay; -static int yyHour; -static int yyMinutes; -static int yyMonth; -static int yySeconds; -static int yyYear; -static MERIDIAN yyMeridian; -static int yyRelDay; -static int yyRelHour; -static int yyRelMinutes; -static int yyRelMonth; -static int yyRelSeconds; -static int yyRelYear; - - -#line 219 "getdate.c" - -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - - -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - tAGO = 258, /* tAGO */ - tDAY = 259, /* tDAY */ - tDAY_UNIT = 260, /* tDAY_UNIT */ - tDAYZONE = 261, /* tDAYZONE */ - tDST = 262, /* tDST */ - tHOUR_UNIT = 263, /* tHOUR_UNIT */ - tID = 264, /* tID */ - tMERIDIAN = 265, /* tMERIDIAN */ - tMINUTE_UNIT = 266, /* tMINUTE_UNIT */ - tMONTH = 267, /* tMONTH */ - tMONTH_UNIT = 268, /* tMONTH_UNIT */ - tSEC_UNIT = 269, /* tSEC_UNIT */ - tSNUMBER = 270, /* tSNUMBER */ - tUNUMBER = 271, /* tUNUMBER */ - tYEAR_UNIT = 272, /* tYEAR_UNIT */ - tZONE = 273 /* tZONE */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEMPTY -2 -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define tAGO 258 -#define tDAY 259 -#define tDAY_UNIT 260 -#define tDAYZONE 261 -#define tDST 262 -#define tHOUR_UNIT 263 -#define tID 264 -#define tMERIDIAN 265 -#define tMINUTE_UNIT 266 -#define tMONTH 267 -#define tMONTH_UNIT 268 -#define tSEC_UNIT 269 -#define tSNUMBER 270 -#define tUNUMBER 271 -#define tYEAR_UNIT 272 -#define tZONE 273 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 149 "getdate.y" - - int Number; - enum _MERIDIAN Meridian; - -#line 310 "getdate.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - - -int yyparse (void); - - - -/* Symbol kind. */ -enum yysymbol_kind_t -{ - YYSYMBOL_YYEMPTY = -2, - YYSYMBOL_YYEOF = 0, /* "end of file" */ - YYSYMBOL_YYerror = 1, /* error */ - YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ - YYSYMBOL_tAGO = 3, /* tAGO */ - YYSYMBOL_tDAY = 4, /* tDAY */ - YYSYMBOL_tDAY_UNIT = 5, /* tDAY_UNIT */ - YYSYMBOL_tDAYZONE = 6, /* tDAYZONE */ - YYSYMBOL_tDST = 7, /* tDST */ - YYSYMBOL_tHOUR_UNIT = 8, /* tHOUR_UNIT */ - YYSYMBOL_tID = 9, /* tID */ - YYSYMBOL_tMERIDIAN = 10, /* tMERIDIAN */ - YYSYMBOL_tMINUTE_UNIT = 11, /* tMINUTE_UNIT */ - YYSYMBOL_tMONTH = 12, /* tMONTH */ - YYSYMBOL_tMONTH_UNIT = 13, /* tMONTH_UNIT */ - YYSYMBOL_tSEC_UNIT = 14, /* tSEC_UNIT */ - YYSYMBOL_tSNUMBER = 15, /* tSNUMBER */ - YYSYMBOL_tUNUMBER = 16, /* tUNUMBER */ - YYSYMBOL_tYEAR_UNIT = 17, /* tYEAR_UNIT */ - YYSYMBOL_tZONE = 18, /* tZONE */ - YYSYMBOL_19_ = 19, /* ':' */ - YYSYMBOL_20_ = 20, /* ',' */ - YYSYMBOL_21_ = 21, /* '/' */ - YYSYMBOL_YYACCEPT = 22, /* $accept */ - YYSYMBOL_spec = 23, /* spec */ - YYSYMBOL_item = 24, /* item */ - YYSYMBOL_time = 25, /* time */ - YYSYMBOL_zone = 26, /* zone */ - YYSYMBOL_day = 27, /* day */ - YYSYMBOL_date = 28, /* date */ - YYSYMBOL_rel = 29, /* rel */ - YYSYMBOL_relunit = 30, /* relunit */ - YYSYMBOL_number = 31, /* number */ - YYSYMBOL_o_merid = 32 /* o_merid */ -}; -typedef enum yysymbol_kind_t yysymbol_kind_t; - - - - -#ifdef short -# undef short -#endif - -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif -#endif - -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; -#else -typedef short yytype_int16; -#endif - -/* Work around bug in HP-UX 11.23, which defines these macros - incorrectly for preprocessor constants. This workaround can likely - be removed in 2023, as HPE has promised support for HP-UX 11.23 - (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of - . */ -#ifdef __hpux -# undef UINT_LEAST8_MAX -# undef UINT_LEAST16_MAX -# define UINT_LEAST8_MAX 255 -# define UINT_LEAST16_MAX 65535 -#endif - -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned -# endif -#endif - -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - - -/* Stored state numbers (used for stacks). */ -typedef yytype_int8 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) -# else -# define YY_ATTRIBUTE_PURE -# endif -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YY_USE(E) ((void) (E)) -#else -# define YY_USE(E) /* empty */ -#endif - -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ -# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") -# else -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# endif -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - - -#define YY_ASSERT(E) ((void) (0 && (E))) - -#if !defined yyoverflow - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* !defined yyoverflow */ - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yy_state_t yyss_alloc; - YYSTYPE yyvs_alloc; -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYPTRDIFF_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYPTRDIFF_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 50 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 22 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 11 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 51 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 61 - -/* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 273 - - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK \ - ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ - : YYSYMBOL_YYUNDEF) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_int8 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 20, 2, 2, 21, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 19, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18 -}; - -#if YYDEBUG -/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = -{ - 0, 165, 165, 166, 169, 172, 175, 178, 181, 184, - 187, 193, 199, 208, 214, 226, 229, 233, 238, 242, - 246, 252, 256, 274, 280, 286, 290, 295, 299, 306, - 314, 317, 320, 323, 326, 329, 332, 335, 338, 341, - 344, 347, 350, 353, 356, 359, 362, 365, 368, 373, - 407, 410 -}; -#endif - -/** Accessing symbol of state STATE. */ -#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) - -#if YYDEBUG || 0 -/* The user-facing name of the symbol whose (internal) number is - YYSYMBOL. No bounds checking. */ -static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; - -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "\"end of file\"", "error", "\"invalid token\"", "tAGO", "tDAY", - "tDAY_UNIT", "tDAYZONE", "tDST", "tHOUR_UNIT", "tID", "tMERIDIAN", - "tMINUTE_UNIT", "tMONTH", "tMONTH_UNIT", "tSEC_UNIT", "tSNUMBER", - "tUNUMBER", "tYEAR_UNIT", "tZONE", "':'", "','", "'/'", "$accept", - "spec", "item", "time", "zone", "day", "date", "rel", "relunit", - "number", "o_merid", YY_NULLPTR -}; - -static const char * -yysymbol_name (yysymbol_kind_t yysymbol) -{ - return yytname[yysymbol]; -} -#endif - -#define YYPACT_NINF (-20) - -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) - -#define YYTABLE_NINF (-1) - -#define yytable_value_is_error(Yyn) \ - 0 - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int8 yypact[] = -{ - -20, 0, -20, -19, -20, -20, -20, -20, -13, -20, - -20, 30, 15, -20, 14, -20, -20, -20, -20, -20, - -20, 19, -20, -20, 4, -20, -20, -20, -20, -20, - -20, -20, -20, -20, -20, -20, -6, -20, -20, 16, - -20, 17, 23, -20, -20, 24, -20, -20, -20, 27, - 28, -20, -20, -20, 29, -20, 32, -8, -20, -20, - -20 -}; - -/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_int8 yydefact[] = -{ - 2, 0, 1, 18, 39, 16, 42, 45, 0, 36, - 48, 0, 49, 33, 15, 3, 4, 5, 7, 6, - 8, 30, 9, 19, 25, 38, 41, 44, 35, 47, - 32, 20, 37, 40, 10, 43, 27, 34, 46, 0, - 31, 0, 0, 17, 29, 0, 24, 28, 23, 50, - 21, 26, 51, 12, 0, 11, 0, 50, 22, 14, - 13 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = -{ - -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, - -7 -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = -{ - 0, 1, 15, 16, 17, 18, 19, 20, 21, 22, - 55 -}; - -/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int8 yytable[] = -{ - 2, 23, 52, 24, 3, 4, 5, 59, 6, 46, - 47, 7, 8, 9, 10, 11, 12, 13, 14, 31, - 32, 43, 44, 33, 45, 34, 35, 36, 37, 38, - 39, 48, 40, 49, 41, 25, 42, 52, 26, 50, - 51, 27, 53, 28, 29, 57, 54, 30, 58, 56, - 60 -}; - -static const yytype_int8 yycheck[] = -{ - 0, 20, 10, 16, 4, 5, 6, 15, 8, 15, - 16, 11, 12, 13, 14, 15, 16, 17, 18, 4, - 5, 7, 3, 8, 20, 10, 11, 12, 13, 14, - 15, 15, 17, 16, 19, 5, 21, 10, 8, 16, - 16, 11, 15, 13, 14, 16, 19, 17, 16, 21, - 57 -}; - -/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of - state STATE-NUM. */ -static const yytype_int8 yystos[] = -{ - 0, 23, 0, 4, 5, 6, 8, 11, 12, 13, - 14, 15, 16, 17, 18, 24, 25, 26, 27, 28, - 29, 30, 31, 20, 16, 5, 8, 11, 13, 14, - 17, 4, 5, 8, 10, 11, 12, 13, 14, 15, - 17, 19, 21, 7, 3, 20, 15, 16, 15, 16, - 16, 16, 10, 15, 19, 32, 21, 16, 16, 15, - 32 -}; - -/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ -static const yytype_int8 yyr1[] = -{ - 0, 22, 23, 23, 24, 24, 24, 24, 24, 24, - 25, 25, 25, 25, 25, 26, 26, 26, 27, 27, - 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, - 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, - 32, 32 -}; - -/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ -static const yytype_int8 yyr2[] = -{ - 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, - 2, 4, 4, 6, 6, 1, 1, 2, 1, 2, - 2, 3, 5, 3, 3, 2, 4, 2, 3, 2, - 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, - 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, - 0, 1 -}; - - -enum { YYENOMEM = -2 }; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab -#define YYNOMEM goto yyexhaustedlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Backward compatibility with an undocumented macro. - Use YYerror or YYUNDEF. */ -#define YYERRCODE YYUNDEF - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - - - - -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Kind, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) -{ - FILE *yyoutput = yyo; - YY_USE (yyoutput); - if (!yyvaluep) - return; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ - -static void -yy_symbol_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyo, "%s %s (", - yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - - yy_symbol_value_print (yyo, yykind, yyvaluep); - YYFPRINTF (yyo, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, - int yyrule) -{ - int yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), - &yyvsp[(yyi + 1) - (yynrhs)]); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) ((void) 0) -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - - - - - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, - yysymbol_kind_t yykind, YYSTYPE *yyvaluep) -{ - YY_USE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YY_USE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - -/* Lookahead token kind. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - yy_state_fast_t yystate = 0; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus = 0; - - /* Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* Their size. */ - YYPTRDIFF_T yystacksize = YYINITDEPTH; - - /* The state stack: array, bottom, top. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss = yyssa; - yy_state_t *yyssp = yyss; - - /* The semantic value stack: array, bottom, top. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp = yyvs; - - int yyn; - /* The return value of yyparse. */ - int yyresult; - /* Lookahead symbol kind. */ - yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - - - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yychar = YYEMPTY; /* Cause a token to be read. */ - - goto yysetstate; - - -/*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | -`------------------------------------------------------------*/ -yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - -/*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - YY_STACK_PRINT (yyss, yyssp); - - if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - YYNOMEM; -#else - { - /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; - -# if defined yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - yy_state_t *yyss1 = yyss; - YYSTYPE *yyvs1 = yyvs; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - } -# else /* defined YYSTACK_RELOCATE */ - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - YYNOMEM; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yy_state_t *yyss1 = yyss; - union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); - if (! yyptr) - YYNOMEM; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token\n")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = YYEOF; - yytoken = YYSYMBOL_YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else if (yychar == YYerror) - { - /* The scanner already issued an error message, process directly - to error recovery. But do not keep the error token as - lookahead, it is too special and may lead us to an endless - loop in error recovery. */ - yychar = YYUNDEF; - yytoken = YYSYMBOL_YYerror; - goto yyerrlab1; - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 4: /* item: time */ -#line 169 "getdate.y" - { - yyHaveTime++; - } -#line 1360 "getdate.c" - break; - - case 5: /* item: zone */ -#line 172 "getdate.y" - { - yyHaveZone++; - } -#line 1368 "getdate.c" - break; - - case 6: /* item: date */ -#line 175 "getdate.y" - { - yyHaveDate++; - } -#line 1376 "getdate.c" - break; - - case 7: /* item: day */ -#line 178 "getdate.y" - { - yyHaveDay++; - } -#line 1384 "getdate.c" - break; - - case 8: /* item: rel */ -#line 181 "getdate.y" - { - yyHaveRel++; - } -#line 1392 "getdate.c" - break; - - case 10: /* time: tUNUMBER tMERIDIAN */ -#line 187 "getdate.y" - { - yyHour = (yyvsp[-1].Number); - yyMinutes = 0; - yySeconds = 0; - yyMeridian = (yyvsp[0].Meridian); - } -#line 1403 "getdate.c" - break; - - case 11: /* time: tUNUMBER ':' tUNUMBER o_merid */ -#line 193 "getdate.y" - { - yyHour = (yyvsp[-3].Number); - yyMinutes = (yyvsp[-1].Number); - yySeconds = 0; - yyMeridian = (yyvsp[0].Meridian); - } -#line 1414 "getdate.c" - break; - - case 12: /* time: tUNUMBER ':' tUNUMBER tSNUMBER */ -#line 199 "getdate.y" - { - yyHour = (yyvsp[-3].Number); - yyMinutes = (yyvsp[-1].Number); - yyMeridian = MER24; - yyHaveZone++; - yyTimezone = ((yyvsp[0].Number) < 0 - ? -(yyvsp[0].Number) % 100 + (-(yyvsp[0].Number) / 100) * 60 - : - ((yyvsp[0].Number) % 100 + ((yyvsp[0].Number) / 100) * 60)); - } -#line 1428 "getdate.c" - break; - - case 13: /* time: tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid */ -#line 208 "getdate.y" - { - yyHour = (yyvsp[-5].Number); - yyMinutes = (yyvsp[-3].Number); - yySeconds = (yyvsp[-1].Number); - yyMeridian = (yyvsp[0].Meridian); - } -#line 1439 "getdate.c" - break; - - case 14: /* time: tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER */ -#line 214 "getdate.y" - { - yyHour = (yyvsp[-5].Number); - yyMinutes = (yyvsp[-3].Number); - yySeconds = (yyvsp[-1].Number); - yyMeridian = MER24; - yyHaveZone++; - yyTimezone = ((yyvsp[0].Number) < 0 - ? -(yyvsp[0].Number) % 100 + (-(yyvsp[0].Number) / 100) * 60 - : - ((yyvsp[0].Number) % 100 + ((yyvsp[0].Number) / 100) * 60)); - } -#line 1454 "getdate.c" - break; - - case 15: /* zone: tZONE */ -#line 226 "getdate.y" - { - yyTimezone = (yyvsp[0].Number); - } -#line 1462 "getdate.c" - break; - - case 16: /* zone: tDAYZONE */ -#line 229 "getdate.y" - { - yyTimezone = (yyvsp[0].Number) - 60; - } -#line 1470 "getdate.c" - break; - - case 17: /* zone: tZONE tDST */ -#line 233 "getdate.y" - { - yyTimezone = (yyvsp[-1].Number) - 60; - } -#line 1478 "getdate.c" - break; - - case 18: /* day: tDAY */ -#line 238 "getdate.y" - { - yyDayOrdinal = 1; - yyDayNumber = (yyvsp[0].Number); - } -#line 1487 "getdate.c" - break; - - case 19: /* day: tDAY ',' */ -#line 242 "getdate.y" - { - yyDayOrdinal = 1; - yyDayNumber = (yyvsp[-1].Number); - } -#line 1496 "getdate.c" - break; - - case 20: /* day: tUNUMBER tDAY */ -#line 246 "getdate.y" - { - yyDayOrdinal = (yyvsp[-1].Number); - yyDayNumber = (yyvsp[0].Number); - } -#line 1505 "getdate.c" - break; - - case 21: /* date: tUNUMBER '/' tUNUMBER */ -#line 252 "getdate.y" - { - yyMonth = (yyvsp[-2].Number); - yyDay = (yyvsp[0].Number); - } -#line 1514 "getdate.c" - break; - - case 22: /* date: tUNUMBER '/' tUNUMBER '/' tUNUMBER */ -#line 256 "getdate.y" - { - /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. - The goal in recognizing YYYY/MM/DD is solely to support legacy - machine-generated dates like those in an RCS log listing. If - you want portability, use the ISO 8601 format. */ - if ((yyvsp[-4].Number) >= 1000) - { - yyYear = (yyvsp[-4].Number); - yyMonth = (yyvsp[-2].Number); - yyDay = (yyvsp[0].Number); - } - else - { - yyMonth = (yyvsp[-4].Number); - yyDay = (yyvsp[-2].Number); - yyYear = (yyvsp[0].Number); - } - } -#line 1537 "getdate.c" - break; - - case 23: /* date: tUNUMBER tSNUMBER tSNUMBER */ -#line 274 "getdate.y" - { - /* ISO 8601 format. yyyy-mm-dd. */ - yyYear = (yyvsp[-2].Number); - yyMonth = -(yyvsp[-1].Number); - yyDay = -(yyvsp[0].Number); - } -#line 1548 "getdate.c" - break; - - case 24: /* date: tUNUMBER tMONTH tSNUMBER */ -#line 280 "getdate.y" - { - /* e.g. 17-JUN-1992. */ - yyDay = (yyvsp[-2].Number); - yyMonth = (yyvsp[-1].Number); - yyYear = -(yyvsp[0].Number); - } -#line 1559 "getdate.c" - break; - - case 25: /* date: tMONTH tUNUMBER */ -#line 286 "getdate.y" - { - yyMonth = (yyvsp[-1].Number); - yyDay = (yyvsp[0].Number); - } -#line 1568 "getdate.c" - break; - - case 26: /* date: tMONTH tUNUMBER ',' tUNUMBER */ -#line 290 "getdate.y" - { - yyMonth = (yyvsp[-3].Number); - yyDay = (yyvsp[-2].Number); - yyYear = (yyvsp[0].Number); - } -#line 1578 "getdate.c" - break; - - case 27: /* date: tUNUMBER tMONTH */ -#line 295 "getdate.y" - { - yyMonth = (yyvsp[0].Number); - yyDay = (yyvsp[-1].Number); - } -#line 1587 "getdate.c" - break; - - case 28: /* date: tUNUMBER tMONTH tUNUMBER */ -#line 299 "getdate.y" - { - yyMonth = (yyvsp[-1].Number); - yyDay = (yyvsp[-2].Number); - yyYear = (yyvsp[0].Number); - } -#line 1597 "getdate.c" - break; - - case 29: /* rel: relunit tAGO */ -#line 306 "getdate.y" - { - yyRelSeconds = -yyRelSeconds; - yyRelMinutes = -yyRelMinutes; - yyRelHour = -yyRelHour; - yyRelDay = -yyRelDay; - yyRelMonth = -yyRelMonth; - yyRelYear = -yyRelYear; - } -#line 1610 "getdate.c" - break; - - case 31: /* relunit: tUNUMBER tYEAR_UNIT */ -#line 317 "getdate.y" - { - yyRelYear += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1618 "getdate.c" - break; - - case 32: /* relunit: tSNUMBER tYEAR_UNIT */ -#line 320 "getdate.y" - { - yyRelYear += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1626 "getdate.c" - break; - - case 33: /* relunit: tYEAR_UNIT */ -#line 323 "getdate.y" - { - yyRelYear++; - } -#line 1634 "getdate.c" - break; - - case 34: /* relunit: tUNUMBER tMONTH_UNIT */ -#line 326 "getdate.y" - { - yyRelMonth += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1642 "getdate.c" - break; - - case 35: /* relunit: tSNUMBER tMONTH_UNIT */ -#line 329 "getdate.y" - { - yyRelMonth += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1650 "getdate.c" - break; - - case 36: /* relunit: tMONTH_UNIT */ -#line 332 "getdate.y" - { - yyRelMonth++; - } -#line 1658 "getdate.c" - break; - - case 37: /* relunit: tUNUMBER tDAY_UNIT */ -#line 335 "getdate.y" - { - yyRelDay += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1666 "getdate.c" - break; - - case 38: /* relunit: tSNUMBER tDAY_UNIT */ -#line 338 "getdate.y" - { - yyRelDay += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1674 "getdate.c" - break; - - case 39: /* relunit: tDAY_UNIT */ -#line 341 "getdate.y" - { - yyRelDay++; - } -#line 1682 "getdate.c" - break; - - case 40: /* relunit: tUNUMBER tHOUR_UNIT */ -#line 344 "getdate.y" - { - yyRelHour += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1690 "getdate.c" - break; - - case 41: /* relunit: tSNUMBER tHOUR_UNIT */ -#line 347 "getdate.y" - { - yyRelHour += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1698 "getdate.c" - break; - - case 42: /* relunit: tHOUR_UNIT */ -#line 350 "getdate.y" - { - yyRelHour++; - } -#line 1706 "getdate.c" - break; - - case 43: /* relunit: tUNUMBER tMINUTE_UNIT */ -#line 353 "getdate.y" - { - yyRelMinutes += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1714 "getdate.c" - break; - - case 44: /* relunit: tSNUMBER tMINUTE_UNIT */ -#line 356 "getdate.y" - { - yyRelMinutes += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1722 "getdate.c" - break; - - case 45: /* relunit: tMINUTE_UNIT */ -#line 359 "getdate.y" - { - yyRelMinutes++; - } -#line 1730 "getdate.c" - break; - - case 46: /* relunit: tUNUMBER tSEC_UNIT */ -#line 362 "getdate.y" - { - yyRelSeconds += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1738 "getdate.c" - break; - - case 47: /* relunit: tSNUMBER tSEC_UNIT */ -#line 365 "getdate.y" - { - yyRelSeconds += (yyvsp[-1].Number) * (yyvsp[0].Number); - } -#line 1746 "getdate.c" - break; - - case 48: /* relunit: tSEC_UNIT */ -#line 368 "getdate.y" - { - yyRelSeconds++; - } -#line 1754 "getdate.c" - break; - - case 49: /* number: tUNUMBER */ -#line 374 "getdate.y" - { - if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) - yyYear = (yyvsp[0].Number); - else - { - if ((yyvsp[0].Number)>10000) - { - yyHaveDate++; - yyDay= ((yyvsp[0].Number))%100; - yyMonth= ((yyvsp[0].Number)/100)%100; - yyYear = (yyvsp[0].Number)/10000; - } - else - { - yyHaveTime++; - if ((yyvsp[0].Number) < 100) - { - yyHour = (yyvsp[0].Number); - yyMinutes = 0; - } - else - { - yyHour = (yyvsp[0].Number) / 100; - yyMinutes = (yyvsp[0].Number) % 100; - } - yySeconds = 0; - yyMeridian = MER24; - } - } - } -#line 1789 "getdate.c" - break; - - case 50: /* o_merid: %empty */ -#line 407 "getdate.y" - { - (yyval.Meridian) = MER24; - } -#line 1797 "getdate.c" - break; - - case 51: /* o_merid: tMERIDIAN */ -#line 411 "getdate.y" - { - (yyval.Meridian) = (yyvsp[0].Meridian); - } -#line 1805 "getdate.c" - break; - - -#line 1809 "getdate.c" - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; - yyerror (YY_("syntax error")); - } - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - ++yynerrs; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - /* Pop stack until we find a state that shifts the error token. */ - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYSYMBOL_YYerror; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - YY_ACCESSING_SYMBOL (yystate), yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturnlab; - - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturnlab; - - -/*-----------------------------------------------------------. -| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | -`-----------------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - goto yyreturnlab; - - -/*----------------------------------------------------------. -| yyreturnlab -- parsing is finished, clean up and return. | -`----------------------------------------------------------*/ -yyreturnlab: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif - - return yyresult; -} - -#line 416 "getdate.y" - - -/* Month and day table. */ -static TABLE const MonthDayTable[] = { - { "january", tMONTH, 1 }, - { "february", tMONTH, 2 }, - { "march", tMONTH, 3 }, - { "april", tMONTH, 4 }, - { "may", tMONTH, 5 }, - { "june", tMONTH, 6 }, - { "july", tMONTH, 7 }, - { "august", tMONTH, 8 }, - { "september", tMONTH, 9 }, - { "sept", tMONTH, 9 }, - { "october", tMONTH, 10 }, - { "november", tMONTH, 11 }, - { "december", tMONTH, 12 }, - { "sunday", tDAY, 0 }, - { "monday", tDAY, 1 }, - { "tuesday", tDAY, 2 }, - { "tues", tDAY, 2 }, - { "wednesday", tDAY, 3 }, - { "wednes", tDAY, 3 }, - { "thursday", tDAY, 4 }, - { "thur", tDAY, 4 }, - { "thurs", tDAY, 4 }, - { "friday", tDAY, 5 }, - { "saturday", tDAY, 6 }, - { NULL, 0, 0 } -}; - -/* Time units table. */ -static TABLE const UnitsTable[] = { - { "year", tYEAR_UNIT, 1 }, - { "month", tMONTH_UNIT, 1 }, - { "fortnight", tDAY_UNIT, 14 }, - { "week", tDAY_UNIT, 7 }, - { "day", tDAY_UNIT, 1 }, - { "hour", tHOUR_UNIT, 1 }, - { "minute", tMINUTE_UNIT, 1 }, - { "min", tMINUTE_UNIT, 1 }, - { "second", tSEC_UNIT, 1 }, - { "sec", tSEC_UNIT, 1 }, - { NULL, 0, 0 } -}; - -/* Assorted relative-time words. */ -static TABLE const OtherTable[] = { - { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, - { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, - { "today", tMINUTE_UNIT, 0 }, - { "now", tMINUTE_UNIT, 0 }, - { "last", tUNUMBER, -1 }, - { "this", tMINUTE_UNIT, 0 }, - { "next", tUNUMBER, 2 }, - { "first", tUNUMBER, 1 }, -/* { "second", tUNUMBER, 2 }, */ - { "third", tUNUMBER, 3 }, - { "fourth", tUNUMBER, 4 }, - { "fifth", tUNUMBER, 5 }, - { "sixth", tUNUMBER, 6 }, - { "seventh", tUNUMBER, 7 }, - { "eighth", tUNUMBER, 8 }, - { "ninth", tUNUMBER, 9 }, - { "tenth", tUNUMBER, 10 }, - { "eleventh", tUNUMBER, 11 }, - { "twelfth", tUNUMBER, 12 }, - { "ago", tAGO, 1 }, - { NULL, 0, 0 } -}; - -/* The timezone table. */ -static TABLE const TimezoneTable[] = { - { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ - { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ - { "utc", tZONE, HOUR ( 0) }, - { "wet", tZONE, HOUR ( 0) }, /* Western European */ - { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ - { "wat", tZONE, HOUR ( 1) }, /* West Africa */ - { "at", tZONE, HOUR ( 2) }, /* Azores */ - { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ - { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ - { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ - { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ - { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ - { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ - { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ - { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ - { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ - { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ - { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ - { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ - { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ - { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ - { "cat", tZONE, HOUR (10) }, /* Central Alaska */ - { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ - { "nt", tZONE, HOUR (11) }, /* Nome */ - { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ - { "cet", tZONE, -HOUR (1) }, /* Central European */ - { "met", tZONE, -HOUR (1) }, /* Middle European */ - { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ - { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ - { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ - { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ - { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ - { "fwt", tZONE, -HOUR (1) }, /* French Winter */ - { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ - { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ - { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ - { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ - { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ - { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ - { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ - { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ - { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ - { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ - { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ - { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ - { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ - { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ - { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ - { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ - { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ - { NULL, 0, 0 } -}; - -/* Military timezone table. */ -static TABLE const MilitaryTable[] = { - { "a", tZONE, HOUR ( 1) }, - { "b", tZONE, HOUR ( 2) }, - { "c", tZONE, HOUR ( 3) }, - { "d", tZONE, HOUR ( 4) }, - { "e", tZONE, HOUR ( 5) }, - { "f", tZONE, HOUR ( 6) }, - { "g", tZONE, HOUR ( 7) }, - { "h", tZONE, HOUR ( 8) }, - { "i", tZONE, HOUR ( 9) }, - { "k", tZONE, HOUR ( 10) }, - { "l", tZONE, HOUR ( 11) }, - { "m", tZONE, HOUR ( 12) }, - { "n", tZONE, HOUR (- 1) }, - { "o", tZONE, HOUR (- 2) }, - { "p", tZONE, HOUR (- 3) }, - { "q", tZONE, HOUR (- 4) }, - { "r", tZONE, HOUR (- 5) }, - { "s", tZONE, HOUR (- 6) }, - { "t", tZONE, HOUR (- 7) }, - { "u", tZONE, HOUR (- 8) }, - { "v", tZONE, HOUR (- 9) }, - { "w", tZONE, HOUR (-10) }, - { "x", tZONE, HOUR (-11) }, - { "y", tZONE, HOUR (-12) }, - { "z", tZONE, HOUR ( 0) }, - { NULL, 0, 0 } -}; - - - - -static int yyerror (unused const char *s) -{ - return 0; -} - -static int ToHour (int Hours, MERIDIAN Meridian) -{ - switch (Meridian) - { - case MER24: - if (Hours < 0 || Hours > 23) - return -1; - return Hours; - case MERam: - if (Hours < 1 || Hours > 12) - return -1; - if (Hours == 12) - Hours = 0; - return Hours; - case MERpm: - if (Hours < 1 || Hours > 12) - return -1; - if (Hours == 12) - Hours = 0; - return Hours + 12; - default: - abort (); - } - /* NOTREACHED */ -} - -static int ToYear (int Year) -{ - if (Year < 0) - Year = -Year; - - /* XPG4 suggests that years 00-68 map to 2000-2068, and - years 69-99 map to 1969-1999. */ - if (Year < 69) - Year += 2000; - else if (Year < 100) - Year += 1900; - - return Year; -} - -static int LookupWord (char *buff) -{ - register char *p; - register char *q; - register const TABLE *tp; - int i; - bool abbrev; - - /* Make it lowercase. */ - for (p = buff; '\0' != *p; p++) - if (isupper (*p)) - *p = tolower (*p); - - if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) - { - yylval.Meridian = MERam; - return tMERIDIAN; - } - if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) - { - yylval.Meridian = MERpm; - return tMERIDIAN; - } - - /* See if we have an abbreviation for a month. */ - if (strlen (buff) == 3) - abbrev = true; - else if (strlen (buff) == 4 && buff[3] == '.') - { - abbrev = true; - buff[3] = '\0'; - } - else - abbrev = false; - - for (tp = MonthDayTable; tp->name; tp++) - { - if (abbrev) - { - if (strncmp (buff, tp->name, 3) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - } - else if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - } - - for (tp = TimezoneTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - if (strcmp (buff, "dst") == 0) - return tDST; - - for (tp = UnitsTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - /* Strip off any plural and try the units table again. */ - i = strlen (buff) - 1; - if (buff[i] == 's') - { - buff[i] = '\0'; - for (tp = UnitsTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - buff[i] = 's'; /* Put back for "this" in OtherTable. */ - } - - for (tp = OtherTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - /* Military timezones. */ - if (buff[1] == '\0' && isalpha (*buff)) - { - for (tp = MilitaryTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - } - - /* Drop out any periods and try the timezone table again. */ - for (i = 0, p = q = buff; '\0' != *q; q++) - if (*q != '.') - *p++ = *q; - else - i++; - *p = '\0'; - if (0 != i) - for (tp = TimezoneTable; NULL != tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - return tID; -} - -static int -yylex (void) -{ - register char c; - register char *p; - char buff[20]; - int Count; - int sign; - - for (;;) - { - while (isspace (*yyInput)) - yyInput++; - - if (isdigit (c = *yyInput) || c == '-' || c == '+') - { - if (c == '-' || c == '+') - { - sign = c == '-' ? -1 : 1; - if (!isdigit (*++yyInput)) - /* skip the '-' sign */ - continue; - } - else - sign = 0; - for (yylval.Number = 0; isdigit (c = *yyInput++);) - yylval.Number = 10 * yylval.Number + c - '0'; - yyInput--; - if (sign < 0) - yylval.Number = -yylval.Number; - return (0 != sign) ? tSNUMBER : tUNUMBER; - } - if (isalpha (c)) - { - for (p = buff; (c = *yyInput++, isalpha (c)) || c == '.';) - if (p < &buff[sizeof buff - 1]) - *p++ = c; - *p = '\0'; - yyInput--; - return LookupWord (buff); - } - if (c != '(') - return *yyInput++; - Count = 0; - do - { - c = *yyInput++; - if (c == '\0') - return c; - if (c == '(') - Count++; - else if (c == ')') - Count--; - } - while (Count > 0); - } -} - -#define TM_YEAR_ORIGIN 1900 - -/* Yield A - B, measured in seconds. */ -static long difftm (struct tm *a, struct tm *b) -{ - int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); - int by = b->tm_year + (TM_YEAR_ORIGIN - 1); - long days = ( - /* difference in day of year */ - a->tm_yday - b->tm_yday - /* + intervening leap days */ - + ((ay >> 2) - (by >> 2)) - - (ay / 100 - by / 100) - + ((ay / 100 >> 2) - (by / 100 >> 2)) - /* + difference in years * 365 */ - + (long) (ay - by) * 365 - ); - return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) - + (a->tm_min - b->tm_min)) - + (a->tm_sec - b->tm_sec)); -} - -time_t get_date (const char *p, const time_t *now) -{ - struct tm tm, tm0, *tmp; - time_t Start; - - yyInput = p; - Start = now ? *now : time ((time_t *) NULL); - tmp = localtime (&Start); - yyYear = tmp->tm_year + TM_YEAR_ORIGIN; - yyMonth = tmp->tm_mon + 1; - yyDay = tmp->tm_mday; - yyHour = tmp->tm_hour; - yyMinutes = tmp->tm_min; - yySeconds = tmp->tm_sec; - yyMeridian = MER24; - yyRelSeconds = 0; - yyRelMinutes = 0; - yyRelHour = 0; - yyRelDay = 0; - yyRelMonth = 0; - yyRelYear = 0; - yyHaveDate = 0; - yyHaveDay = 0; - yyHaveRel = 0; - yyHaveTime = 0; - yyHaveZone = 0; - - if (yyparse () - || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) - return -1; - - tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; - tm.tm_mon = yyMonth - 1 + yyRelMonth; - tm.tm_mday = yyDay + yyRelDay; - if ((yyHaveTime != 0) || - ( (yyHaveRel != 0) && (yyHaveDate == 0) && (yyHaveDay == 0) )) - { - tm.tm_hour = ToHour (yyHour, yyMeridian); - if (tm.tm_hour < 0) - return -1; - tm.tm_min = yyMinutes; - tm.tm_sec = yySeconds; - } - else - { - tm.tm_hour = tm.tm_min = tm.tm_sec = 0; - } - tm.tm_hour += yyRelHour; - tm.tm_min += yyRelMinutes; - tm.tm_sec += yyRelSeconds; - tm.tm_isdst = -1; - tm0 = tm; - - Start = mktime (&tm); - - if (Start == (time_t) -1) - { - - /* Guard against falsely reporting errors near the time_t boundaries - when parsing times in other time zones. For example, if the min - time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead - of UTC, then the min localtime value is 1970-01-01 08:00:00; if - we apply mktime to 1970-01-01 00:00:00 we will get an error, so - we apply mktime to 1970-01-02 08:00:00 instead and adjust the time - zone by 24 hours to compensate. This algorithm assumes that - there is no DST transition within a day of the time_t boundaries. */ - if (yyHaveZone) - { - tm = tm0; - if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) - { - tm.tm_mday++; - yyTimezone -= 24 * 60; - } - else - { - tm.tm_mday--; - yyTimezone += 24 * 60; - } - Start = mktime (&tm); - } - - if (Start == (time_t) -1) - return Start; - } - - if (yyHaveDay && !yyHaveDate) - { - tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 - + 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); - Start = mktime (&tm); - if (Start == (time_t) -1) - return Start; - } - - if (yyHaveZone) - { - long delta = yyTimezone * 60L + difftm (&tm, gmtime (&Start)); - if ((Start + delta < Start) != (delta < 0)) - return -1; /* time_t overflow */ - Start += delta; - } - - return Start; -} - -#if defined (TEST) - -/* ARGSUSED */ -int -main (ac, av) - int ac; - char *av[]; -{ - char buff[MAX_BUFF_LEN + 1]; - time_t d; - - (void) printf ("Enter date, or blank line to exit.\n\t> "); - (void) fflush (stdout); - - buff[MAX_BUFF_LEN] = 0; - while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) - { - d = get_date (buff, (time_t *) NULL); - if (d == -1) - (void) printf ("Bad format - couldn't convert.\n"); - else - (void) printf ("%s", ctime (&d)); - (void) printf ("\t> "); - (void) fflush (stdout); - } - exit (0); - /* NOTREACHED */ -} -#endif /* defined (TEST) */ diff --git a/libmisc/getdate.h b/libmisc/getdate.h deleted file mode 100644 index eae56f6..0000000 --- a/libmisc/getdate.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#ifndef _GETDATE_H_ -#define _GETDATE_H_ - -#include -#include "defines.h" - -time_t get_date (const char *p, /*@null@*/const time_t *now); -#endif diff --git a/libmisc/getdate.y b/libmisc/getdate.y deleted file mode 100644 index 0c07f74..0000000 --- a/libmisc/getdate.y +++ /dev/null @@ -1,954 +0,0 @@ -%{ -/* -** Originally written by Steven M. Bellovin while -** at the University of North Carolina at Chapel Hill. Later tweaked by -** a couple of people on Usenet. Completely overhauled by Rich $alz -** and Jim Berets in August, 1990; -** -** This grammar has 13 shift/reduce conflicts. -** -** This code is in the public domain and has no copyright. -*/ - -#ifdef HAVE_CONFIG_H -# include -# ifdef FORCE_ALLOCA_H -# include -# endif -#endif - -/* Since the code of getdate.y is not included in the Emacs executable - itself, there is no need to #define static in this file. Even if - the code were included in the Emacs executable, it probably - wouldn't do any harm to #undef it here; this will only cause - problems if we try to write to a static variable, which I don't - think this code needs to do. */ -#ifdef emacs -# undef static -#endif - -#include -#include -#include - -#include "getdate.h" - -#include - -/* Some old versions of bison generate parsers that use bcopy. - That loses on systems that don't provide the function, so we have - to redefine it here. */ -#if !defined (HAVE_BCOPY) && !defined (bcopy) -# define bcopy(from, to, len) memcpy ((to), (from), (len)) -#endif - -/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), - 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, - then those parser generators need to be fixed instead of adding those - names to this list. */ - -#define yymaxdepth gd_maxdepth -#define yyparse gd_parse -#define yylex gd_lex -#define yyerror gd_error -#define yylval gd_lval -#define yychar gd_char -#define yydebug gd_debug -#define yypact gd_pact -#define yyr1 gd_r1 -#define yyr2 gd_r2 -#define yydef gd_def -#define yychk gd_chk -#define yypgo gd_pgo -#define yyact gd_act -#define yyexca gd_exca -#define yyerrflag gd_errflag -#define yynerrs gd_nerrs -#define yyps gd_ps -#define yypv gd_pv -#define yys gd_s -#define yy_yys gd_yys -#define yystate gd_state -#define yytmp gd_tmp -#define yyv gd_v -#define yy_yyv gd_yyv -#define yyval gd_val -#define yylloc gd_lloc -#define yyreds gd_reds /* With YYDEBUG defined */ -#define yytoks gd_toks /* With YYDEBUG defined */ -#define yylhs gd_yylhs -#define yylen gd_yylen -#define yydefred gd_yydefred -#define yydgoto gd_yydgoto -#define yysindex gd_yysindex -#define yyrindex gd_yyrindex -#define yygindex gd_yygindex -#define yytable gd_yytable -#define yycheck gd_yycheck - -static int yylex (void); -static int yyerror (const char *s); - -#define EPOCH 1970 -#define HOUR(x) ((x) * 60) - -#define MAX_BUFF_LEN 128 /* size of buffer to read the date into */ - -/* -** An entry in the lexical lookup table. -*/ -typedef struct _TABLE { - const char *name; - int type; - int value; -} TABLE; - - -/* -** Meridian: am, pm, or 24-hour style. -*/ -typedef enum _MERIDIAN { - MERam, MERpm, MER24 -} MERIDIAN; - - -/* -** Global variables. We could get rid of most of these by using a good -** union as the yacc stack. (This routine was originally written before -** yacc had the %union construct.) Maybe someday; right now we only use -** the %union very rarely. -*/ -static const char *yyInput; -static int yyDayOrdinal; -static int yyDayNumber; -static int yyHaveDate; -static int yyHaveDay; -static int yyHaveRel; -static int yyHaveTime; -static int yyHaveZone; -static int yyTimezone; -static int yyDay; -static int yyHour; -static int yyMinutes; -static int yyMonth; -static int yySeconds; -static int yyYear; -static MERIDIAN yyMeridian; -static int yyRelDay; -static int yyRelHour; -static int yyRelMinutes; -static int yyRelMonth; -static int yyRelSeconds; -static int yyRelYear; - -%} - -%union { - int Number; - enum _MERIDIAN Meridian; -} - -%token tAGO tDAY tDAY_UNIT tDAYZONE tDST tHOUR_UNIT tID -%token tMERIDIAN tMINUTE_UNIT tMONTH tMONTH_UNIT -%token tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE - -%type tDAY tDAY_UNIT tDAYZONE tHOUR_UNIT tMINUTE_UNIT -%type tMONTH tMONTH_UNIT -%type tSEC_UNIT tSNUMBER tUNUMBER tYEAR_UNIT tZONE -%type tMERIDIAN o_merid - -%% - -spec : /* NULL */ - | spec item - ; - -item : time { - yyHaveTime++; - } - | zone { - yyHaveZone++; - } - | date { - yyHaveDate++; - } - | day { - yyHaveDay++; - } - | rel { - yyHaveRel++; - } - | number - ; - -time : tUNUMBER tMERIDIAN { - yyHour = $1; - yyMinutes = 0; - yySeconds = 0; - yyMeridian = $2; - } - | tUNUMBER ':' tUNUMBER o_merid { - yyHour = $1; - yyMinutes = $3; - yySeconds = 0; - yyMeridian = $4; - } - | tUNUMBER ':' tUNUMBER tSNUMBER { - yyHour = $1; - yyMinutes = $3; - yyMeridian = MER24; - yyHaveZone++; - yyTimezone = ($4 < 0 - ? -$4 % 100 + (-$4 / 100) * 60 - : - ($4 % 100 + ($4 / 100) * 60)); - } - | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid { - yyHour = $1; - yyMinutes = $3; - yySeconds = $5; - yyMeridian = $6; - } - | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER { - yyHour = $1; - yyMinutes = $3; - yySeconds = $5; - yyMeridian = MER24; - yyHaveZone++; - yyTimezone = ($6 < 0 - ? -$6 % 100 + (-$6 / 100) * 60 - : - ($6 % 100 + ($6 / 100) * 60)); - } - ; - -zone : tZONE { - yyTimezone = $1; - } - | tDAYZONE { - yyTimezone = $1 - 60; - } - | - tZONE tDST { - yyTimezone = $1 - 60; - } - ; - -day : tDAY { - yyDayOrdinal = 1; - yyDayNumber = $1; - } - | tDAY ',' { - yyDayOrdinal = 1; - yyDayNumber = $1; - } - | tUNUMBER tDAY { - yyDayOrdinal = $1; - yyDayNumber = $2; - } - ; - -date : tUNUMBER '/' tUNUMBER { - yyMonth = $1; - yyDay = $3; - } - | tUNUMBER '/' tUNUMBER '/' tUNUMBER { - /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. - The goal in recognizing YYYY/MM/DD is solely to support legacy - machine-generated dates like those in an RCS log listing. If - you want portability, use the ISO 8601 format. */ - if ($1 >= 1000) - { - yyYear = $1; - yyMonth = $3; - yyDay = $5; - } - else - { - yyMonth = $1; - yyDay = $3; - yyYear = $5; - } - } - | tUNUMBER tSNUMBER tSNUMBER { - /* ISO 8601 format. yyyy-mm-dd. */ - yyYear = $1; - yyMonth = -$2; - yyDay = -$3; - } - | tUNUMBER tMONTH tSNUMBER { - /* e.g. 17-JUN-1992. */ - yyDay = $1; - yyMonth = $2; - yyYear = -$3; - } - | tMONTH tUNUMBER { - yyMonth = $1; - yyDay = $2; - } - | tMONTH tUNUMBER ',' tUNUMBER { - yyMonth = $1; - yyDay = $2; - yyYear = $4; - } - | tUNUMBER tMONTH { - yyMonth = $2; - yyDay = $1; - } - | tUNUMBER tMONTH tUNUMBER { - yyMonth = $2; - yyDay = $1; - yyYear = $3; - } - ; - -rel : relunit tAGO { - yyRelSeconds = -yyRelSeconds; - yyRelMinutes = -yyRelMinutes; - yyRelHour = -yyRelHour; - yyRelDay = -yyRelDay; - yyRelMonth = -yyRelMonth; - yyRelYear = -yyRelYear; - } - | relunit - ; - -relunit : tUNUMBER tYEAR_UNIT { - yyRelYear += $1 * $2; - } - | tSNUMBER tYEAR_UNIT { - yyRelYear += $1 * $2; - } - | tYEAR_UNIT { - yyRelYear++; - } - | tUNUMBER tMONTH_UNIT { - yyRelMonth += $1 * $2; - } - | tSNUMBER tMONTH_UNIT { - yyRelMonth += $1 * $2; - } - | tMONTH_UNIT { - yyRelMonth++; - } - | tUNUMBER tDAY_UNIT { - yyRelDay += $1 * $2; - } - | tSNUMBER tDAY_UNIT { - yyRelDay += $1 * $2; - } - | tDAY_UNIT { - yyRelDay++; - } - | tUNUMBER tHOUR_UNIT { - yyRelHour += $1 * $2; - } - | tSNUMBER tHOUR_UNIT { - yyRelHour += $1 * $2; - } - | tHOUR_UNIT { - yyRelHour++; - } - | tUNUMBER tMINUTE_UNIT { - yyRelMinutes += $1 * $2; - } - | tSNUMBER tMINUTE_UNIT { - yyRelMinutes += $1 * $2; - } - | tMINUTE_UNIT { - yyRelMinutes++; - } - | tUNUMBER tSEC_UNIT { - yyRelSeconds += $1 * $2; - } - | tSNUMBER tSEC_UNIT { - yyRelSeconds += $1 * $2; - } - | tSEC_UNIT { - yyRelSeconds++; - } - ; - -number : tUNUMBER - { - if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) - yyYear = $1; - else - { - if ($1>10000) - { - yyHaveDate++; - yyDay= ($1)%100; - yyMonth= ($1/100)%100; - yyYear = $1/10000; - } - else - { - yyHaveTime++; - if ($1 < 100) - { - yyHour = $1; - yyMinutes = 0; - } - else - { - yyHour = $1 / 100; - yyMinutes = $1 % 100; - } - yySeconds = 0; - yyMeridian = MER24; - } - } - } - ; - -o_merid : /* NULL */ - { - $$ = MER24; - } - | tMERIDIAN - { - $$ = $1; - } - ; - -%% - -/* Month and day table. */ -static TABLE const MonthDayTable[] = { - { "january", tMONTH, 1 }, - { "february", tMONTH, 2 }, - { "march", tMONTH, 3 }, - { "april", tMONTH, 4 }, - { "may", tMONTH, 5 }, - { "june", tMONTH, 6 }, - { "july", tMONTH, 7 }, - { "august", tMONTH, 8 }, - { "september", tMONTH, 9 }, - { "sept", tMONTH, 9 }, - { "october", tMONTH, 10 }, - { "november", tMONTH, 11 }, - { "december", tMONTH, 12 }, - { "sunday", tDAY, 0 }, - { "monday", tDAY, 1 }, - { "tuesday", tDAY, 2 }, - { "tues", tDAY, 2 }, - { "wednesday", tDAY, 3 }, - { "wednes", tDAY, 3 }, - { "thursday", tDAY, 4 }, - { "thur", tDAY, 4 }, - { "thurs", tDAY, 4 }, - { "friday", tDAY, 5 }, - { "saturday", tDAY, 6 }, - { NULL, 0, 0 } -}; - -/* Time units table. */ -static TABLE const UnitsTable[] = { - { "year", tYEAR_UNIT, 1 }, - { "month", tMONTH_UNIT, 1 }, - { "fortnight", tDAY_UNIT, 14 }, - { "week", tDAY_UNIT, 7 }, - { "day", tDAY_UNIT, 1 }, - { "hour", tHOUR_UNIT, 1 }, - { "minute", tMINUTE_UNIT, 1 }, - { "min", tMINUTE_UNIT, 1 }, - { "second", tSEC_UNIT, 1 }, - { "sec", tSEC_UNIT, 1 }, - { NULL, 0, 0 } -}; - -/* Assorted relative-time words. */ -static TABLE const OtherTable[] = { - { "tomorrow", tMINUTE_UNIT, 1 * 24 * 60 }, - { "yesterday", tMINUTE_UNIT, -1 * 24 * 60 }, - { "today", tMINUTE_UNIT, 0 }, - { "now", tMINUTE_UNIT, 0 }, - { "last", tUNUMBER, -1 }, - { "this", tMINUTE_UNIT, 0 }, - { "next", tUNUMBER, 2 }, - { "first", tUNUMBER, 1 }, -/* { "second", tUNUMBER, 2 }, */ - { "third", tUNUMBER, 3 }, - { "fourth", tUNUMBER, 4 }, - { "fifth", tUNUMBER, 5 }, - { "sixth", tUNUMBER, 6 }, - { "seventh", tUNUMBER, 7 }, - { "eighth", tUNUMBER, 8 }, - { "ninth", tUNUMBER, 9 }, - { "tenth", tUNUMBER, 10 }, - { "eleventh", tUNUMBER, 11 }, - { "twelfth", tUNUMBER, 12 }, - { "ago", tAGO, 1 }, - { NULL, 0, 0 } -}; - -/* The timezone table. */ -static TABLE const TimezoneTable[] = { - { "gmt", tZONE, HOUR ( 0) }, /* Greenwich Mean */ - { "ut", tZONE, HOUR ( 0) }, /* Universal (Coordinated) */ - { "utc", tZONE, HOUR ( 0) }, - { "wet", tZONE, HOUR ( 0) }, /* Western European */ - { "bst", tDAYZONE, HOUR ( 0) }, /* British Summer */ - { "wat", tZONE, HOUR ( 1) }, /* West Africa */ - { "at", tZONE, HOUR ( 2) }, /* Azores */ - { "ast", tZONE, HOUR ( 4) }, /* Atlantic Standard */ - { "adt", tDAYZONE, HOUR ( 4) }, /* Atlantic Daylight */ - { "est", tZONE, HOUR ( 5) }, /* Eastern Standard */ - { "edt", tDAYZONE, HOUR ( 5) }, /* Eastern Daylight */ - { "cst", tZONE, HOUR ( 6) }, /* Central Standard */ - { "cdt", tDAYZONE, HOUR ( 6) }, /* Central Daylight */ - { "mst", tZONE, HOUR ( 7) }, /* Mountain Standard */ - { "mdt", tDAYZONE, HOUR ( 7) }, /* Mountain Daylight */ - { "pst", tZONE, HOUR ( 8) }, /* Pacific Standard */ - { "pdt", tDAYZONE, HOUR ( 8) }, /* Pacific Daylight */ - { "yst", tZONE, HOUR ( 9) }, /* Yukon Standard */ - { "ydt", tDAYZONE, HOUR ( 9) }, /* Yukon Daylight */ - { "hst", tZONE, HOUR (10) }, /* Hawaii Standard */ - { "hdt", tDAYZONE, HOUR (10) }, /* Hawaii Daylight */ - { "cat", tZONE, HOUR (10) }, /* Central Alaska */ - { "ahst", tZONE, HOUR (10) }, /* Alaska-Hawaii Standard */ - { "nt", tZONE, HOUR (11) }, /* Nome */ - { "idlw", tZONE, HOUR (12) }, /* International Date Line West */ - { "cet", tZONE, -HOUR (1) }, /* Central European */ - { "met", tZONE, -HOUR (1) }, /* Middle European */ - { "mewt", tZONE, -HOUR (1) }, /* Middle European Winter */ - { "mest", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ - { "mesz", tDAYZONE, -HOUR (1) }, /* Middle European Summer */ - { "swt", tZONE, -HOUR (1) }, /* Swedish Winter */ - { "sst", tDAYZONE, -HOUR (1) }, /* Swedish Summer */ - { "fwt", tZONE, -HOUR (1) }, /* French Winter */ - { "fst", tDAYZONE, -HOUR (1) }, /* French Summer */ - { "eet", tZONE, -HOUR (2) }, /* Eastern Europe, USSR Zone 1 */ - { "bt", tZONE, -HOUR (3) }, /* Baghdad, USSR Zone 2 */ - { "zp4", tZONE, -HOUR (4) }, /* USSR Zone 3 */ - { "zp5", tZONE, -HOUR (5) }, /* USSR Zone 4 */ - { "zp6", tZONE, -HOUR (6) }, /* USSR Zone 5 */ - { "wast", tZONE, -HOUR (7) }, /* West Australian Standard */ - { "wadt", tDAYZONE, -HOUR (7) }, /* West Australian Daylight */ - { "cct", tZONE, -HOUR (8) }, /* China Coast, USSR Zone 7 */ - { "jst", tZONE, -HOUR (9) }, /* Japan Standard, USSR Zone 8 */ - { "east", tZONE, -HOUR (10) }, /* Eastern Australian Standard */ - { "eadt", tDAYZONE, -HOUR (10) }, /* Eastern Australian Daylight */ - { "gst", tZONE, -HOUR (10) }, /* Guam Standard, USSR Zone 9 */ - { "nzt", tZONE, -HOUR (12) }, /* New Zealand */ - { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ - { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ - { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ - { NULL, 0, 0 } -}; - -/* Military timezone table. */ -static TABLE const MilitaryTable[] = { - { "a", tZONE, HOUR ( 1) }, - { "b", tZONE, HOUR ( 2) }, - { "c", tZONE, HOUR ( 3) }, - { "d", tZONE, HOUR ( 4) }, - { "e", tZONE, HOUR ( 5) }, - { "f", tZONE, HOUR ( 6) }, - { "g", tZONE, HOUR ( 7) }, - { "h", tZONE, HOUR ( 8) }, - { "i", tZONE, HOUR ( 9) }, - { "k", tZONE, HOUR ( 10) }, - { "l", tZONE, HOUR ( 11) }, - { "m", tZONE, HOUR ( 12) }, - { "n", tZONE, HOUR (- 1) }, - { "o", tZONE, HOUR (- 2) }, - { "p", tZONE, HOUR (- 3) }, - { "q", tZONE, HOUR (- 4) }, - { "r", tZONE, HOUR (- 5) }, - { "s", tZONE, HOUR (- 6) }, - { "t", tZONE, HOUR (- 7) }, - { "u", tZONE, HOUR (- 8) }, - { "v", tZONE, HOUR (- 9) }, - { "w", tZONE, HOUR (-10) }, - { "x", tZONE, HOUR (-11) }, - { "y", tZONE, HOUR (-12) }, - { "z", tZONE, HOUR ( 0) }, - { NULL, 0, 0 } -}; - - - - -static int yyerror (unused const char *s) -{ - return 0; -} - -static int ToHour (int Hours, MERIDIAN Meridian) -{ - switch (Meridian) - { - case MER24: - if (Hours < 0 || Hours > 23) - return -1; - return Hours; - case MERam: - if (Hours < 1 || Hours > 12) - return -1; - if (Hours == 12) - Hours = 0; - return Hours; - case MERpm: - if (Hours < 1 || Hours > 12) - return -1; - if (Hours == 12) - Hours = 0; - return Hours + 12; - default: - abort (); - } - /* NOTREACHED */ -} - -static int ToYear (int Year) -{ - if (Year < 0) - Year = -Year; - - /* XPG4 suggests that years 00-68 map to 2000-2068, and - years 69-99 map to 1969-1999. */ - if (Year < 69) - Year += 2000; - else if (Year < 100) - Year += 1900; - - return Year; -} - -static int LookupWord (char *buff) -{ - register char *p; - register char *q; - register const TABLE *tp; - int i; - bool abbrev; - - /* Make it lowercase. */ - for (p = buff; '\0' != *p; p++) - if (isupper (*p)) - *p = tolower (*p); - - if (strcmp (buff, "am") == 0 || strcmp (buff, "a.m.") == 0) - { - yylval.Meridian = MERam; - return tMERIDIAN; - } - if (strcmp (buff, "pm") == 0 || strcmp (buff, "p.m.") == 0) - { - yylval.Meridian = MERpm; - return tMERIDIAN; - } - - /* See if we have an abbreviation for a month. */ - if (strlen (buff) == 3) - abbrev = true; - else if (strlen (buff) == 4 && buff[3] == '.') - { - abbrev = true; - buff[3] = '\0'; - } - else - abbrev = false; - - for (tp = MonthDayTable; tp->name; tp++) - { - if (abbrev) - { - if (strncmp (buff, tp->name, 3) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - } - else if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - } - - for (tp = TimezoneTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - if (strcmp (buff, "dst") == 0) - return tDST; - - for (tp = UnitsTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - /* Strip off any plural and try the units table again. */ - i = strlen (buff) - 1; - if (buff[i] == 's') - { - buff[i] = '\0'; - for (tp = UnitsTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - buff[i] = 's'; /* Put back for "this" in OtherTable. */ - } - - for (tp = OtherTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - /* Military timezones. */ - if (buff[1] == '\0' && isalpha (*buff)) - { - for (tp = MilitaryTable; tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - } - - /* Drop out any periods and try the timezone table again. */ - for (i = 0, p = q = buff; '\0' != *q; q++) - if (*q != '.') - *p++ = *q; - else - i++; - *p = '\0'; - if (0 != i) - for (tp = TimezoneTable; NULL != tp->name; tp++) - if (strcmp (buff, tp->name) == 0) - { - yylval.Number = tp->value; - return tp->type; - } - - return tID; -} - -static int -yylex (void) -{ - register char c; - register char *p; - char buff[20]; - int Count; - int sign; - - for (;;) - { - while (isspace (*yyInput)) - yyInput++; - - if (isdigit (c = *yyInput) || c == '-' || c == '+') - { - if (c == '-' || c == '+') - { - sign = c == '-' ? -1 : 1; - if (!isdigit (*++yyInput)) - /* skip the '-' sign */ - continue; - } - else - sign = 0; - for (yylval.Number = 0; isdigit (c = *yyInput++);) - yylval.Number = 10 * yylval.Number + c - '0'; - yyInput--; - if (sign < 0) - yylval.Number = -yylval.Number; - return (0 != sign) ? tSNUMBER : tUNUMBER; - } - if (isalpha (c)) - { - for (p = buff; (c = *yyInput++, isalpha (c)) || c == '.';) - if (p < &buff[sizeof buff - 1]) - *p++ = c; - *p = '\0'; - yyInput--; - return LookupWord (buff); - } - if (c != '(') - return *yyInput++; - Count = 0; - do - { - c = *yyInput++; - if (c == '\0') - return c; - if (c == '(') - Count++; - else if (c == ')') - Count--; - } - while (Count > 0); - } -} - -#define TM_YEAR_ORIGIN 1900 - -/* Yield A - B, measured in seconds. */ -static long difftm (struct tm *a, struct tm *b) -{ - int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); - int by = b->tm_year + (TM_YEAR_ORIGIN - 1); - long days = ( - /* difference in day of year */ - a->tm_yday - b->tm_yday - /* + intervening leap days */ - + ((ay >> 2) - (by >> 2)) - - (ay / 100 - by / 100) - + ((ay / 100 >> 2) - (by / 100 >> 2)) - /* + difference in years * 365 */ - + (long) (ay - by) * 365 - ); - return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) - + (a->tm_min - b->tm_min)) - + (a->tm_sec - b->tm_sec)); -} - -time_t get_date (const char *p, const time_t *now) -{ - struct tm tm, tm0, *tmp; - time_t Start; - - yyInput = p; - Start = now ? *now : time ((time_t *) NULL); - tmp = localtime (&Start); - yyYear = tmp->tm_year + TM_YEAR_ORIGIN; - yyMonth = tmp->tm_mon + 1; - yyDay = tmp->tm_mday; - yyHour = tmp->tm_hour; - yyMinutes = tmp->tm_min; - yySeconds = tmp->tm_sec; - yyMeridian = MER24; - yyRelSeconds = 0; - yyRelMinutes = 0; - yyRelHour = 0; - yyRelDay = 0; - yyRelMonth = 0; - yyRelYear = 0; - yyHaveDate = 0; - yyHaveDay = 0; - yyHaveRel = 0; - yyHaveTime = 0; - yyHaveZone = 0; - - if (yyparse () - || yyHaveTime > 1 || yyHaveZone > 1 || yyHaveDate > 1 || yyHaveDay > 1) - return -1; - - tm.tm_year = ToYear (yyYear) - TM_YEAR_ORIGIN + yyRelYear; - tm.tm_mon = yyMonth - 1 + yyRelMonth; - tm.tm_mday = yyDay + yyRelDay; - if ((yyHaveTime != 0) || - ( (yyHaveRel != 0) && (yyHaveDate == 0) && (yyHaveDay == 0) )) - { - tm.tm_hour = ToHour (yyHour, yyMeridian); - if (tm.tm_hour < 0) - return -1; - tm.tm_min = yyMinutes; - tm.tm_sec = yySeconds; - } - else - { - tm.tm_hour = tm.tm_min = tm.tm_sec = 0; - } - tm.tm_hour += yyRelHour; - tm.tm_min += yyRelMinutes; - tm.tm_sec += yyRelSeconds; - tm.tm_isdst = -1; - tm0 = tm; - - Start = mktime (&tm); - - if (Start == (time_t) -1) - { - - /* Guard against falsely reporting errors near the time_t boundaries - when parsing times in other time zones. For example, if the min - time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead - of UTC, then the min localtime value is 1970-01-01 08:00:00; if - we apply mktime to 1970-01-01 00:00:00 we will get an error, so - we apply mktime to 1970-01-02 08:00:00 instead and adjust the time - zone by 24 hours to compensate. This algorithm assumes that - there is no DST transition within a day of the time_t boundaries. */ - if (yyHaveZone) - { - tm = tm0; - if (tm.tm_year <= EPOCH - TM_YEAR_ORIGIN) - { - tm.tm_mday++; - yyTimezone -= 24 * 60; - } - else - { - tm.tm_mday--; - yyTimezone += 24 * 60; - } - Start = mktime (&tm); - } - - if (Start == (time_t) -1) - return Start; - } - - if (yyHaveDay && !yyHaveDate) - { - tm.tm_mday += ((yyDayNumber - tm.tm_wday + 7) % 7 - + 7 * (yyDayOrdinal - (0 < yyDayOrdinal))); - Start = mktime (&tm); - if (Start == (time_t) -1) - return Start; - } - - if (yyHaveZone) - { - long delta = yyTimezone * 60L + difftm (&tm, gmtime (&Start)); - if ((Start + delta < Start) != (delta < 0)) - return -1; /* time_t overflow */ - Start += delta; - } - - return Start; -} - -#if defined (TEST) - -/* ARGSUSED */ -int -main (ac, av) - int ac; - char *av[]; -{ - char buff[MAX_BUFF_LEN + 1]; - time_t d; - - (void) printf ("Enter date, or blank line to exit.\n\t> "); - (void) fflush (stdout); - - buff[MAX_BUFF_LEN] = 0; - while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) - { - d = get_date (buff, (time_t *) NULL); - if (d == -1) - (void) printf ("Bad format - couldn't convert.\n"); - else - (void) printf ("%s", ctime (&d)); - (void) printf ("\t> "); - (void) fflush (stdout); - } - exit (0); - /* NOTREACHED */ -} -#endif /* defined (TEST) */ diff --git a/libmisc/getgr_nam_gid.c b/libmisc/getgr_nam_gid.c deleted file mode 100644 index 5294f50..0000000 --- a/libmisc/getgr_nam_gid.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include "prototypes.h" - -/* - * getgr_nam_gid - Return a pointer to the group specified by a string. - * The string may be a valid GID or a valid groupname. - * If the group does not exist on the system, NULL is returned. - */ -extern /*@only@*//*@null@*/struct group *getgr_nam_gid (/*@null@*/const char *grname) -{ - long long int gid; - char *endptr; - - if (NULL == grname) { - return NULL; - } - - errno = 0; - gid = strtoll (grname, &endptr, 10); - if ( ('\0' != *grname) - && ('\0' == *endptr) - && (ERANGE != errno) - && (/*@+longintegral@*/gid == (gid_t)gid)/*@=longintegral@*/) { - return xgetgrgid ((gid_t) gid); - } - return xgetgrnam (grname); -} - diff --git a/libmisc/getrange.c b/libmisc/getrange.c deleted file mode 100644 index 82f2edf..0000000 --- a/libmisc/getrange.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id: $" - -#include -#include - -#include "defines.h" -#include "prototypes.h" - -/* - * Parse a range and indicate if the range is valid. - * Valid ranges are in the form: - * -> min=max=long has_min has_max - * - -> max=long !has_min has_max - * - -> min=long has_min !has_max - * - -> min=long1 max=long2 has_min has_max - * - * If the range is valid, getrange returns 1. - * If the range is not valid, getrange returns 0. - */ -int getrange (const char *range, - unsigned long *min, bool *has_min, - unsigned long *max, bool *has_max) -{ - char *endptr; - unsigned long n; - - if (NULL == range) { - return 0; - } - - if ('-' == range[0]) { - if (!isdigit(range[1])) { - /* invalid */ - return 0; - } - errno = 0; - n = strtoul (&range[1], &endptr, 10); - if (('\0' != *endptr) || (ERANGE == errno)) { - /* invalid */ - return 0; - } - /* - */ - *has_min = false; - *has_max = true; - *max = n; - } else { - errno = 0; - n = strtoul (range, &endptr, 10); - if (ERANGE == errno) { - /* invalid */ - return 0; - } - switch (*endptr) { - case '\0': - /* */ - *has_min = true; - *has_max = true; - *min = n; - *max = n; - break; - case '-': - endptr++; - if ('\0' == *endptr) { - /* - */ - *has_min = true; - *has_max = false; - *min = n; - } else if (!isdigit (*endptr)) { - /* invalid */ - return 0; - } else { - *has_min = true; - *min = n; - errno = 0; - n = strtoul (endptr, &endptr, 10); - if ( ('\0' != *endptr) - || (ERANGE == errno)) { - /* invalid */ - return 0; - } - /* - */ - *has_max = true; - *max = n; - } - break; - default: - return 0; - } - } - - return 1; -} - diff --git a/libmisc/gettime.c b/libmisc/gettime.c deleted file mode 100644 index b288402..0000000 --- a/libmisc/gettime.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2017, Chris Lamb - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include "defines.h" -#include "prototypes.h" -#include "shadowlog.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; - FILE *shadow_logfd = log_get_logfd(); - - 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 (shadow_logfd, - _("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n"), - strerror(errno)); - } else if (endptr == source_date_epoch) { - fprintf (shadow_logfd, - _("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n"), - endptr); - } else if (*endptr != '\0') { - fprintf (shadow_logfd, - _("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n"), - endptr); - } else if (epoch > ULONG_MAX) { - fprintf (shadow_logfd, - _("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 (shadow_logfd, - _("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; -} diff --git a/libmisc/hushed.c b/libmisc/hushed.c deleted file mode 100644 index 84b2f55..0000000 --- a/libmisc/hushed.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1991 - 1993, Chip Rosenthal - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include "defines.h" -#include "prototypes.h" -#include "getdef.h" -/* - * hushed - determine if a user receives login messages - * - * Look in the hushed-logins file (or user's home directory) to see - * if the user is to receive the login-time messages. - */ -bool hushed (const char *username) -{ - struct passwd *pw; - const char *hushfile; - char buf[BUFSIZ]; - bool found; - FILE *fp; - - /* - * Get the name of the file to use. If this option is not - * defined, default to a noisy login. - */ - - hushfile = getdef_str ("HUSHLOGIN_FILE"); - if (NULL == hushfile) { - return false; - } - - pw = getpwnam (username); - if (NULL == pw) { - return false; - } - - /* - * If this is not a fully rooted path then see if the - * file exists in the user's home directory. - */ - - if (hushfile[0] != '/') { - (void) snprintf (buf, sizeof (buf), "%s/%s", pw->pw_dir, hushfile); - return (access (buf, F_OK) == 0); - } - - /* - * If this is a fully rooted path then go through the file - * and see if this user, or its shell is in there. - */ - - fp = fopen (hushfile, "r"); - if (NULL == fp) { - return false; - } - for (found = false; !found && (fgets (buf, (int) sizeof buf, fp) == buf);) { - buf[strcspn (buf, "\n")] = '\0'; - found = (strcmp (buf, pw->pw_shell) == 0) || - (strcmp (buf, pw->pw_name) == 0); - } - (void) fclose (fp); - return found; -} - diff --git a/libmisc/idmapping.c b/libmisc/idmapping.c deleted file mode 100644 index 30eb89f..0000000 --- a/libmisc/idmapping.c +++ /dev/null @@ -1,223 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2013 Eric Biederman - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include -#include -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "idmapping.h" -#if HAVE_SYS_CAPABILITY_H -#include -#include -#endif -#include "shadowlog.h" - -struct map_range *get_map_ranges(int ranges, int argc, char **argv) -{ - struct map_range *mappings, *mapping; - int idx, argidx; - - if (ranges < 0 || argc < 0) { - fprintf(log_get_logfd(), "%s: error calculating number of arguments\n", log_get_progname()); - return NULL; - } - - if (ranges != ((argc + 2) / 3)) { - fprintf(log_get_logfd(), "%s: ranges: %u is wrong for argc: %d\n", log_get_progname(), ranges, argc); - return NULL; - } - - if ((ranges * 3) > argc) { - fprintf(log_get_logfd(), "ranges: %u argc: %d\n", - ranges, argc); - fprintf(log_get_logfd(), - _( "%s: Not enough arguments to form %u mappings\n"), - log_get_progname(), ranges); - return NULL; - } - - mappings = calloc(ranges, sizeof(*mappings)); - if (!mappings) { - fprintf(log_get_logfd(), _( "%s: Memory allocation failure\n"), - log_get_progname()); - exit(EXIT_FAILURE); - } - - /* Gather up the ranges from the command line */ - mapping = mappings; - for (idx = 0, argidx = 0; idx < ranges; idx++, argidx += 3, mapping++) { - if (!getulong(argv[argidx + 0], &mapping->upper)) { - free(mappings); - return NULL; - } - if (!getulong(argv[argidx + 1], &mapping->lower)) { - free(mappings); - return NULL; - } - if (!getulong(argv[argidx + 2], &mapping->count)) { - free(mappings); - return NULL; - } - if (ULONG_MAX - mapping->upper <= mapping->count || ULONG_MAX - mapping->lower <= mapping->count) { - fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); - exit(EXIT_FAILURE); - } - if (mapping->upper > UINT_MAX || - mapping->lower > UINT_MAX || - mapping->count > UINT_MAX) { - fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); - exit(EXIT_FAILURE); - } - if (mapping->lower + mapping->count > UINT_MAX || - mapping->upper + mapping->count > UINT_MAX) { - fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); - 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(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); - exit(EXIT_FAILURE); - } - } - return mappings; -} - -/* Number of ascii digits needed to print any unsigned long in decimal. - * There are approximately 10 bits for every 3 decimal digits. - * So from bits to digits the formula is roundup((Number of bits)/10) * 3. - * For common sizes of integers this works out to: - * 2bytes --> 6 ascii estimate -> 65536 (5 real) - * 4bytes --> 12 ascii estimated -> 4294967296 (10 real) - * 8bytes --> 21 ascii estimated -> 18446744073709551616 (20 real) - * 16bytes --> 39 ascii estimated -> 340282366920938463463374607431768211456 (39 real) - */ -#define ULONG_DIGITS ((((sizeof(unsigned long) * CHAR_BIT) + 9)/10)*3) - -#if HAVE_SYS_CAPABILITY_H -static inline bool maps_lower_root(int cap, int ranges, const struct map_range *mappings) -{ - int idx; - const struct map_range *mapping; - - if (cap != CAP_SETUID) - return false; - - mapping = mappings; - for (idx = 0; idx < ranges; idx++, mapping++) { - if (mapping->lower == 0) - return true; - } - - return false; -} -#endif - -/* - * 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, const struct map_range *mappings, - const char *map_file, uid_t ruid) -{ - int idx; - const struct map_range *mapping; - size_t bufsize; - 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(log_get_logfd(), _("%s: Invalid map file %s specified\n"), log_get_progname(), 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(log_get_logfd(), _("%s: Could not prctl(PR_SET_KEEPCAPS)\n"), log_get_progname()); - exit(EXIT_FAILURE); - } - - if (seteuid(ruid) < 0) { - fprintf(log_get_logfd(), _("%s: Could not seteuid to %d\n"), log_get_progname(), 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); - /* - * When uid 0 from the ancestor userns is supposed to be mapped into - * the child userns we need to retain CAP_SETFCAP. - */ - if (maps_lower_root(cap, ranges, mappings)) - data[0].effective |= CAP_TO_MASK(CAP_SETFCAP); - data[0].permitted = data[0].effective; - if (capset(&hdr, data) < 0) { - fprintf(log_get_logfd(), _("%s: Could not set caps\n"), log_get_progname()); - exit(EXIT_FAILURE); - } -#endif - - bufsize = ranges * ((ULONG_DIGITS + 1) * 3); - pos = buf = xmalloc(bufsize); - - /* Build the mapping command */ - mapping = mappings; - for (idx = 0; idx < ranges; idx++, mapping++) { - /* Append this range to the string that will be written */ - int written = snprintf(pos, bufsize - (pos - buf), - "%lu %lu %lu\n", - mapping->upper, - mapping->lower, - mapping->count); - if ((written <= 0) || (written >= (bufsize - (pos - buf)))) { - fprintf(log_get_logfd(), _("%s: snprintf failed!\n"), log_get_progname()); - exit(EXIT_FAILURE); - } - pos += written; - } - - /* Write the mapping to the mapping file */ - fd = openat(proc_dir_fd, map_file, O_WRONLY); - if (fd < 0) { - fprintf(log_get_logfd(), _("%s: open of %s failed: %s\n"), - log_get_progname(), map_file, strerror(errno)); - exit(EXIT_FAILURE); - } - if (write(fd, buf, pos - buf) != (pos - buf)) { - fprintf(log_get_logfd(), _("%s: write to %s failed: %s\n"), - log_get_progname(), map_file, strerror(errno)); - exit(EXIT_FAILURE); - } - close(fd); - free(buf); -} diff --git a/libmisc/idmapping.h b/libmisc/idmapping.h deleted file mode 100644 index 46d4631..0000000 --- a/libmisc/idmapping.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2013 Eric Biederman - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#ifndef _IDMAPPING_H_ -#define _IDMAPPING_H_ - -#include - -struct map_range { - unsigned long upper; /* first ID inside the namespace */ - unsigned long lower; /* first ID outside the namespace */ - unsigned long count; /* Length of the inside and outside ranges */ -}; - -extern struct map_range *get_map_ranges(int ranges, int argc, char **argv); -extern void write_mapping(int proc_dir_fd, int ranges, - const struct map_range *mappings, const char *map_file, uid_t ruid); - -#endif /* _ID_MAPPING_H_ */ - diff --git a/libmisc/isexpired.c b/libmisc/isexpired.c deleted file mode 100644 index ff20396..0000000 --- a/libmisc/isexpired.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * Extracted from age.c and made part of libshadow.a - may be useful - * in other shadow-aware programs. --marekm - */ - -#include - -#include -#include "prototypes.h" -#include "defines.h" -#include -#include - -#ident "$Id$" - - -/* - * isexpired - determine if account is expired yet - * - * isexpired calculates the expiration date based on the - * password expiration criteria. - * - * Return value: - * 0: The password is still valid - * 1: The password has expired, it must be changed - * 2: The password has expired since a long time and the account is - * now disabled. (password cannot be changed) - * 3: The account has expired - */ -int isexpired (const struct passwd *pw, /*@null@*/const struct spwd *sp) -{ - long now; - - now = (long) time ((time_t *) 0) / SCALE; - - if (NULL == sp) { - return 0; - } - - /* - * Quick and easy - there is an expired account field - * along with an inactive account field. Do the expired - * one first since it is worse. - */ - - if ((sp->sp_expire > 0) && (now >= sp->sp_expire)) { - return 3; - } - - /* - * Last changed date 1970-01-01 (not very likely) means that - * the password must be changed on next login (passwd -e). - * - * The check for "x" is a workaround for RedHat NYS libc bug - - * if /etc/shadow doesn't exist, getspnam() still succeeds and - * returns sp_lstchg==0 (must change password) instead of -1! - */ - if ( (0 == sp->sp_lstchg) - && (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == 0)) { - return 1; - } - - if ( (sp->sp_lstchg > 0) - && (sp->sp_max >= 0) - && (sp->sp_inact >= 0) - && (now >= (sp->sp_lstchg + sp->sp_max + sp->sp_inact))) { - return 2; - } - - /* - * The last and max fields must be present for an account - * to have an expired password. A maximum of >10000 days - * is considered to be infinite. - */ - - if ( (-1 == sp->sp_lstchg) - || (-1 == sp->sp_max) - || (sp->sp_max >= ((10000L * DAY) / SCALE))) { - return 0; - } - - /* - * Calculate today's day and the day on which the password - * is going to expire. If that date has already passed, - * the password has expired. - */ - - if (now >= (sp->sp_lstchg + sp->sp_max)) { - return 1; - } - return 0; -} - diff --git a/libmisc/limits.c b/libmisc/limits.c deleted file mode 100644 index fea85fe..0000000 --- a/libmisc/limits.c +++ /dev/null @@ -1,589 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * Separated from setup.c. --marekm - * Resource limits thanks to Cristian Gafton. - * Enhancements of resource limit code by Thomas Orgis - */ - -#include - -#ifndef USE_PAM - -#ident "$Id$" - -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include -#include "getdef.h" -#include "shadowlog.h" -#ifdef HAVE_SYS_RESOURCE_H -#include -#define LIMITS -#endif -#ifdef LIMITS -#ifndef LIMITS_FILE -#define LIMITS_FILE "/etc/limits" -#endif -#define LOGIN_ERROR_RLIMIT 1 -#define LOGIN_ERROR_LOGIN 2 -/* Set a limit on a resource */ -/* - * rlimit - RLIMIT_XXXX - * value - string value to be read - * multiplier - value*multiplier is the actual limit - */ -static int setrlimit_value (unsigned int resource, - const char *value, - unsigned int multiplier) -{ - struct rlimit rlim; - rlim_t limit; - - /* The "-" is special, not belonging to a strange negative limit. - * It is infinity, in a controlled way. - */ - if ('-' == value[0]) { - limit = RLIM_INFINITY; - } - else { - /* We cannot use getlong here because it fails when there - * is more to the value than just this number! - * Also, we are limited to base 10 here (hex numbers will not - * work with the limit string parser as is anyway) - */ - char *endptr; - long longlimit = strtol (value, &endptr, 10); - if ((0 == longlimit) && (value == endptr)) { - /* No argument at all. No-op. - * FIXME: We could instead throw an error, though. - */ - return 0; - } - longlimit *= multiplier; - limit = (rlim_t)longlimit; - if (longlimit != limit) - { - /* FIXME: Again, silent error handling... - * Wouldn't screaming make more sense? - */ - return 0; - } - } - - rlim.rlim_cur = limit; - rlim.rlim_max = limit; - if (setrlimit (resource, &rlim) != 0) { - return LOGIN_ERROR_RLIMIT; - } - return 0; -} - - -static int set_prio (const char *value) -{ - long prio; - - if ( (getlong (value, &prio) == 0) - || (prio != (int) prio)) { - return 0; - } - if (setpriority (PRIO_PROCESS, 0, (int) prio) != 0) { - return LOGIN_ERROR_RLIMIT; - } - return 0; -} - - -static int set_umask (const char *value) -{ - unsigned long int mask; - - if ( (getulong (value, &mask) == 0) - || (mask != (mode_t) mask)) { - return 0; - } - - (void) umask ((mode_t) mask); - return 0; -} - - -/* Counts the number of user logins and check against the limit */ -static int check_logins (const char *name, const char *maxlogins) -{ -#ifdef USE_UTMPX - struct utmpx *ut; -#else /* !USE_UTMPX */ - struct utmp *ut; -#endif /* !USE_UTMPX */ - unsigned long limit, count; - - if (getulong (maxlogins, &limit) == 0) { - return 0; - } - - if (0 == limit) { /* maximum 0 logins ? */ - SYSLOG ((LOG_WARN, "No logins allowed for `%s'\n", name)); - return LOGIN_ERROR_LOGIN; - } - - count = 0; -#ifdef USE_UTMPX - setutxent (); - while ((ut = getutxent ())) -#else /* !USE_UTMPX */ - setutent (); - while ((ut = getutent ())) -#endif /* !USE_UTMPX */ - { - if (USER_PROCESS != ut->ut_type) { - continue; - } - if ('\0' == ut->ut_user[0]) { - continue; - } - if (strncmp (name, ut->ut_user, sizeof (ut->ut_user)) != 0) { - continue; - } - count++; - if (count > limit) { - break; - } - } -#ifdef USE_UTMPX - endutxent (); -#else /* !USE_UTMPX */ - endutent (); -#endif /* !USE_UTMPX */ - /* - * This is called after setutmp(), so the number of logins counted - * includes the user who is currently trying to log in. - */ - if (count > limit) { - SYSLOG ((LOG_WARN, - "Too many logins (max %lu) for %s\n", - limit, name)); - return LOGIN_ERROR_LOGIN; - } - return 0; -} - -/* Function setup_user_limits - checks/set limits for the current login - * Original idea from Joel Katz's lshell. Ported to shadow-login - * by Cristian Gafton - gafton@sorosis.ro - * - * We are passed a string of the form ('BASH' constants for ulimit) - * [Aa][Cc][Dd][Ff][Mm][Nn][Rr][Ss][Tt][Uu][Ll][Pp][Ii][Oo] - * (eg. 'C2F256D2048N5' or 'C2 F256 D2048 N5') - * where: - * [Aa]: a = RLIMIT_AS max address space (KB) - * [Cc]: c = RLIMIT_CORE max core file size (KB) - * [Dd]: d = RLIMIT_DATA max data size (KB) - * [Ff]: f = RLIMIT_FSIZE max file size (KB) - * [Ii]: i = RLIMIT_NICE max nice value (0..39 translates to 20..-19) - * [Kk]: k = file creation masK (umask) - * [Ll]: l = max number of logins for this user - * [Mm]: m = RLIMIT_MEMLOCK max locked-in-memory address space (KB) - * [Nn]: n = RLIMIT_NOFILE max number of open files - * [Oo]: o = RLIMIT_RTPRIO max real time priority (linux/sched.h 0..MAX_RT_PRIO) - * [Pp]: p = process priority -20..20 (negative = high, positive = low) - * [Rr]: r = RLIMIT_RSS max resident set size (KB) - * [Ss]: s = RLIMIT_STACK max stack size (KB) - * [Tt]: t = RLIMIT_CPU max CPU time (MIN) - * [Uu]: u = RLIMIT_NPROC max number of processes - * - * NOTE: Remember to extend the "no-limits" string below when adding a new - * limit... - * - * Return value: - * 0 = okay, of course - * LOGIN_ERROR_RLIMIT = error setting some RLIMIT - * LOGIN_ERROR_LOGIN = error - too many logins for this user - * - * buf - the limits string - * name - the username - */ -static int do_user_limits (const char *buf, const char *name) -{ - const char *pp; - int retval = 0; - bool reported = false; - - pp = buf; - /* Skip leading whitespace. */ - while ((' ' == *pp) || ('\t' == *pp)) { - pp++; - } - - /* The special limit string "-" results in no limit for all known - * limits. - * We achieve that by parsing a full limit string, parts of it - * being ignored if a limit type is not known to the system. - * Though, there will be complaining for unknown limit types. - */ - if (strcmp (pp, "-") == 0) { - /* Remember to extend this, too, when adding new limits! - * Oh... but "unlimited" does not make sense for umask, - * or does it? (K-) - */ - pp = "A- C- D- F- I- L- M- N- O- P- R- S- T- U-"; - } - - while ('\0' != *pp) { - switch (*pp++) { -#ifdef RLIMIT_AS - case 'a': - case 'A': - /* RLIMIT_AS - max address space (KB) */ - retval |= setrlimit_value (RLIMIT_AS, pp, 1024); - break; -#endif -#ifdef RLIMIT_CORE - case 'c': - case 'C': - /* RLIMIT_CORE - max core file size (KB) */ - retval |= setrlimit_value (RLIMIT_CORE, pp, 1024); - break; -#endif -#ifdef RLIMIT_DATA - case 'd': - case 'D': - /* RLIMIT_DATA - max data size (KB) */ - retval |= setrlimit_value (RLIMIT_DATA, pp, 1024); - break; -#endif -#ifdef RLIMIT_FSIZE - case 'f': - case 'F': - /* RLIMIT_FSIZE - Maximum filesize (KB) */ - retval |= setrlimit_value (RLIMIT_FSIZE, pp, 1024); - break; -#endif -#ifdef RLIMIT_NICE - case 'i': - case 'I': - /* RLIMIT_NICE - max scheduling priority (0..39) */ - retval |= setrlimit_value (RLIMIT_NICE, pp, 1); - break; -#endif - case 'k': - case 'K': - retval |= set_umask (pp); - break; - case 'l': - case 'L': - /* LIMIT the number of concurrent logins */ - retval |= check_logins (name, pp); - break; -#ifdef RLIMIT_MEMLOCK - case 'm': - case 'M': - /* RLIMIT_MEMLOCK - max locked-in-memory address space (KB) */ - retval |= setrlimit_value (RLIMIT_MEMLOCK, pp, 1024); - break; -#endif -#ifdef RLIMIT_NOFILE - case 'n': - case 'N': - /* RLIMIT_NOFILE - max number of open files */ - retval |= setrlimit_value (RLIMIT_NOFILE, pp, 1); - break; -#endif -#ifdef RLIMIT_RTPRIO - case 'o': - case 'O': - /* RLIMIT_RTPRIO - max real time priority (0..MAX_RT_PRIO) */ - retval |= setrlimit_value (RLIMIT_RTPRIO, pp, 1); - break; -#endif - case 'p': - case 'P': - retval |= set_prio (pp); - break; -#ifdef RLIMIT_RSS - case 'r': - case 'R': - /* RLIMIT_RSS - max resident set size (KB) */ - retval |= setrlimit_value (RLIMIT_RSS, pp, 1024); - break; -#endif -#ifdef RLIMIT_STACK - case 's': - case 'S': - /* RLIMIT_STACK - max stack size (KB) */ - retval |= setrlimit_value (RLIMIT_STACK, pp, 1024); - break; -#endif -#ifdef RLIMIT_CPU - case 't': - case 'T': - /* RLIMIT_CPU - max CPU time (MIN) */ - retval |= setrlimit_value (RLIMIT_CPU, pp, 60); - break; -#endif -#ifdef RLIMIT_NPROC - case 'u': - case 'U': - /* RLIMIT_NPROC - max number of processes */ - retval |= setrlimit_value (RLIMIT_NPROC, pp, 1); - break; -#endif - default: - /* Only report invalid strings once */ - /* Note: A string can be invalid just because a - * specific (theoretically valid) setting is not - * supported by this build. - * It is just a warning in syslog anyway. The line - * is still processed - */ - if (!reported) { - SYSLOG ((LOG_WARN, - "Invalid limit string: '%s'", - pp-1)); - reported = true; - retval |= LOGIN_ERROR_RLIMIT; - } - } - /* After parsing one limit setting (or just complaining - * about it), one still needs to skip its argument to - * prevent a bogus warning on trying to parse that as - * limit specification. - * So, let's skip all digits, "-" and our limited set of - * whitespace. - */ - while ( isdigit (*pp) - || ('-' == *pp) - || (' ' == *pp) - || ('\t' ==*pp)) { - pp++; - } - } - return retval; -} - -/* Check if user uname is in the group gname. - * Can I be sure that gr_mem contains no UID as string? - * Returns true when user is in the group, false when not. - * Any error is treated as false. - */ -static bool user_in_group (const char *uname, const char *gname) -{ - struct group *groupdata; - - if (uname == NULL || gname == NULL) { - return false; - } - - /* We are not claiming to be re-entrant! - * In case of paranoia or a multithreaded login program, - * one needs to add some mess for getgrnam_r. */ - groupdata = getgrnam (gname); - if (NULL == groupdata) { - SYSLOG ((LOG_WARN, "Nonexisting group `%s' in limits file.", - gname)); - return false; - } - - return is_on_list (groupdata->gr_mem, uname); -} - -static int setup_user_limits (const char *uname) -{ - FILE *fil; - char buf[1024]; - char name[1024]; - char limits[1024]; - char deflimits[1024]; - char tempbuf[1024]; - - /* init things */ - memzero (buf, sizeof (buf)); - memzero (name, sizeof (name)); - memzero (limits, sizeof (limits)); - memzero (deflimits, sizeof (deflimits)); - memzero (tempbuf, sizeof (tempbuf)); - - /* start the checks */ - fil = fopen (LIMITS_FILE, "r"); - if (fil == NULL) { - return 0; - } - /* The limits file have the following format: - * - '#' (comment) chars only as first chars on a line; - * - username must start on first column (or *, or @group) - * - * FIXME: A better (smarter) checking should be done - */ - while (fgets (buf, 1024, fil) != NULL) { - if (('#' == buf[0]) || ('\n' == buf[0])) { - continue; - } - memzero (tempbuf, sizeof (tempbuf)); - /* a valid line should have a username, then spaces, - * then limits - * we allow the format: - * username L2 D2048 R4096 - * where spaces={' ',\t}. Also, we reject invalid limits. - * Imposing a limit should be done with care, so a wrong - * entry means no care anyway :-). - * - * A '-' as a limits strings means no limits - * - * The username can also be: - * '*': the default limits (only the last is taken into - * account) - * @group: the limit applies to the members of the group - * - * To clarify: The first entry with matching user name rules, - * everything after it is ignored. If there is no user entry, - * the last encountered entry for a matching group rules. - * If there is no matching group entry, the default limits rule. - */ - if (sscanf (buf, "%s%[ACDFIKLMNOPRSTUacdfiklmnoprstu0-9 \t-]", - name, tempbuf) == 2) { - if (strcmp (name, uname) == 0) { - strcpy (limits, tempbuf); - break; - } else if (strcmp (name, "*") == 0) { - strcpy (deflimits, tempbuf); - } else if (name[0] == '@') { - /* If the user is in the group, the group - * limits apply unless later a line for - * the specific user is found. - */ - if (user_in_group (uname, name+1)) { - strcpy (limits, tempbuf); - } - } - } - } - (void) fclose (fil); - if (limits[0] == '\0') { - /* no user specific limits */ - if (deflimits[0] == '\0') { /* no default limits */ - return 0; - } - strcpy (limits, deflimits); /* use the default limits */ - } - return do_user_limits (limits, uname); -} -#endif /* LIMITS */ - - -static void setup_usergroups (const struct passwd *info) -{ - const struct group *grp; - -/* - * if not root, and UID == GID, and username is the same as primary - * group name, set umask group bits to be the same as owner bits - * (examples: 022 -> 002, 077 -> 007). - */ - if ((0 != info->pw_uid) && (info->pw_uid == info->pw_gid)) { - /* local, no need for xgetgrgid */ - grp = getgrgid (info->pw_gid); - if ( (NULL != grp) - && (strcmp (info->pw_name, grp->gr_name) == 0)) { - mode_t tmpmask; - tmpmask = umask (0777); - tmpmask = (tmpmask & ~070) | ((tmpmask >> 3) & 070); - (void) umask (tmpmask); - } - } -} - -/* - * set the process nice, ulimit, and umask from the password file entry - */ - -void setup_limits (const struct passwd *info) -{ - char *cp; - - if (getdef_bool ("USERGROUPS_ENAB")) { - setup_usergroups (info); - } - - /* - * See if the GECOS field contains values for NICE, UMASK or ULIMIT. - * If this feature is enabled in /etc/login.defs, we make those - * values the defaults for this login session. - */ - - if (getdef_bool ("QUOTAS_ENAB")) { -#ifdef LIMITS - if (info->pw_uid != 0) { - if ((setup_user_limits (info->pw_name) & LOGIN_ERROR_LOGIN) != 0) { - (void) fputs (_("Too many logins.\n"), log_get_logfd()); - (void) sleep (2); /* XXX: Should be FAIL_DELAY */ - exit (EXIT_FAILURE); - } - } -#endif - for (cp = info->pw_gecos; cp != NULL; cp = strchr (cp, ',')) { - if (',' == *cp) { - cp++; - } - - if (strncmp (cp, "pri=", 4) == 0) { - long int inc; - if ( (getlong (cp + 4, &inc) == 1) - && (inc >= -20) && (inc <= 20)) { - errno = 0; - if ( (nice ((int) inc) != -1) - || (0 != errno)) { - continue; - } - } - - /* Failed to parse or failed to nice() */ - SYSLOG ((LOG_WARN, - "Can't set the nice value for user %s", - info->pw_name)); - - continue; - } - if (strncmp (cp, "ulimit=", 7) == 0) { - long int blocks; - if ( (getlong (cp + 7, &blocks) == 0) - || (blocks != (int) blocks) - || (set_filesize_limit ((int) blocks) != 0)) { - SYSLOG ((LOG_WARN, - "Can't set the ulimit for user %s", - info->pw_name)); - } - continue; - } - if (strncmp (cp, "umask=", 6) == 0) { - unsigned long int mask; - if ( (getulong (cp + 6, &mask) == 0) - || (mask != (mode_t) mask)) { - SYSLOG ((LOG_WARN, - "Can't set umask value for user %s", - info->pw_name)); - } else { - (void) umask ((mode_t) mask); - } - - continue; - } - } - } -} - -#else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !USE_PAM */ - diff --git a/libmisc/list.c b/libmisc/list.c deleted file mode 100644 index 9d7ec77..0000000 --- a/libmisc/list.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include "prototypes.h" -#include "defines.h" -/* - * add_list - add a member to a list of group members - * - * the array of member names is searched for the new member - * name, and if not present it is added to a freshly allocated - * list of users. - */ -/*@only@*/ /*@out@*/char **add_list (/*@returned@*/ /*@only@*/char **list, const char *member) -{ - int i; - char **tmp; - - assert (NULL != member); - assert (NULL != list); - - /* - * Scan the list for the new name. Return the original list - * pointer if it is present. - */ - - for (i = 0; list[i] != (char *) 0; i++) { - if (strcmp (list[i], member) == 0) { - return list; - } - } - - /* - * Allocate a new list pointer large enough to hold all the - * old entries, and the new entries as well. - */ - - tmp = (char **) xmalloc ((i + 2) * sizeof member); - - /* - * Copy the original list to the new list, then append the - * new member and NULL terminate the result. This new list - * is returned to the invoker. - */ - - for (i = 0; list[i] != (char *) 0; i++) { - tmp[i] = list[i]; - } - - tmp[i] = xstrdup (member); - tmp[i+1] = (char *) 0; - - return tmp; -} - -/* - * del_list - delete a member from a list of group members - * - * the array of member names is searched for the old member - * name, and if present it is deleted from a freshly allocated - * list of users. - */ - -/*@only@*/ /*@out@*/char **del_list (/*@returned@*/ /*@only@*/char **list, const char *member) -{ - int i, j; - char **tmp; - - assert (NULL != member); - assert (NULL != list); - - /* - * Scan the list for the old name. Return the original list - * pointer if it is not present. - */ - - for (i = j = 0; list[i] != (char *) 0; i++) { - if (strcmp (list[i], member) != 0) { - j++; - } - } - - if (j == i) { - return list; - } - - /* - * Allocate a new list pointer large enough to hold all the - * old entries. - */ - - tmp = (char **) xmalloc ((j + 1) * sizeof member); - - /* - * Copy the original list except the deleted members to the - * new list, then NULL terminate the result. This new list - * is returned to the invoker. - */ - - for (i = j = 0; list[i] != (char *) 0; i++) { - if (strcmp (list[i], member) != 0) { - tmp[j] = list[i]; - j++; - } - } - - tmp[j] = (char *) 0; - - return tmp; -} - -/* - * Duplicate a list. - * The input list is not modified, but in order to allow the use of this - * function with list of members, the list elements are not enforced to be - * constant strings here. - */ -/*@only@*/ /*@out@*/char **dup_list (char *const *list) -{ - int i; - char **tmp; - - assert (NULL != list); - - for (i = 0; NULL != list[i]; i++); - - tmp = (char **) xmalloc ((i + 1) * sizeof (char *)); - - i = 0; - while (NULL != *list) { - tmp[i] = xstrdup (*list); - i++; - list++; - } - - tmp[i] = (char *) 0; - return tmp; -} - -/* - * Check if member is part of the input list - * The input list is not modified, but in order to allow the use of this - * function with list of members, the list elements are not enforced to be - * constant strings here. - */ -bool is_on_list (char *const *list, const char *member) -{ - assert (NULL != member); - assert (NULL != list); - - while (NULL != *list) { - if (strcmp (*list, member) == 0) { - return true; - } - list++; - } - - return false; -} - -/* - * comma_to_list - convert comma-separated list to (char *) array - */ - -/*@only@*/char **comma_to_list (const char *comma) -{ - char *members; - char **array; - int i; - char *cp; - char *cp2; - - assert (NULL != comma); - - /* - * Make a copy since we are going to be modifying the list - */ - - members = xstrdup (comma); - - /* - * Count the number of commas in the list - */ - - for (cp = members, i = 0;; i++) { - cp2 = strchr (cp, ','); - if (NULL != cp2) { - cp = cp2 + 1; - } else { - break; - } - } - - /* - * Add 2 - one for the ending NULL, the other for the last item - */ - - i += 2; - - /* - * Allocate the array we're going to store the pointers into. - */ - - array = (char **) xmalloc (sizeof (char *) * i); - - /* - * Empty list is special - 0 members, not 1 empty member. --marekm - */ - - if ('\0' == *members) { - *array = (char *) 0; - free (members); - return array; - } - - /* - * Now go walk that list all over again, this time building the - * array of pointers. - */ - - for (cp = members, i = 0;; i++) { - array[i] = cp; - cp2 = strchr (cp, ','); - if (NULL != cp2) { - *cp2 = '\0'; - cp2++; - cp = cp2; - } else { - array[i + 1] = (char *) 0; - break; - } - } - - /* - * Return the new array of pointers - */ - - return array; -} - diff --git a/libmisc/log.c b/libmisc/log.c deleted file mode 100644 index a220be0..0000000 --- a/libmisc/log.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include "defines.h" -#include -#include "prototypes.h" - -/* - * dolastlog - create lastlog entry - * - * A "last login" entry is created for the user being logged in. The - * UID is extracted from the global (struct passwd) entry and the - * TTY information is gotten from the (struct utmp). - */ -void dolastlog ( - struct lastlog *ll, - const struct passwd *pw, - /*@unique@*/const char *line, - /*@unique@*/const char *host) -{ - int fd; - off_t offset; - struct lastlog newlog; - time_t ll_time; - - /* - * If the file does not exist, don't create it. - */ - - fd = open (LASTLOG_FILE, O_RDWR); - if (-1 == fd) { - return; - } - - /* - * The file is indexed by UID number. Seek to the record - * for this UID. Negative UID's will create problems, but ... - */ - - offset = (off_t) pw->pw_uid * sizeof newlog; - - if (lseek (fd, offset, SEEK_SET) != offset) { - SYSLOG ((LOG_WARN, - "Can't read last lastlog entry for UID %lu in %s. Entry not updated.", - (unsigned long) pw->pw_uid, LASTLOG_FILE)); - (void) close (fd); - return; - } - - /* - * Read the old entry so we can tell the user when they last - * logged in. Then construct the new entry and write it out - * the way we read the old one in. - */ - - if (read (fd, (void *) &newlog, sizeof newlog) != (ssize_t) sizeof newlog) { - memzero (&newlog, sizeof newlog); - } - if (NULL != ll) { - *ll = newlog; - } - - ll_time = newlog.ll_time; - (void) time (&ll_time); - newlog.ll_time = ll_time; - strncpy (newlog.ll_line, line, sizeof (newlog.ll_line) - 1); -#if HAVE_LL_HOST - strncpy (newlog.ll_host, host, sizeof (newlog.ll_host) - 1); -#endif - if ( (lseek (fd, offset, SEEK_SET) != offset) - || (write (fd, (const void *) &newlog, sizeof newlog) != (ssize_t) sizeof newlog) - || (close (fd) != 0)) { - SYSLOG ((LOG_WARN, - "Can't write lastlog entry for UID %lu in %s.", - (unsigned long) pw->pw_uid, LASTLOG_FILE)); - (void) close (fd); - } -} - diff --git a/libmisc/loginprompt.c b/libmisc/loginprompt.c deleted file mode 100644 index 0a67f46..0000000 --- a/libmisc/loginprompt.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include "getdef.h" - -static void login_exit (unused int sig) -{ - exit (EXIT_FAILURE); -} - -/* - * login_prompt - prompt the user for their login name - * - * login_prompt() displays the standard login prompt. If ISSUE_FILE - * is set in login.defs, this file is displayed before the prompt. - */ - -void login_prompt (const char *prompt, char *name, int namesize) -{ - char buf[1024]; - -#define MAX_ENV 32 - char *envp[MAX_ENV]; - char *cp; - int i; - FILE *fp; - - sighandler_t sigquit; -#ifdef SIGTSTP - sighandler_t sigtstp; -#endif - - /* - * There is a small chance that a QUIT character will be part of - * some random noise during a prompt. Deal with this by exiting - * instead of core dumping. If SIGTSTP is defined, do the same - * thing for that signal. - */ - - sigquit = signal (SIGQUIT, login_exit); -#ifdef SIGTSTP - sigtstp = signal (SIGTSTP, login_exit); -#endif - - /* - * See if the user has configured the issue file to - * be displayed and display it before the prompt. - */ - - if (NULL != prompt) { - const char *fname = getdef_str ("ISSUE_FILE"); - if (NULL != fname) { - fp = fopen (fname, "r"); - if (NULL != fp) { - while ((i = getc (fp)) != EOF) { - (void) putc (i, stdout); - } - - (void) fclose (fp); - } - } - (void) gethostname (buf, sizeof buf); - printf (prompt, buf); - (void) fflush (stdout); - } - - /* - * Read the user's response. The trailing newline will be - * removed. - */ - - memzero (buf, sizeof buf); - if (fgets (buf, (int) sizeof buf, stdin) != buf) { - exit (EXIT_FAILURE); - } - - cp = strchr (buf, '\n'); - if (NULL == cp) { - exit (EXIT_FAILURE); - } - *cp = '\0'; /* remove \n [ must be there ] */ - - /* - * Skip leading whitespace. This makes " username" work right. - * Then copy the rest (up to the end or the first "non-graphic" - * character into the username. - */ - - for (cp = buf; *cp == ' ' || *cp == '\t'; cp++); - - for (i = 0; i < namesize - 1 && isgraph (*cp); name[i++] = *cp++); - while (isgraph (*cp)) { - cp++; - } - - if ('\0' != *cp) { - cp++; - } - - name[i] = '\0'; - - /* - * This is a disaster, at best. The user may have entered extra - * environmental variables at the prompt. There are several ways - * to do this, and I just take the easy way out. - */ - - if ('\0' != *cp) { /* process new variables */ - char *nvar; - int count = 1; - int envc; - - for (envc = 0; envc < MAX_ENV; envc++) { - nvar = strtok ((0 != envc) ? (char *) 0 : cp, " \t,"); - if (NULL == nvar) { - break; - } - if (strchr (nvar, '=') != NULL) { - envp[envc] = nvar; - } else { - size_t len = strlen (nvar) + 32; - envp[envc] = xmalloc (len); - (void) snprintf (envp[envc], len, - "L%d=%s", count++, nvar); - } - } - set_env (envc, envp); - } - - /* - * Set the SIGQUIT handler back to its original value - */ - - (void) signal (SIGQUIT, sigquit); -#ifdef SIGTSTP - (void) signal (SIGTSTP, sigtstp); -#endif -} - diff --git a/libmisc/mail.c b/libmisc/mail.c deleted file mode 100644 index 647f879..0000000 --- a/libmisc/mail.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include -#include "prototypes.h" -#include "defines.h" -#include -#include -#include -#include - -#include "getdef.h" - -#ident "$Id$" - - -void mailcheck (void) -{ - struct stat statbuf; - char *mailbox; - - if (!getdef_bool ("MAIL_CHECK_ENAB")) { - return; - } - - /* - * Check incoming mail in Maildir format - J. - */ - mailbox = getenv ("MAILDIR"); - if (NULL != mailbox) { - char *newmail; - size_t len = strlen (mailbox) + 5; - int wlen; - - newmail = xmalloc (len); - wlen = snprintf (newmail, len, "%s/new", mailbox); - assert (wlen == (int) len - 1); - - if (stat (newmail, &statbuf) != -1 && statbuf.st_size != 0) { - if (statbuf.st_mtime > statbuf.st_atime) { - free (newmail); - (void) puts (_("You have new mail.")); - return; - } - } - free (newmail); - } - - mailbox = getenv ("MAIL"); - if (NULL == mailbox) { - return; - } - - if ( (stat (mailbox, &statbuf) == -1) - || (statbuf.st_size == 0)) { - (void) puts (_("No mail.")); - } else if (statbuf.st_atime > statbuf.st_mtime) { - (void) puts (_("You have mail.")); - } else { - (void) puts (_("You have new mail.")); - } -} - diff --git a/libmisc/motd.c b/libmisc/motd.c deleted file mode 100644 index 7f7e523..0000000 --- a/libmisc/motd.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2010 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include "prototypes.h" -#include "defines.h" -#include "getdef.h" -/* - * motd -- output the /etc/motd file - * - * motd() determines the name of a login announcement file and outputs - * it to the user's terminal at login time. The MOTD_FILE configuration - * option is a colon-delimited list of filenames. - */ -void motd (void) -{ - FILE *fp; - char *motdlist; - const char *motdfile; - char *mb; - int c; - - motdfile = getdef_str ("MOTD_FILE"); - if (NULL == motdfile) { - return; - } - - motdlist = xstrdup (motdfile); - - for (mb = motdlist; ;mb = NULL) { - motdfile = strtok (mb, ":"); - if (NULL == motdfile) { - break; - } - - fp = fopen (motdfile, "r"); - if (NULL != fp) { - while ((c = getc (fp)) != EOF) { - putchar (c); - } - fclose (fp); - } - } - fflush (stdout); - - free (motdlist); -} - diff --git a/libmisc/myname.c b/libmisc/myname.c deleted file mode 100644 index 1b02617..0000000 --- a/libmisc/myname.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * myname.c - determine the current username and get the passwd entry - * - */ - -#include - -#ident "$Id$" - -#include "defines.h" -#include -#include "prototypes.h" -/*@null@*/ /*@only@*/struct passwd *get_my_pwent (void) -{ - struct passwd *pw; - const char *cp = getlogin (); - uid_t ruid = getuid (); - - /* - * Try getlogin() first - if it fails or returns a non-existent - * username, or a username which doesn't match the real UID, fall - * back to getpwuid(getuid()). This should work reasonably with - * usernames longer than the utmp limit (8 characters), as well as - * shared UIDs - but not both at the same time... - * - * XXX - when running from su, will return the current user (not - * the original user, like getlogin() does). Does this matter? - */ - if ((NULL != cp) && ('\0' != *cp)) { - pw = xgetpwnam (cp); - if ((NULL != pw) && (pw->pw_uid == ruid)) { - return pw; - } - if (NULL != pw) { - pw_free (pw); - } - } - - return xgetpwuid (ruid); -} - diff --git a/libmisc/obscure.c b/libmisc/obscure.c deleted file mode 100644 index 3daaa95..0000000 --- a/libmisc/obscure.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifndef USE_PAM - -#ident "$Id$" - - -/* - * This version of obscure.c contains modifications to support "cracklib" - * by Alec Muffet (alec.muffett@uk.sun.com). You must obtain the Cracklib - * library source code for this function to operate. - */ -#include -#include -#include "prototypes.h" -#include "defines.h" -#include "getdef.h" -/* - * can't be a palindrome - like `R A D A R' or `M A D A M' - */ -static bool palindrome (unused const char *old, const char *new) -{ - size_t i, j; - - i = strlen (new); - - for (j = 0; j < i; j++) { - if (new[i - j - 1] != new[j]) { - return false; - } - } - - return true; -} - -/* - * more than half of the characters are different ones. - */ - -static bool similar (/*@notnull@*/const char *old, /*@notnull@*/const char *new) -{ - int i, j; - - /* - * XXX - sometimes this fails when changing from a simple password - * to a really long one (MD5). For now, I just return success if - * the new password is long enough. Please feel free to suggest - * something better... --marekm - */ - if (strlen (new) >= 8) { - return false; - } - - for (i = j = 0; ('\0' != new[i]) && ('\0' != old[i]); i++) { - if (strchr (new, old[i]) != NULL) { - j++; - } - } - - if (i >= j * 2) { - return false; - } - - return true; -} - -/* - * a nice mix of characters. - */ - -static bool simple (unused const char *old, const char *new) -{ - bool digits = false; - bool uppers = false; - bool lowers = false; - bool others = false; - int size; - int i; - - for (i = 0; '\0' != new[i]; i++) { - if (isdigit (new[i])) { - digits = true; - } else if (isupper (new[i])) { - uppers = true; - } else if (islower (new[i])) { - lowers = true; - } else { - others = true; - } - } - - /* - * The scam is this - a password of only one character type - * must be 8 letters long. Two types, 7, and so on. - */ - - size = 9; - if (digits) { - size--; - } - if (uppers) { - size--; - } - if (lowers) { - size--; - } - if (others) { - size--; - } - - if (size <= i) { - return false; - } - - return true; -} - -static char *str_lower (/*@returned@*/char *string) -{ - char *cp; - - for (cp = string; '\0' != *cp; cp++) { - *cp = tolower (*cp); - } - return string; -} - -static /*@observer@*//*@null@*/const char *password_check ( - /*@notnull@*/const char *old, - /*@notnull@*/const char *new, - /*@notnull@*/const struct passwd *pwdp) -{ - const char *msg = NULL; - char *oldmono, *newmono, *wrapped; - -#ifdef HAVE_LIBCRACK - char *dictpath; - -#ifdef HAVE_LIBCRACK_PW - char *FascistCheckPw (); -#else - char *FascistCheck (); -#endif -#endif - - if (strcmp (new, old) == 0) { - return _("no change"); - } - - newmono = str_lower (xstrdup (new)); - oldmono = str_lower (xstrdup (old)); - wrapped = xmalloc (strlen (oldmono) * 2 + 1); - strcpy (wrapped, oldmono); - strcat (wrapped, oldmono); - - if (palindrome (oldmono, newmono)) { - msg = _("a palindrome"); - } else if (strcmp (oldmono, newmono) == 0) { - msg = _("case changes only"); - } else if (similar (oldmono, newmono)) { - msg = _("too similar"); - } else if (simple (old, new)) { - msg = _("too simple"); - } else if (strstr (wrapped, newmono) != NULL) { - msg = _("rotated"); - } else { -#ifdef HAVE_LIBCRACK - /* - * Invoke Alec Muffett's cracklib routines. - */ - - dictpath = getdef_str ("CRACKLIB_DICTPATH"); - if (NULL != dictpath) { -#ifdef HAVE_LIBCRACK_PW - msg = FascistCheckPw (new, dictpath, pwdp); -#else - msg = FascistCheck (new, dictpath); -#endif - } -#endif - } - strzero (newmono); - strzero (oldmono); - strzero (wrapped); - free (newmono); - free (oldmono); - free (wrapped); - - return msg; -} - -static /*@observer@*//*@null@*/const char *obscure_msg ( - /*@notnull@*/const char *old, - /*@notnull@*/const char *new, - /*@notnull@*/const struct passwd *pwdp) -{ - size_t maxlen, oldlen, newlen; - char *new1, *old1; - const char *msg; - const char *result; - - oldlen = strlen (old); - newlen = strlen (new); - - if (newlen < (size_t) getdef_num ("PASS_MIN_LEN", 0)) { - return _("too short"); - } - - /* - * Remaining checks are optional. - */ - if (!getdef_bool ("OBSCURE_CHECKS_ENAB")) { - return NULL; - } - - msg = password_check (old, new, pwdp); - if (NULL != msg) { - return msg; - } - - result = getdef_str ("ENCRYPT_METHOD"); - if (NULL == result) { - /* The traditional crypt() truncates passwords to 8 chars. It is - possible to circumvent the above checks by choosing an easy - 8-char password and adding some random characters to it... - Example: "password$%^&*123". So check it again, this time - truncated to the maximum length. Idea from npasswd. --marekm */ - - if (getdef_bool ("MD5_CRYPT_ENAB")) { - return NULL; - } - - } else { - - if ( (strcmp (result, "MD5") == 0) -#ifdef USE_SHA_CRYPT - || (strcmp (result, "SHA256") == 0) - || (strcmp (result, "SHA512") == 0) -#endif -#ifdef USE_BCRYPT - || (strcmp (result, "BCRYPT") == 0) -#endif -#ifdef USE_YESCRYPT - || (strcmp (result, "YESCRYPT") == 0) -#endif - ) { - return NULL; - } - - } - maxlen = (size_t) getdef_num ("PASS_MAX_LEN", 8); - if ( (oldlen <= maxlen) - && (newlen <= maxlen)) { - return NULL; - } - - new1 = xstrdup (new); - old1 = xstrdup (old); - if (newlen > maxlen) { - new1[maxlen] = '\0'; - } - if (oldlen > maxlen) { - old1[maxlen] = '\0'; - } - - msg = password_check (old1, new1, pwdp); - - memzero (new1, newlen); - memzero (old1, oldlen); - free (new1); - free (old1); - - return msg; -} - -/* - * Obscure - see if password is obscure enough. - * - * The programmer is encouraged to add as much complexity to this - * routine as desired. Included are some of my favorite ways to - * check passwords. - */ - -bool obscure (const char *old, const char *new, const struct passwd *pwdp) -{ - const char *msg = obscure_msg (old, new, pwdp); - - if (NULL != msg) { - printf (_("Bad password: %s. "), msg); - return false; - } - return true; -} - -#else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !USE_PAM */ diff --git a/libmisc/pam_pass.c b/libmisc/pam_pass.c deleted file mode 100644 index 166a42e..0000000 --- a/libmisc/pam_pass.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1997 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifdef USE_PAM - -#ident "$Id$" - - -/* - * Change the user's password using PAM. - */ -#include -#include -#include -#include -#include "defines.h" -#include "pam_defs.h" -#include "prototypes.h" -#include "shadowlog.h" - -void do_pam_passwd (const char *user, bool silent, bool change_expired) -{ - pam_handle_t *pamh = NULL; - int flags = 0, ret; - FILE *shadow_logfd = log_get_logfd(); - - if (silent) - flags |= PAM_SILENT; - if (change_expired) - flags |= PAM_CHANGE_EXPIRED_AUTHTOK; - - ret = pam_start ("passwd", user, &conv, &pamh); - if (ret != PAM_SUCCESS) { - fprintf (shadow_logfd, - _("passwd: pam_start() failed, error %d\n"), ret); - exit (10); /* XXX */ - } - - ret = pam_chauthtok (pamh, flags); - if (ret != PAM_SUCCESS) { - fprintf (shadow_logfd, _("passwd: %s\n"), pam_strerror (pamh, ret)); - fputs (_("passwd: password unchanged\n"), shadow_logfd); - pam_end (pamh, ret); - exit (10); /* XXX */ - } - - fputs (_("passwd: password updated successfully\n"), shadow_logfd); - (void) pam_end (pamh, PAM_SUCCESS); -} -#else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !USE_PAM */ diff --git a/libmisc/pam_pass_non_interactive.c b/libmisc/pam_pass_non_interactive.c deleted file mode 100644 index 34cdc1f..0000000 --- a/libmisc/pam_pass_non_interactive.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2009 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id:$" - -#ifdef USE_PAM -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "shadowlog.h" - -/*@null@*/ /*@only@*/static const char *non_interactive_password = NULL; -static int ni_conv (int num_msg, - const struct pam_message **msg, - struct pam_response **resp, - unused void *appdata_ptr); -static const struct pam_conv non_interactive_pam_conv = { - ni_conv, - NULL -}; - - - -static int ni_conv (int num_msg, - const struct pam_message **msg, - struct pam_response **resp, - unused void *appdata_ptr) -{ - struct pam_response *responses; - int count; - - assert (NULL != non_interactive_password); - - if (num_msg <= 0) { - return PAM_CONV_ERR; - } - - responses = (struct pam_response *) calloc ((size_t) num_msg, - sizeof (*responses)); - if (NULL == responses) { - return PAM_CONV_ERR; - } - - for (count=0; count < num_msg; count++) { - responses[count].resp_retcode = 0; - - switch (msg[count]->msg_style) { - case PAM_PROMPT_ECHO_ON: - fprintf (log_get_logfd(), - _("%s: PAM modules requesting echoing are not supported.\n"), - log_get_progname()); - goto failed_conversation; - case PAM_PROMPT_ECHO_OFF: - responses[count].resp = strdup (non_interactive_password); - if (NULL == responses[count].resp) { - goto failed_conversation; - } - break; - case PAM_ERROR_MSG: - if ( (NULL == msg[count]->msg) - || (fprintf (log_get_logfd(), "%s\n", msg[count]->msg) <0)) { - goto failed_conversation; - } - responses[count].resp = NULL; - break; - case PAM_TEXT_INFO: - if ( (NULL == msg[count]->msg) - || (fprintf (stdout, "%s\n", msg[count]->msg) <0)) { - goto failed_conversation; - } - responses[count].resp = NULL; - break; - default: - (void) fprintf (log_get_logfd(), - _("%s: conversation type %d not supported.\n"), - log_get_progname(), msg[count]->msg_style); - goto failed_conversation; - } - } - - *resp = responses; - - return PAM_SUCCESS; - -failed_conversation: - for (count=0; count < num_msg; count++) { - if (NULL != responses[count].resp) { - memset (responses[count].resp, 0, - strlen (responses[count].resp)); - free (responses[count].resp); - responses[count].resp = NULL; - } - } - - free (responses); - *resp = NULL; - - return PAM_CONV_ERR; -} - - -/* - * Change non interactively the user's password using PAM. - * - * Return 0 on success, 1 on failure. - */ -int do_pam_passwd_non_interactive (const char *pam_service, - const char *username, - const char* password) -{ - pam_handle_t *pamh = NULL; - int ret; - - ret = pam_start (pam_service, username, &non_interactive_pam_conv, &pamh); - if (ret != PAM_SUCCESS) { - fprintf (log_get_logfd(), - _("%s: (user %s) pam_start failure %d\n"), - log_get_progname(), username, ret); - return 1; - } - - non_interactive_password = password; - ret = pam_chauthtok (pamh, 0); - if (ret != PAM_SUCCESS) { - fprintf (log_get_logfd(), - _("%s: (user %s) pam_chauthtok() failed, error:\n" - "%s\n"), - log_get_progname(), username, pam_strerror (pamh, ret)); - } - - (void) pam_end (pamh, PAM_SUCCESS); - - return ((PAM_SUCCESS == ret) ? 0 : 1); -} -#else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !USE_PAM */ diff --git a/libmisc/prefix_flag.c b/libmisc/prefix_flag.c deleted file mode 100644 index 4eb5154..0000000 --- a/libmisc/prefix_flag.c +++ /dev/null @@ -1,340 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 , Julian Pidancet - * SPDX-FileCopyrightText: 2011 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#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" -#include "shadowlog.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, *val; - - for (i = 0; i < argc; i++) { - val = NULL; - if ( (strcmp (argv[i], "--prefix") == 0) - || ((strncmp (argv[i], "--prefix=", 9) == 0) - && (val = argv[i] + 9)) - || (strcmp (argv[i], short_opt) == 0)) { - if (NULL != prefix) { - fprintf (log_get_logfd(), - _("%s: multiple --prefix options\n"), - log_get_progname()); - exit (E_BAD_ARG); - } - - if (val) { - prefix = val; - } else if (i + 1 == argc) { - fprintf (log_get_logfd(), - _("%s: option '%s' requires an argument\n"), - log_get_progname(), argv[i]); - exit (E_BAD_ARG); - } else { - prefix = argv[++ i]; - } - } - } - - - - 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? */ - - if ( prefix[0] != '/') { - fprintf (log_get_logfd(), - _("%s: prefix must be an absolute path\n"), - log_get_progname()); - exit (E_BAD_ARG); - } - 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)) != NULL) { - 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)) != NULL) { - 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)) != NULL) { - 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)) != NULL) { - 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)) != NULL) { - if (!strcmp(name, sp->sp_namp)) - break; - } - fclose(fg); - return sp; - } - else { - return getspnam(name); - } -} - -extern void prefix_setpwent(void) -{ - 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(void) -{ - if (!passwd_db_file) { - return getpwent(); - } - if (!fp_pwent) { - return NULL; - } - return fgetpwent(fp_pwent); -} -extern void prefix_endpwent(void) -{ - if (!passwd_db_file) { - endpwent(); - return; - } - if (fp_pwent) - fclose(fp_pwent); - fp_pwent = NULL; -} - -extern void prefix_setgrent(void) -{ - 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(void) -{ - if (!group_db_file) { - return getgrent(); - } - return fgetgrent(fp_grent); -} -extern void prefix_endgrent(void) -{ - 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); -} diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c deleted file mode 100644 index 139a024..0000000 --- a/libmisc/pwd2spwd.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#ifndef USE_PAM - -#include -#include "prototypes.h" -#include "defines.h" -#include - -/* - * pwd_to_spwd - create entries for new spwd structure - * - * pwd_to_spwd() creates a new (struct spwd) containing the - * information in the pointed-to (struct passwd). - */ - -struct spwd *pwd_to_spwd (const struct passwd *pw) -{ - static struct spwd sp; - - /* - * Nice, easy parts first. The name and passwd map directly - * from the old password structure to the new one. - */ - sp.sp_namp = pw->pw_name; - sp.sp_pwdp = pw->pw_passwd; - - { - /* - * Defaults used if there is no pw_age information. - */ - sp.sp_min = 0; - sp.sp_max = (10000L * DAY) / SCALE; - sp.sp_lstchg = (long) gettime () / SCALE; - if (0 == sp.sp_lstchg) { - /* Better disable aging than requiring a password - * change */ - sp.sp_lstchg = -1; - } - } - - /* - * These fields have no corresponding information in the password - * file. They are set to uninitialized values. - */ - sp.sp_warn = -1; - sp.sp_expire = -1; - sp.sp_inact = -1; - sp.sp_flag = SHADOW_SP_FLAG_UNSET; - - return &sp; -} -#else /* USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !USE_PAM */ - diff --git a/libmisc/pwd_init.c b/libmisc/pwd_init.c deleted file mode 100644 index 63c71e2..0000000 --- a/libmisc/pwd_init.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1997 , Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include "defines.h" -#include -#include -#include -#ifdef HAVE_SYS_RESOURCE_H -#include -#endif - -#include "prototypes.h" - -/* - * pwd_init - ignore signals, and set resource limits to safe - * values. Call this before modifying password files, so that - * it is less likely to fail in the middle of operation. - */ -void pwd_init (void) -{ -#ifdef HAVE_SYS_RESOURCE_H - struct rlimit rlim; - -#ifdef RLIMIT_CORE - rlim.rlim_cur = rlim.rlim_max = 0; - setrlimit (RLIMIT_CORE, &rlim); -#endif - rlim.rlim_cur = rlim.rlim_max = RLIM_INFINITY; -#ifdef RLIMIT_AS - setrlimit (RLIMIT_AS, &rlim); -#endif -#ifdef RLIMIT_CPU - setrlimit (RLIMIT_CPU, &rlim); -#endif -#ifdef RLIMIT_DATA - setrlimit (RLIMIT_DATA, &rlim); -#endif -#ifdef RLIMIT_FSIZE - setrlimit (RLIMIT_FSIZE, &rlim); -#endif -#ifdef RLIMIT_NOFILE - setrlimit (RLIMIT_NOFILE, &rlim); -#endif -#ifdef RLIMIT_RSS - setrlimit (RLIMIT_RSS, &rlim); -#endif -#ifdef RLIMIT_STACK - setrlimit (RLIMIT_STACK, &rlim); -#endif -#else /* !HAVE_SYS_RESOURCE_H */ - set_filesize_limit (30000); - /* don't know how to set the other limits... */ -#endif /* !HAVE_SYS_RESOURCE_H */ - - signal (SIGALRM, SIG_IGN); - signal (SIGHUP, SIG_IGN); - signal (SIGINT, SIG_IGN); - signal (SIGPIPE, SIG_IGN); - signal (SIGQUIT, SIG_IGN); - signal (SIGTERM, SIG_IGN); -#ifdef SIGTSTP - signal (SIGTSTP, SIG_IGN); -#endif -#ifdef SIGTTOU - signal (SIGTTOU, SIG_IGN); -#endif - - umask (077); -} diff --git a/libmisc/pwdcheck.c b/libmisc/pwdcheck.c deleted file mode 100644 index 15fc3a3..0000000 --- a/libmisc/pwdcheck.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2000 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#ifndef USE_PAM - -#include -#include -#include "prototypes.h" -#include "defines.h" -#include "pwauth.h" -#include "shadowlog.h" - -void passwd_check (const char *user, const char *passwd, unused const char *progname) -{ - struct spwd *sp; - - sp = getspnam (user); /* !USE_PAM, no need for xgetspnam */ - if (NULL != sp) { - passwd = sp->sp_pwdp; - } - if (pw_auth (passwd, user, PW_LOGIN, (char *) 0) != 0) { - SYSLOG ((LOG_WARN, "incorrect password for `%s'", user)); - (void) sleep (1); - fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user); - exit (EXIT_FAILURE); - } -} -#else /* USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* USE_PAM */ diff --git a/libmisc/remove_tree.c b/libmisc/remove_tree.c deleted file mode 100644 index 3d76b95..0000000 --- a/libmisc/remove_tree.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" - -static int remove_tree_at (int at_fd, const char *path, bool remove_root) -{ - DIR *dir; - const struct dirent *ent; - int dir_fd, rc = 0; - - dir_fd = openat (at_fd, path, O_RDONLY | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC); - if (dir_fd < 0) { - return -1; - } - - dir = fdopendir (dir_fd); - if (!dir) { - (void) close (dir_fd); - return -1; - } - - /* - * Open the source directory and delete each entry. - */ - while ((ent = readdir (dir))) { - struct stat ent_sb; - - /* - * Skip the "." and ".." entries - */ - if (strcmp (ent->d_name, ".") == 0 || - strcmp (ent->d_name, "..") == 0) { - continue; - } - - rc = fstatat (dirfd(dir), ent->d_name, &ent_sb, AT_SYMLINK_NOFOLLOW); - if (rc < 0) { - break; - } - - if (S_ISDIR (ent_sb.st_mode)) { - /* - * Recursively delete this directory. - */ - if (remove_tree_at (dirfd(dir), ent->d_name, true) != 0) { - rc = -1; - break; - } - } else { - /* - * Delete the file. - */ - if (unlinkat (dirfd(dir), ent->d_name, 0) != 0) { - rc = -1; - break; - } - } - } - - (void) closedir (dir); - - if (remove_root && (0 == rc)) { - if (unlinkat (at_fd, path, AT_REMOVEDIR) != 0) { - rc = -1; - } - } - - return rc; -} - -/* - * remove_tree - delete a directory tree - * - * remove_tree() walks a directory tree and deletes all the files - * and directories. - * At the end, it deletes the root directory itself. - */ -int remove_tree (const char *root, bool remove_root) -{ - return remove_tree_at (AT_FDCWD, root, remove_root); -} diff --git a/libmisc/rlogin.c b/libmisc/rlogin.c deleted file mode 100644 index fa67dc3..0000000 --- a/libmisc/rlogin.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifdef RLOGIN - -#ident "$Id$" - -#include "prototypes.h" -#include "defines.h" -#include -#include -#include -static struct { - int spd_name; - int spd_baud; -} speed_table[] = -{ -#ifdef B50 - { - B50, 50}, -#endif -#ifdef B75 - { - B75, 75}, -#endif -#ifdef B110 - { - B110, 110}, -#endif -#ifdef B134 - { - B134, 134}, -#endif -#ifdef B150 - { - B150, 150}, -#endif -#ifdef B200 - { - B200, 200}, -#endif -#ifdef B300 - { - B300, 300}, -#endif -#ifdef B600 - { - B600, 600}, -#endif -#ifdef B1200 - { - B1200, 1200}, -#endif -#ifdef B1800 - { - B1800, 1800}, -#endif -#ifdef B2400 - { - B2400, 2400}, -#endif -#ifdef B4800 - { - B4800, 4800}, -#endif -#ifdef B9600 - { - B9600, 9600}, -#endif -#ifdef B19200 - { - B19200, 19200}, -#endif -#ifdef B38400 - { - B38400, 38400}, -#endif - { - -1, -1} -}; - -static void get_remote_string (char *buf, size_t size) -{ - for (;;) { - if (read (0, buf, 1) != 1) { - exit (EXIT_FAILURE); - } - if ('\0' == *buf) { - return; - } - --size; - if (size > 0) { - ++buf; - } - } - /*NOTREACHED*/} - -int -do_rlogin (const char *remote_host, char *name, size_t namelen, char *term, - size_t termlen) -{ - struct passwd *pwd; - char remote_name[32]; - char *cp; - unsigned long remote_speed = 9600; - int speed_name = B9600; - int i; - TERMIO termio; - - get_remote_string (remote_name, sizeof remote_name); - get_remote_string (name, namelen); - get_remote_string (term, termlen); - - cp = strchr (term, '/'); - if (NULL != cp) { - *cp = '\0'; - cp++; - - if (getulong (cp, &remote_speed) == 0) { - remote_speed = 9600; - } - } - for (i = 0; - ( (speed_table[i].spd_baud != remote_speed) - && (speed_table[i].spd_name != -1)); - i++); - - if (-1 != speed_table[i].spd_name) { - speed_name = speed_table[i].spd_name; - } - - /* - * Put the terminal in cooked mode with echo turned on. - */ - - GTTY (0, &termio); - termio.c_iflag |= ICRNL | IXON; - termio.c_oflag |= OPOST | ONLCR; - termio.c_lflag |= ICANON | ECHO | ECHOE; -#ifdef CBAUD - termio.c_cflag = (termio.c_cflag & ~CBAUD) | speed_name; -#else - termio.c_cflag = (termio.c_cflag) | speed_name; -#endif - STTY (0, &termio); - - pwd = getpwnam (name); /* local, no need for xgetpwnam */ - if (NULL == pwd) { - return 0; - } - - /* - * ruserok() returns 0 for success on modern systems, and 1 on - * older ones. If you are having trouble with people logging - * in without giving a required password, THIS is the culprit - - * go fix the #define in config.h. - */ - -#ifndef RUSEROK - return 0; -#else - return ruserok (remote_host, pwd->pw_uid == 0, - remote_name, name) == RUSEROK; -#endif -} -#endif /* RLOGIN */ - diff --git a/libmisc/root_flag.c b/libmisc/root_flag.c deleted file mode 100644 index 62915b0..0000000 --- a/libmisc/root_flag.c +++ /dev/null @@ -1,108 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2011 , Julian Pidancet - * SPDX-FileCopyrightText: 2011 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include "defines.h" -#include "prototypes.h" -/*@-exitarg@*/ -#include "exitcodes.h" -#include "shadowlog.h" - -static void change_root (const char* newroot); - -/* - * process_root_flag - chroot if given the --root 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 void process_root_flag (const char* short_opt, int argc, char **argv) -{ - /* - * Parse the command line options. - */ - int i; - const char *newroot = NULL, *val; - - for (i = 0; i < argc; i++) { - val = NULL; - if ( (strcmp (argv[i], "--root") == 0) - || ((strncmp (argv[i], "--root=", 7) == 0) - && (val = argv[i] + 7)) - || (strcmp (argv[i], short_opt) == 0)) { - if (NULL != newroot) { - fprintf (log_get_logfd(), - _("%s: multiple --root options\n"), - log_get_progname()); - exit (E_BAD_ARG); - } - - if (val) { - newroot = val; - } else if (i + 1 == argc) { - fprintf (log_get_logfd(), - _("%s: option '%s' requires an argument\n"), - log_get_progname(), argv[i]); - exit (E_BAD_ARG); - } else { - newroot = argv[++ i]; - } - } - } - - if (NULL != newroot) { - change_root (newroot); - } -} - -static void change_root (const char* newroot) -{ - /* Drop privileges */ - if ( (setregid (getgid (), getgid ()) != 0) - || (setreuid (getuid (), getuid ()) != 0)) { - fprintf (log_get_logfd(), _("%s: failed to drop privileges (%s)\n"), - log_get_progname(), strerror (errno)); - exit (EXIT_FAILURE); - } - - if ('/' != newroot[0]) { - fprintf (log_get_logfd(), - _("%s: invalid chroot path '%s', only absolute paths are supported.\n"), - log_get_progname(), newroot); - exit (E_BAD_ARG); - } - - if (access (newroot, F_OK) != 0) { - fprintf(log_get_logfd(), - _("%s: cannot access chroot directory %s: %s\n"), - log_get_progname(), newroot, strerror (errno)); - exit (E_BAD_ARG); - } - - if (chdir (newroot) != 0) { - fprintf(log_get_logfd(), - _("%s: cannot chdir to chroot directory %s: %s\n"), - log_get_progname(), newroot, strerror (errno)); - exit (E_BAD_ARG); - } - - if (chroot (newroot) != 0) { - fprintf(log_get_logfd(), - _("%s: unable to chroot to directory %s: %s\n"), - log_get_progname(), newroot, strerror (errno)); - exit (E_BAD_ARG); - } -} - diff --git a/libmisc/salt.c b/libmisc/salt.c deleted file mode 100644 index e5f633a..0000000 --- a/libmisc/salt.c +++ /dev/null @@ -1,566 +0,0 @@ -/* - * SPDX-FileCopyrightText: Marek Michalkiewicz - * SPDX-FileCopyrightText: J.T. Conklin - * - * SPDX-License-Identifier: Unlicense - */ - -/* - * salt.c - generate a random salt string for crypt() - * - * Written by Marek Michalkiewicz , - * it is in the public domain. - * - * l64a was Written by J.T. Conklin . Public domain. - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#if HAVE_SYS_RANDOM_H -#include -#endif -#include "prototypes.h" -#include "defines.h" -#include "getdef.h" -#include "shadowlog.h" - -#if (defined CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY && \ - CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY) -#define USE_XCRYPT_GENSALT 1 -#else -#define USE_XCRYPT_GENSALT 0 -#endif - -/* Add the salt prefix. */ -#define MAGNUM(array,ch) (array)[0]=(array)[2]='$',(array)[1]=(ch),(array)[3]='\0' - -#ifdef USE_BCRYPT -/* Use $2b$ as prefix for compatibility with OpenBSD's bcrypt. */ -#define BCRYPTMAGNUM(array) (array)[0]=(array)[3]='$',(array)[1]='2',(array)[2]='b',(array)[4]='\0' -#define BCRYPT_SALT_SIZE 22 -/* 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 -#endif /* USE_BCRYPT */ - -#ifdef USE_SHA_CRYPT -/* Fixed salt len for sha{256,512}crypt. */ -#define SHA_CRYPT_SALT_SIZE 16 -/* Default number of rounds if not explicitly specified. */ -#define SHA_ROUNDS_DEFAULT 5000 -/* Minimum number of rounds. */ -#define SHA_ROUNDS_MIN 1000 -/* Maximum number of rounds. */ -#define SHA_ROUNDS_MAX 999999999 -#endif - -#ifdef USE_YESCRYPT -/* - * Default number of base64 characters used for the salt. - * 24 characters gives a 144 bits (18 bytes) salt. Unlike the more - * traditional 128 bits (16 bytes) salt, this 144 bits salt is always - * represented by the same number of base64 characters without padding - * issue, even with a non-standard base64 encoding scheme. - */ -#define YESCRYPT_SALT_SIZE 24 -/* Default cost if not explicitly specified. */ -#define Y_COST_DEFAULT 5 -/* Minimum cost. */ -#define Y_COST_MIN 1 -/* Maximum cost. */ -#define Y_COST_MAX 11 -#endif - -/* Fixed salt len for md5crypt. */ -#define MD5_CRYPT_SALT_SIZE 8 - -/* Generate salt of size salt_size. */ -#define MAX_SALT_SIZE 44 -#define MIN_SALT_SIZE 8 - -/* Maximum size of the generated salt string. */ -#define GENSALT_SETTING_SIZE 100 - -/* local function prototypes */ -static long read_random_bytes (void); -#if !USE_XCRYPT_GENSALT -static /*@observer@*/const char *gensalt (size_t salt_size); -#endif /* !USE_XCRYPT_GENSALT */ -#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@*/unsigned long SHA_get_salt_rounds (/*@null@*/const int *prefered_rounds); -static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, unsigned long rounds); -#endif /* USE_SHA_CRYPT */ -#ifdef USE_BCRYPT -static /*@observer@*/unsigned long BCRYPT_get_salt_rounds (/*@null@*/const int *prefered_rounds); -static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, unsigned long rounds); -#endif /* USE_BCRYPT */ -#ifdef USE_YESCRYPT -static /*@observer@*/unsigned long YESCRYPT_get_salt_cost (/*@null@*/const int *prefered_cost); -static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, unsigned long cost); -#endif /* USE_YESCRYPT */ - -#if !USE_XCRYPT_GENSALT && !defined(HAVE_L64A) -static /*@observer@*/char *l64a (long value) -{ - static char buf[8]; - char *s = buf; - int digit; - int i; - - if (value < 0) { - errno = EINVAL; - return(NULL); - } - - for (i = 0; value != 0 && i < 6; i++) { - digit = value & 0x3f; - - if (digit < 2) { - *s = digit + '.'; - } else if (digit < 12) { - *s = digit + '0' - 2; - } else if (digit < 38) { - *s = digit + 'A' - 12; - } else { - *s = digit + 'a' - 38; - } - - value >>= 6; - s++; - } - - *s = '\0'; - - return buf; -} -#endif /* !USE_XCRYPT_GENSALT && !defined(HAVE_L64A) */ - -/* Read sizeof (long) random bytes from /dev/urandom. */ -static long read_random_bytes (void) -{ - long randval = 0; - -#ifdef HAVE_ARC4RANDOM_BUF - /* arc4random_buf, if it exists, can never fail. */ - arc4random_buf (&randval, sizeof (randval)); - goto end; -#endif - -#ifdef HAVE_GETENTROPY - /* getentropy may exist but lack kernel support. */ - if (getentropy (&randval, sizeof (randval)) == 0) { - goto end; - } -#endif - -#ifdef HAVE_GETRANDOM - /* Likewise getrandom. */ - if ((size_t) getrandom (&randval, sizeof (randval), 0) == sizeof (randval)) { - goto end; - } -#endif - - /* Use /dev/urandom as a last resort. */ - FILE *f = fopen ("/dev/urandom", "r"); - if (NULL == f) { - goto fail; - } - - if (fread (&randval, sizeof (randval), 1, f) != 1) { - fclose(f); - goto fail; - } - - fclose(f); - goto end; - -fail: - fprintf (log_get_logfd(), - _("Unable to obtain random bytes.\n")); - exit (1); - -end: - return randval; -} - -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) -/* - * Return a random number between min and max (both included). - * - * It favors slightly the higher numbers. - */ -static long shadow_random (long min, long max) -{ - double drand; - long ret; - - drand = (double) (read_random_bytes () & RAND_MAX) / (double) RAND_MAX; - drand *= (double) (max - min + 1); - /* On systems were this is not random() range is lower, we favor - * higher numbers of salt. */ - ret = (long) (max + 1 - drand); - /* And we catch limits, and use the highest number */ - if ((ret < min) || (ret > max)) { - ret = max; - } - return ret; -} -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ - -#ifdef USE_SHA_CRYPT -/* Return the the rounds number for the SHA crypt methods. */ -static /*@observer@*/unsigned long SHA_get_salt_rounds (/*@null@*/const int *prefered_rounds) -{ - unsigned long rounds; - - if (NULL == prefered_rounds) { - long min_rounds = getdef_long ("SHA_CRYPT_MIN_ROUNDS", -1); - long max_rounds = getdef_long ("SHA_CRYPT_MAX_ROUNDS", -1); - - if ((-1 == min_rounds) && (-1 == max_rounds)) { - rounds = SHA_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 = (unsigned long) shadow_random (min_rounds, max_rounds); - } - } else if (0 == *prefered_rounds) { - rounds = SHA_ROUNDS_DEFAULT; - } else { - rounds = (unsigned long) *prefered_rounds; - } - - /* Sanity checks. The libc should also check this, but this - * protects against a rounds_prefix overflow. */ - if (rounds < SHA_ROUNDS_MIN) { - rounds = SHA_ROUNDS_MIN; - } - - if (rounds > SHA_ROUNDS_MAX) { - rounds = SHA_ROUNDS_MAX; - } - - return rounds; -} - -/* - * Fill a salt prefix specifying the rounds number for the SHA crypt methods - * to a buffer. - */ -static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, unsigned long rounds) -{ - const size_t buf_begin = strlen (buf); - - /* Nothing to do here if SHA_ROUNDS_DEFAULT is used. */ - if (rounds == SHA_ROUNDS_DEFAULT) { - return; - } - - /* - * Check if the result buffer is long enough. - * We are going to write a maximum of 17 bytes, - * plus one byte for the terminator. - * rounds=XXXXXXXXX$ - * 00000000011111111 - * 12345678901234567 - */ - assert (GENSALT_SETTING_SIZE > buf_begin + 17); - - (void) snprintf (buf + buf_begin, 18, "rounds=%lu$", rounds); -} -#endif /* USE_SHA_CRYPT */ - -#ifdef USE_BCRYPT -/* Return the the rounds number for the BCRYPT method. */ -static /*@observer@*/unsigned long BCRYPT_get_salt_rounds (/*@null@*/const int *prefered_rounds) -{ - unsigned 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)) { - 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 = (unsigned long) shadow_random (min_rounds, max_rounds); - } - } else if (0 == *prefered_rounds) { - rounds = B_ROUNDS_DEFAULT; - } else { - rounds = (unsigned long) *prefered_rounds; - } - - /* Sanity checks. */ - if (rounds < B_ROUNDS_MIN) { - rounds = B_ROUNDS_MIN; - } - -#if USE_XCRYPT_GENSALT - if (rounds > B_ROUNDS_MAX) { - rounds = B_ROUNDS_MAX; - } -#else /* USE_XCRYPT_GENSALT */ - /* - * Use 19 as an upper bound for now, - * because musl doesn't allow rounds >= 20. - * If musl ever supports > 20 rounds, - * rounds should be set to B_ROUNDS_MAX. - */ - if (rounds > 19) { - rounds = 19; - } -#endif /* USE_XCRYPT_GENSALT */ - - return rounds; -} - -/* - * Fill a salt prefix specifying the rounds number for the BCRYPT method - * to a buffer. - */ -static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, unsigned long rounds) -{ - const size_t buf_begin = strlen (buf); - - /* - * Check if the result buffer is long enough. - * We are going to write three bytes, - * plus one byte for the terminator. - * XX$ - * 000 - * 123 - */ - assert (GENSALT_SETTING_SIZE > buf_begin + 3); - - (void) snprintf (buf + buf_begin, 4, "%2.2lu$", rounds); -} -#endif /* USE_BCRYPT */ - -#ifdef USE_YESCRYPT -/* Return the the cost number for the YESCRYPT method. */ -static /*@observer@*/unsigned long YESCRYPT_get_salt_cost (/*@null@*/const int *prefered_cost) -{ - unsigned long cost; - - if (NULL == prefered_cost) { - cost = getdef_num ("YESCRYPT_COST_FACTOR", Y_COST_DEFAULT); - } else if (0 == *prefered_cost) { - cost = Y_COST_DEFAULT; - } else { - cost = (unsigned long) *prefered_cost; - } - - /* Sanity checks. */ - if (cost < Y_COST_MIN) { - cost = Y_COST_MIN; - } - - if (cost > Y_COST_MAX) { - cost = Y_COST_MAX; - } - - return cost; -} - -/* - * Fill a salt prefix specifying the cost for the YESCRYPT method - * to a buffer. - */ -static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, unsigned long cost) -{ - const size_t buf_begin = strlen (buf); - - /* - * Check if the result buffer is long enough. - * We are going to write four bytes, - * plus one byte for the terminator. - * jXX$ - * 0000 - * 1234 - */ - assert (GENSALT_SETTING_SIZE > buf_begin + 4); - - buf[buf_begin + 0] = 'j'; - if (cost < 3) { - buf[buf_begin + 1] = 0x36 + cost; - } else if (cost < 6) { - buf[buf_begin + 1] = 0x34 + cost; - } else { - buf[buf_begin + 1] = 0x3b + cost; - } - buf[buf_begin + 2] = cost >= 3 ? 'T' : '5'; - buf[buf_begin + 3] = '$'; - buf[buf_begin + 4] = '\0'; -} -#endif /* USE_YESCRYPT */ - -#if !USE_XCRYPT_GENSALT -static /*@observer@*/const char *gensalt (size_t salt_size) -{ - static char salt[MAX_SALT_SIZE + 6]; - - memset (salt, '\0', MAX_SALT_SIZE + 6); - - assert (salt_size >= MIN_SALT_SIZE && - salt_size <= MAX_SALT_SIZE); - strcat (salt, l64a (read_random_bytes ())); - do { - strcat (salt, l64a (read_random_bytes ())); - } while (strlen (salt) < salt_size); - - salt[salt_size] = '\0'; - - return salt; -} -#endif /* !USE_XCRYPT_GENSALT */ - -/* - * Generate 8 base64 ASCII characters of random salt. If MD5_CRYPT_ENAB - * in /etc/login.defs is "yes", the salt string will be prefixed by "$1$" - * (magic) and pw_encrypt() will execute the MD5-based FreeBSD-compatible - * version of crypt() instead of the standard one. - * Other methods can be set with ENCRYPT_METHOD - * - * The method can be forced with the meth parameter. - * If NULL, the method will be defined according to the ENCRYPT_METHOD - * variable, and if not set according to the MD5_CRYPT_ENAB variable, - * which can both be set inside the login.defs file. - * - * If meth is specified, an additional parameter can be provided. - * * For the SHA256 and SHA512 method, this specifies the number of rounds - * (if not NULL). - * * For the YESCRYPT method, this specifies the cost factor (if not NULL). - */ -/*@observer@*/const char *crypt_make_salt (/*@null@*//*@observer@*/const char *meth, /*@null@*/void *arg) -{ - static char result[GENSALT_SETTING_SIZE]; - size_t salt_len = MAX_SALT_SIZE; - const char *method; - unsigned long rounds = 0; - - memset (result, '\0', GENSALT_SETTING_SIZE); - - if (NULL != meth) - method = meth; - else { - method = getdef_str ("ENCRYPT_METHOD"); - if (NULL == method) { - method = getdef_bool ("MD5_CRYPT_ENAB") ? "MD5" : "DES"; - } - } - - if (0 == strcmp (method, "MD5")) { - MAGNUM(result, '1'); - salt_len = MD5_CRYPT_SALT_SIZE; - rounds = 0; -#ifdef USE_BCRYPT - } else if (0 == strcmp (method, "BCRYPT")) { - BCRYPTMAGNUM(result); - salt_len = BCRYPT_SALT_SIZE; - rounds = BCRYPT_get_salt_rounds ((int *) arg); - BCRYPT_salt_rounds_to_buf (result, rounds); -#endif /* USE_BCRYPT */ -#ifdef USE_YESCRYPT - } else if (0 == strcmp (method, "YESCRYPT")) { - MAGNUM(result, 'y'); - salt_len = YESCRYPT_SALT_SIZE; - rounds = YESCRYPT_get_salt_cost ((int *) arg); - YESCRYPT_salt_cost_to_buf (result, rounds); -#endif /* USE_YESCRYPT */ -#ifdef USE_SHA_CRYPT - } else if (0 == strcmp (method, "SHA256")) { - MAGNUM(result, '5'); - salt_len = SHA_CRYPT_SALT_SIZE; - rounds = SHA_get_salt_rounds ((int *) arg); - SHA_salt_rounds_to_buf (result, rounds); - } else if (0 == strcmp (method, "SHA512")) { - MAGNUM(result, '6'); - salt_len = SHA_CRYPT_SALT_SIZE; - rounds = SHA_get_salt_rounds ((int *) arg); - SHA_salt_rounds_to_buf (result, rounds); -#endif /* USE_SHA_CRYPT */ - } else if (0 != strcmp (method, "DES")) { - fprintf (log_get_logfd(), - _("Invalid ENCRYPT_METHOD value: '%s'.\n" - "Defaulting to DES.\n"), - method); - salt_len = MAX_SALT_SIZE; - rounds = 0; - memset (result, '\0', GENSALT_SETTING_SIZE); - } - -#if USE_XCRYPT_GENSALT - /* - * Prepare DES setting for crypt_gensalt(), if result - * has not been filled with anything previously. - */ - if ('\0' == result[0]) { - /* Avoid -Wunused-but-set-variable. */ - salt_len = GENSALT_SETTING_SIZE - 1; - rounds = 0; - memset (result, '.', salt_len); - result[salt_len] = '\0'; - } - - char *retval = crypt_gensalt (result, rounds, NULL, 0); - - /* Should not happen, but... */ - if (NULL == retval) { - fprintf (log_get_logfd(), - _("Unable to generate a salt from setting " - "\"%s\", check your settings in " - "ENCRYPT_METHOD and the corresponding " - "configuration for your selected hash " - "method.\n"), result); - - exit (1); - } - - return retval; -#else /* USE_XCRYPT_GENSALT */ - /* Check if the result buffer is long enough. */ - assert (GENSALT_SETTING_SIZE > strlen (result) + salt_len); - - /* Concatenate a pseudo random salt. */ - strncat (result, gensalt (salt_len), - GENSALT_SETTING_SIZE - strlen (result) - 1); - - return result; -#endif /* USE_XCRYPT_GENSALT */ -} diff --git a/libmisc/setugid.c b/libmisc/setugid.c deleted file mode 100644 index 6dbe38e..0000000 --- a/libmisc/setugid.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * Separated from setup.c. --marekm - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include -#include "getdef.h" - -/* - * setup_groups - set the group credentials - * set the group ID to the value from the password file entry - * set the supplementary group IDs - * - * In case of PAM enabled configurations, this shall be called before - * pam_setcred. - * - * Returns 0 on success, or -1 on failure. - */ -int setup_groups (const struct passwd *info) -{ - /* - * Set the real group ID to the primary group ID in the password - * file. - */ - if (setgid (info->pw_gid) == -1) { - int err = errno; - perror ("setgid"); - SYSLOG ((LOG_ERR, "bad group ID `%d' for user `%s': %s\n", - info->pw_gid, info->pw_name, strerror (err))); - closelog (); - return -1; - } -#ifdef HAVE_INITGROUPS - /* - * For systems which support multiple concurrent groups, go get - * the group set from the /etc/group file. - */ - if (initgroups (info->pw_name, info->pw_gid) == -1) { - int err = errno; - perror ("initgroups"); - SYSLOG ((LOG_ERR, "initgroups failed for user `%s': %s\n", - info->pw_name, strerror (err))); - closelog (); - return -1; - } -#endif - return 0; -} - -/* - * change_uid - Set the real UID - * - * Returns 0 on success, or -1 on failure. - */ -int change_uid (const struct passwd *info) -{ - /* - * Set the real UID to the UID value in the password file. - */ - if (setuid (info->pw_uid) != 0) { - int err = errno; - perror ("setuid"); - SYSLOG ((LOG_ERR, "bad user ID `%d' for user `%s': %s\n", - (int) info->pw_uid, info->pw_name, strerror (err))); - closelog (); - return -1; - } - return 0; -} - -/* - * setup_uid_gid() performs the following steps - - * - * set the group ID to the value from the password file entry - * set the supplementary group IDs - * optionally call specified function which may add more groups - * set the user ID to the value from the password file entry - * - * Returns 0 on success, or -1 on failure. - */ - -#if defined (HAVE_INITGROUPS) && ! (defined USE_PAM) -int setup_uid_gid (const struct passwd *info, bool is_console) -#else -int setup_uid_gid (const struct passwd *info) -#endif -{ - if (setup_groups (info) < 0) { - return -1; - } - -#if defined (HAVE_INITGROUPS) && ! defined (USE_PAM) - if (is_console) { - const char *cp = getdef_str ("CONSOLE_GROUPS"); - - if ((NULL != cp) && (add_groups (cp) != 0)) { - perror ("Warning: add_groups"); - } - } -#endif /* HAVE_INITGROUPS && !USE_PAM*/ - - if (change_uid (info) < 0) { - return -1; - } - - return 0; -} - diff --git a/libmisc/setupenv.c b/libmisc/setupenv.c deleted file mode 100644 index 5d7aefa..0000000 --- a/libmisc/setupenv.c +++ /dev/null @@ -1,290 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * Separated from setup.c. --marekm - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include -#include "getdef.h" -#include "shadowlog.h" - -#ifndef USE_PAM -static void -addenv_path (const char *varname, const char *dirname, const char *filename) -{ - char *buf; - size_t len = strlen (dirname) + strlen (filename) + 2; - int wlen; - - buf = xmalloc (len); - wlen = snprintf (buf, len, "%s/%s", dirname, filename); - assert (wlen == (int) len - 1); - - addenv (varname, buf); - free (buf); -} - -static void read_env_file (const char *filename) -{ - FILE *fp; - char buf[1024]; - char *cp, *name, *val; - - fp = fopen (filename, "r"); - if (NULL == fp) { - return; - } - while (fgets (buf, (int)(sizeof buf), fp) == buf) { - cp = strrchr (buf, '\n'); - if (NULL == cp) { - break; - } - *cp = '\0'; - - cp = buf; - /* ignore whitespace and comments */ - while (('\0' != *cp) && isspace (*cp)) { - cp++; - } - if (('\0' == *cp) || ('#' == *cp)) { - continue; - } - /* - * ignore lines which don't follow the name=value format - * (for example, the "export NAME" shell commands) - */ - name = cp; - while (('\0' != *cp) && !isspace (*cp) && ('=' != *cp)) { - cp++; - } - if ('=' != *cp) { - continue; - } - /* NUL-terminate the name */ - *cp = '\0'; - cp++; - val = cp; -#if 0 /* XXX untested, and needs rewrite with fewer goto's :-) */ -/* - (state, char_type) -> (state, action) - - state: unquoted, single_quoted, double_quoted, escaped, double_quoted_escaped - char_type: normal, white, backslash, single, double - action: remove_curr, remove_curr_skip_next, remove_prev, finish XXX -*/ - no_quote: - if (*cp == '\\') { - /* remove the backslash */ - remove_char (cp); - /* skip over the next character */ - if (*cp) - cp++; - goto no_quote; - } else if (*cp == '\'') { - /* remove the quote */ - remove_char (cp); - /* now within single quotes */ - goto s_quote; - } else if (*cp == '"') { - /* remove the quote */ - remove_char (cp); - /* now within double quotes */ - goto d_quote; - } else if (*cp == '\0') { - /* end of string */ - goto finished; - } else if (isspace (*cp)) { - /* unescaped whitespace - end of string */ - *cp = '\0'; - goto finished; - } else { - cp++; - goto no_quote; - } - s_quote: - if (*cp == '\'') { - /* remove the quote */ - remove_char (cp); - /* unquoted again */ - goto no_quote; - } else if (*cp == '\0') { - /* end of string */ - goto finished; - } else { - /* preserve everything within single quotes */ - cp++; - goto s_quote; - } - d_quote: - if (*cp == '\"') { - /* remove the quote */ - remove_char (cp); - /* unquoted again */ - goto no_quote; - } else if (*cp == '\\') { - cp++; - /* if backslash followed by double quote, remove backslash - else skip over the backslash and following char */ - if (*cp == '"') - remove_char (cp - 1); - else if (*cp) - cp++; - goto d_quote; - } - else if (*cp == '\0') { - /* end of string */ - goto finished; - } else { - /* preserve everything within double quotes */ - goto d_quote; - } - finished: -#endif /* 0 */ - /* - * XXX - should handle quotes, backslash escapes, etc. - * like the shell does. - */ - addenv (name, val); - } - (void) fclose (fp); -} -#endif /* USE_PAM */ - - -/* - * change to the user's home directory - * set the HOME, SHELL, MAIL, PATH, and LOGNAME or USER environmental - * variables. - */ - -void setup_env (struct passwd *info) -{ -#ifndef USE_PAM - const char *envf; -#endif - const char *cp; - - /* - * Change the current working directory to be the home directory - * of the user. It is a fatal error for this process to be unable - * to change to that directory. There is no "default" home - * directory. - * - * We no longer do it as root - should work better on NFS-mounted - * home directories. Some systems default to HOME=/, so we make - * this a configurable option. --marekm - */ - - if (chdir (info->pw_dir) == -1) { - static char temp_pw_dir[] = "/"; - - if (!getdef_bool ("DEFAULT_HOME") || chdir ("/") == -1) { - fprintf (log_get_logfd(), _("Unable to cd to '%s'\n"), - info->pw_dir); - SYSLOG ((LOG_WARN, - "unable to cd to `%s' for user `%s'\n", - info->pw_dir, info->pw_name)); - closelog (); - exit (EXIT_FAILURE); - } - (void) puts (_("No directory, logging in with HOME=/")); - free (info->pw_dir); - info->pw_dir = xstrdup (temp_pw_dir); - } - - /* - * Create the HOME environmental variable and export it. - */ - - addenv ("HOME", info->pw_dir); - - /* - * Create the SHELL environmental variable and export it. - */ - - if ((NULL == info->pw_shell) || ('\0' == *info->pw_shell)) { - static char temp_pw_shell[] = SHELL; - - free (info->pw_shell); - info->pw_shell = xstrdup (temp_pw_shell); - } - - addenv ("SHELL", info->pw_shell); - - /* - * Export the user name. For BSD derived systems, it's "USER", for - * all others it's "LOGNAME". We set both of them. - */ - - addenv ("USER", info->pw_name); - addenv ("LOGNAME", info->pw_name); - - /* - * Create the PATH environmental variable and export it. - */ - - cp = getdef_str ((info->pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH"); - - if (NULL == cp) { - /* not specified, use a minimal default */ - addenv ((info->pw_uid == 0) ? "PATH=/sbin:/bin:/usr/sbin:/usr/bin" : "PATH=/bin:/usr/bin", NULL); - } else if (strchr (cp, '=')) { - /* specified as name=value (PATH=...) */ - addenv (cp, NULL); - } else { - /* only value specified without "PATH=" */ - addenv ("PATH", cp); - } - -#ifndef USE_PAM - /* - * Create the MAIL environmental variable and export it. login.defs - * knows the prefix. - */ - - if (getdef_bool ("MAIL_CHECK_ENAB")) { - cp = getdef_str ("MAIL_DIR"); - if (NULL != cp) { - addenv_path ("MAIL", cp, info->pw_name); - } else { - cp = getdef_str ("MAIL_FILE"); - if (NULL != cp) { - addenv_path ("MAIL", info->pw_dir, cp); - } else { -#if defined(MAIL_SPOOL_FILE) - addenv_path ("MAIL", info->pw_dir, MAIL_SPOOL_FILE); -#elif defined(MAIL_SPOOL_DIR) - addenv_path ("MAIL", MAIL_SPOOL_DIR, info->pw_name); -#endif - } - } - } - - /* - * Read environment from optional config file. --marekm - */ - envf = getdef_str ("ENVIRON_FILE"); - if (NULL != envf) { - read_env_file (envf); - } -#endif /* !USE_PAM */ -} - diff --git a/libmisc/shell.c b/libmisc/shell.c deleted file mode 100644 index 7c67500..0000000 --- a/libmisc/shell.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2009 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include "prototypes.h" -#include "defines.h" -extern char **newenvp; -extern size_t newenvc; - -/* - * shell - execute the named program - * - * shell begins by trying to figure out what argv[0] is going to - * be for the named process. The user may pass in that argument, - * or it will be the last pathname component of the file with a - * '-' prepended. - * Then, it executes the named file. - */ - -int shell (const char *file, /*@null@*/const char *arg, char *const envp[]) -{ - char arg0[1024]; - int err; - - if (file == (char *) 0) { - errno = EINVAL; - return errno; - } - - /* - * The argv[0]'th entry is usually the path name, but - * for various reasons the invoker may want to override - * that. So, we determine the 0'th entry only if they - * don't want to tell us what it is themselves. - */ - if (arg == (char *) 0) { - (void) snprintf (arg0, sizeof arg0, "-%s", Basename (file)); - arg0[sizeof arg0 - 1] = '\0'; - arg = arg0; - } - - /* - * First we try the direct approach. The system should be - * able to figure out what we are up to without too much - * grief. - */ - (void) execle (file, arg, (char *) 0, envp); - err = errno; - - if (access (file, R_OK|X_OK) == 0) { - /* - * Assume this is a shell script (with no shebang). - * Interpret it with /bin/sh - */ - (void) execle (SHELL, "sh", "-", file, (char *)0, envp); - err = errno; - } - - /* - * Obviously something is really wrong - I can't figure out - * how to execute this stupid shell, so I might as well give - * up in disgust ... - */ - (void) snprintf (arg0, sizeof arg0, _("Cannot execute %s"), file); - errno = err; - perror (arg0); - return err; -} - diff --git a/libmisc/strtoday.c b/libmisc/strtoday.c deleted file mode 100644 index d321873..0000000 --- a/libmisc/strtoday.c +++ /dev/null @@ -1,220 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#if !defined(__GLIBC__) -#define _XOPEN_SOURCE 500 -#endif - -#include - -#include - -#ident "$Id$" - -#include "defines.h" -#include "prototypes.h" - -#ifndef USE_GETDATE -#define USE_GETDATE 1 -#endif - -#if USE_GETDATE -#include "getdate.h" -/* - * strtoday() now uses get_date() (borrowed from GNU shellutils) - * which can handle many date formats, for example: - * 1970-09-17 # ISO 8601. - * 70-9-17 # This century assumed by default. - * 70-09-17 # Leading zeros are ignored. - * 9/17/72 # Common U.S. writing. - * 24 September 1972 - * 24 Sept 72 # September has a special abbreviation. - * 24 Sep 72 # Three-letter abbreviations always allowed. - * Sep 24, 1972 - * 24-sep-72 - * 24sep72 - */ -long strtoday (const char *str) -{ - time_t t; - bool isnum = true; - const char *s = str; - - /* - * get_date() interprets an empty string as the current date, - * which is not what we expect, unless you're a BOFH :-). - * (useradd sets sp_expire = current date for new lusers) - */ - if ((NULL == str) || ('\0' == *str)) { - return -1; - } - - /* If a numerical value is provided, this is already a number of - * days since EPOCH. - */ - if ('-' == *s) { - s++; - } - while (' ' == *s) { - s++; - } - while (isnum && ('\0' != *s)) { - if (!isdigit (*s)) { - isnum = false; - } - s++; - } - if (isnum) { - long retdate; - if (getlong (str, &retdate) == 0) { - return -2; - } - return retdate; - } - - t = get_date (str, NULL); - if ((time_t) - 1 == t) { - return -2; - } - /* convert seconds to days since 1970-01-01 */ - return (long) (t + DAY / 2) / DAY; -} - -#else /* !USE_GETDATE */ -/* - * Old code, just in case get_date() doesn't work as expected... - */ -#include -#ifdef HAVE_STRPTIME -/* - * for now we allow just one format, but we can define more later - * (we try them all until one succeeds). --marekm - */ -static const char *const date_formats[] = { - "%Y-%m-%d", - (char *) 0 -}; -#else -/* - * days and juldays are used to compute the number of days in the - * current month, and the cumulative number of days in the preceding - * months. they are declared so that january is 1, not 0. - */ -static const short days[13] = { 0, - 31, 28, 31, 30, 31, 30, /* JAN - JUN */ - 31, 31, 30, 31, 30, 31 -}; /* JUL - DEC */ - -static const short juldays[13] = { 0, - 0, 31, 59, 90, 120, 151, /* JAN - JUN */ - 181, 212, 243, 273, 304, 334 -}; /* JUL - DEC */ -#endif - -/* - * strtoday - compute the number of days since 1970. - * - * the total number of days prior to the current date is - * computed. january 1, 1970 is used as the origin with - * it having a day number of 0. - */ - -long strtoday (const char *str) -{ -#ifdef HAVE_STRPTIME - struct tm tp; - const char *const *fmt; - char *cp; - time_t result; - - memzero (&tp, sizeof tp); - for (fmt = date_formats; *fmt; fmt++) { - cp = strptime ((char *) str, *fmt, &tp); - if ((NULL == cp) || ('\0' != *cp)) { - continue; - } - - result = mktime (&tp); - if ((time_t) - 1 == result) { - continue; - } - - return (long) (result / DAY); /* success */ - } - return -1; -#else - char slop[2]; - int month; - int day; - int year; - long total; - - /* - * start by separating the month, day and year. the order - * is compiled in ... - */ - - if (sscanf (str, "%d/%d/%d%c", &year, &month, &day, slop) != 3) { - return -1; - } - - /* - * the month, day of the month, and year are checked for - * correctness and the year adjusted so it falls between - * 1970 and 2069. - */ - - if ((month < 1) || (month > 12)) { - return -1; - } - - if (day < 1) { - return -1; - } - - if ( ((2 != month) || ((year % 4) != 0)) - && (day > days[month])) { - return -1; - } else if ((month == 2) && ((year % 4) == 0) && (day > 29)) { - return -1; - } - - if (year < 0) { - return -1; - } else if (year <= 69) { - year += 2000; - } else if (year <= 99) { - year += 1900; - } - - /* - * On systems with 32-bit signed time_t, time wraps around in 2038 - * - for now we just limit the year to 2037 (instead of 2069). - * This limit can be removed once no one is using 32-bit systems - * anymore :-). --marekm - */ - if ((year < 1970) || (year > 2037)) { - return -1; - } - - /* - * the total number of days is the total number of days in all - * the whole years, plus the number of leap days, plus the - * number of days in the whole months preceding, plus the number - * of days so far in the month. - */ - - total = (long) ((year - 1970) * 365L) + (((year + 1) - 1970) / 4); - total += (long) juldays[month] + (month > 2 && (year % 4) == 0 ? 1 : 0); - total += (long) day - 1; - - return total; -#endif /* HAVE_STRPTIME */ -} -#endif /* !USE_GETDATE */ diff --git a/libmisc/sub.c b/libmisc/sub.c deleted file mode 100644 index d30c4c7..0000000 --- a/libmisc/sub.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#define BAD_SUBROOT2 "invalid root `%s' for user `%s'\n" -#define NO_SUBROOT2 "no subsystem root `%s' for user `%s'\n" -/* - * subsystem - change to subsystem root - * - * A subsystem login is indicated by the presence of a "*" as - * the first character of the login shell. The given home - * directory will be used as the root of a new filesystem which - * the user is actually logged into. - */ -void subsystem (const struct passwd *pw) -{ - /* - * The new root directory must begin with a "/" character. - */ - - if (pw->pw_dir[0] != '/') { - printf (_("Invalid root directory '%s'\n"), pw->pw_dir); - SYSLOG ((LOG_WARN, BAD_SUBROOT2, pw->pw_dir, pw->pw_name)); - closelog (); - exit (EXIT_FAILURE); - } - - /* - * The directory must be accessible and the current process - * must be able to change into it. - */ - - if ( (chdir (pw->pw_dir) != 0) - || (chroot (pw->pw_dir) != 0)) { - (void) printf (_("Can't change root directory to '%s'\n"), - pw->pw_dir); - SYSLOG ((LOG_WARN, NO_SUBROOT2, pw->pw_dir, pw->pw_name)); - closelog (); - exit (EXIT_FAILURE); - } -} - diff --git a/libmisc/sulog.c b/libmisc/sulog.c deleted file mode 100644 index 3e95613..0000000 --- a/libmisc/sulog.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include -#include -#include "prototypes.h" -#include "defines.h" -#include "getdef.h" - -/* - * sulog - log a SU command execution result - */ -void sulog (const char *tty, bool success, const char *oldname, const char *name) -{ - const char *sulog_file; - time_t now; - struct tm *tm; - FILE *fp; - mode_t oldmask; - gid_t oldgid = 0; - - if (success) { - SYSLOG ((LOG_INFO, - "Successful su for %s by %s",name,oldname)); - } else { - SYSLOG ((LOG_NOTICE, - "FAILED su for %s by %s",name,oldname)); - } - - sulog_file = getdef_str ("SULOG_FILE"); - if (NULL == sulog_file) { - return; - } - - oldgid = getgid (); - oldmask = umask (077); - /* Switch to group root to avoid creating the sulog file with - * the wrong group ownership. */ - if ((oldgid != 0) && (setgid (0) != 0)) { - SYSLOG ((LOG_INFO, - "su session not logged to %s", sulog_file)); - /* Continue, but do not switch back to oldgid later */ - oldgid = 0; - } - fp = fopen (sulog_file, "a+"); - (void) umask (oldmask); - if ((oldgid != 0) && (setgid (oldgid) != 0)) { - perror ("setgid"); - SYSLOG ((LOG_ERR, - "can't switch back to group `%d' in sulog", - oldgid)); - /* Do not return if the group permission were raised. */ - exit (EXIT_FAILURE); - } - if (fp == (FILE *) 0) { - return; /* can't open or create logfile */ - } - - (void) time (&now); - tm = localtime (&now); - - fprintf (fp, "SU %.02d/%.02d %.02d:%.02d %c %s %s-%s\n", - tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, - success ? '+' : '-', tty, oldname, name); - - (void) fflush (fp); - fsync (fileno (fp)); - fclose (fp); - /* TODO: log if failure */ -} - diff --git a/libmisc/ttytype.c b/libmisc/ttytype.c deleted file mode 100644 index f72d957..0000000 --- a/libmisc/ttytype.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include "prototypes.h" -#include "defines.h" -#include "getdef.h" -/* - * ttytype - set ttytype from port to terminal type mapping database - */ -void ttytype (const char *line) -{ - FILE *fp; - char buf[BUFSIZ]; - const char *typefile; - char *cp; - char type[1024] = ""; - char port[1024]; - - if (getenv ("TERM") != NULL) { - return; - } - typefile = getdef_str ("TTYTYPE_FILE"); - if (NULL == typefile) { - return; - } - if (access (typefile, F_OK) != 0) { - return; - } - - fp = fopen (typefile, "r"); - if (NULL == fp) { - perror (typefile); - return; - } - while (fgets (buf, (int) sizeof buf, fp) == buf) { - if (buf[0] == '#') { - continue; - } - - cp = strchr (buf, '\n'); - if (NULL != cp) { - *cp = '\0'; - } - - if ( (sscanf (buf, "%1023s %1023s", type, port) == 2) - && (strcmp (line, port) == 0)) { - break; - } - } - if ((feof (fp) == 0) && (ferror (fp) == 0) && (type[0] != '\0')) { - addenv ("TERM", type); - } - - (void) fclose (fp); -} - diff --git a/libmisc/tz.c b/libmisc/tz.c deleted file mode 100644 index 16d92ad..0000000 --- a/libmisc/tz.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1991 - 1994, Chip Rosenthal - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ifndef USE_PAM - -#ident "$Id$" - -#include -#include -#include "defines.h" -#include "prototypes.h" -#include "getdef.h" - -/* - * tz - return local timezone name - * - * tz() determines the name of the local timezone by reading the - * contents of the file named by ``fname''. - */ -/*@observer@*/const char *tz (const char *fname) -{ - FILE *fp = NULL; - static char tzbuf[BUFSIZ]; - const char *def_tz = "TZ=CST6CDT"; - - fp = fopen (fname, "r"); - if ( (NULL == fp) - || (fgets (tzbuf, (int) sizeof (tzbuf), fp) == NULL)) { - def_tz = getdef_str ("ENV_TZ"); - if ((NULL == def_tz) || ('/' == def_tz[0])) { - def_tz = "TZ=CST6CDT"; - } - - strcpy (tzbuf, def_tz); - } else { - tzbuf[strlen (tzbuf) - 1] = '\0'; - } - - if (NULL != fp) { - (void) fclose (fp); - } - - return tzbuf; -} -#else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ -#endif /* !USE_PAM */ - diff --git a/libmisc/ulimit.c b/libmisc/ulimit.c deleted file mode 100644 index e331d46..0000000 --- a/libmisc/ulimit.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#if HAVE_ULIMIT_H -#include -#ifndef UL_SETFSIZE -#ifdef UL_SFILLIM -#define UL_SETFSIZE UL_SFILLIM -#else -#define UL_SETFSIZE 2 -#endif -#endif -#elif HAVE_SYS_RESOURCE_H -#include /* for struct timeval on sunos4 */ -/* XXX - is the above ok or should it be on ultrix? */ -#include -#endif -#include "prototypes.h" - -int set_filesize_limit (int blocks) -{ - int ret = -1; -#if HAVE_ULIMIT_H - if (ulimit (UL_SETFSIZE, blocks) != -1) { - ret = 0; - } -#elif defined(RLIMIT_FSIZE) - struct rlimit rlimit_fsize; - - rlimit_fsize.rlim_cur = 512L * blocks; - rlimit_fsize.rlim_max = rlimit_fsize.rlim_cur; - ret = setrlimit (RLIMIT_FSIZE, &rlimit_fsize); -#endif - - return ret; -} - diff --git a/libmisc/user_busy.c b/libmisc/user_busy.c deleted file mode 100644 index c03feb2..0000000 --- a/libmisc/user_busy.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id: $" - -#include -#include -#include -#include -#include -#include -#include "defines.h" -#include "prototypes.h" -#ifdef ENABLE_SUBIDS -#include "subordinateio.h" -#endif /* ENABLE_SUBIDS */ -#include "shadowlog.h" - -#ifdef __linux__ -static int check_status (const char *name, const char *sname, uid_t uid); -static int user_busy_processes (const char *name, uid_t uid); -#else /* !__linux__ */ -static int user_busy_utmp (const char *name); -#endif /* !__linux__ */ - -/* - * user_busy - check if an user if currently running processes - */ -int user_busy (const char *name, uid_t uid) -{ - /* There are no standard ways to get the list of processes. - * An option could be to run an external tool (ps). - */ -#ifdef __linux__ - /* On Linux, directly parse /proc */ - return user_busy_processes (name, uid); -#else /* !__linux__ */ - /* If we cannot rely on /proc, check is there is a record in utmp - * indicating that the user is still logged in */ - return user_busy_utmp (name); -#endif /* !__linux__ */ -} - -#ifndef __linux__ -static int user_busy_utmp (const char *name) -{ -#ifdef USE_UTMPX - struct utmpx *utent; - - setutxent (); - while ((utent = getutxent ()) != NULL) -#else /* !USE_UTMPX */ - struct utmp *utent; - - setutent (); - while ((utent = getutent ()) != NULL) -#endif /* !USE_UTMPX */ - { - if (utent->ut_type != USER_PROCESS) { - continue; - } - if (strncmp (utent->ut_user, name, sizeof utent->ut_user) != 0) { - continue; - } - if (kill (utent->ut_pid, 0) != 0) { - continue; - } - - fprintf (log_get_logfd(), - _("%s: user %s is currently logged in\n"), - log_get_progname(), name); - return 1; - } - - return 0; -} -#endif /* !__linux__ */ - -#ifdef __linux__ -#ifdef ENABLE_SUBIDS -#define in_parentuid_range(uid) ((uid) >= parentuid && (uid) < parentuid + range) -static int different_namespace (const char *sname) -{ - /* 41: /proc/xxxxxxxxxx/task/xxxxxxxxxx/ns/user + \0 */ - char path[41]; - char buf[512], buf2[512]; - ssize_t llen1, llen2; - - snprintf (path, 41, "/proc/%s/ns/user", sname); - - if ((llen1 = readlink (path, buf, sizeof(buf))) == -1) - return 0; - - if ((llen2 = readlink ("/proc/self/ns/user", buf2, sizeof(buf2))) == -1) - return 0; - - if (llen1 == llen2 && memcmp (buf, buf2, llen1) == 0) - return 0; /* same namespace */ - - return 1; -} -#endif /* ENABLE_SUBIDS */ - - -static int check_status (const char *name, const char *sname, uid_t uid) -{ - /* 40: /proc/xxxxxxxxxx/task/xxxxxxxxxx/status + \0 */ - char status[40]; - char line[1024]; - FILE *sfile; - - snprintf (status, 40, "/proc/%s/status", sname); - - sfile = fopen (status, "r"); - if (NULL == sfile) { - return 0; - } - while (fgets (line, sizeof (line), sfile) == line) { - if (strncmp (line, "Uid:\t", 5) == 0) { - unsigned long ruid, euid, suid; - - assert (uid == (unsigned long) uid); - (void) fclose (sfile); - if (sscanf (line, - "Uid:\t%lu\t%lu\t%lu\n", - &ruid, &euid, &suid) == 3) { - if ( (ruid == (unsigned long) uid) - || (euid == (unsigned long) uid) - || (suid == (unsigned long) uid) ) { - return 1; - } -#ifdef ENABLE_SUBIDS - if ( different_namespace (sname) - && ( have_sub_uids(name, ruid, 1) - || have_sub_uids(name, euid, 1) - || have_sub_uids(name, suid, 1)) - ) { - return 1; - } -#endif /* ENABLE_SUBIDS */ - } else { - /* Ignore errors. This is just a best effort. */ - } - return 0; - } - } - (void) fclose (sfile); - return 0; -} - -static int user_busy_processes (const char *name, uid_t uid) -{ - DIR *proc; - struct dirent *ent; - char *tmp_d_name; - pid_t pid; - DIR *task_dir; - /* 22: /proc/xxxxxxxxxx/task + \0 */ - char task_path[22]; - char root_path[22]; - struct stat sbroot; - struct stat sbroot_process; - -#ifdef ENABLE_SUBIDS - sub_uid_open (O_RDONLY); -#endif /* ENABLE_SUBIDS */ - - proc = opendir ("/proc"); - if (proc == NULL) { - perror ("opendir /proc"); -#ifdef ENABLE_SUBIDS - sub_uid_close(); -#endif - return 0; - } - if (stat ("/", &sbroot) != 0) { - perror ("stat (\"/\")"); - (void) closedir (proc); -#ifdef ENABLE_SUBIDS - sub_uid_close(); -#endif - return 0; - } - - while ((ent = readdir (proc)) != NULL) { - tmp_d_name = ent->d_name; - /* - * Ingo Molnar's patch introducing NPTL for 2.4 hides - * threads in the /proc directory by prepending a period. - * This patch is applied by default in some RedHat - * kernels. - */ - if ( (strcmp (tmp_d_name, ".") == 0) - || (strcmp (tmp_d_name, "..") == 0)) { - continue; - } - if (*tmp_d_name == '.') { - tmp_d_name++; - } - - /* Check if this is a valid PID */ - if (get_pid (tmp_d_name, &pid) == 0) { - continue; - } - - /* Check if the process is in our chroot */ - snprintf (root_path, 22, "/proc/%lu/root", (unsigned long) pid); - root_path[21] = '\0'; - if (stat (root_path, &sbroot_process) != 0) { - continue; - } - if ( (sbroot.st_dev != sbroot_process.st_dev) - || (sbroot.st_ino != sbroot_process.st_ino)) { - continue; - } - - if (check_status (name, tmp_d_name, uid) != 0) { - (void) closedir (proc); -#ifdef ENABLE_SUBIDS - sub_uid_close(); -#endif - fprintf (log_get_logfd(), - _("%s: user %s is currently used by process %d\n"), - log_get_progname(), name, pid); - return 1; - } - - snprintf (task_path, 22, "/proc/%lu/task", (unsigned long) pid); - task_path[21] = '\0'; - task_dir = opendir (task_path); - if (task_dir != NULL) { - while ((ent = readdir (task_dir)) != NULL) { - pid_t tid; - if (get_pid (ent->d_name, &tid) == 0) { - continue; - } - if (tid == pid) { - continue; - } - if (check_status (name, task_path+6, uid) != 0) { - (void) closedir (proc); - (void) closedir (task_dir); -#ifdef ENABLE_SUBIDS - sub_uid_close(); -#endif - fprintf (log_get_logfd(), - _("%s: user %s is currently used by process %d\n"), - log_get_progname(), name, pid); - return 1; - } - } - (void) closedir (task_dir); - } else { - /* Ignore errors. This is just a best effort */ - } - } - - (void) closedir (proc); -#ifdef ENABLE_SUBIDS - sub_uid_close(); -#endif /* ENABLE_SUBIDS */ - return 0; -} -#endif /* __linux__ */ - diff --git a/libmisc/utmp.c b/libmisc/utmp.c deleted file mode 100644 index 45b479f..0000000 --- a/libmisc/utmp.c +++ /dev/null @@ -1,474 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include "defines.h" -#include "prototypes.h" - -#ifdef USE_UTMPX -#include -#else -#include -#endif - -#include -#include -#include -#include -#include -#include - -#ident "$Id$" - - -/* - * is_my_tty -- determine if "tty" is the same TTY stdin is using - */ -static bool is_my_tty (const char *tty) -{ - /* full_tty shall be at least sizeof utmp.ut_line + 5 */ - char full_tty[200]; - /* tmptty shall be bigger than full_tty */ - static char tmptty[sizeof (full_tty)+1]; - - if ('/' != *tty) { - (void) snprintf (full_tty, sizeof full_tty, "/dev/%s", tty); - tty = &full_tty[0]; - } - - if ('\0' == tmptty[0]) { - const char *tname = ttyname (STDIN_FILENO); - if (NULL != tname) { - (void) strncpy (tmptty, tname, sizeof tmptty); - tmptty[sizeof (tmptty) - 1] = '\0'; - } - } - - if ('\0' == tmptty[0]) { - (void) puts (_("Unable to determine your tty name.")); - exit (EXIT_FAILURE); - } else if (strncmp (tty, tmptty, sizeof (tmptty)) != 0) { - return false; - } else { - return true; - } -} - -/* - * get_current_utmp - return the most probable utmp entry for the current - * session - * - * The utmp file is scanned for an entry with the same process ID. - * 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 - * structure has a ut_id field, this field should be used to update - * the entry information. - * - * 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; - struct utmp *ret = NULL; - - setutent (); - - /* First, try to find a valid utmp entry for this process. */ - while ((ut = getutent ()) != NULL) { - if ( (ut->ut_pid == getpid ()) -#ifdef HAVE_STRUCT_UTMP_UT_ID - && ('\0' != ut->ut_id[0]) -#endif -#ifdef HAVE_STRUCT_UTMP_UT_TYPE - && ( (LOGIN_PROCESS == ut->ut_type) - || (USER_PROCESS == ut->ut_type)) -#endif - /* A process may have failed to close an entry - * Check if this entry refers to the current tty */ - && is_my_tty (ut->ut_line)) { - break; - } - } - - if (NULL != ut) { - ret = (struct utmp *) xmalloc (sizeof (*ret)); - memcpy (ret, ut, sizeof (*ret)); - } - - endutent (); - - 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 -/* - * Some systems already have updwtmp() and possibly updwtmpx(). Others - * don't, so we re-implement these functions if necessary. - */ -#ifndef HAVE_UPDWTMP -static void updwtmp (const char *filename, const struct utmp *ut) -{ - int fd; - - fd = open (filename, O_APPEND | O_WRONLY, 0); - if (fd >= 0) { - write (fd, (const char *) ut, sizeof (*ut)); - close (fd); - } -} -#endif /* ! HAVE_UPDWTMP */ - -#ifdef USE_UTMPX -#ifndef HAVE_UPDWTMPX -static void updwtmpx (const char *filename, const struct utmpx *utx) -{ - int fd; - - fd = open (filename, O_APPEND | O_WRONLY, 0); - if (fd >= 0) { - write (fd, (const char *) utx, sizeof (*utx)); - close (fd); - } -} -#endif /* ! HAVE_UPDWTMPX */ -#endif /* ! USE_UTMPX */ -#endif /* ! USE_PAM */ - - -#ifndef USE_UTMPX -/* - * prepare_utmp - prepare an utmp entry so that it can be logged in a - * utmp/wtmp file. - * - * It accepts an utmp entry in input (ut) to return an entry with - * the right ut_id. This is typically an entry returned by - * get_current_utmp - * If ut is NULL, ut_id will be forged based on the line argument. - * - * The ut_host field of the input structure may also be kept, and is - * used to define the ut_addr/ut_addr_v6 fields. (if these fields - * exist) - * - * Other fields are discarded and filed with new values (if they - * exist). - * - * The returned structure shall be freed by the caller. - */ -/*@only@*/struct utmp *prepare_utmp (const char *name, - const char *line, - const char *host, - /*@null@*/const struct utmp *ut) -{ - struct timeval tv; - char *hostname = NULL; - struct utmp *utent; - - assert (NULL != name); - assert (NULL != line); - - - - if ( (NULL != host) - && ('\0' != host[0])) { - hostname = (char *) xmalloc (strlen (host) + 1); - strcpy (hostname, host); -#ifdef HAVE_STRUCT_UTMP_UT_HOST - } else if ( (NULL != ut) - && ('\0' != ut->ut_host[0])) { - hostname = (char *) xmalloc (sizeof (ut->ut_host) + 1); - strncpy (hostname, ut->ut_host, sizeof (ut->ut_host)); - hostname[sizeof (ut->ut_host)] = '\0'; -#endif /* HAVE_STRUCT_UTMP_UT_HOST */ - } - - if (strncmp(line, "/dev/", 5) == 0) { - line += 5; - } - - - utent = (struct utmp *) xmalloc (sizeof (*utent)); - memzero (utent, sizeof (*utent)); - - - -#ifdef HAVE_STRUCT_UTMP_UT_TYPE - utent->ut_type = USER_PROCESS; -#endif /* HAVE_STRUCT_UTMP_UT_TYPE */ - utent->ut_pid = getpid (); - strncpy (utent->ut_line, line, sizeof (utent->ut_line) - 1); -#ifdef HAVE_STRUCT_UTMP_UT_ID - if (NULL != ut) { - strncpy (utent->ut_id, ut->ut_id, sizeof (utent->ut_id)); - } else { - /* XXX - assumes /dev/tty?? */ - strncpy (utent->ut_id, line + 3, sizeof (utent->ut_id) - 1); - } -#endif /* HAVE_STRUCT_UTMP_UT_ID */ -#ifdef HAVE_STRUCT_UTMP_UT_NAME - strncpy (utent->ut_name, name, sizeof (utent->ut_name)); -#endif /* HAVE_STRUCT_UTMP_UT_NAME */ -#ifdef HAVE_STRUCT_UTMP_UT_USER - strncpy (utent->ut_user, name, sizeof (utent->ut_user) - 1); -#endif /* HAVE_STRUCT_UTMP_UT_USER */ - if (NULL != hostname) { - struct addrinfo *info = NULL; -#ifdef HAVE_STRUCT_UTMP_UT_HOST - strncpy (utent->ut_host, hostname, sizeof (utent->ut_host) - 1); -#endif /* HAVE_STRUCT_UTMP_UT_HOST */ -#ifdef HAVE_STRUCT_UTMP_UT_SYSLEN - utent->ut_syslen = MIN (strlen (hostname), - sizeof (utent->ut_host)); -#endif /* HAVE_STRUCT_UTMP_UT_SYSLEN */ -#if defined(HAVE_STRUCT_UTMP_UT_ADDR) || defined(HAVE_STRUCT_UTMP_UT_ADDR_V6) - if (getaddrinfo (hostname, NULL, NULL, &info) == 0) { - /* getaddrinfo might not be reliable. - * Just try to log what may be useful. - */ - if (info->ai_family == AF_INET) { - struct sockaddr_in *sa = - (struct sockaddr_in *) info->ai_addr; -#ifdef HAVE_STRUCT_UTMP_UT_ADDR - memcpy (&(utent->ut_addr), - &(sa->sin_addr), - MIN (sizeof (utent->ut_addr), - sizeof (sa->sin_addr))); -#endif /* HAVE_STRUCT_UTMP_UT_ADDR */ -#ifdef HAVE_STRUCT_UTMP_UT_ADDR_V6 - memcpy (utent->ut_addr_v6, - &(sa->sin_addr), - MIN (sizeof (utent->ut_addr_v6), - sizeof (sa->sin_addr))); - } else if (info->ai_family == AF_INET6) { - struct sockaddr_in6 *sa = - (struct sockaddr_in6 *) info->ai_addr; - memcpy (utent->ut_addr_v6, - &(sa->sin6_addr), - MIN (sizeof (utent->ut_addr_v6), - sizeof (sa->sin6_addr))); -#endif /* HAVE_STRUCT_UTMP_UT_ADDR_V6 */ - } - freeaddrinfo (info); - } -#endif /* HAVE_STRUCT_UTMP_UT_ADDR || HAVE_STRUCT_UTMP_UT_ADDR_V6 */ - free (hostname); - } - /* ut_exit is only for DEAD_PROCESS */ - utent->ut_session = getsid (0); - if (gettimeofday (&tv, NULL) == 0) { -#ifdef HAVE_STRUCT_UTMP_UT_TIME - utent->ut_time = tv.tv_sec; -#endif /* HAVE_STRUCT_UTMP_UT_TIME */ -#ifdef HAVE_STRUCT_UTMP_UT_XTIME - utent->ut_xtime = tv.tv_usec; -#endif /* HAVE_STRUCT_UTMP_UT_XTIME */ -#ifdef HAVE_STRUCT_UTMP_UT_TV - utent->ut_tv.tv_sec = tv.tv_sec; - utent->ut_tv.tv_usec = tv.tv_usec; -#endif /* HAVE_STRUCT_UTMP_UT_TV */ - } - - return utent; -} - -/* - * setutmp - Update an entry in utmp and log an entry in wtmp - * - * Return 1 on failure and 0 on success. - */ -int setutmp (struct utmp *ut) -{ - int err = 0; - - assert (NULL != ut); - - setutent (); - if (pututline (ut) == NULL) { - err = 1; - } - endutent (); - -#ifndef USE_PAM - /* This is done by pam_lastlog */ - updwtmp (_WTMP_FILE, ut); -#endif /* ! USE_PAM */ - - return err; -} - -#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 utmpx *ut) -{ - struct timeval tv; - char *hostname = NULL; - struct utmpx *utxent; - - assert (NULL != name); - assert (NULL != line); - - - - if ( (NULL != host) - && ('\0' != host[0])) { - hostname = (char *) xmalloc (strlen (host) + 1); - strcpy (hostname, host); -#ifdef HAVE_STRUCT_UTMP_UT_HOST - } else if ( (NULL != ut) - && (NULL != ut->ut_host) - && ('\0' != ut->ut_host[0])) { - hostname = (char *) xmalloc (sizeof (ut->ut_host) + 1); - strncpy (hostname, ut->ut_host, sizeof (ut->ut_host)); - hostname[sizeof (ut->ut_host)] = '\0'; -#endif /* HAVE_STRUCT_UTMP_UT_TYPE */ - } - - if (strncmp(line, "/dev/", 5) == 0) { - line += 5; - } - - utxent = (struct utmpx *) xmalloc (sizeof (*utxent)); - memzero (utxent, sizeof (*utxent)); - - - - utxent->ut_type = USER_PROCESS; - utxent->ut_pid = getpid (); - strncpy (utxent->ut_line, line, sizeof (utxent->ut_line)); - /* existence of ut->ut_id is enforced by configure */ - if (NULL != ut) { - strncpy (utxent->ut_id, ut->ut_id, sizeof (utxent->ut_id)); - } else { - /* XXX - assumes /dev/tty?? */ - strncpy (utxent->ut_id, line + 3, sizeof (utxent->ut_id)); - } -#ifdef HAVE_STRUCT_UTMPX_UT_NAME - strncpy (utxent->ut_name, name, sizeof (utxent->ut_name)); -#endif /* HAVE_STRUCT_UTMPX_UT_NAME */ - strncpy (utxent->ut_user, name, sizeof (utxent->ut_user)); - if (NULL != hostname) { - struct addrinfo *info = NULL; -#ifdef HAVE_STRUCT_UTMPX_UT_HOST - strncpy (utxent->ut_host, hostname, sizeof (utxent->ut_host)); -#endif /* HAVE_STRUCT_UTMPX_UT_HOST */ -#ifdef HAVE_STRUCT_UTMPX_UT_SYSLEN - utxent->ut_syslen = MIN (strlen (hostname), - sizeof (utxent->ut_host)); -#endif /* HAVE_STRUCT_UTMPX_UT_SYSLEN */ -#if defined(HAVE_STRUCT_UTMPX_UT_ADDR) || defined(HAVE_STRUCT_UTMPX_UT_ADDR_V6) - if (getaddrinfo (hostname, NULL, NULL, &info) == 0) { - /* getaddrinfo might not be reliable. - * Just try to log what may be useful. - */ - if (info->ai_family == AF_INET) { - struct sockaddr_in *sa = - (struct sockaddr_in *) info->ai_addr; -#ifdef HAVE_STRUCT_UTMPX_UT_ADDR - memcpy (&utxent->ut_addr, - &(sa->sin_addr), - MIN (sizeof (utxent->ut_addr), - sizeof (sa->sin_addr))); -#endif /* HAVE_STRUCT_UTMPX_UT_ADDR */ -#ifdef HAVE_STRUCT_UTMPX_UT_ADDR_V6 - memcpy (utxent->ut_addr_v6, - &(sa->sin_addr), - MIN (sizeof (utxent->ut_addr_v6), - sizeof (sa->sin_addr))); - } else if (info->ai_family == AF_INET6) { - struct sockaddr_in6 *sa = - (struct sockaddr_in6 *) info->ai_addr; - memcpy (utxent->ut_addr_v6, - &(sa->sin6_addr), - MIN (sizeof (utxent->ut_addr_v6), - sizeof (sa->sin6_addr))); -#endif /* HAVE_STRUCT_UTMPX_UT_ADDR_V6 */ - } - freeaddrinfo (info); - } -#endif /* HAVE_STRUCT_UTMPX_UT_ADDR || HAVE_STRUCT_UTMPX_UT_ADDR_V6 */ - free (hostname); - } - /* ut_exit is only for DEAD_PROCESS */ - utxent->ut_session = getsid (0); - if (gettimeofday (&tv, NULL) == 0) { -#ifdef HAVE_STRUCT_UTMPX_UT_TIME - utxent->ut_time = tv.tv_sec; -#endif /* HAVE_STRUCT_UTMPX_UT_TIME */ -#ifdef HAVE_STRUCT_UTMPX_UT_XTIME - utxent->ut_xtime = tv.tv_usec; -#endif /* HAVE_STRUCT_UTMPX_UT_XTIME */ - utxent->ut_tv.tv_sec = tv.tv_sec; - utxent->ut_tv.tv_usec = tv.tv_usec; - } - - return utxent; -} - -/* - * setutmpx - the UTMPX version for setutmp - */ -int setutmpx (struct utmpx *utx) -{ - int err = 0; - - assert (NULL != utx); - - setutxent (); - if (pututxline (utx) == NULL) { - err = 1; - } - endutxent (); - -#ifndef USE_PAM - /* This is done by pam_lastlog */ - updwtmpx (_WTMP_FILE "x", utx); -#endif /* ! USE_PAM */ - - return err; -} -#endif /* USE_UTMPX */ - diff --git a/libmisc/valid.c b/libmisc/valid.c deleted file mode 100644 index 326635f..0000000 --- a/libmisc/valid.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include -#include -#include "prototypes.h" -#include "defines.h" -#include -/* - * valid - compare encrypted passwords - * - * Valid() compares the DES encrypted password from the password file - * against the password which the user has entered after it has been - * encrypted using the same salt as the original. Entries which do - * not have a password file entry have a NULL pw_name field and this - * is used to indicate that a dummy salt must be used to encrypt the - * password anyway. - */ -bool valid (const char *password, const struct passwd *ent) -{ - const char *encrypted; - /*@observer@*/const char *salt; - - /* - * Start with blank or empty password entries. Always encrypt - * a password if no such user exists. Only if the ID exists and - * the password is really empty do you return quickly. This - * routine is meant to waste CPU time. - */ - - if ((NULL != ent->pw_name) && ('\0' == ent->pw_passwd[0])) { - if ('\0' == password[0]) { - return true; /* user entered nothing */ - } else { - return false; /* user entered something! */ - } - } - - /* - * If there is no entry then we need a salt to use. - */ - - if ((NULL == ent->pw_name) || ('\0' == ent->pw_passwd[0])) { - salt = "xx"; - } else { - salt = ent->pw_passwd; - } - - /* - * Now, perform the encryption using the salt from before on - * the users input. Since we always encrypt the string, it - * should be very difficult to determine if the user exists by - * looking at execution time. - */ - - encrypted = pw_encrypt (password, salt); - - /* - * One last time we must deal with there being no password file - * entry for the user. We use the pw_name == NULL idiom to - * cause non-existent users to not be validated. - */ - - if ( (NULL != ent->pw_name) - && (NULL != encrypted) - && (strcmp (encrypted, ent->pw_passwd) == 0)) { - return true; - } else { - return false; - } -} - diff --git a/libmisc/xgetXXbyYY.c b/libmisc/xgetXXbyYY.c deleted file mode 100644 index 6a3f969..0000000 --- a/libmisc/xgetXXbyYY.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * According to the Linux-PAM documentation: - * - * 4.1. Care about standard library calls - * - * In general, writers of authorization-granting applications should - * assume that each module is likely to call any or all 'libc' functions. - * For 'libc' functions that return pointers to static/dynamically - * allocated structures (ie. the library allocates the memory and the - * user is not expected to 'free()' it) any module call to this function - * is likely to corrupt a pointer previously obtained by the application. - * The application programmer should either re-call such a 'libc' - * function after a call to the Linux-PAM library, or copy the structure - * contents to some safe area of memory before passing control to the - * Linux-PAM library. - * - * Two important function classes that fall into this category are - * getpwnam(3) and syslog(3). - * - * This file provide wrapper to the getpwnam or getpwnam_r functions. - */ - -#include -#include -#include -#include -#include "prototypes.h" -#include "shadowlog.h" - -#define XFUNCTION_NAME XPREFIX (FUNCTION_NAME) -#define XPREFIX(name) XPREFIX1 (name) -#define XPREFIX1(name) x##name -#define REENTRANT_NAME APPEND_R (FUNCTION_NAME) -#define APPEND_R(name) APPEND_R1 (name) -#define APPEND_R1(name) name##_r -#define STRINGIZE(name) STRINGIZE1 (name) -#define STRINGIZE1(name) #name - -/*@null@*/ /*@only@*/LOOKUP_TYPE *XFUNCTION_NAME (ARG_TYPE ARG_NAME) -{ -#if HAVE_FUNCTION_R - LOOKUP_TYPE *result=NULL; - char *buffer=NULL; - /* we have to start with something */ - size_t length = 0x100; - - result = malloc(sizeof(LOOKUP_TYPE)); - if (NULL == result) { - fprintf (log_get_logfd(), _("%s: out of memory\n"), - "x" STRINGIZE(FUNCTION_NAME)); - exit (13); - } - - while (true) { - int status; - LOOKUP_TYPE *resbuf = NULL; - buffer = (char *)realloc (buffer, length); - if (NULL == buffer) { - fprintf (log_get_logfd(), _("%s: out of memory\n"), - "x" STRINGIZE(FUNCTION_NAME)); - exit (13); - } - status = REENTRANT_NAME(ARG_NAME, result, buffer, - length, &resbuf); - if ((0 == status) && (resbuf == result)) { - /* Build a result structure that can be freed by - * the shadow *_free functions. */ - LOOKUP_TYPE *ret_result = DUP_FUNCTION(result); - free(buffer); - free(result); - return ret_result; - } - - if (ERANGE != status) { - free (buffer); - free (result); - return NULL; - } - - if (length <= ((size_t)-1 / 4)) { - length *= 4; - } else if (length == (size_t) -1) { - break; - } else { - length = (size_t) -1; - } - } - - free(buffer); - free(result); - return NULL; - -#else /* !HAVE_FUNCTION_R */ - - /* No reentrant function. - * Duplicate the structure to avoid other call to overwrite it. - * - * We should also restore the initial structure. But that would be - * overkill. - */ - LOOKUP_TYPE *result = FUNCTION_NAME(ARG_NAME); - - if (result) { - result = DUP_FUNCTION(result); - if (NULL == result) { - fprintf (log_get_logfd(), _("%s: out of memory\n"), - "x" STRINGIZE(FUNCTION_NAME)); - exit (13); - } - } - - return result; -#endif -} - diff --git a/libmisc/xgetgrgid.c b/libmisc/xgetgrgid.c deleted file mode 100644 index fe99929..0000000 --- a/libmisc/xgetgrgid.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * According to the Linux-PAM documentation: - * - * 4.1. Care about standard library calls - * - * In general, writers of authorization-granting applications should - * assume that each module is likely to call any or all 'libc' functions. - * For 'libc' functions that return pointers to static/dynamically - * allocated structures (ie. the library allocates the memory and the - * user is not expected to 'free()' it) any module call to this function - * is likely to corrupt a pointer previously obtained by the application. - * The application programmer should either re-call such a 'libc' - * function after a call to the Linux-PAM library, or copy the structure - * contents to some safe area of memory before passing control to the - * Linux-PAM library. - * - * Two important function classes that fall into this category are - * getpwnam(3) and syslog(3). - * - * This file provide wrapper to the getpwnam or getpwnam_r functions. - */ - -#include - -#include "groupio.h" - -#define LOOKUP_TYPE struct group -#define FUNCTION_NAME getgrgid -#define ARG_TYPE gid_t -#define ARG_NAME gid -#define DUP_FUNCTION __gr_dup -#define HAVE_FUNCTION_R (defined HAVE_GETGRGID_R) - -#include "xgetXXbyYY.c" - diff --git a/libmisc/xgetgrnam.c b/libmisc/xgetgrnam.c deleted file mode 100644 index 66d6f93..0000000 --- a/libmisc/xgetgrnam.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * According to the Linux-PAM documentation: - * - * 4.1. Care about standard library calls - * - * In general, writers of authorization-granting applications should - * assume that each module is likely to call any or all 'libc' functions. - * For 'libc' functions that return pointers to static/dynamically - * allocated structures (ie. the library allocates the memory and the - * user is not expected to 'free()' it) any module call to this function - * is likely to corrupt a pointer previously obtained by the application. - * The application programmer should either re-call such a 'libc' - * function after a call to the Linux-PAM library, or copy the structure - * contents to some safe area of memory before passing control to the - * Linux-PAM library. - * - * Two important function classes that fall into this category are - * getpwnam(3) and syslog(3). - * - * This file provide wrapper to the getpwnam or getpwnam_r functions. - */ - -#include - -#include "groupio.h" - -#define LOOKUP_TYPE struct group -#define FUNCTION_NAME getgrnam -#define ARG_TYPE const char * -#define ARG_NAME name -#define DUP_FUNCTION __gr_dup -#define HAVE_FUNCTION_R (defined HAVE_GETGRNAM_R) - -#include "xgetXXbyYY.c" - diff --git a/libmisc/xgetpwnam.c b/libmisc/xgetpwnam.c deleted file mode 100644 index 74eb972..0000000 --- a/libmisc/xgetpwnam.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * According to the Linux-PAM documentation: - * - * 4.1. Care about standard library calls - * - * In general, writers of authorization-granting applications should - * assume that each module is likely to call any or all 'libc' functions. - * For 'libc' functions that return pointers to static/dynamically - * allocated structures (ie. the library allocates the memory and the - * user is not expected to 'free()' it) any module call to this function - * is likely to corrupt a pointer previously obtained by the application. - * The application programmer should either re-call such a 'libc' - * function after a call to the Linux-PAM library, or copy the structure - * contents to some safe area of memory before passing control to the - * Linux-PAM library. - * - * Two important function classes that fall into this category are - * getpwnam(3) and syslog(3). - * - * This file provide wrapper to the getpwnam or getpwnam_r functions. - */ - -#include - -#include "pwio.h" - -#define LOOKUP_TYPE struct passwd -#define FUNCTION_NAME getpwnam -#define ARG_TYPE const char * -#define ARG_NAME name -#define DUP_FUNCTION __pw_dup -#define HAVE_FUNCTION_R (defined HAVE_GETPWNAM_R) - -#include "xgetXXbyYY.c" - diff --git a/libmisc/xgetpwuid.c b/libmisc/xgetpwuid.c deleted file mode 100644 index 23b2d0c..0000000 --- a/libmisc/xgetpwuid.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * According to the Linux-PAM documentation: - * - * 4.1. Care about standard library calls - * - * In general, writers of authorization-granting applications should - * assume that each module is likely to call any or all 'libc' functions. - * For 'libc' functions that return pointers to static/dynamically - * allocated structures (ie. the library allocates the memory and the - * user is not expected to 'free()' it) any module call to this function - * is likely to corrupt a pointer previously obtained by the application. - * The application programmer should either re-call such a 'libc' - * function after a call to the Linux-PAM library, or copy the structure - * contents to some safe area of memory before passing control to the - * Linux-PAM library. - * - * Two important function classes that fall into this category are - * getpwnam(3) and syslog(3). - * - * This file provide wrapper to the getpwnam or getpwnam_r functions. - */ - -#include - -#include "pwio.h" - -#define LOOKUP_TYPE struct passwd -#define FUNCTION_NAME getpwuid -#define ARG_TYPE uid_t -#define ARG_NAME uid -#define DUP_FUNCTION __pw_dup -#define HAVE_FUNCTION_R (defined HAVE_GETPWUID_R) - -#include "xgetXXbyYY.c" - diff --git a/libmisc/xgetspnam.c b/libmisc/xgetspnam.c deleted file mode 100644 index 148185f..0000000 --- a/libmisc/xgetspnam.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * According to the Linux-PAM documentation: - * - * 4.1. Care about standard library calls - * - * In general, writers of authorization-granting applications should - * assume that each module is likely to call any or all 'libc' functions. - * For 'libc' functions that return pointers to static/dynamically - * allocated structures (ie. the library allocates the memory and the - * user is not expected to 'free()' it) any module call to this function - * is likely to corrupt a pointer previously obtained by the application. - * The application programmer should either re-call such a 'libc' - * function after a call to the Linux-PAM library, or copy the structure - * contents to some safe area of memory before passing control to the - * Linux-PAM library. - * - * Two important function classes that fall into this category are - * getpwnam(3) and syslog(3). - * - * This file provide wrapper to the getpwnam or getpwnam_r functions. - */ - -#include - -#include "shadowio.h" - -#define LOOKUP_TYPE struct spwd -#define FUNCTION_NAME getspnam -#define ARG_TYPE const char * -#define ARG_NAME name -#define DUP_FUNCTION __spw_dup -#define HAVE_FUNCTION_R (defined HAVE_GETSPNAM_R) - -#include "xgetXXbyYY.c" - diff --git a/libmisc/xmalloc.c b/libmisc/xmalloc.c deleted file mode 100644 index 056d472..0000000 --- a/libmisc/xmalloc.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* Replacements for malloc and strdup with error checking. Too trivial - to be worth copyrighting :-). I did that because a lot of code used - malloc and strdup without checking for NULL pointer, and I like some - message better than a core dump... --marekm - - Yeh, but. Remember that bailing out might leave the system in some - bizarre state. You really want to put in error checking, then add - some back-out failure recovery code. -- jfh */ - -#include - -#ident "$Id$" - -#include -#include -#include "defines.h" -#include "prototypes.h" -#include "shadowlog.h" - -/*@maynotreturn@*/ /*@only@*//*@out@*//*@notnull@*/void *xmalloc (size_t size) -{ - void *ptr; - - ptr = malloc (size); - if (NULL == ptr) { - (void) fprintf (log_get_logfd(), - _("%s: failed to allocate memory: %s\n"), - log_get_progname(), strerror (errno)); - exit (13); - } - return ptr; -} - -/*@maynotreturn@*/ /*@only@*//*@notnull@*/char *xstrdup (const char *str) -{ - return strcpy (xmalloc (strlen (str) + 1), str); -} diff --git a/libmisc/yesno.c b/libmisc/yesno.c deleted file mode 100644 index cfbe6ec..0000000 --- a/libmisc/yesno.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1992 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/* - * Common code for yes/no prompting - * - * Used by pwck.c and grpck.c - */ - -#include - -#ident "$Id$" - -#include -#include "prototypes.h" - -/* - * yes_or_no - get answer to question from the user - * - * It returns false if no. - * - * If the read_only flag is set, it will print No, and will return - * false. - */ -bool yes_or_no (bool read_only) -{ - char buf[80]; - - /* - * In read-only mode all questions are answered "no". - */ - if (read_only) { - (void) puts (_("No")); - return false; - } - - /* - * Typically, there's a prompt on stdout, sometimes unflushed. - */ - (void) fflush (stdout); - - /* - * Get a line and see what the first character is. - */ - /* TODO: use gettext */ - if (fgets (buf, (int) sizeof buf, stdin) == buf) { - return buf[0] == 'y' || buf[0] == 'Y'; - } - - return false; -} - diff --git a/libsubid/Makefile.am b/libsubid/Makefile.am index 09ec341..b6488e7 100644 --- a/libsubid/Makefile.am +++ b/libsubid/Makefile.am @@ -8,7 +8,6 @@ MISCLIBS = \ $(LIBAUDIT) \ $(LIBSELINUX) \ $(LIBSEMANAGE) \ - $(LIBCRACK) \ $(LIBCRYPT_NOPAM) \ $(LIBSKEY) \ $(LIBMD) \ @@ -21,10 +20,8 @@ MISCLIBS = \ libsubid_la_LIBADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(MISCLIBS) -ldl AM_CPPFLAGS = \ -I${top_srcdir}/lib \ - -I${top_srcdir}/libmisc \ -DLOCALEDIR=\"$(datadir)/locale\" diff --git a/libsubid/Makefile.in b/libsubid/Makefile.in index ed8dc94..1cc025d 100644 --- a/libsubid/Makefile.in +++ b/libsubid/Makefile.in @@ -143,9 +143,9 @@ am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) libsubid_la_DEPENDENCIES = $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la $(am__DEPENDENCIES_2) + $(am__DEPENDENCIES_2) am_libsubid_la_OBJECTS = api.lo libsubid_la_OBJECTS = $(am_libsubid_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) @@ -229,6 +229,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -247,6 +249,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -262,9 +265,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -280,6 +289,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -288,6 +298,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -310,6 +322,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -389,7 +404,6 @@ MISCLIBS = \ $(LIBAUDIT) \ $(LIBSELINUX) \ $(LIBSEMANAGE) \ - $(LIBCRACK) \ $(LIBCRYPT_NOPAM) \ $(LIBSKEY) \ $(LIBMD) \ @@ -402,12 +416,10 @@ MISCLIBS = \ libsubid_la_LIBADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(MISCLIBS) -ldl AM_CPPFLAGS = \ -I${top_srcdir}/lib \ - -I${top_srcdir}/libmisc \ -DLOCALEDIR=\"$(datadir)/locale\" all: all-am @@ -499,22 +511,25 @@ $(am__depfiles_remade): am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< diff --git a/libsubid/api.c b/libsubid/api.c index 00da74f..65d20ab 100644 --- a/libsubid/api.c +++ b/libsubid/api.c @@ -66,12 +66,12 @@ int get_subid_owner(unsigned long id, enum subid_type id_type, uid_t **owner) int subid_get_uid_owners(uid_t uid, uid_t **owner) { - return get_subid_owner((unsigned long)uid, ID_TYPE_UID, owner); + return get_subid_owner(uid, ID_TYPE_UID, owner); } int subid_get_gid_owners(gid_t gid, uid_t **owner) { - return get_subid_owner((unsigned long)gid, ID_TYPE_GID, owner); + return get_subid_owner(gid, ID_TYPE_GID, owner); } static diff --git a/ltmain.sh b/ltmain.sh index 540a92a..1dea62a 100755 --- a/ltmain.sh +++ b/ltmain.sh @@ -1,12 +1,12 @@ -#! /bin/sh +#! /usr/bin/env sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -## by inline-source v2014-01-03.01 +## by inline-source v2019-02-19.15 -# libtool (GNU libtool) 2.4.6 +# libtool (GNU libtool) 2.4.7 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -31,8 +31,8 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-15build2" -package_revision=2.4.6 +VERSION="2.4.7 Debian-2.4.7-7" +package_revision=2.4.7 ## ------ ## @@ -64,34 +64,25 @@ package_revision=2.4.6 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2015-01-20.17; # UTC +scriptversion=2019-02-19.15; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 -# Copyright (C) 2004-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. - -# As a special exception to the GNU General Public License, if you distribute -# this file as part of a program or library that is built using GNU Libtool, -# you may include this file under the same distribution terms that you use -# for the rest of that program. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2004-2019, 2021 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. -# Please report bugs or propose patches to gary@gnu.org. +# Please report bugs or propose patches to: +# ## ------ ## @@ -139,9 +130,12 @@ do _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# These NLS vars are set unconditionally (bootstrap issue #24). Unset those +# in case the environment reset is needed later and the $save_* variant is not +# defined (see the code above). +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL # Make sure IFS has a sensible default sp=' ' @@ -159,6 +153,26 @@ if test "${PATH_SEPARATOR+set}" != set; then fi +# func_unset VAR +# -------------- +# Portably unset VAR. +# In some shells, an 'unset VAR' statement leaves a non-zero return +# status if VAR is already unset, which might be problematic if the +# statement is used at the end of a function (thus poisoning its return +# value) or when 'set -e' is active (causing even a spurious abort of +# the script in this case). +func_unset () +{ + { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } +} + + +# Make sure CDPATH doesn't cause `cd` commands to output the target dir. +func_unset CDPATH + +# Make sure ${,E,F}GREP behave sanely. +func_unset GREP_OPTIONS + ## ------------------------- ## ## Locate command utilities. ## @@ -259,7 +273,7 @@ test -z "$SED" && { rm -f conftest.in conftest.tmp conftest.nl conftest.out } - func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } @@ -295,7 +309,7 @@ test -z "$GREP" && { rm -f conftest.in conftest.tmp conftest.nl conftest.out } - func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } @@ -360,6 +374,35 @@ sed_double_backslash="\ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" +# require_check_ifs_backslash +# --------------------------- +# Check if we can use backslash as IFS='\' separator, and set +# $check_ifs_backshlash_broken to ':' or 'false'. +require_check_ifs_backslash=func_require_check_ifs_backslash +func_require_check_ifs_backslash () +{ + _G_save_IFS=$IFS + IFS='\' + _G_check_ifs_backshlash='a\\b' + for _G_i in $_G_check_ifs_backshlash + do + case $_G_i in + a) + check_ifs_backshlash_broken=false + ;; + '') + break + ;; + *) + check_ifs_backshlash_broken=: + break + ;; + esac + done + IFS=$_G_save_IFS + require_check_ifs_backslash=: +} + ## ----------------- ## ## Global variables. ## @@ -529,27 +572,15 @@ func_require_term_colors () # --------------------- # Append VALUE onto the existing contents of VAR. - # We should try to minimise forks, especially on Windows where they are - # unreasonably slow, so skip the feature probes when bash or zsh are - # being used: - if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then - : ${_G_HAVE_ARITH_OP="yes"} - : ${_G_HAVE_XSI_OPS="yes"} - # The += operator was introduced in bash 3.1 - case $BASH_VERSION in - [12].* | 3.0 | 3.0*) ;; - *) - : ${_G_HAVE_PLUSEQ_OP="yes"} - ;; - esac - fi - # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. - test -z "$_G_HAVE_PLUSEQ_OP" \ - && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ - && _G_HAVE_PLUSEQ_OP=yes + if test -z "$_G_HAVE_PLUSEQ_OP" && \ + __PLUSEQ_TEST="a" && \ + __PLUSEQ_TEST+=" b" 2>/dev/null && \ + test "a b" = "$__PLUSEQ_TEST"; then + _G_HAVE_PLUSEQ_OP=yes + fi if test yes = "$_G_HAVE_PLUSEQ_OP" then @@ -580,16 +611,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then { $debug_cmd - func_quote_for_eval "$2" - eval "$1+=\\ \$func_quote_for_eval_result" + func_quote_arg pretty "$2" + eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd - func_quote_for_eval "$2" - eval "$1=\$$1\\ \$func_quote_for_eval_result" + func_quote_arg pretty "$2" + eval "$1=\$$1\\ \$func_quote_arg_result" } fi @@ -1091,85 +1122,203 @@ func_relative_path () } -# func_quote_for_eval ARG... -# -------------------------- -# Aesthetically quote ARGs to be evaled later. -# This function returns two values: -# i) func_quote_for_eval_result -# double-quoted, suitable for a subsequent eval -# ii) func_quote_for_eval_unquoted_result -# has all characters that are still active within double -# quotes backslashified. -func_quote_for_eval () +# func_quote_portable EVAL ARG +# ---------------------------- +# Internal function to portably implement func_quote_arg. Note that we still +# keep attention to performance here so we as much as possible try to avoid +# calling sed binary (so far O(N) complexity as long as func_append is O(1)). +func_quote_portable () { $debug_cmd - func_quote_for_eval_unquoted_result= - func_quote_for_eval_result= - while test 0 -lt $#; do - case $1 in - *[\\\`\"\$]*) - _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; - *) - _G_unquoted_arg=$1 ;; - esac - if test -n "$func_quote_for_eval_unquoted_result"; then - func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" - else - func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + $require_check_ifs_backslash + + func_quote_portable_result=$2 + + # one-time-loop (easy break) + while true + do + if $1; then + func_quote_portable_result=`$ECHO "$2" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` + break fi - case $_G_unquoted_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_quoted_arg=\"$_G_unquoted_arg\" + # Quote for eval. + case $func_quote_portable_result in + *[\\\`\"\$]*) + # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string + # contains the shell wildcard characters. + case $check_ifs_backshlash_broken$func_quote_portable_result in + :*|*[\[\*\?]*) + func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ + | $SED "$sed_quote_subst"` + break + ;; + esac + + func_quote_portable_old_IFS=$IFS + for _G_char in '\' '`' '"' '$' + do + # STATE($1) PREV($2) SEPARATOR($3) + set start "" "" + func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy + IFS=$_G_char + for _G_part in $func_quote_portable_result + do + case $1 in + quote) + func_append func_quote_portable_result "$3$2" + set quote "$_G_part" "\\$_G_char" + ;; + start) + set first "" "" + func_quote_portable_result= + ;; + first) + set quote "$_G_part" "" + ;; + esac + done + done + IFS=$func_quote_portable_old_IFS ;; - *) - _G_quoted_arg=$_G_unquoted_arg - ;; + *) ;; esac - - if test -n "$func_quote_for_eval_result"; then - func_append func_quote_for_eval_result " $_G_quoted_arg" - else - func_append func_quote_for_eval_result "$_G_quoted_arg" - fi - shift + break done + + func_quote_portable_unquoted_result=$func_quote_portable_result + case $func_quote_portable_result in + # double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # many bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_portable_result=\"$func_quote_portable_result\" + ;; + esac } -# func_quote_for_expand ARG -# ------------------------- -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - $debug_cmd +# func_quotefast_eval ARG +# ----------------------- +# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', +# but optimized for speed. Result is stored in $func_quotefast_eval. +if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then + printf -v _GL_test_printf_tilde %q '~' + if test '\~' = "$_GL_test_printf_tilde"; then + func_quotefast_eval () + { + printf -v func_quotefast_eval_result %q "$1" + } + else + # Broken older Bash implementations. Make those faster too if possible. + func_quotefast_eval () + { + case $1 in + '~'*) + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + ;; + *) + printf -v func_quotefast_eval_result %q "$1" + ;; + esac + } + fi +else + func_quotefast_eval () + { + func_quote_portable false "$1" + func_quotefast_eval_result=$func_quote_portable_result + } +fi - case $1 in - *[\\\`\"]*) - _G_arg=`$ECHO "$1" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; - *) - _G_arg=$1 ;; + +# func_quote_arg MODEs ARG +# ------------------------ +# Quote one ARG to be evaled later. MODEs argument may contain zero or more +# specifiers listed below separated by ',' character. This function returns two +# values: +# i) func_quote_arg_result +# double-quoted (when needed), suitable for a subsequent eval +# ii) func_quote_arg_unquoted_result +# has all characters that are still active within double +# quotes backslashified. Available only if 'unquoted' is specified. +# +# Available modes: +# ---------------- +# 'eval' (default) +# - escape shell special characters +# 'expand' +# - the same as 'eval'; but do not quote variable references +# 'pretty' +# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might +# be used later in func_quote to get output like: 'echo "a b"' instead +# of 'echo a\ b'. This is slower than default on some shells. +# 'unquoted' +# - produce also $func_quote_arg_unquoted_result which does not contain +# wrapping double-quotes. +# +# Examples for 'func_quote_arg pretty,unquoted string': +# +# string | *_result | *_unquoted_result +# ------------+-----------------------+------------------- +# " | \" | \" +# a b | "a b" | a b +# "a b" | "\"a b\"" | \"a b\" +# * | "*" | * +# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" +# +# Examples for 'func_quote_arg pretty,unquoted,expand string': +# +# string | *_result | *_unquoted_result +# --------------+---------------------+-------------------- +# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" +func_quote_arg () +{ + _G_quote_expand=false + case ,$1, in + *,expand,*) + _G_quote_expand=: + ;; esac - case $_G_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - _G_arg=\"$_G_arg\" + case ,$1, in + *,pretty,*|*,expand,*|*,unquoted,*) + func_quote_portable $_G_quote_expand "$2" + func_quote_arg_result=$func_quote_portable_result + func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result + ;; + *) + # Faster quote-for-eval for some shells. + func_quotefast_eval "$2" + func_quote_arg_result=$func_quotefast_eval_result ;; esac +} + - func_quote_for_expand_result=$_G_arg +# func_quote MODEs ARGs... +# ------------------------ +# Quote all ARGs to be evaled later and join them into single command. See +# func_quote_arg's description for more info. +func_quote () +{ + $debug_cmd + _G_func_quote_mode=$1 ; shift + func_quote_result= + while test 0 -lt $#; do + func_quote_arg "$_G_func_quote_mode" "$1" + if test -n "$func_quote_result"; then + func_append func_quote_result " $func_quote_arg_result" + else + func_append func_quote_result "$func_quote_arg_result" + fi + shift + done } @@ -1215,8 +1364,8 @@ func_show_eval () _G_cmd=$1 _G_fail_exp=${2-':'} - func_quote_for_expand "$_G_cmd" - eval "func_notquiet $func_quote_for_expand_result" + func_quote_arg pretty,expand "$_G_cmd" + eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" @@ -1241,8 +1390,8 @@ func_show_eval_locale () _G_fail_exp=${2-':'} $opt_quiet || { - func_quote_for_expand "$_G_cmd" - eval "func_echo $func_quote_for_expand_result" + func_quote_arg expand,pretty "$_G_cmd" + eval "func_echo $func_quote_arg_result" } $opt_dry_run || { @@ -1369,30 +1518,26 @@ func_lt_ver () # End: #! /bin/sh -# Set a version string for this script. -scriptversion=2015-10-07.11; # UTC - # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 -# Copyright (C) 2010-2015 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This is free software. There is NO warranty; not even for +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Copyright (C) 2010-2019, 2021 Bootstrap Authors +# +# This file is dual licensed under the terms of the MIT license +# , and GPL version 2 or later +# . You must apply one of +# these licenses when using or redistributing this software or any of +# the files within it. See the URLs above, or the file `LICENSE` +# included in the Bootstrap distribution for the full license texts. -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# Please report bugs or propose patches to: +# -# Please report bugs or propose patches to gary@gnu.org. +# Set a version string for this script. +scriptversion=2019-02-19.15; # UTC ## ------ ## @@ -1415,7 +1560,7 @@ scriptversion=2015-10-07.11; # UTC # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# warranty; '. +# starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the @@ -1427,7 +1572,7 @@ scriptversion=2015-10-07.11; # UTC # to display verbose messages only when your user has specified # '--verbose'. # -# After sourcing this file, you can plug processing for additional +# After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. @@ -1476,8 +1621,8 @@ fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## # This section contains functions for adding, removing, and running hooks -# to the main code. A hook is just a named list of of function, that can -# be run in order later on. +# in the main code. A hook is just a list of function names that can be +# run in order later on. # func_hookable FUNC_NAME # ----------------------- @@ -1510,7 +1655,8 @@ func_add_hook () # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ -# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +# Remove HOOK_FUNC from the list of hook functions to be called by +# FUNC_NAME. func_remove_hook () { $debug_cmd @@ -1519,10 +1665,28 @@ func_remove_hook () } +# func_propagate_result FUNC_NAME_A FUNC_NAME_B +# --------------------------------------------- +# If the *_result variable of FUNC_NAME_A _is set_, assign its value to +# *_result variable of FUNC_NAME_B. +func_propagate_result () +{ + $debug_cmd + + func_propagate_result_result=: + if eval "test \"\${${1}_result+set}\" = set" + then + eval "${2}_result=\$${1}_result" + else + func_propagate_result_result=false + fi +} + + # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. -# It is assumed that the list of hook functions contains nothing more +# It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. @@ -1534,22 +1698,19 @@ func_run_hooks () case " $hookable_fns " in *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook funcions.n" ;; + *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do - if eval $_G_hook '"$@"'; then - # store returned options list back into positional - # parameters for next 'cmd' execution. - eval _G_hook_result=\$${_G_hook}_result - eval set dummy "$_G_hook_result"; shift - _G_rc_run_hooks=: + func_unset "${_G_hook}_result" + eval $_G_hook '${1+"$@"}' + func_propagate_result $_G_hook func_run_hooks + if $func_propagate_result_result; then + eval set dummy "$func_run_hooks_result"; shift fi done - - $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } @@ -1559,14 +1720,16 @@ func_run_hooks () ## --------------- ## # In order to add your own option parsing hooks, you must accept the -# full positional parameter list in your hook function, you may remove/edit -# any options that you action, and then pass back the remaining unprocessed -# options in '_result', escaped suitably for -# 'eval'. In this case you also must return $EXIT_SUCCESS to let the -# hook's caller know that it should pay attention to -# '_result'. Returning $EXIT_FAILURE signalizes that -# arguments are left untouched by the hook and therefore caller will ignore the -# result variable. +# full positional parameter list from your hook function. You may remove +# or edit any options that you action, and then pass back the remaining +# unprocessed options in '_result', escaped +# suitably for 'eval'. +# +# The '_result' variable is automatically unset +# before your hook gets called; for best performance, only set the +# *_result variable when necessary (i.e. don't call the 'func_quote' +# function unnecessarily because it can be an expensive operation on some +# machines). # # Like this: # @@ -1578,11 +1741,8 @@ func_run_hooks () # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' -# # No change in '$@' (ignored completely by this hook). There is -# # no need to do the equivalent (but slower) action: -# # func_quote_for_eval ${1+"$@"} -# # my_options_prep_result=$func_quote_for_eval_result -# false +# # No change in '$@' (ignored completely by this hook). Leave +# # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # @@ -1593,7 +1753,7 @@ func_run_hooks () # # args_changed=false # -# # Note that for efficiency, we parse as many options as we can +# # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do @@ -1610,18 +1770,17 @@ func_run_hooks () # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" -# # is added back to "$@", we could need that later -# # if $args_changed is true. +# # is added back to "$@" in case we need it later, +# # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # +# # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then -# func_quote_for_eval ${1+"$@"} -# my_silent_option_result=$func_quote_for_eval_result +# func_quote eval ${1+"$@"} +# my_silent_option_result=$func_quote_result # fi -# -# $args_changed # } # func_add_hook func_parse_options my_silent_option # @@ -1632,8 +1791,6 @@ func_run_hooks () # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." -# -# false # } # func_add_hook func_validate_options my_option_validation # @@ -1649,13 +1806,8 @@ func_options_finish () { $debug_cmd - _G_func_options_finish_exit=false - if func_run_hooks func_options ${1+"$@"}; then - func_options_finish_result=$func_run_hooks_result - _G_func_options_finish_exit=: - fi - - $_G_func_options_finish_exit + func_run_hooks func_options ${1+"$@"} + func_propagate_result func_run_hooks func_options_finish } @@ -1668,28 +1820,27 @@ func_options () { $debug_cmd - _G_rc_options=false + _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do - if eval func_$my_func '${1+"$@"}'; then - eval _G_res_var='$'"func_${my_func}_result" - eval set dummy "$_G_res_var" ; shift - _G_rc_options=: + func_unset func_${my_func}_result + func_unset func_run_hooks_result + eval func_$my_func '${1+"$@"}' + func_propagate_result func_$my_func func_options + if $func_propagate_result_result; then + eval set dummy "$func_options_result"; shift + _G_options_quoted=: fi done - # Save modified positional parameters for caller. As a top-level - # options-parser function we always need to set the 'func_options_result' - # variable (regardless the $_G_rc_options value). - if $_G_rc_options; then - func_options_result=$_G_res_var - else - func_quote_for_eval ${1+"$@"} - func_options_result=$func_quote_for_eval_result - fi - - $_G_rc_options + $_G_options_quoted || { + # As we (func_options) are top-level options-parser function and + # nobody quoted "$@" for us yet, we need to do it explicitly for + # caller. + func_quote eval ${1+"$@"} + func_options_result=$func_quote_result + } } @@ -1699,8 +1850,7 @@ func_options () # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before -# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). +# modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { @@ -1710,14 +1860,8 @@ func_options_prep () opt_verbose=false opt_warning_types= - _G_rc_options_prep=false - if func_run_hooks func_options_prep ${1+"$@"}; then - _G_rc_options_prep=: - # save modified positional parameters for caller - func_options_prep_result=$func_run_hooks_result - fi - - $_G_rc_options_prep + func_run_hooks func_options_prep ${1+"$@"} + func_propagate_result func_run_hooks func_options_prep } @@ -1729,27 +1873,32 @@ func_parse_options () { $debug_cmd - func_parse_options_result= - - _G_rc_parse_options=false + _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. - if func_run_hooks func_parse_options ${1+"$@"}; then - eval set dummy "$func_run_hooks_result"; shift - _G_rc_parse_options=: + func_run_hooks func_parse_options ${1+"$@"} + func_propagate_result func_run_hooks func_parse_options + if $func_propagate_result_result; then + eval set dummy "$func_parse_options_result"; shift + # Even though we may have changed "$@", we passed the "$@" array + # down into the hook and it quoted it for us (because we are in + # this if-branch). No need to quote it again. + _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break + # We expect that one of the options parsed in this function matches + # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" + func_echo "enabling shell trace mode" >&2 $debug_cmd ;; @@ -1760,7 +1909,7 @@ func_parse_options () --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then - _G_rc_parse_options=: + _G_parse_options_requote=: break fi case " $warning_categories $1" in @@ -1815,7 +1964,7 @@ func_parse_options () shift ;; - --) _G_rc_parse_options=: ; break ;; + --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false @@ -1823,17 +1972,16 @@ func_parse_options () ;; esac - $_G_match_parse_options && _G_rc_parse_options=: + if $_G_match_parse_options; then + _G_parse_options_requote=: + fi done - - if $_G_rc_parse_options; then + if $_G_parse_options_requote; then # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - func_parse_options_result=$func_quote_for_eval_result + func_quote eval ${1+"$@"} + func_parse_options_result=$func_quote_result fi - - $_G_rc_parse_options } @@ -1846,21 +1994,14 @@ func_validate_options () { $debug_cmd - _G_rc_validate_options=false - # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - if func_run_hooks func_validate_options ${1+"$@"}; then - # save modified positional parameters for caller - func_validate_options_result=$func_run_hooks_result - _G_rc_validate_options=: - fi + func_run_hooks func_validate_options ${1+"$@"} + func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE - - $_G_rc_validate_options } @@ -1916,8 +2057,8 @@ func_missing_arg () # func_split_equals STRING # ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables after -# splitting STRING at the '=' sign. +# Set func_split_equals_lhs and func_split_equals_rhs shell variables +# after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ @@ -1932,8 +2073,9 @@ then func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} - test "x$func_split_equals_lhs" = "x$1" \ - && func_split_equals_rhs= + if test "x$func_split_equals_lhs" = "x$1"; then + func_split_equals_rhs= + fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. @@ -1943,7 +2085,7 @@ else func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= - test "x$func_split_equals_lhs" = "x$1" \ + test "x$func_split_equals_lhs=" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals @@ -1969,7 +2111,7 @@ else { $debug_cmd - func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt @@ -2011,31 +2153,44 @@ func_usage_message () # func_version # ------------ # Echo version message to standard output and exit. +# The version message is extracted from the calling file's header +# comments, with leading '# ' stripped: +# 1. First display the progname and version +# 2. Followed by the header comment line matching /^# Written by / +# 3. Then a blank line followed by the first following line matching +# /^# Copyright / +# 4. Immediately followed by any lines between the previous matches, +# except lines preceding the intervening completely blank line. +# For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' - /(C)/!b go - :more - /\./!{ - N - s|\n# | | - b more - } - :go - /^# Written by /,/# warranty; / { - s|^# || - s|^# *$|| - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - p + /^# Written by /!b + s|^# ||; p; n + + :fwd2blnk + /./ { + n + b fwd2blnk } - /^# Written by / { - s|^# || - p + p; n + + :holdwrnt + s|^# || + s|^# *$|| + /^Copyright /!{ + /./H + n + b holdwrnt } - /^warranty; /q' < "$progpath" + + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + G + s|\(\n\)\n*|\1|g + p; q' < "$progpath" exit $? } @@ -2045,12 +2200,12 @@ func_version () # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. -scriptversion='(GNU libtool) 2.4.6' +scriptversion='(GNU libtool) 2.4.7' # func_echo ARG... @@ -2141,7 +2296,7 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-15build2 + version: $progname $scriptversion Debian-2.4.7-7 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -2197,7 +2352,7 @@ fi # a configuration failure hint, and exit. func_fatal_configuration () { - func__fatal_error ${1+"$@"} \ + func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } @@ -2345,6 +2500,8 @@ libtool_options_prep () _G_rc_lt_options_prep=: + _G_rc_lt_options_prep=: + # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) @@ -2375,11 +2532,9 @@ libtool_options_prep () if $_G_rc_lt_options_prep; then # Pass back the list of options. - func_quote_for_eval ${1+"$@"} - libtool_options_prep_result=$func_quote_for_eval_result + func_quote eval ${1+"$@"} + libtool_options_prep_result=$func_quote_result fi - - $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep @@ -2482,11 +2637,9 @@ libtool_parse_options () if $_G_rc_lt_parse_options; then # save modified positional parameters for caller - func_quote_for_eval ${1+"$@"} - libtool_parse_options_result=$func_quote_for_eval_result + func_quote eval ${1+"$@"} + libtool_parse_options_result=$func_quote_result fi - - $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options @@ -2543,8 +2696,8 @@ libtool_validate_options () } # Pass back the unparsed argument list - func_quote_for_eval ${1+"$@"} - libtool_validate_options_result=$func_quote_for_eval_result + func_quote eval ${1+"$@"} + libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options @@ -3510,8 +3663,8 @@ func_mode_compile () esac done - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ + func_quote_arg pretty "$libobj" + test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" @@ -3584,8 +3737,8 @@ compiler." func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result + func_quote_arg pretty "$srcfile" + qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then @@ -3740,7 +3893,8 @@ This mode accepts the following additional options: -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler + -Wc,FLAG + -Xcompiler FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. @@ -3846,6 +4000,8 @@ The following components of LINK-COMMAND are treated specially: -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wa,FLAG + -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) @@ -4188,8 +4344,8 @@ func_mode_install () case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " + func_quote_arg pretty "$nonopt" + install_prog="$func_quote_arg_result " arg=$1 shift else @@ -4199,8 +4355,8 @@ func_mode_install () # The real first argument should be the name of the installation program. # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" + func_quote_arg pretty "$arg" + func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; @@ -4257,12 +4413,12 @@ func_mode_install () esac # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" + func_quote_arg pretty "$arg" + func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then - func_quote_for_eval "$arg2" + func_quote_arg pretty "$arg2" fi - func_append install_shared_prog " $func_quote_for_eval_result" + func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ @@ -4273,8 +4429,8 @@ func_mode_install () if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" + func_quote_arg pretty "$install_override_mode" + func_append install_shared_prog " -m $func_quote_arg_result" fi fi @@ -4570,8 +4726,8 @@ func_mode_install () relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" + func_quote_arg expand,pretty "$relink_command" + eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else @@ -5350,7 +5506,8 @@ else if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + func_quote_arg pretty "$ECHO" + qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. @@ -5360,7 +5517,7 @@ func_fallback_echo () \$1 _LTECHO_EOF' } - ECHO=\"$qECHO\" + ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to @@ -6703,9 +6860,9 @@ func_mode_link () while test "$#" -gt 0; do arg=$1 shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" + func_quote_arg pretty,unquoted "$arg" + qarg=$func_quote_arg_unquoted_result + func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then @@ -6941,6 +7098,13 @@ func_mode_link () prev= continue ;; + xassembler) + func_append compiler_flags " -Xassembler $qarg" + prev= + func_append compile_command " -Xassembler $qarg" + func_append finalize_command " -Xassembler $qarg" + continue + ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" @@ -7111,7 +7275,7 @@ func_mode_link () # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; @@ -7131,7 +7295,7 @@ func_mode_link () esac elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -7161,8 +7325,20 @@ func_mode_link () prev=xcompiler continue ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. + -pthread) + case $host in + *solaris2*) ;; + *) + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + ;; + esac + continue + ;; + -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" @@ -7303,9 +7479,9 @@ func_mode_link () save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" + func_quote_arg pretty "$flag" + func_append arg " $func_quote_arg_result" + func_append compiler_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7319,16 +7495,21 @@ func_mode_link () save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" + func_quote_arg pretty "$flag" + func_append arg " $wl$func_quote_arg_result" + func_append compiler_flags " $wl$func_quote_arg_result" + func_append linker_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; + -Xassembler) + prev=xassembler + continue + ;; + -Xcompiler) prev=xcompiler continue @@ -7346,8 +7527,8 @@ func_mode_link () # -msg_* for osf cc -msg_*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + func_quote_arg pretty "$arg" + arg=$func_quote_arg_result ;; # Flags to be passed through unchanged, with rationale: @@ -7370,12 +7551,13 @@ func_mode_link () # -fuse-ld=* Linker select flags for GCC # -static-* direct GCC to link specific libraries statically # -fcilkplus Cilk Plus language extension features for C/C++ + # -Wa,* Pass flags directly to the assembler -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*) + func_quote_arg pretty "$arg" + arg=$func_quote_arg_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" @@ -7396,15 +7578,15 @@ func_mode_link () continue else # Otherwise treat like 'Some other compiler flag' below - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + func_quote_arg pretty "$arg" + arg=$func_quote_arg_result fi ;; # Some other compiler flag. -* | +*) - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + func_quote_arg pretty "$arg" + arg=$func_quote_arg_result ;; *.$objext) @@ -7524,8 +7706,8 @@ func_mode_link () *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg=$func_quote_for_eval_result + func_quote_arg pretty "$arg" + arg=$func_quote_arg_result ;; esac # arg @@ -8733,7 +8915,7 @@ func_mode_link () test CXX = "$tagname" && { case $host_os in linux*) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi @@ -8906,7 +9088,7 @@ func_mode_link () # case $version_type in # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|osf|windows|none) + darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor @@ -9000,7 +9182,7 @@ func_mode_link () versuffix=.$current.$revision ;; - freebsd-elf) + freebsd-elf | midnightbsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision @@ -9226,7 +9408,7 @@ func_mode_link () *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) @@ -10037,8 +10219,8 @@ EOF for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" + func_quote_arg expand,pretty "$cmd" + eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10131,8 +10313,8 @@ EOF eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" + func_quote_arg expand,pretty "$cmd" + eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10606,12 +10788,13 @@ EOF elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + func_quote_arg pretty "$var_value" + relink_command="$var=$func_quote_arg_result; export $var; $relink_command" fi done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + func_quote eval cd "`pwd`" + func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" + relink_command=$func_quote_arg_unquoted_result fi # Only actually do things if not in dry run mode. @@ -10851,13 +11034,15 @@ EOF elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + func_quote_arg pretty,unquoted "$var_value" + relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" fi done # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + func_quote eval cd "`pwd`" + relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + func_quote_arg pretty,unquoted "$relink_command" + relink_command=$func_quote_arg_unquoted_result if test yes = "$hardcode_automatic"; then relink_command= fi diff --git a/m4/libtool.m4 b/m4/libtool.m4 index c4c0294..e7b6833 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1,6 +1,7 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software +# Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -31,7 +32,7 @@ m4_define([_LT_COPYING], [dnl # along with this program. If not, see . ]) -# serial 58 LT_INIT +# serial 59 LT_INIT # LT_PREREQ(VERSION) @@ -181,6 +182,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl @@ -219,8 +221,8 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). +# All known linkers require a '.a' archive for static linking (except MSVC and +# ICC, which need '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld @@ -777,7 +779,7 @@ _LT_EOF # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ + $SED '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || @@ -1041,8 +1043,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1066,17 +1068,12 @@ _LT_EOF _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[912]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*|11.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + darwin*) + case $MACOSX_DEPLOYMENT_TARGET,$host in + 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + *) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac @@ -1125,12 +1122,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1244,7 +1241,8 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) +[m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot @@ -1261,7 +1259,7 @@ case $with_sysroot in #( fi ;; #( /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` ;; #( no|'') ;; #( @@ -1291,7 +1289,7 @@ ia64-*-hpux*) # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; @@ -1308,7 +1306,7 @@ ia64-*-hpux*) echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; @@ -1320,7 +1318,7 @@ ia64-*-hpux*) ;; esac else - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -1342,7 +1340,7 @@ mips64*-*linux*) echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; @@ -1350,7 +1348,7 @@ mips64*-*linux*) emul="${emul}64" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; @@ -1358,7 +1356,7 @@ mips64*-*linux*) emul="${emul}ltsmip" ;; esac - case `/usr/bin/file conftest.$ac_objext` in + case `$FILECMD conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; @@ -1378,14 +1376,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; @@ -1453,7 +1451,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in + case `$FILECMD conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) @@ -1492,9 +1490,22 @@ need_locks=$enable_libtool_lock m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} -: ${AR_FLAGS=cr} _LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +# Use ARFLAGS variable as AR's operation code to sync the variable naming with +# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have +# higher priority because thats what people were doing historically (setting +# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS +# variable obsoleted/removed. + +test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} +lt_ar_flags=$AR_FLAGS +_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) + +# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override +# by AR_FLAGS because that was never working and AR_FLAGS is about to die. +_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], + [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no @@ -1713,7 +1724,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1756,7 +1767,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi @@ -2206,26 +2217,35 @@ m4_defun([_LT_CMD_STRIPLIB], striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) +if test -z "$STRIP"; then + AC_MSG_RESULT([no]) else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then + if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + case $host_os in + darwin*) + # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) - else + ;; + freebsd*) + if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then + old_striplib="$STRIP --strip-debug" + striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac + ;; + esac + fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) @@ -2548,7 +2568,7 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; @@ -2558,14 +2578,14 @@ m4_if([$1], [],[ ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; - *,cl*) - # Native MSVC + *,cl* | *,icl*) + # Native MSVC or ICC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' @@ -2584,7 +2604,7 @@ m4_if([$1], [],[ done IFS=$lt_save_ifs # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form @@ -2621,7 +2641,7 @@ m4_if([$1], [],[ ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; @@ -2654,7 +2674,7 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then @@ -3465,7 +3485,7 @@ beos*) bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_cmd='$FILECMD -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -3499,14 +3519,14 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | dragonfly*) +freebsd* | dragonfly* | midnightbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -3520,7 +3540,7 @@ haiku*) ;; hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' @@ -3567,7 +3587,7 @@ netbsd* | netbsdelf*-gnu) newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_cmd=$FILECMD lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; @@ -3694,13 +3714,13 @@ else mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 @@ -3726,7 +3746,7 @@ else # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; @@ -3966,7 +3986,7 @@ esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" @@ -3984,20 +4004,20 @@ fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ @@ -4021,7 +4041,7 @@ for ac_symprfx in "" "_"; do if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, + # Also find C++ and __fastcall symbols from MSVC++ or ICC, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ @@ -4039,9 +4059,9 @@ for ac_symprfx in "" "_"; do " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -4329,7 +4349,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) @@ -4412,7 +4432,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4754,7 +4774,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4937,7 +4957,7 @@ m4_if([$1], [CXX], [ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) @@ -4945,7 +4965,7 @@ m4_if([$1], [CXX], [ ;; cygwin* | mingw* | cegcc*) case $cc_basename in - cl*) + cl* | icl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) @@ -5005,15 +5025,15 @@ dnl Note also adjust exclude_expsyms for C++ above. case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time + # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) + # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) with_gnu_ld=yes ;; openbsd* | bitrig*) @@ -5068,7 +5088,7 @@ dnl Note also adjust exclude_expsyms for C++ above. _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -5180,6 +5200,7 @@ _LT_EOF emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) @@ -5194,7 +5215,7 @@ _LT_EOF # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) @@ -5237,7 +5258,7 @@ _LT_EOF _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes @@ -5249,13 +5270,14 @@ _LT_EOF if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) @@ -5265,7 +5287,7 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi @@ -5397,7 +5419,7 @@ _LT_EOF if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -5580,12 +5602,12 @@ _LT_EOF cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. + # Microsoft Visual C++ or Intel C++ Compiler. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in - cl*) - # Native MSVC + cl* | icl*) + # Native MSVC or ICC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes @@ -5626,7 +5648,7 @@ _LT_EOF fi' ;; *) - # Assume MSVC wrapper + # Assume MSVC and ICC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. @@ -5674,7 +5696,7 @@ _LT_EOF ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes @@ -5815,6 +5837,7 @@ _LT_EOF # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; @@ -5886,6 +5909,7 @@ _LT_EOF emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) @@ -6656,8 +6680,8 @@ if test yes != "$_lt_caught_CXX_error"; then cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC + ,cl* | no,cl* | ,icl* | no,icl*) + # Native MSVC or ICC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' @@ -6755,6 +6779,7 @@ if test yes != "$_lt_caught_CXX_error"; then emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) @@ -6785,7 +6810,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; - freebsd* | dragonfly*) + freebsd* | dragonfly* | midnightbsd*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes @@ -6922,7 +6947,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in @@ -7062,13 +7087,13 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) - case `$CC -V 2>&1 | sed 5q` in + case `$CC -V 2>&1 | $SED 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -8214,6 +8239,14 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) +# _LT_DECL_FILECMD +# ---------------- +# Check for a file(cmd) program that can be used to detect file type and magic +m4_defun([_LT_DECL_FILECMD], +[AC_CHECK_TOOL([FILECMD], [file], [:]) +_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) +])# _LD_DECL_FILECMD + # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 index 94b0829..b0b5e9c 100644 --- a/m4/ltoptions.m4 +++ b/m4/ltoptions.m4 @@ -1,7 +1,7 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free +# Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 index 48bc934..902508b 100644 --- a/m4/ltsugar.m4 +++ b/m4/ltsugar.m4 @@ -1,6 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 index fa04b52..b155d0a 100644 --- a/m4/ltversion.m4 +++ b/m4/ltversion.m4 @@ -1,6 +1,7 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, +# Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -9,15 +10,15 @@ # @configure_input@ -# serial 4179 ltversion.m4 +# serial 4245 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) +m4_define([LT_PACKAGE_VERSION], [2.4.7]) +m4_define([LT_PACKAGE_REVISION], [2.4.7]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' +[macro_version='2.4.7' +macro_revision='2.4.7' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 index c6b26f8..0f7a875 100644 --- a/m4/lt~obsolete.m4 +++ b/m4/lt~obsolete.m4 @@ -1,7 +1,7 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free +# Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives diff --git a/man/Makefile.am b/man/Makefile.am index 4382df6..83b1d68 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -26,7 +26,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -48,6 +47,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ @@ -90,7 +93,6 @@ man_XMANS = \ groups.1.xml \ grpck.8.xml \ gshadow.5.xml \ - lastlog.8.xml \ limits.5.xml \ login.1.xml \ login.access.5.xml \ @@ -118,7 +120,12 @@ man_XMANS = \ usermod.8.xml \ vipw.8.xml +if ENABLE_LASTLOG +man_XMANS += lastlog.8.xml +endif + login_defs_v = \ + BCRYPT_MIN_ROUNDS.xml \ CHFN_AUTH.xml \ CHFN_RESTRICT.xml \ CHSH_AUTH.xml \ @@ -185,18 +192,22 @@ login_defs_v = \ SUB_GID_COUNT.xml \ SUB_UID_COUNT.xml \ SYS_GID_MAX.xml \ - SYS_UID_MAX.xml + SYS_UID_MAX.xml \ + YESCRYPT_COST_FACTOR.xml EXTRA_DIST = \ $(man_MANS) \ $(man_XMANS) \ + config.xml \ $(addprefix login.defs.d/,$(login_defs_v)) \ man1/id.1 \ id.1.xml \ man8/sulogin.8 \ sulogin.8.xml \ generate_mans.mak \ - generate_translations.mak + generate_translations.mak \ + its.rules \ + shadow-man.xsl if USE_PAM EXTRA_DIST += $(man_nopam) @@ -206,9 +217,9 @@ if !ENABLE_SUBIDS EXTRA_DIST += $(man_subids) endif -generate_mans.deps: *.xml +generate_mans.deps: $(man_XMANS) echo "# This file is generated" > $@ - awk 'BEGIN{FS="\"";} /^$$/{ f=FILENAME; sub(/.xml/,"",f); print "man" substr(f, length (f)) "/" f ": " $$2 }' $(man_XMANS) >> $@ + awk 'BEGIN{FS="\"";} /^$$/{ f=FILENAME; sub(/.xml/,"",f); print "man" substr(f, length (f)) "/" f ": " $$2 }' $< >> $@ if ENABLE_REGENERATE_MAN diff --git a/man/Makefile.in b/man/Makefile.in index fa8a0ea..5eef178 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -87,11 +87,13 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@WITH_SU_TRUE@am__append_1 = man1/su.1 -@USE_PAM_FALSE@am__append_2 = $(man_nopam) -@ENABLE_SUBIDS_TRUE@am__append_3 = $(man_subids) -@USE_PAM_TRUE@am__append_4 = $(man_nopam) -@ENABLE_SUBIDS_FALSE@am__append_5 = $(man_subids) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@WITH_SU_TRUE@am__append_2 = man1/su.1 +@USE_PAM_FALSE@am__append_3 = $(man_nopam) +@ENABLE_SUBIDS_TRUE@am__append_4 = $(man_subids) +@ENABLE_LASTLOG_TRUE@am__append_5 = lastlog.8.xml +@USE_PAM_TRUE@am__append_6 = $(man_nopam) +@ENABLE_SUBIDS_FALSE@am__append_7 = $(man_subids) subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -238,6 +240,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -256,6 +260,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -271,9 +276,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -289,6 +300,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -297,6 +309,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -319,6 +333,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -398,13 +415,13 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man5/suauth.5 man8/useradd.8 \ - man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ - $(am__append_1) $(am__append_2) $(am__append_3) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man5/suauth.5 man8/useradd.8 man8/userdel.8 \ + man8/usermod.8 man8/vigr.8 man8/vipw.8 $(am__append_1) \ + $(am__append_2) $(am__append_3) $(am__append_4) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ @@ -417,53 +434,19 @@ man_subids = \ man5/subgid.5 \ man5/subuid.5 -man_XMANS = \ - chage.1.xml \ - chfn.1.xml \ - chgpasswd.8.xml \ - chpasswd.8.xml \ - chsh.1.xml \ - expiry.1.xml \ - faillog.5.xml \ - faillog.8.xml \ - getsubids.1.xml \ - gpasswd.1.xml \ - groupadd.8.xml \ - groupdel.8.xml \ - groupmems.8.xml \ - groupmod.8.xml \ - groups.1.xml \ - grpck.8.xml \ - gshadow.5.xml \ - lastlog.8.xml \ - limits.5.xml \ - login.1.xml \ - login.access.5.xml \ - login.defs.5.xml \ - logoutd.8.xml \ - newgidmap.1.xml \ - newgrp.1.xml \ - newuidmap.1.xml \ - newusers.8.xml \ - nologin.8.xml \ - passwd.1.xml \ - passwd.5.xml \ - porttime.5.xml \ - pwck.8.xml \ - pwconv.8.xml \ - shadow.3.xml \ - shadow.5.xml \ - sg.1.xml \ - su.1.xml \ - suauth.5.xml \ - subgid.5.xml \ - subuid.5.xml \ - useradd.8.xml \ - userdel.8.xml \ - usermod.8.xml \ - vipw.8.xml - +man_XMANS = chage.1.xml chfn.1.xml chgpasswd.8.xml chpasswd.8.xml \ + chsh.1.xml expiry.1.xml faillog.5.xml faillog.8.xml \ + getsubids.1.xml gpasswd.1.xml groupadd.8.xml groupdel.8.xml \ + groupmems.8.xml groupmod.8.xml groups.1.xml grpck.8.xml \ + gshadow.5.xml limits.5.xml login.1.xml login.access.5.xml \ + login.defs.5.xml logoutd.8.xml newgidmap.1.xml newgrp.1.xml \ + newuidmap.1.xml newusers.8.xml nologin.8.xml passwd.1.xml \ + passwd.5.xml porttime.5.xml pwck.8.xml pwconv.8.xml \ + shadow.3.xml shadow.5.xml sg.1.xml su.1.xml suauth.5.xml \ + subgid.5.xml subuid.5.xml useradd.8.xml userdel.8.xml \ + usermod.8.xml vipw.8.xml $(am__append_5) login_defs_v = \ + BCRYPT_MIN_ROUNDS.xml \ CHFN_AUTH.xml \ CHFN_RESTRICT.xml \ CHSH_AUTH.xml \ @@ -530,12 +513,16 @@ login_defs_v = \ SUB_GID_COUNT.xml \ SUB_UID_COUNT.xml \ SYS_GID_MAX.xml \ - SYS_UID_MAX.xml + SYS_UID_MAX.xml \ + YESCRYPT_COST_FACTOR.xml -EXTRA_DIST = $(man_MANS) $(man_XMANS) $(addprefix \ +EXTRA_DIST = $(man_MANS) $(man_XMANS) config.xml $(addprefix \ login.defs.d/,$(login_defs_v)) man1/id.1 id.1.xml \ man8/sulogin.8 sulogin.8.xml generate_mans.mak \ - generate_translations.mak $(am__append_4) $(am__append_5) + generate_translations.mak its.rules shadow-man.xsl \ + $(am__append_6) $(am__append_7) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -544,8 +531,15 @@ EXTRA_DIST = $(man_MANS) $(man_XMANS) $(addprefix \ @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog @ENABLE_REGENERATE_MAN_TRUE@CLEANFILES = $(man_MANS) man1/id.1 man8/sulogin.8 all: all-recursive @@ -1047,9 +1041,9 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ .PRECIOUS: Makefile -generate_mans.deps: *.xml +generate_mans.deps: $(man_XMANS) echo "# This file is generated" > $@ - awk 'BEGIN{FS="\"";} /^$$/{ f=FILENAME; sub(/.xml/,"",f); print "man" substr(f, length (f)) "/" f ": " $$2 }' $(man_XMANS) >> $@ + awk 'BEGIN{FS="\"";} /^$$/{ f=FILENAME; sub(/.xml/,"",f); print "man" substr(f, length (f)) "/" f ": " $$2 }' $< >> $@ @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_REGENERATE_MAN_TRUE@include generate_mans.deps @@ -1061,11 +1055,13 @@ generate_mans.deps: *.xml @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/chage.1.xml b/man/chage.1.xml index 055c1ed..060409b 100644 --- a/man/chage.1.xml +++ b/man/chage.1.xml @@ -198,6 +198,21 @@ + + + ,  PREFIX_DIR + + + + Apply changes to configuration files under the root filesystem + found under the directory PREFIX_DIR. + 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. + + + ,  WARN_DAYS diff --git a/man/chgpasswd.8.xml b/man/chgpasswd.8.xml index bd2d117..f4a83c2 100644 --- a/man/chgpasswd.8.xml +++ b/man/chgpasswd.8.xml @@ -6,10 +6,12 @@ --> + ]> @@ -88,12 +90,16 @@ , Use the specified method to encrypt the passwords. - - The available methods are DES, MD5, and NONE. - - - The available methods are DES, MD5, NONE, and SHA256 or SHA512 - if your libc support these methods. + + The available methods are + BCRYPT, + DES, + MD5, + SHA256, + SHA512, + YESCRYPT and + NONE + if your libc supports these methods. @@ -131,29 +137,49 @@ - + , Use the specified number of rounds to encrypt the passwords. - The value 0 means that the system will choose the default - number of rounds for the crypt method (5000). + You can only use this option with crypt method: + + BCRYPT + + SHA256 + SHA512 + + YESCRYPT - - A minimal value of 1000 and a maximal value of 999,999,999 - will be enforced. + + By default, the number of rounds for BCRYPT is defined by the + BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in + /etc/login.defs. - - You can only use this option with the SHA256 or SHA512 - crypt method. + + A minimal value of 4 and a maximal value of 31 + will be enforced for BCRYPT. The default number of rounds is 13. - - By default, the number of rounds is defined by the - SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in + + By default, the number of rounds for SHA256 or SHA512 is defined by + the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs. + + A minimal value of 1000 and a maximal value of 999,999,999 + will be enforced for SHA256 and SHA512. The default number of rounds + is 5000. + + + By default, the number of rounds for YESCRYPT is defined by the + YESCRYPT_COST_FACTOR in /etc/login.defs. + + + A minimal value of 1 and a maximal value of 11 + will be enforced for YESCRYPT. The default number of rounds is 5. + @@ -179,10 +205,12 @@ tool: + &BCRYPT_MIN_ROUNDS; &ENCRYPT_METHOD; &MAX_MEMBERS_PER_GROUP; &MD5_CRYPT_ENAB; &SHA_CRYPT_MIN_ROUNDS; + &YESCRYPT_COST_FACTOR; diff --git a/man/chpasswd.8.xml b/man/chpasswd.8.xml index 6353419..cffd9df 100644 --- a/man/chpasswd.8.xml +++ b/man/chpasswd.8.xml @@ -6,9 +6,11 @@ --> + ]> @@ -115,12 +117,16 @@ Use the specified method to encrypt the passwords. - - The available methods are DES, MD5, and NONE. - - - The available methods are DES, MD5, NONE, and SHA256 or SHA512 - if your libc support these methods. + + The available methods are + BCRYPT, + DES, + MD5, + SHA256, + SHA512, + YESCRYPT and + NONE + if your libc supports these methods. By default, PAM is used to encrypt the passwords. @@ -173,7 +179,22 @@ - + + + ,  PREFIX_DIR + + + + Apply changes to configuration files under the root filesystem + found under the directory PREFIX_DIR. + 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. + + + + ,  ROUNDS @@ -182,23 +203,42 @@ Use the specified number of rounds to encrypt the passwords. - The value 0 means that the system will choose the default - number of rounds for the crypt method (5000). + You can only use this option with crypt method: + + BCRYPT + + SHA256 + SHA512 + + YESCRYPT - - A minimal value of 1000 and a maximal value of 999,999,999 - will be enforced. + + By default, the number of rounds for BCRYPT is defined by the + BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in + /etc/login.defs. - - You can only use this option with the SHA256 or SHA512 - crypt method. + + A minimal value of 4 and a maximal value of 31 + will be enforced for BCRYPT. The default number of rounds is 13. - - By default, the number of rounds is defined by the - and - variables in + + By default, the number of rounds for SHA256 or SHA512 is defined by + the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs. + + A minimal value of 1000 and a maximal value of 999,999,999 + will be enforced for SHA256 and SHA512. The default number of rounds + is 5000. + + + By default, the number of rounds for YESCRYPT is defined by the + YESCRYPT_COST_FACTOR in /etc/login.defs. + + + A minimal value of 1 and a maximal value of 11 + will be enforced for YESCRYPT. The default number of rounds is 5. + @@ -224,7 +264,9 @@ &MD5_CRYPT_ENAB; + &BCRYPT_MIN_ROUNDS; &SHA_CRYPT_MIN_ROUNDS; + &YESCRYPT_COST_FACTOR; diff --git a/man/chsh.1.xml b/man/chsh.1.xml index 373aa92..db2d0ce 100644 --- a/man/chsh.1.xml +++ b/man/chsh.1.xml @@ -115,7 +115,7 @@ NOTE - + The only restriction placed on the login shell is that the command name must be listed in /etc/shells, unless the invoker is the superuser, and then any value may be added. An @@ -125,6 +125,25 @@ changing to a restricted shell would prevent the user from ever changing her login shell back to its original value. + + The only restriction placed on the login shell is that the command + name must be listed in /etc/shells. + If this file does not exist, the definitions are taken from the files + %vendordir%/shells, + %vendordir%/shells.d/* and + /etc/shells.d/* in that order. + If /etc/shells.d/@filename@ exists, then + %vendordir%/shells.d/@filename@ will not be used. + If the invoker is the superuser any value may be added regardless what is + defined in the configuration files. + An account with a restricted login shell may not change her login shell. + + + For this reason, placing /bin/rsh in + /etc/shells is discouraged since accidentally + changing to a restricted shell would prevent the user from ever + changing her login shell back to its original value. + @@ -151,9 +170,31 @@ /etc/shells - + List of valid login shells. + + User defined list of valid login shells. + + + + %vendordir%/shells + + Default configuration file if + /etc/shells does not exist. + + + + %vendordir%/shells.d + + Directory for additional vendor specific configuration files. + + + + /etc/shells.d + + Directory for additional user defined configuration files. + /etc/login.defs diff --git a/man/config.xml b/man/config.xml new file mode 100644 index 0000000..f342036 --- /dev/null +++ b/man/config.xml @@ -0,0 +1,2 @@ + + diff --git a/man/cs/Makefile.am b/man/cs/Makefile.am index 3b2be0c..84407d7 100644 --- a/man/cs/Makefile.am +++ b/man/cs/Makefile.am @@ -12,13 +12,16 @@ man_MANS = \ man1/groups.1 \ man8/grpck.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man8/nologin.8 \ man5/passwd.5 \ man5/shadow.5 \ man1/su.1 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + EXTRA_DIST = $(man_MANS) \ man1/id.1 \ man8/groupmems.8 \ diff --git a/man/cs/Makefile.in b/man/cs/Makefile.in index 516c58d..a04a706 100644 --- a/man/cs/Makefile.in +++ b/man/cs/Makefile.in @@ -87,6 +87,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 subdir = man/cs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -172,6 +173,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -190,6 +193,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,9 +209,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -223,6 +233,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -231,6 +242,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -253,6 +266,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -324,24 +340,10 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -man_MANS = \ - man1/expiry.1 \ - man5/faillog.5 \ - man8/faillog.8 \ - man1/gpasswd.1 \ - man8/groupadd.8 \ - man8/groupdel.8 \ - man8/groupmod.8 \ - man1/groups.1 \ - man8/grpck.8 \ - man5/gshadow.5 \ - man8/lastlog.8 \ - man8/nologin.8 \ - man5/passwd.5 \ - man5/shadow.5 \ - man1/su.1 \ - man8/vipw.8 - +man_MANS = man1/expiry.1 man5/faillog.5 man8/faillog.8 man1/gpasswd.1 \ + man8/groupadd.8 man8/groupdel.8 man8/groupmod.8 man1/groups.1 \ + man8/grpck.8 man5/gshadow.5 man8/nologin.8 man5/passwd.5 \ + man5/shadow.5 man1/su.1 man8/vipw.8 $(am__append_1) EXTRA_DIST = $(man_MANS) \ man1/id.1 \ man8/groupmems.8 \ diff --git a/man/da/Makefile.in b/man/da/Makefile.in index 3ed052b..c192e7a 100644 --- a/man/da/Makefile.in +++ b/man/da/Makefile.in @@ -175,6 +175,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -193,6 +195,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -208,9 +211,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -226,6 +235,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -234,6 +244,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -256,6 +268,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -335,6 +350,8 @@ man_MANS = man1/chfn.1 man8/groupdel.8 man1/groups.1 man5/gshadow.5 \ man_nopam = EXTRA_DIST = $(man_MANS) man1/id.1 $(am__append_2) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -343,8 +360,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -684,10 +708,10 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -695,7 +719,7 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -706,11 +730,13 @@ uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/da/man1/chfn.1 b/man/da/man1/chfn.1 index d8c3a2d..a999af8 100644 --- a/man/da/man1/chfn.1 +++ b/man/da/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "CHFN" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "CHFN" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chfn \- change real user name and information .SH "SYNOPSIS" .HP \w'\fBchfn\fR\ 'u -\fBchfn\fR [\fItilvalg\fR] [\fILOGIND\fR] +\fBchfn\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "BESKRIVELSE" .PP The diff --git a/man/da/man1/groups.1 b/man/da/man1/groups.1 index 76e3984..81f2be2 100644 --- a/man/da/man1/groups.1 +++ b/man/da/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "GROUPS" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "GROUPS" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groups \- vis aktuelle gruppenavne .SH "SYNOPSIS" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIbruger\fR] +\fBgroups\fR [\fIuser\fR] .SH "BESKRIVELSE" .PP The diff --git a/man/da/man1/id.1 b/man/da/man1/id.1 index 1cf00d5..6854332 100644 --- a/man/da/man1/id.1 +++ b/man/da/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "ID" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "ID" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/newgrp.1 b/man/da/man1/newgrp.1 index d56f969..fed91de 100644 --- a/man/da/man1/newgrp.1 +++ b/man/da/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "NEWGRP" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "NEWGRP" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/sg.1 b/man/da/man1/sg.1 index e36d514..cc288b5 100644 --- a/man/da/man1/sg.1 +++ b/man/da/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "SG" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "SG" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man5/gshadow.5 b/man/da/man5/gshadow.5 index b885e1c..56a4e55 100644 --- a/man/da/man5/gshadow.5 +++ b/man/da/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "GSHADOW" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,7 +38,7 @@ This file must not be readable by regular users if password security is to be ma .PP Each line of this file contains the following colon\-separated fields: .PP -\fBgruppenavn\fR +\fBgroup name\fR .RS 4 Det skal v\(aere et gyldigt gruppenavn, som findes p\(oa systemet\&. .RE @@ -63,7 +63,7 @@ This password supersedes any password specified in /etc/group\&. .RE .PP -\fBadministratorer\fR +\fBadministrators\fR .RS 4 Det skal v\(aere en kommaadskilt liste af brugernavne\&. .sp @@ -72,7 +72,7 @@ Administratorer kan \(aendre adgangskoden eller medlemmerne af gruppen\&. Administratorer har ogs\(oa de samme rettigheder som medlemmerne (se nedenfor)\&. .RE .PP -\fBmedlemmer\fR +\fBmembers\fR .RS 4 Det skal v\(aere en kommaadskilt liste af brugernavne\&. .sp diff --git a/man/da/man8/groupdel.8 b/man/da/man8/groupdel.8 index 87a94b8..e370ffe 100644 --- a/man/da/man8/groupdel.8 +++ b/man/da/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "GROUPDEL" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin" +.TH "GROUPDEL" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- slet en gruppe .SH "SYNOPSIS" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fItilvalg\fR] \fIGRUPPE\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "BESKRIVELSE" .PP The diff --git a/man/da/man8/logoutd.8 b/man/da/man8/logoutd.8 index 8379e28..88b506f 100644 --- a/man/da/man8/logoutd.8 +++ b/man/da/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "LOGOUTD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin" +.TH "LOGOUTD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/nologin.8 b/man/da/man8/nologin.8 index c89d06e..c22b77c 100644 --- a/man/da/man8/nologin.8 +++ b/man/da/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "NOLOGIN" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin" +.TH "NOLOGIN" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/vipw.8 b/man/da/man8/vipw.8 index 43ea985..a586d71 100644 --- a/man/da/man8/vipw.8 +++ b/man/da/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Danish .\" -.TH "VIPW" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin" +.TH "VIPW" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,16 @@ vipw, vigr \- rediger adgangskoden, gruppe, shadow\-adgangskode\- eller shadow\-gruppe\-fil .SH "SYNOPSIS" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fItilvalg\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fItilvalg\fR] +\fBvigr\fR [\fIoptions\fR] .SH "BESKRIVELSE" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the @@ -95,12 +95,12 @@ Rediger shadow\- eller gshadow\-database\&. .RE .SH "MILJ\(/O" .PP -\fBVISUEL\fR +\fBVISUAL\fR .RS 4 Redigeringsprogram der skal bruges\&. .RE .PP -\fBREDIGERINGSPROGRAM\fR +\fBEDITOR\fR .RS 4 Editor to be used if \fBVISUAL\fR diff --git a/man/de/Makefile.am b/man/de/Makefile.am index 3cd302e..671432d 100644 --- a/man/de/Makefile.am +++ b/man/de/Makefile.am @@ -21,7 +21,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -44,6 +43,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ diff --git a/man/de/Makefile.in b/man/de/Makefile.in index 20899d3..3c64eb6 100644 --- a/man/de/Makefile.in +++ b/man/de/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/de ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -332,20 +348,22 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man1/su.1 man5/suauth.5 \ - man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man1/su.1 man5/suauth.5 man8/useradd.8 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -354,8 +372,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -739,10 +764,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -750,7 +775,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -761,11 +786,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/de/man1/chage.1 b/man/de/man1/chage.1 index eae65f1..9d88d46 100644 --- a/man/de/man1/chage.1 +++ b/man/de/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "CHAGE" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "CHAGE" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -chage \- \(:andert die Information zum Passwortverfall +chage \- \(:andert das Ablaufdatum des Passworts und damit verkn\(:upfte Fristen .SH "\(:UBERSICHT" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fIOptionen\fR] \fIANMELDENAME\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "BESCHREIBUNG" .PP The @@ -54,7 +54,7 @@ the user is forced to change his password on the next log on\&. .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 -Setzt das Datum oder die Anzahl der Tage seit dem 1\&. Januar 1970, ab dem auf das Benutzerkonto nicht mehr zugegriffen werden kann\&. Das Datum kann auch im Format JJJJ\-MM\-TT (oder in dem Format, das in Ihrer Region verbreitet ist) angegeben werden\&. Ein Benutzer, dessen Konto gesperrt ist, muss sich mit dem Systemadministrator in Verbindung setzen, ehe er sich wieder am System anmelden kann\&. +setzt den Tag angegeben als Anzahl von Tagen nach dem 1\&. Januar 1970, ab dem das Benutzerkonto nicht mehr zug\(:anglich sein soll\&. Das Datum kann auch im Format JJJJ\-MM\-TT (oder in dem Format, das in Ihrer Region verbreitet ist) angegeben werden\&. Ein Benutzer, dessen Konto stillgelegt ist, muss sich mit dem Systemadministrator in Verbindung setzen, ehe er das System wieder verwenden kann\&. .sp For example the following can be used to set an account to expire in 180 days: .sp @@ -78,12 +78,12 @@ will remove an account expiration date\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-i\fR, \fB\-\-iso8601\fR .RS 4 -When printing dates, use YYYY\-MM\-DD format\&. +Bei der Datumsausgabe das ISO\-Format JJJJ\-MM\-TT verwenden .RE .PP \fB\-I\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR @@ -101,7 +101,7 @@ will remove an account\*(Aqs inactivity\&. .PP \fB\-l\fR, \fB\-\-list\fR .RS 4 -zeigt Informationen zur Kontoalterung an +zeigt den Zugang zum Benutzerkonto betreffende Fristen an\&. .RE .PP \fB\-m\fR, \fB\-\-mindays\fR\ \&\fIMIN_DAYS\fR @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The @@ -181,7 +187,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .SH "R\(:UCKGABEWERTE" .PP diff --git a/man/de/man1/chfn.1 b/man/de/man1/chfn.1 index a08815f..458e2e6 100644 --- a/man/de/man1/chfn.1 +++ b/man/de/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "CHFN" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "CHFN" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -chfn \- \(:andert den vollst\(:andigen Namen eines Benutzers und sonstige Informationen +chfn \- \(:andert den vollst\(:andigen Namen und sonstige Informationen zum Benutzer .SH "\(:UBERSICHT" .HP \w'\fBchfn\fR\ 'u -\fBchfn\fR [\fIOptionen\fR] [\fIANMELDENAME\fR] +\fBchfn\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "BESCHREIBUNG" .PP The @@ -56,22 +56,22 @@ command are: .PP \fB\-f\fR, \fB\-\-full\-name\fR\ \&\fIFULL_NAME\fR .RS 4 -ver\(:andert den vollst\(:andigen Namen des Benutzers +\(:andert den vollst\(:andigen Namen des Benutzers\&. .RE .PP \fB\-h\fR, \fB\-\-home\-phone\fR\ \&\fIHOME_PHONE\fR .RS 4 -\(:andert die private Telefonnummer des Benutzers +\(:andert die private Telefonnummer des Benutzers\&. .RE .PP \fB\-o\fR, \fB\-\-other\fR\ \&\fIOTHER\fR .RS 4 -Ver\(:andert die sonstigen Informationen \(:uber den Benutzer in der GECOS\-Zeile\&. In diesem Feld werden Kontoinformationen anderer Anwendungen gespeichert\&. Es kann nur vom Superuser ver\(:andert werden\&. +\(:andert sonstige GECOS\-Informationen \(:uber den Benutzer\&. In diesem Feld werden Kontoinformationen anderer Anwendungen gespeichert\&. Es kann nur vom Systemadministrator ver\(:andert werden\&. .RE .PP \fB\-r\fR, \fB\-\-room\fR\ \&\fIROOM_NUMBER\fR .RS 4 -\(:andert die Zimmernummer des Benutzers +\(:andert die Raumnummer des Benutzers\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -85,12 +85,12 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-u\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-w\fR, \fB\-\-work\-phone\fR\ \&\fIWORK_PHONE\fR .RS 4 -ver\(:andert die berufliche Telefonnummer des Benutzers +\(:andert die berufliche Telefonnummer des Benutzers\&. .RE .PP If none of the options are selected, @@ -109,7 +109,7 @@ change the behavior of this tool: .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .PP /etc/passwd diff --git a/man/de/man1/chsh.1 b/man/de/man1/chsh.1 index 666adc2..e7e7352 100644 --- a/man/de/man1/chsh.1 +++ b/man/de/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "CHSH" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "CHSH" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chsh \- \(:andert die Anmelde\-Shell .SH "\(:UBERSICHT" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fIOptionen\fR] [\fIANMELDENAME\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "BESCHREIBUNG" .PP The @@ -45,7 +45,7 @@ command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -59,7 +59,11 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -The name of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. +\(:andert die Anmelde\-Shell des Benutzers\&. Mit dem Leerstring als +\fISHELL\fR +wird dieser in die Datei +/etc/passwd +\(:ubernommen und dem Benutzer nach der Anmeldung die Standard\-Shell des Systems zur Verf\(:ugung gestellt\&. .RE .PP If the @@ -77,6 +81,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -91,12 +101,12 @@ Informationen zu den Benutzerkonten .PP /etc/shells .RS 4 -Liste der m\(:oglichen Anmelde\-Shells +Liste g\(:ultiger Anmelde\-Shells .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man1/expiry.1 b/man/de/man1/expiry.1 index a67539e..b51c836 100644 --- a/man/de/man1/expiry.1 +++ b/man/de/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "EXPIRY" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "EXPIRY" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -expiry \- \(:uberpr\(:uft die Regeln f\(:ur den Verfall des Passworts und setzt diese um +expiry \- \(:uberpr\(:uft das Passwort auf G\(:ultigkeit .SH "\(:UBERSICHT" .HP \w'\fBexpiry\fR\ 'u -\fBexpiry\fR \fIOption\fR +\fBexpiry\fR \fIoption\fR .SH "BESCHREIBUNG" .PP The @@ -45,7 +45,7 @@ command are: .PP \fB\-c\fR, \fB\-\-check\fR .RS 4 -\(:uberpr\(:uft den Verfall des Passworts des aktuellen Benutzers +\(:uberpr\(:uft, ob das Passwort des aktuellen Benutzers abgelaufen ist\&. .RE .PP \fB\-f\fR, \fB\-\-force\fR @@ -55,7 +55,7 @@ erzwingt den Wechsel des Passworts des aktuellen Benutzers, falls dieses abgelau .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .SH "DATEIEN" .PP @@ -66,7 +66,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man1/gpasswd.1 b/man/de/man1/gpasswd.1 index ba0a3a6..68f2625 100644 --- a/man/de/man1/gpasswd.1 +++ b/man/de/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GPASSWD" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "GPASSWD" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ gpasswd \- administer /etc/group and /etc/gshadow .SH "\(:UBERSICHT" .HP \w'\fBgpasswd\fR\ 'u -\fBgpasswd\fR [\fIOption\fR] \fIGruppe\fR +\fBgpasswd\fR [\fIoption\fR] \fIgroup\fR .SH "BESCHREIBUNG" .PP The @@ -58,7 +58,7 @@ If a password is set the members can still use without a password, and non\-members must supply the password\&. .SS "Hinweise zu Gruppenpassw\(:ortern" .PP -Gruppenpassw\(:orter beinhalten ein Sicherheitsrisiko, da mehrere Personen das Passwort kennen\&. Dennoch k\(:onnen sie sinnvoll sein, um die Zusammenarbeit zwischen Benutzern zu erleichtern\&. +Gruppenpassw\(:orter bergen ein Sicherheitsrisiko, da mehrere Personen das Passwort kennen\&. Dennoch sind Gruppen ein n\(:utzliches Mittel f\(:ur die Zusammenarbeit zwischen Benutzern\&. .SH "OPTIONEN" .PP Except for the @@ -89,7 +89,7 @@ from the named .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-Q\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -121,12 +121,12 @@ to join the named .PP \fB\-A\fR, \fB\-\-administrators\fR\ \&\fIuser\fR,\&.\&.\&. .RS 4 -Liste der Gruppenverwalter bestimmen +definiert eine Liste von Benutzern als Gruppenverwalter .RE .PP \fB\-M\fR, \fB\-\-members\fR\ \&\fIuser\fR,\&.\&.\&. .RS 4 -Liste der Mitglieder der Gruppe bestimmen +definiert eine Liste von Benutzern als Gruppenmitglieder .RE .SH "WARNUNGEN" .PP @@ -148,7 +148,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man1/groups.1 b/man/de/man1/groups.1 index f732cd1..d06b82e 100644 --- a/man/de/man1/groups.1 +++ b/man/de/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GROUPS" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "GROUPS" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -groups \- zeigt die aktuell verwendeten Gruppennamen an +groups \- gibt die aktuellen Gruppenzugeh\(:origkeiten des Benutzers aus .SH "\(:UBERSICHT" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIBenutzer\fR] +\fBgroups\fR [\fIuser\fR] .SH "BESCHREIBUNG" .PP The diff --git a/man/de/man1/id.1 b/man/de/man1/id.1 index 70b2c55..26b40b1 100644 --- a/man/de/man1/id.1 +++ b/man/de/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "ID" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "ID" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/login.1 b/man/de/man1/login.1 index 9c9d062..2262e3e 100644 --- a/man/de/man1/login.1 +++ b/man/de/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "LOGIN" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "LOGIN" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,9 +31,9 @@ login \- startet eine Sitzung auf dem System .SH "\(:UBERSICHT" .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIBenutzername\fR] [\fIENV=VAR\fR...] +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIusername\fR] [\fIENV=VAR\fR...] .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIBenutzername\fR +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIusername\fR .HP \w'\fBlogin\fR\ 'u \fBlogin\fR [\-p] \-r\ \fIhost\fR .SH "BESCHREIBUNG" @@ -80,9 +80,9 @@ On some installations, the environmental variable will be initialized to the terminal type on your tty line, as specified in /etc/ttytype\&. .PP -Ein Startskript f\(:ur Ihren Befehlsinterpreter kann auch ausgef\(:uhrt werden\&. Sehen Sie bitte in den entsprechenden Handbuchseiten f\(:ur weitere Informationen dar\(:uber nach\&. +Ein Startskript f\(:ur Ihren Befehlsinterpreter kann auch ausgef\(:uhrt werden\&. F\(:ur weitere Informationen dar\(:uber sehen Sie bitte in den entsprechenden Handbuchseiten nach\&. .PP -Eine Subsystem\-Anmeldung wird durch einen \(Fc*\(Fo als erstes Zeichen der Anmelde\-Shell gekennzeichnet\&. Das angegebene Home\-Verzeichnis wird als Wurzel f\(:ur das Dateisystem verwendet, auf welchem der Benutzer tats\(:achlich angemeldet ist\&. +Eine Subsystem\-Anmeldung wird durch einen \(Fc*\(Fo als erstes Zeichen der Anmelde\-Shell gekennzeichnet\&. Das angegebene pers\(:onliche Verzeichnis wird zur Wurzel des Verzeichnisbaumes, in dem der Benutzer tats\(:achlich angemeldet ist\&. .PP The \fBlogin\fR @@ -98,7 +98,7 @@ from the shell prompt without .PP \fB\-f\fR .RS 4 -Keine Authentifizierung durchf\(:uhren, Benutzer ist bereits angemeldet\&. +Keine Authentifizierung durchf\(:uhren, der Benutzer ist vorauthentifiziert\&. .sp Note: In that case, \fIusername\fR @@ -107,17 +107,19 @@ is mandatory\&. .PP \fB\-h\fR .RS 4 -Name des entfernt stehenden Rechners f\(:ur die Anmeldung +Name des fernen Rechners f\(:ur diese Anmeldung\&. .RE .PP \fB\-p\fR .RS 4 -beh\(:alt die Umgebungseinstellungen bei +beh\(:alt die Umgebung bei\&. .RE .PP \fB\-r\fR .RS 4 -f\(:uhrt das Autologin\-Protokoll f\(:ur rlogin aus +f\(:uhrt das Autologin\-Protokoll f\(:ur +\fBrlogin\fR +aus\&. .RE .PP The @@ -134,7 +136,7 @@ This version of \fBlogin\fR has many compilation options, only some of which may be in use at any particular site\&. .PP -Der Ort der Konfigurationsdateien kann je nach Konfiguration des Systems unterschiedlich sein\&. +Der Ort von Dateien ist von der Konfiguration des Systems abh\(:angig\&. .PP The \fBlogin\fR @@ -158,12 +160,12 @@ change the behavior of this tool: .PP /var/run/utmp .RS 4 -Liste der aktuellen angemeldeten Sitzungen +Liste aktueller Anmeldungen .RE .PP /var/log/wtmp .RS 4 -Liste der vorangegangenen angemeldeten Sitzungen +Liste vorangegangener Anmeldungen .RE .PP /etc/passwd @@ -173,7 +175,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/motd @@ -183,7 +185,7 @@ Datei mit der Systemmeldung des Tages .PP /etc/nologin .RS 4 -verhindert, dass sich Benutzer au\(sser Root anmelden +existiert diese Datei, kann sich mit Ausnahme des Systemadministrators niemand anmelden\&. .RE .PP /etc/ttytype @@ -193,12 +195,12 @@ Liste der Terminaltypen .PP $HOME/\&.hushlogin .RS 4 -unterdr\(:uckt die Ausgabe von Systemnachrichten +unterdr\(:uckt die Ausgabe von Systemnachrichten nach erfolgreicher Anmeldung .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man1/newgrp.1 b/man/de/man1/newgrp.1 index 1945c41..cc4bcff 100644 --- a/man/de/man1/newgrp.1 +++ b/man/de/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "NEWGRP" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "NEWGRP" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -newgrp \- als neue Gruppe anmelden +newgrp \- sich mit einer anderen Gruppenzugeh\(:origkeit anmelden .SH "\(:UBERSICHT" .HP \w'\fBnewgrp\fR\ 'u -\fBnewgrp\fR [\-] [\fIGruppe\fR] +\fBnewgrp\fR [\-] [\fIgroup\fR] .SH "BESCHREIBUNG" .PP The @@ -69,7 +69,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/group @@ -79,7 +79,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man1/passwd.1 b/man/de/man1/passwd.1 index 7d41905..0ee0d4f 100644 --- a/man/de/man1/passwd.1 +++ b/man/de/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "PASSWD" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "PASSWD" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ passwd \- \(:andert das Passwort eines Benutzers .SH "\(:UBERSICHT" .HP \w'\fBpasswd\fR\ 'u -\fBpasswd\fR [\fIOptionen\fR] [\fIANMELDENAME\fR] +\fBpasswd\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "BESCHREIBUNG" .PP The @@ -41,7 +41,7 @@ command changes passwords for user accounts\&. A normal user may only change the also changes the account or associated password validity period\&. .SS "Ver\(:andern des Passworts" .PP -Der Benutzer wird zuerst nach seinem alten Passwort gefragt, falls eines vorhanden ist\&. Dieses Passwort wird dann verschl\(:usselt und mit dem gespeicherten Passwort verglichen\&. Der Benutzer hat nur eine Gelegenheit, das richtige Passwort einzugeben\&. Der Superuser kann diesen Schritt \(:uberspringen, um so vergessene Passw\(:orter zu \(:andern\&. +Der Benutzer wird zuerst nach seinem alten Passwort gefragt, falls eines vorhanden ist\&. Dieses Passwort wird dann verschl\(:usselt und mit dem gespeicherten Passwort verglichen\&. Der Benutzer hat nur eine Gelegenheit, das richtige Passwort einzugeben\&. Der Systemadministrator kann diesen Schritt \(:uberspringen, um so vergessene Passw\(:orter zu \(:andern\&. .PP After the password has been entered, password aging information is checked to see if the user is permitted to change the password at this time\&. If not, \fBpasswd\fR @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP Der Benutzer wird dann aufgefordert, zweimal ein neues Passwort einzugeben\&. Beide Eingaben werden miteinander verglichen\&. Sie m\(:ussen \(:ubereinstimmen, damit das Passwort ge\(:andert wird\&. .PP -Anschlie\(ssend wird das Passwort auf seine Komplexit\(:at \(:uberpr\(:uft\&. Eine allgemeine Richtlinie besagt, dass Passw\(:orter aus sechs bis acht Zeichen bestehen sollten und ein oder mehrere Zeichen aus folgenden Mengen enthalten sollten: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -Kleinbuchstaben -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -Ziffern 0 bis 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -Satzzeichen -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Hinweise zu Benutzerpassw\(:ortern" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -94,9 +59,11 @@ The security of a password depends upon the strength of the encryption algorithm System encryption method is based on the NBS DES algorithm\&. More recent methods are now recommended (see \fBENCRYPT_METHOD\fR)\&. The size of the key space depends upon the randomness of the password which is selected\&. .PP -Gefahren f\(:ur die Sicherheit von Passw\(:ortern kommen gew\(:ohnlich von sorgloser Wahl oder Handhabung des Passworts\&. Daher sollten Sie kein Passwort w\(:ahlen, das in einem W\(:orterbuch auftaucht oder das aufgeschrieben werden muss\&. Das Passwort sollte somit kein echter Name, Ihr Autokennzeichen, Geburtstag oder Ihre Adresse sein\&. All das kann dazu verwendet werden, das Passwort zu erraten, und stellt daher eine Gefahr f\(:ur die Sicherheit Ihres Systems dar\&. +Die unbedachte Auswahl von oder der sorglose Umgang mit ihnen macht Passw\(:orter unsicher\&. Daher sollten Sie kein Passwort w\(:ahlen, das in einem W\(:orterbuch auftaucht oder das aufgeschrieben werden muss\&. Das Passwort sollte zudem weder ein echter Name, noch Ihr Autokennzeichen, Geburtstag oder Ihre Adresse sein\&. All dies kann versuchsweise f\(:ur Angriffe auf das System benutzt werden\&. +.PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. .PP -You can find advice on how to choose a strong password on http://en\&.wikipedia\&.org/wiki/Password_strength +Ratschl\(:age, wie Sie ein sicheres Passwort w\(:ahlen, finden Sie unter http://de\&.wikipedia\&.org/wiki/Passwort#Wahl_von_sicheren_Passw%C3%B6rter \&. .SH "OPTIONEN" .PP The options which apply to the @@ -112,17 +79,17 @@ and causes show status for all users\&. .PP \fB\-d\fR, \fB\-\-delete\fR .RS 4 -L\(:oscht das Passwort eines Benutzers (macht es leer)\&. Dies ist ein schneller Weg, um das Passwort eines Kontos zu deaktivieren\&. Dem Konto ist dann kein Passwort zugeordnet\&. +l\(:oscht das Passwort eines Benutzers (macht es leer)\&. Dies ist ein schneller Weg, um das Passwort eines Kontos zu deaktivieren\&. Dem Konto ist dann kein Passwort zugeordnet\&. .RE .PP \fB\-e\fR, \fB\-\-expire\fR .RS 4 -L\(:asst das Passwort eines Kontos sofort verfallen\&. Im Ergebnis kann damit erreicht werden, dass ein Benutzer beim n\(:achsten Login das Passwort \(:andern muss\&. +macht dem Passwort sofort ung\(:ultig\&. Damit ist der Benutzer gezwungen, das Passwort bei der n\(:achsten Anmeldung zu \(:andern\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-i\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR @@ -134,12 +101,12 @@ days, the user may no longer sign on to the account\&. .PP \fB\-k\fR, \fB\-\-keep\-tokens\fR .RS 4 -Zeigt an, dass nur abgelaufene Passw\(:orter ge\(:andert werden sollen\&. Der Benutzer m\(:ochte seine g\(:ultigen Passw\(:orter unver\(:andert lassen\&. +gibt an, dass nur abgelaufene Passw\(:orter ge\(:andert werden sollen und der Benutzer ein g\(:ultiges behalten will\&. .RE .PP \fB\-l\fR, \fB\-\-lock\fR .RS 4 -Sperrt das Passwort des bezeichneten Kontos\&. Die Option schaltet ein Passwort ab, indem es ihm einen Wert zuweist, der mit keinem m\(:oglichen verschl\(:usselten Wert \(:ubereinstimmen kann\&. Dies geschieht, indem ein \(Fc!\(Fo dem Passwort vorangestellt wird\&. +sperrt das Passwort des bezeichneten Kontos\&. Die Option schaltet ein Passwort ab, indem es ihm einen Wert zuweist, der mit keinem m\(:oglichen verschl\(:usselten Wert \(:ubereinstimmen kann\&. Dies geschieht, indem ein \(Fc!\(Fo dem Passwort vorangestellt wird\&. .sp Note that this does not disable the account\&. The user may still be able to login using another authentication token (e\&.g\&. an SSH key)\&. To disable the account, administrators should use \fBusermod \-\-expiredate 1\fR @@ -175,9 +142,15 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 -Zeigt Informationen \(:uber den Kontostatus an\&. Die Statusinformation besteht aus sieben Feldern\&. Das erste Feld ist der Anmeldename des Benutzers\&. Das zweite Feld zeigt an, ob das Benutzerkonto ein gesperrtes Passwort (L), kein Passwort (NP) oder ein verwendbares Passwort hat (P)\&. Das dritte Feld zeigt das Datum der letzten \(:Anderung des Passworts an\&. Die n\(:achsten vier Felder sind das Mindestalter, das H\(:ochstalter, die Dauer der Warnung und die Dauer der Unt\(:atigkeit f\(:ur das Passwort\&. Die Zeitr\(:aume werden in Tagen ausgedr\(:uckt\&. +zeigt den Status des Kontos an\&. Er setzt sich aus Informationen in sieben Feldern zusammen\&. Das erste Feld ist der Anmeldename des Benutzers\&. Das zweite Feld zeigt an, ob das Benutzerkonto ein gesperrtes Passwort (L), kein Passwort (NP) oder ein verwendbares Passwort hat (P)\&. Das dritte Feld zeigt das Datum der letzten \(:Anderung des Passworts an\&. Die n\(:achsten vier Felder sind die Mindest\- und H\(:ochstzeit f\(:ur seine Verwendung, die Vorwarnzeit und die Karenzzeit in Zusammenhang mit seinem Ablauf\&. Diese Zeiten werden in Tagen ausgedr\(:uckt\&. .RE .PP \fB\-u\fR, \fB\-\-unlock\fR @@ -205,9 +178,14 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "WARNUNGEN" .PP -Die Komplexit\(:at der Passwortpr\(:ufung kann sich auf verschiedenen Systemen unterscheiden\&. Der Benutzer wird angehalten, ein m\(:oglichst komplexes, von ihm aber gut zu verwendendes Passwort zu w\(:ahlen\&. +Die Pr\(:ufung des Passwortes auf Komplexit\(:at kann je nach System verschieden sein\&. Benutzer und Benutzerinnen werden angehalten, ein komplexes aber noch angenehmes Passwort zu w\(:ahlen\&. .PP Benutzer k\(:onnen unter Umst\(:anden ihr Passwort nicht \(:andern, wenn auf dem System NIS aktiviert ist, sie aber nicht am NIS\-Server angemeldet sind\&. .SH "KONFIGURATION" @@ -224,12 +202,12 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "R\(:UCKGABEWERTE" .PP @@ -277,7 +255,10 @@ invalid argument to option .SH "SIEHE AUCH" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/de/man1/sg.1 b/man/de/man1/sg.1 index 7a90391..edae327 100644 --- a/man/de/man1/sg.1 +++ b/man/de/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "SG" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "SG" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -sg \- f\(:uhrt einen Befehl unter einer anderen Gruppen\-ID aus +sg \- f\(:uhrt einen Befehl unter einer anderen Gruppenkennung aus .SH "\(:UBERSICHT" .HP \w'\fBsg\fR\ 'u \fBsg\fR [\-] [group\ [\-c\ ]\ command] @@ -68,7 +68,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/group @@ -78,7 +78,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man1/su.1 b/man/de/man1/su.1 index ae28464..598d4cb 100644 --- a/man/de/man1/su.1 +++ b/man/de/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "SU" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer" +.TH "SU" "1" "21.06.2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -su \- \(:andert die Benutzer\-ID oder wechselt zu Root +su \- wechseln in die Identit\(:at des Systemadministrators oder die eines anderen Benutzers .SH "\(:UBERSICHT" .HP \w'\fBsu\fR\ 'u -\fBsu\fR [\fIOptionen\fR] [\fI\-\fR] [\fIBenutzername\fR\ [\ \fIargs\fR\ ]] +\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fIusername\fR\ [\ \fIargs\fR\ ]] .SH "BESCHREIBUNG" .PP The @@ -53,7 +53,7 @@ option is special: it is also recognized after \fB\-\-\fR, but has to be placed before \fBusername\fR\&. .PP -Der Benutzer wird gegebenenfalls nach einem Passwort gefragt\&. Ung\(:ultige Passworteingaben werden eine Fehlermeldung erzeugen\&. Sowohl erfolgreiche als auch misslungene Versuche werden protokolliert, um Missbrauch des Systems zu entdecken\&. +Der Benutzer wird gegebenenfalls nach einem Passwort gefragt\&. Ung\(:ultige Passw\(:orter l\(:osen eine Fehlermeldung aus\&. Als Schutz gegen einen Missbrauch des Systems werden sowohl erfolgreiche als auch misslungene Versuche protokolliert\&. .PP The current environment is passed to the new shell\&. The value of \fB$PATH\fR @@ -68,7 +68,7 @@ and definitions in /etc/login\&.defs\&. .PP -Eine Subsystem\-Anmeldung wird durch einen \(Fc*\(Fo als erstes Zeichen der Anmelde\-Shell gekennzeichnet\&. Das angegebene Home\-Verzeichnis wird als Wurzel f\(:ur das Dateisystem verwendet, auf welchem der Benutzer tats\(:achlich angemeldet ist\&. +Eine Subsystem\-Anmeldung wird durch einen \(Fc*\(Fo als erstes Zeichen der Anmelde\-Shell gekennzeichnet\&. Das angegebene pers\(:onliche Verzeichnis wird zur Wurzel des Verzeichnisbaumes, in dem der Benutzer tats\(:achlich angemeldet ist\&. .SH "OPTIONEN" .PP The options which apply to the @@ -80,12 +80,12 @@ command are: Specify a command that will be invoked by the shell using its \fB\-c\fR\&. .sp -The executed command will have no controlling terminal\&. This option cannot be used to execute interactive programs which need a controlling TTY\&. +Der Befehl wird ohne ein ihm zugeordnetes Terminal ausgef\(:uhrt\&. Daher eignet sich diese Option nicht f\(:ur interaktive Programme, deren Bedienung \(:uber ein Terminalfenster (TTY) erfolgt\&. .RE .PP \fB\-\fR, \fB\-l\fR, \fB\-\-login\fR .RS 4 -Eine Umgebung wird zur Verf\(:ugung gestellt, die der entspricht, die der Benutzer nach einer direkten Anmeldung erwartet\&. +stellt eine Umgebung zur Verf\(:ugung, die jener entspricht, die der Benutzer erwarten w\(:urde, wenn er sich direkt anmeldete\&. .sp When \fB\-\fR @@ -98,7 +98,7 @@ and .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -die Shell, die gestartet wird +gibt die zu startende Shell an\&. .sp The invoked shell is chosen from (highest priority first): .PP @@ -237,12 +237,12 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "R\(:UCKGABEWERTE" .PP diff --git a/man/de/man3/shadow.3 b/man/de/man3/shadow.3 index 0fd6d69..eb6e81c 100644 --- a/man/de/man3/shadow.3 +++ b/man/de/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Bibliotheksaufrufe -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "SHADOW" "3" "08.11.2022" "shadow\-utils 4\&.13" "Bibliotheksaufrufe" +.TH "SHADOW" "3" "21.06.2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,14 +28,14 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -shadow, getspnam \- Routinen f\(:ur die Datei, die die verschl\(:usselten Passw\(:orter enth\(:alt +shadow, getspnam \- Routinen f\(:ur die Dateien mit verschl\(:usselten Passw\(:ortern .SH "SYNTAX" .PP \fI#include \fR .PP \fIstruct spwd *getspent();\fR .PP -\fItruct spwd *getspnam(char\fR +\fIstruct spwd *getspnam(char\fR \fI*name\fR\fI);\fR .PP \fIvoid setspent();\fR @@ -50,7 +50,7 @@ shadow, getspnam \- Routinen f\(:ur die Datei, die die verschl\(:usselten Passw\ .PP \fIint putspent(struct spwd\fR \fI*p,\fR -\fIDATEIEN\fR +\fIFILE\fR \fI*fp\fR\fI);\fR .PP \fIint lckpwdf();\fR @@ -95,7 +95,7 @@ Die Bedeutung dieser Felder ist: .sp -1 .IP \(bu 2.3 .\} -sp_namp \- Verweis auf Benutzername, der mit einer Null endet +sp_namp \- Verweis auf den Anmeldenamen, mit NULL als Schlusszeichen .RE .sp .RS 4 @@ -106,7 +106,7 @@ sp_namp \- Verweis auf Benutzername, der mit einer Null endet .sp -1 .IP \(bu 2.3 .\} -sp_pwdp \- Verweis auf Passwort, das mit einer Null endet +sp_pwdp \- Verweis auf verschl\(:usseltes Passwort, mit NULL als Schlusszeichen .RE .sp .RS 4 @@ -117,7 +117,7 @@ sp_pwdp \- Verweis auf Passwort, das mit einer Null endet .sp -1 .IP \(bu 2.3 .\} -sp_lstchg \- Anzahl der Tage gerechnet ab dem 1\&. Januar 1970, seitdem das Passwort das letzte Mal ge\(:andert wurde +sp_lstchg \- Tag, gez\(:ahlt ab dem 1\&. Januar 1970, an dem das Passwort das letzte Mal ge\(:andert wurde .RE .sp .RS 4 @@ -128,7 +128,7 @@ sp_lstchg \- Anzahl der Tage gerechnet ab dem 1\&. Januar 1970, seitdem das Pass .sp -1 .IP \(bu 2.3 .\} -sp_min \- Anzahl der Tage, ehe das Passwort nicht ge\(:andert werden darf +sp_min \- Anzahl der Tage, die das Passwort nicht ge\(:andert werden darf .RE .sp .RS 4 @@ -150,7 +150,7 @@ sp_max \- Anzahl der Tage, nach denen das Passwort ge\(:andert werden muss .sp -1 .IP \(bu 2.3 .\} -sp_warn \- Anzahl der Tage ehe das Passwort verf\(:allt, an denen der Benutzer vor dem Verfall gewarnt wird +sp_warn \- Anzahl der Tage vor dem Ablaufen des Passworts, an welchen der Benutzer eine entsprechende Warnung erh\(:alt .RE .sp .RS 4 @@ -161,7 +161,7 @@ sp_warn \- Anzahl der Tage ehe das Passwort verf\(:allt, an denen der Benutzer v .sp -1 .IP \(bu 2.3 .\} -sp_inact \- Anzahl der Tage nach dem Verfall des Passworts, nach denen das Konto als inaktiv angesehen und abgeschaltet wird +sp_inact \- Anzahl der Tage nach Ablauf des Passworts, nach denen der Benutzer als inaktiv angesehen wird und den Zugriff auf das Konto verliert .RE .sp .RS 4 @@ -172,7 +172,7 @@ sp_inact \- Anzahl der Tage nach dem Verfall des Passworts, nach denen das Konto .sp -1 .IP \(bu 2.3 .\} -sp_expire \- Anzahl Tage gerechnet ab dem 1\&. Januar 1970, f\(:ur die das Konto abgeschaltet ist +sp_expire \- Tage, gez\(:ahlt ab dem 1\&. Januar 1970, an dem das Konto erl\(:oschen soll .RE .sp .RS 4 @@ -232,12 +232,12 @@ Routines return NULL if no more entries are available or if an error occurs duri as the return value return 0 for success and \-1 for failure\&. .SH "WARNUNGEN" .PP -Diese Routinen k\(:onnen nur von Root verwendet werden, da der Zugriff auf die Shadow\-Passwort\-Datei beschr\(:ankt ist\&. +Nur der Systemadministrator kann diese Routinen verwenden, da der Zugriff auf die gesch\(:utzte Passwortdatei beschr\(:ankt ist\&. .SH "DATEIEN" .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/faillog.5 b/man/de/man5/faillog.5 index e423aeb..6551790 100644 --- a/man/de/man5/faillog.5 +++ b/man/de/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "FAILLOG" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,15 +28,15 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -faillog \- Datei mit fehlgeschlagenen Anmeldungen +faillog \- Datei zur Protokollierung von Anmeldefehlschl\(:agen .SH "BESCHREIBUNG" .PP /var/log/faillog maintains a count of login failures and the limits for each account\&. .PP -Eintr\(:age in dieser Datei haben eine festgelegte L\(:ange und sind der zahlenm\(:a\(ssigen UID nach angeordnet\&. Jeder Eintrag besteht aus der Anzahl der fehlgeschlagenen Anmeldungen seit der letzten erfolgreichen Anmeldung, der maximalen Anzahl von Fehlschl\(:agen, ehe das Konto abgeschaltet wird, dem Ger\(:at, auf dem die letzte fehlgeschlagene Anmeldung erfolgte, das Datum der letzten fehlgeschlagenen Anmeldung und die Dauer in Sekunden, f\(:ur die das Konto nach einem Fehlschlag gesperrt ist\&. +Eintr\(:age in dieser Datei haben eine feste L\(:ange und sind mit der Benutzerkennung als Index versehen\&. Jeder Eintrag besteht aus der Anzahl der Anmeldefehlschl\(:age seit der letzten erfolgreichen Anmeldung, der maximalen Anzahl von Fehlschl\(:agen, ehe das Konto gesperrt wird, der xxx Leitung|Verbindung, auf der der letzte Anmeldefehlschlag erfolgte, dessen Datum und die Zeit in Sekunden, f\(:ur die nach einem Fehlschlag das Konto gesperrt wird\&. .PP -Die Datei ist so aufgebaut: +Die Datei ist folgenderma\(ssen aufgebaut: .sp .if n \{\ .RS 4 @@ -57,7 +57,7 @@ struct faillog { .PP /var/log/faillog .RS 4 -Datei mit fehlgeschlagenen Anmeldungen +Datei zur Protokollierung von Anmeldefehlchl\(:agen .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/gshadow.5 b/man/de/man5/gshadow.5 index e8d0743..0f18217 100644 --- a/man/de/man5/gshadow.5 +++ b/man/de/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GSHADOW" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -gshadow \- Shadow\-Datei f\(:ur Gruppen +gshadow \- gesch\(:utzte Datei mit Benutzergruppen .SH "BESCHREIBUNG" .PP /etc/gshadow @@ -36,14 +36,14 @@ contains the shadowed information for group accounts\&. .PP Um die Sicherheit der Passw\(:orter zu gew\(:ahrleisten, darf diese Datei nicht f\(:ur normale Benutzer lesbar sein\&. .PP -Die darin enthaltenen Zeilen haben folgende Felder, die durch Doppelpunkt getrennt sind: +Jede Zeile dieser Datei setzt sich aus folgenden, durch Doppelpunkt getrennte Felder zusammen: .PP -\fBGruppenname\fR +\fBgroup name\fR .RS 4 Es muss sich um einen g\(:ultigen, auf dem System vorhandenen Gruppennamen handeln\&. .RE .PP -\fBverschl\(:usseltes Passwort\fR +\fBencrypted password\fR .RS 4 Refer to \fBcrypt\fR(3) @@ -55,15 +55,15 @@ If the password field contains some string that is not a valid result of The password is used when a user who is not a member of the group wants to gain the permissions of this group (see \fBnewgrp\fR(1))\&. .sp -Dieses Feld kann leer bleiben\&. Dies hat zur Folge, dass nur Gruppenmitglieder von den Rechten der Gruppe Gebrauch machen k\(:onnen\&. +Dieses Feld kann leer bleiben\&. Dies hat zur Folge, dass die Rechte der Gruppe Gruppenmitglieder vorbehalten sind\&. .sp -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\&. +Ein Passwortfeld, das mit einem Ausrufezeichen beginnt, f\(:uhrt dazu, dass das Passwort gesperrt ist\&. Die \(:ubrigen Zeichen entsprechen dem Passwort vor der Sperrung\&. .sp This password supersedes any password specified in /etc/group\&. .RE .PP -\fBGruppenverwalter\fR +\fBadministrators\fR .RS 4 Es muss sich dabei um eine durch Kommas getrennte Liste von Benutzernamen handeln\&. .sp @@ -72,11 +72,11 @@ Gruppenverwalter k\(:onnen das Passwort und die Mitglieder der Gruppe \(:andern\ Gruppenverwalter haben die gleichen Recht wie die Gruppenmitglieder (siehe unten)\&. .RE .PP -\fBMitglieder\fR +\fBmembers\fR .RS 4 Es muss sich dabei um eine durch Kommas getrennte Liste von Benutzernamen handeln\&. .sp -Mitglieder haben Zugang zu der Gruppe, ohne eine Passwort eingeben zu m\(:ussen\&. +Mitglieder haben, ohne um ein Passwort gebeten zu werden, Zugang zu der Gruppe\&. .sp You should use the same list of users as in /etc/group\&. @@ -90,7 +90,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/limits.5 b/man/de/man5/limits.5 index 07222ef..29ebc2c 100644 --- a/man/de/man5/limits.5 +++ b/man/de/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "LIMITS" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LIMITS" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -limits \- Festlegung von Resourcenbeschr\(:ankungen +limits \- legt Beschr\(:ankungen zur Nutzung von Ressourcen fest .SH "BESCHREIBUNG" .PP The @@ -37,15 +37,15 @@ file (/etc/limits by default or LIMITS_FILE defined config\&.h) describes the resource limits you wish to impose\&. It should be owned by root and readable by root account only\&. .PP -Standardm\(:a\(ssig bestehen f\(:ur Root keine Einschr\(:ankungen\&. Tats\(:achlich gibt es keine M\(:oglichkeit, mit diesem Verfahren Root\-Konten (Konten mit der UID 0) Beschr\(:ankungen aufzuerlegen\&. +Standardm\(:a\(ssig sind dem Benutzer \(Fcroot\(Fo keine Beschr\(:ankungen auferlegt\&. Tats\(:achlich gibt ist keinen Weg, ihm oder \(:ahnlich privilegierten Nutzern (Konten mit der Benutzerkennung 0) Beschr\(:ankungen aufzuerlegen\&. .PP Jede Zeile beschreibt eine Beschr\(:ankung f\(:ur einen Benutzer in der Form: .PP -\fIBenutzer BESCHR\(:ANKUNGSZEICHENKETTE\fR +\fIuser LIMITS_STRING\fR .PP oder in der Form: .PP -\fI@Gruppe BESCHR\(:ANKUNGSZEICHENKETTE\fR +\fI@group LIMITS_STRING\fR .PP The \fILIMITS_STRING\fR @@ -61,7 +61,7 @@ G\(:ultige Kennungen sind: .sp -1 .IP \(bu 2.3 .\} -A: maximaler Adressraum (KB) +A: maximaler Adressraum (kB) .RE .sp .RS 4 @@ -72,7 +72,7 @@ A: maximaler Adressraum (KB) .sp -1 .IP \(bu 2.3 .\} -C: maximale Gr\(:o\(sse der Speicherabbild\-Datei +C: maximale Gr\(:o\(sse der Speicherauszugs\-Datei (kB) .RE .sp .RS 4 @@ -83,7 +83,7 @@ C: maximale Gr\(:o\(sse der Speicherabbild\-Datei .sp -1 .IP \(bu 2.3 .\} -D: maximale Datengr\(:o\(sse (KB) +D: maximale Datenmenge (kB) .RE .sp .RS 4 @@ -94,7 +94,7 @@ D: maximale Datengr\(:o\(sse (KB) .sp -1 .IP \(bu 2.3 .\} -F: maximum file size (KB) +F: maximale Dateigr\(:o\(sse (kB) .RE .sp .RS 4 @@ -128,7 +128,7 @@ I: Maximaler Wert von nice (0 bis 39, was in 20 bis \-19 \(:ubersetzt wird) .sp -1 .IP \(bu 2.3 .\} -L: maximale Anzahl von Logins f\(:ur diesen Benutzer +L: maximale Anzahl von Anmeldungen f\(:ur diesen Benutzer .RE .sp .RS 4 @@ -139,7 +139,7 @@ L: maximale Anzahl von Logins f\(:ur diesen Benutzer .sp -1 .IP \(bu 2.3 .\} -M: maximaler gesperrter Adressbereich im Speicher (KB) +M: maximaler gesperrter Adressbereich im Speicher (kB) .RE .sp .RS 4 @@ -161,7 +161,7 @@ N: maximale Anzahl offener Dateien .sp -1 .IP \(bu 2.3 .\} -O: Maximale Echtzeit\-Priorit\(:at +O: maximale Echtzeit\-Priorit\(:at .RE .sp .RS 4 @@ -184,7 +184,9 @@ P: process priority, set by .sp -1 .IP \(bu 2.3 .\} -R: maximale Resident Set Size (KB) +R: maximale Arbeitsspeicherbelegung, siehe +\fBproc\fR(5) +\(Fcresident set size\(Fo (kB) .RE .sp .RS 4 @@ -195,7 +197,9 @@ R: maximale Resident Set Size (KB) .sp -1 .IP \(bu 2.3 .\} -S: maximale Gr\(:o\(sse des Stapelverarbeitungsspeichers (KB) +S: maximale Gr\(:o\(sse des Stapelverarbeitungsspeichers, siehe +\fBproc\fR(5) +\(Fcstack\(Fo (kB) .RE .sp .RS 4 @@ -206,7 +210,7 @@ S: maximale Gr\(:o\(sse des Stapelverarbeitungsspeichers (KB) .sp -1 .IP \(bu 2.3 .\} -T: maximale CPU\-Zeit (Min) +T: maximale CPU\-Zeit (min) .RE .sp .RS 4 @@ -251,7 +255,7 @@ entries in your The limits specified in the form "\fI@group\fR" apply to the members of the specified \fIgroup\fR\&. .PP -If more than one line with limits for a user exist, only the first line for this user will be considered\&. +Wenn mehr als eine Zeile mit Beschr\(:ankungen f\(:ur eine Benutzerin vorhanden ist, wird f\(:ur sie nur die erste Zeile ber\(:ucksichtigt\&. .PP If no lines are specified for a user, the last \fI@group\fR @@ -261,7 +265,9 @@ To completely disable limits for a user, a single dash "\fI\-\fR" will do\&. .PP To disable a limit for a user, a single dash "\fI\-\fR" can be used instead of the numerical value for this limit\&. .PP -Ber\(:ucksichtigen Sie auch, dass alle Beschr\(:ankungen nur JE ANMELDUNG gelten\&. Sie sind nicht global und auch nicht dauerhaft\&. Vielleicht wird es einmal globale Beschr\(:ankungen geben, f\(:ur jetzt muss dies aber reichen ;) +Ber\(:ucksichtigen Sie auch, dass alle Beschr\(:ankungen nur +\fIje Anmeldung\fR +gelten\&. Sie sind nicht global und auch nicht dauerhaft\&. Vielleicht wird es einmal globale Beschr\(:ankungen geben, f\(:ur jetzt muss dies aber reichen ;) .SH "DATEIEN" .PP /etc/limits diff --git a/man/de/man5/login.access.5 b/man/de/man5/login.access.5 index 04fd0bb..4e3730e 100644 --- a/man/de/man5/login.access.5 +++ b/man/de/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "LOGIN\&.ACCESS" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -login.access \- Tabelle f\(:ur die Zugangskontrolle zur Anmeldung +login.access \- Tabelle zur Zugangssteuerung .SH "BESCHREIBUNG" .PP The @@ -39,7 +39,7 @@ When someone logs in, the \fIlogin\&.access\fR is scanned for the first entry that matches the (user, host) combination, or, in case of non\-networked logins, the first entry that matches the (user, tty) combination\&. The permissions field of that table entry determines whether the login will be accepted or refused\&. .PP -Jede Zeile der Tabelle f\(:ur die Zugangskontrolle enth\(:alt drei Felder, die jeweils durch einen Doppelpunkt \(Fc:\(Fo getrennt sind: +Jede Zeile der Tabelle zur Zugangssteuerung enth\(:alt drei Felder, die durch einen Doppelpunkt \(Fc:\(Fo getrennt sind: .PP \fIpermission\fR:\fIusers\fR:\fIorigins\fR .PP @@ -55,12 +55,12 @@ The \fIEXCEPT\fR operator makes it possible to write very compact rules\&. .PP -Die Gruppendatei wird nur durchsucht, wenn ein Name nicht mit dem des angemeldeten Benutzers \(:ubereinstimmt\&. Eine \(:Ubereinstimmung mit Gruppen wird nur festgestellt, wenn darin der Benutzer ausdr\(:ucklich aufgef\(:uhrt ist\&. Das Programm beachtet also nicht den Wert der Hauptgruppe des Benutzers\&. +Die Datei \(Fcgroup\(Fo wird nur ber\(:ucksichtigt, wenn ein Name nicht mit dem des angemeldeten Benutzers \(:ubereinstimmt\&. Als passend gelten nur Gruppen, in welchen Benutzer ausdr\(:ucklich aufgef\(:uhrt sind\&. Das Programm beachtet die prim\(:are Gruppe des Benutzers nicht\&. .SH "DATEIEN" .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/login.defs.5 b/man/de/man5/login.defs.5 index f5c1cec..5a3f6ca 100644 --- a/man/de/man5/login.defs.5 +++ b/man/de/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "LOGIN\&.DEFS" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,14 +28,14 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -login.defs \- Konfiguration der Werkzeugsammlung f\(:ur Shadow\-Passw\(:orter +login.defs \- Konfiguration der Shadow\-Passwort\-Programmsammlung .SH "BESCHREIBUNG" .PP The /etc/login\&.defs file defines the site\-specific configuration for the shadow password suite\&. This file is required\&. Absence of this file will not prevent system operation, but will probably result in undesirable operation\&. .PP -Diese Datei ist eine lesbare Textdatei\&. Jede Zeile der Datei beschreibt einen Konfigurationsparameter\&. Eine Zeile besteht aus einem Konfigurationsnamen und einem Wert, die durch ein Leerzeichen getrennt sind\&. Leer\- und Kommentarzeilen werden nicht beachtet\&. Kommentare werden mit dem Rautezeichen \(Fc#\(Fo eingeleitet\&. Die Raute muss das erste nicht leere Zeichen der Zeile sein\&. +Diese Datei ist eine lesbare Textdatei\&. Jede Zeile der Datei beschreibt einen Konfigurationsparameter und besteht aus dessen Namen und einem Wert; beides durch Leerraumzeichen voneinander getrennt\&. Leer\- und Kommentarzeilen werden nicht beachtet\&. Kommentare werden mit dem Rautezeichen \(Fc#\(Fo eingeleitet, wobei es das erste nicht leere Zeichen der Zeile sein muss\&. .PP Parameter values may be of four types: strings, booleans, numbers, and long numbers\&. A string is comprised of any printable characters\&. A boolean should be either the value \fIyes\fR @@ -46,7 +46,7 @@ value\&. Numbers (both regular and long) may be either decimal values, octal val \fI0\fR) or hexadecimal values (precede the value with \fI0x\fR)\&. The maximum value of the regular and long numeric parameters is machine\-dependent\&. .PP -Die folgenden Konfigurationsm\(:oglichkeiten sind vorhanden: +Folgende Merkmale k\(:onnen konfiguriert werden: .PP \fBPASS_MAX_DAYS\fR, \fBPASS_MIN_DAYS\fR @@ -55,7 +55,7 @@ and are only used at the time of account creation\&. Any changes to these settings won\*(Aqt affect existing accounts\&. .SH "QUERVERWEISE" .PP -Die folgenden Querverweise zeigen, welche Programme aus der Shadow\-Passwort\-Werkzeugsammlung welche Parameter verwenden\&. +Die folgenden Querverweise zeigen, welche Programme aus der Shadow\-Passwort\-Sammlung welche Parameter verwenden\&. .PP chfn .RS 4 @@ -192,8 +192,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/de/man5/passwd.5 b/man/de/man5/passwd.5 index b274906..620a79e 100644 --- a/man/de/man5/passwd.5 +++ b/man/de/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "PASSWD" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PASSWD" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ Anmeldename .sp -1 .IP \(bu 2.3 .\} -optional verschl\(:usseltes Passwort +verschl\(:usseltes Passwort (optional) .RE .sp .RS 4 @@ -64,7 +64,7 @@ optional verschl\(:usseltes Passwort .sp -1 .IP \(bu 2.3 .\} -numerische Benutzer\-ID +Benutzerkennung (numerisch) .RE .sp .RS 4 @@ -75,7 +75,7 @@ numerische Benutzer\-ID .sp -1 .IP \(bu 2.3 .\} -numerische Gruppen\-ID +Gruppenkennung (numerisch) .RE .sp .RS 4 @@ -86,7 +86,7 @@ numerische Gruppen\-ID .sp -1 .IP \(bu 2.3 .\} -Benutzername oder Kommentarfeld +Feld f\(:ur den kompletten Namen des Benutzer und erg\(:anzende Informationen zu ihm (GECOS\-Feld) .RE .sp .RS 4 @@ -97,7 +97,7 @@ Benutzername oder Kommentarfeld .sp -1 .IP \(bu 2.3 .\} -Home\-Verzeichnis des Benutzers +pers\(:onliches Verzeichnis des Benutzers .RE .sp .RS 4 @@ -108,7 +108,7 @@ Home\-Verzeichnis des Benutzers .sp -1 .IP \(bu 2.3 .\} -optional Befehlsinterpreter des Benutzers +Befehlsinterpreter des Benutzers (optional) .RE .PP If the @@ -169,14 +169,14 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -optionale Datei f\(:ur verschl\(:usseltes Passwort +optionale Datei f\(:ur verschl\(:usselte Passw\(:orter .RE .PP /etc/passwd\- .RS 4 Sicherungskopie von /etc/passwd .sp -Beachten Sie, dass diese Datei von Werkzeugen der Shadow\-Werkzeugsammlung verwendet wird, aber nicht von allen sonstigen Programmen zur Benutzer\- und Passwortverwaltung\&. +Beachten Sie, dass diese Datei von den Hilfsprogrammen des Shadow\-Projektes verwendet wird; von anderen Programmen zur Benutzer\- und Passwortverwaltung jedoch nicht unbedingt\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/porttime.5 b/man/de/man5/porttime.5 index ac127d4..c6aae57 100644 --- a/man/de/man5/porttime.5 +++ b/man/de/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "PORTTIME" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,13 +28,13 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -porttime \- Datei f\(:ur zeitlich begrenzten Zugang zu Ports +porttime \- Datei mit zeitlichen Zugangsbegrenzungen f\(:ur Ports .SH "BESCHREIBUNG" .PP \fIporttime\fR contains a list of tty devices, user names, and permitted login times\&. .PP -Jeder Eintrag besteht aus drei Feldern, die durch Doppelpunkte getrennt sind\&. Das erste Feld enth\(:alt eine Liste von tty\-Ger\(:aten, die durch Kommata getrennt sind, oder einen Stern, was bedeutet, dass dieser Eintrag auf alle tty\-Ger\(:ate zutrifft\&. Das zweite Feld enth\(:alt eine Liste von Benutzernamen, die durch Kommata getrennt sind, oder einen Stern, was bedeutet, dass dieser Eintrag auf alle Benutzernamen zutrifft\&. Das dritte Feld ist eine Liste von Anmeldezeiten, die durch Kommata getrennt sind\&. +Jeder Eintrag besteht aus drei Feldern, die durch Doppelpunkte getrennt sind\&. Das erste Feld enth\(:alt eine Liste von TTY\-Ger\(:aten, die durch Kommas getrennt sind, oder einen Stern, was bedeutet, dass dieser Eintrag auf alle TTY\-Ger\(:ate zutrifft\&. Das zweite Feld enth\(:alt eine durch Kommas getrennte Liste von Benutzernamen oder einen Stern, was bedeutet, dass dieser Eintrag auf alle Benutzernamen zutrifft\&. Das dritte Feld ist eine Liste zul\(:assiger Zugangszeiten, die durch Kommas getrennt sind\&. .PP Each access time entry consists of zero or more days of the week, abbreviated \fISu\fR, @@ -89,7 +89,7 @@ on any port during non\-working hours\&. .PP /etc/porttime .RS 4 -Datei, die den Port\-Zugriff enth\(:alt\&. +Datei, die Zugriffe auf Ports regelt .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/shadow.5 b/man/de/man5/shadow.5 index 032cd80..aa9ced4 100644 --- a/man/de/man5/shadow.5 +++ b/man/de/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "SHADOW" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SHADOW" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -shadow \- Shadow\-Passwortdatei +shadow \- gesch\(:utzte Passwortdatei .SH "BESCHREIBUNG" .PP shadow @@ -38,18 +38,18 @@ Um die Sicherheit der Passw\(:orter zu gew\(:ahrleisten, darf diese Datei nicht .PP Each line of this file contains 9 fields, separated by colons (\(Bq:\(lq), in the following order: .PP -\fBAnmeldename\fR +\fBlogin name\fR .RS 4 -Dabei muss es sich um eine g\(:ultigen Kontonamen handeln, der auf dem System existiert\&. +Dabei muss es sich um einen g\(:ultigen Kontonamen handeln, der auf dem System existiert\&. .RE .PP -\fBverschl\(:usseltes Passwort\fR +\fBencrypted password\fR .RS 4 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 /etc/shadow file may decide not to permit any access at all if the password field is empty\&. .sp -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\&. +Ein Passwortfeld, das mit einem Ausrufezeichen beginnt, f\(:uhrt dazu, dass das Passwort gesperrt ist\&. Die \(:ubrigen Zeichen entsprechen dem Passwort vor der Sperrung\&. .sp Refer to \fBcrypt\fR(3) @@ -59,61 +59,61 @@ If the password field contains some string that is not a valid result of \fBcrypt\fR(3), 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)\&. .RE .PP -\fBDatum, an dem das Passwort das letzte Mal ge\(:andert wurde\fR +\fBdate of last password change\fR .RS 4 The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp -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\&. +Dem Wert 0 kommt eine besondere Bedeutung zu: Der Benutzer sollte sein Passwort bei der n\(:achsten Anmeldung \(:andern\&. .sp -Ein leeres Feld bedeutet, dass das Altern des Passworts abgeschaltet ist\&. +Ein leeres Feld bedeutet, dass das Passwort nicht ablaufen soll\&. .RE .PP -\fBMindestalter des Passworts\fR +\fBminimum password age\fR .RS 4 -Das Mindestalter des Passworts ist die Anzahl von Tagen, die ein Benutzer warten muss, bevor er sein Passwort wieder \(:andern darf\&. +Diese Mindestdauer ist die Anzahl von Tagen, die ein Benutzer oder eine Benutzerin warten muss, bis eine Passwort\(:anderung erlaubt ist\&. .sp An empty field and value 0 mean that there is no minimum password age\&. .RE .PP -\fBH\(:ochstalter des Passworts\fR +\fBmaximum password age\fR .RS 4 -Das H\(:ochstalter des Passworts ist die Anzahl von Tagen, nach welcher der Benutzer sein Passwort \(:andern muss\&. +Diese H\(:ochstdauer ist die Anzahl von Tagen, nach welcher der Benutzer sein Passwort \(:andern muss\&. .sp -Auch nach Ablauf dieser Anzahl von Tagen bleibt das Passwort g\(:ultig\&. Der Benutzer wird bei der n\(:achsten Anmeldung aufgefordert, sein Passwort zu \(:andern\&. +Auch nach Ablauf dieser Anzahl von Tagen gilt das Passwort\&. Der Benutzer wird jedoch bei der n\(:achsten Anmeldung aufgefordert, sein Passwort zu \(:andern\&. .sp -Ein leeres Feld bedeutet, dass es kein H\(:ochstalter f\(:ur das Passwort, keine Vorwarnung und keine Dauer der Unt\(:atigkeit (siehe unten) gibt\&. +Ein leeres Feld bedeutet, dass das Passwort unbefristet gilt und weder eine Vorwarnzeit noch eine Karenzzeit f\(:ur eine versp\(:atete \(:Anderung (siehe unten) gilt\&. .sp -Wenn das H\(:ochstalter niedriger als das Mindestalter eines Passworts ist, kann ein Benutzer sein Passwort nicht \(:andern\&. +Wenn f\(:ur die G\(:ultigkeit des Passwortes eine Zahl von Tagen eingetragen ist, die niedriger ist als die Zahl der Tage bis zur fr\(:uhestm\(:oglichen \(:Anderung, kann die Benutzerin oder der Benutzer das Passwort nicht \(:andern\&. .RE .PP -\fBPasswortvorwarndauer\fR +\fBpassword warning period\fR .RS 4 -Die Anzahl von Tagen, w\(:ahrend welcher der Benutzer vorgewarnt wird, bevor sein Passwort abl\(:auft (siehe das H\(:ochstalter des Passworts)\&. +Die Zeitspanne in Tagen, in der der Benutzer gewarnt wird, dass sein Passwort demn\(:achst ung\(:ultig wird (siehe H\(:ochstdauer der Passwortverwendung)\&. .sp Ein leeres Feld oder der Wert 0 bedeutet, dass es keine Vorwarnung gibt\&. .RE .PP -\fBDauer der fehlenden Verwendung des Passworts\fR +\fBpassword inactivity period\fR .RS 4 -Die Anzahl von Tagen, f\(:ur die ein Benutzer sein Passwort, nachdem es abgelaufen ist (vergleiche oben das H\(:ochstalter des Passworts), noch verwenden kann (und w\(:ahrend des n\(:achsten Logins \(:andern muss)\&. +Die Zeitspanne in Tagen, in der ein abgelaufenes Passwort (vergleiche oben H\(:ochstdauer der Passwortverwendung) noch akzeptiert wird, aber im Zuge der Anmeldung eine \(:Anderung erwartet wird\&. .sp After expiration of the password and this expiration period is elapsed, no login is possible for the user\&. The user should contact her administrator\&. .sp -Ein leeres Feld bedeutet, dass es keine H\(:ochstdauer zwischen Ablauf des Passworts und erneuter Anmeldung des Benutzers gibt\&. +Ein leeres Feld bedeutet, dass keine Karenzzeit gew\(:ahrt wird, innerhalb der ein abgelaufenes Passworts noch ersetzt werden kann\&. .RE .PP -\fBDatum des Verfalls des Kontos\fR +\fBaccount expiration date\fR .RS 4 The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp -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\&. +Beachten Sie, dass der Verfall des Kontos und der Ablauf eines Passworts zweierlei sind\&. Im ersteren Fall kann sich die Benutzerin bzw\&. der Benutzer nicht mehr anmelden\&. Im letzteren Fall wird das Passwort abgelehnt\&. .sp -Ein leeres Feld bedeutet, dass das Konto nicht verfallen wird\&. +Ein leeres Feld bedeutet, dass das Konto unbefristet verwendbar ist\&. .sp -Der Wert 0 sollte nicht verwendet werden, weil er sowohl bedeuten kann, dass das Konto nicht verf\(:allt als auch, dass das Konto bereits am 1\&. Januar 1970 verfallen ist\&. +Der Wert 0 sollte nicht verwendet werden, weil er sowohl bedeuten kann, dass das Konto nicht erlischt, als auch, dass das Konto bereits am 1\&. Januar 1970 erloschen ist\&. .RE .PP -\fBreserviertes Feld\fR +\fBreserved field\fR .RS 4 Dieses Feld ist f\(:ur zuk\(:unftigen Gebrauch reserviert\&. .RE @@ -126,14 +126,14 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/shadow\- .RS 4 Sicherungskopie von /etc/shadow .sp -Beachten Sie, dass diese Datei von Werkzeugen der Shadow\-Werkzeugsammlung verwendet wird, aber nicht von allen sonstigen Programmen zur Benutzer\- und Passwortverwaltung\&. +Beachten Sie, dass diese Datei von den Hilfsprogrammen des Shadow\-Projektes verwendet wird; von anderen Programmen zur Benutzer\- und Passwortverwaltung jedoch nicht unbedingt\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man5/suauth.5 b/man/de/man5/suauth.5 index 29fd2a8..85d03b4 100644 --- a/man/de/man5/suauth.5 +++ b/man/de/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 +.\" Date: 21.06.2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "SUAUTH" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUAUTH" "5" "21.06.2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -suauth \- ausf\(:uhrliche Kontrolldatei f\(:ur su +suauth \- Datei zur detaillierten Steuerung von \fBsu\fR .SH "\(:UBERSICHT" .HP \w'\fB/etc/suauth\fR\ 'u \fB/etc/suauth\fR @@ -49,7 +49,7 @@ is referenced whenever the su command is called\&. It can change the behaviour o .RE .\} .PP -2) dem Benutzer, der su ausf\(:uhrt (oder einer Gruppe, deren Mitglied er ist) +2) die Herkunftsidentit\(:at; ; der Benutzer, der su ausf\(:uhrt (oder eine Gruppe, deren Mitglied er ist) .PP Die Datei ist folgenderma\(ssen aufgebaut, wobei Zeilen, die mit einem # beginnen, als Kommentare behandelt und daher ignoriert werden: .sp @@ -79,24 +79,30 @@ appears one or more group names, delimited by ","\&. It is not sufficient to hav \fB/etc/group\fR(5) is necessary\&. .PP -Als Aktion k\(:onnen nur die folgenden Optionen angegeben werden\&. +Nur eine der folgenden Aktionen kann angegeben werden: .PP \fIDENY\fR .RS 4 -Der Versuch, su auszuf\(:uhren, wird abgebrochen, ehe nach einem Passwort gefragt wird\&. +Der Versuch, +\fBsu\fR +auszuf\(:uhren, wird abgebrochen, ehe nach einem Passwort gefragt wird\&. .RE .PP \fINOPASS\fR .RS 4 -Der Versuch, su auszuf\(:uhren, hat automatisch Erfolg\&. Ein Passwort wird nicht abgefragt\&. +Der Versuch, +\fBsu\fR +auszuf\(:uhren, hat automatisch Erfolg\&. Ein Passwort wird nicht abgefragt\&. .RE .PP \fIOWNPASS\fR .RS 4 -Damit der Befehl su Erfolg hat, muss der Benutzer sein eigenes Passwort eingeben\&. Darauf wird er hingewiesen\&. +Damit der Befehl +\fBsu\fR +Erfolg hat, muss der Benutzer sein eigenes Passwort eingeben\&. Darauf wird hingewiesen\&. .RE .PP -Beachten Sie, dass es sich um drei selbst\(:andige Felder handelt, die durch einen Doppelpunkt getrennt sind\&. Neben den Doppelpunkten darf sich kein Leerzeichen befinden\&. Beachten Sie zudem, dass die Datei von oben nach unten Zeile f\(:ur Zeile durchgegangen wird\&. Die erste Regel, die zutreffend ist, wird angewendet, ohne dass die Datei weiter ausgewertet wird\&. Damit kann ein Systemadministrator eine strenge Kontrolle aus\(:uben\&. +Beachten Sie, dass es sich um drei selbst\(:andige Felder handelt, die durch einen Doppelpunkt getrennt sind\&. Neben den Doppelpunkten darf sich kein Leerraumzeichen befinden\&. Beachten Sie zudem, dass die Datei von oben nach unten Zeile f\(:ur Zeile durchgegangen wird\&. Die erste zutreffende Regel wird angewendet, ohne dass die Datei weiter ausgewertet wird\&. Dies erlaubt dem Systemadmistrator oder der Systemadministratorin eine feine Steuerung\&. .SH "BEISPIEL" .sp .if n \{\ @@ -135,7 +141,7 @@ Beachten Sie, dass es sich um drei selbst\(:andige Felder handelt, die durch ein .RE .SH "FEHLER" .PP -Es gibt zahlreiche Fehlerquellen\&. Die Auswertung der Datei ist sehr empfindlich bei Syntaxfehlern, zus\(:atzlichen Leerzeichen (au\(sser am Anfang und Schluss einer Zeile) und dem besonderen Zeichen, das die verschiedenen Felder von einander trennt\&. +Es gibt zahlreiche Fehlerquellen\&. Die Auswertung der Datei ist sehr empfindlich bei Syntaxfehlern, zus\(:atzlichen Leerraumzeichen (au\(sser am Anfang und am Schluss einer Zeile) und dem speziellen Zeichen, das die verschiedenen Einheiten voneinander trennt\&. .SH "DIAGNOSE" .PP An error parsing the file is reported using diff --git a/man/de/man8/chgpasswd.8 b/man/de/man8/chgpasswd.8 index d17a8dd..6123f2a 100644 --- a/man/de/man8/chgpasswd.8 +++ b/man/de/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "CHGPASSWD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "CHGPASSWD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -chgpasswd \- aktualisiert Gruppenpassw\(:orter im Batch\-Modus +chgpasswd \- aktualisiert Gruppenpassw\(:orter im Stapel\-Modus .SH "\(:UBERSICHT" .HP \w'\fBchgpasswd\fR\ 'u -\fBchgpasswd\fR [\fIOptionen\fR] +\fBchgpasswd\fR [\fIoptions\fR] .SH "BESCHREIBUNG" .PP The @@ -52,7 +52,7 @@ variable of \fB\-c\fR options\&. .PP -Dieser Befehl ist f\(:ur den Einsatz in gro\(ssen Umgebungen vorgesehen, in der viele Konten gleichzeitig erstellt werden m\(:ussen\&. +Dieser Befehl ist f\(:ur weitreichende Systeme gedacht, bei denenviele Passw\(:orter gleichzeitig aktualisiert werden m\(:ussen\&. .SH "OPTIONEN" .PP The options which apply to the @@ -61,24 +61,29 @@ command are: .PP \fB\-c\fR, \fB\-\-crypt\-method\fR .RS 4 -Definiert die Methode, mit der die Passw\(:orter verschl\(:usselt werden\&. +definiert die Methode, mit der die Passw\(:orter verschl\(:usselt werden\&. .sp -Die verf\(:ugbaren Methoden sind DES, MD5, NONE und SHA256 oder SHA512, soweit Ihre libc sie unterst\(:utzt\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR .RS 4 -Passw\(:orter werden verschl\(:usselt angegeben\&. +Passw\(:orter werden verschl\(:usselt geliefert\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-m\fR, \fB\-\-md5\fR .RS 4 -werwendet zur Verschl\(:usselung MD5 anstelle von DES, wenn die Passw\(:orter unverschl\(:usselt angegeben werden +Zur Verschl\(:usselung MD5 anstelle von DES verwenden, wenn die Passw\(:orter unverschl\(:usselt geliefert werden\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -92,22 +97,23 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR .RS 4 -Verwendet die angegebene Anzahl von Runden, um die Passw\(:orter zu verschl\(:usseln\&. +legt die Anzahl von Runden beim Verschl\(:usseln von Passw\(:ortern fest\&. .sp -Ein Wert von 0 bedeutet, dass das System die Standardanzahl der Runden (5000) f\(:ur die Verschl\(:usselung verwenden wird\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Der Mindestwert ist 1000, der H\(:ochstwert 999\&.999\&.999\&. -.sp -Sie k\(:onnen diese Option nur mit den Verschl\(:usselungsmethoden SHA256 und SHA512 verwenden\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "WARNUNGEN" .PP -Achten Sie darauf, dass die Rechte und Umask korrekt vergeben sind, um zu verhindern, dass andere Benutzer unverschl\(:usselte Dateien lesen k\(:onnen\&. +Achten Sie darauf, dass die Zugriffsrechte der unverschl\(:usselten Datei beziehungsweise +\fBUMASK\fR +ausschlie\(ssen, dass andere Benutzer sie lesen k\(:onnen\&. .PP -Sie sollten darauf achten, dass Passw\(:orter und Verschl\(:usselungsmethode in Einklage mit der Passwortrichtlinie des Systems stehen\&. +Sie sollten darauf achten, dass Passw\(:orter und Verschl\(:usselungsmethode in Einklang mit der Passwortrichtlinie des Systems stehen\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -122,12 +128,12 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/chpasswd.8 b/man/de/man8/chpasswd.8 index 270aa49..c524312 100644 --- a/man/de/man8/chpasswd.8 +++ b/man/de/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "CHPASSWD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "CHPASSWD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -chpasswd \- aktualisiert Passw\(:orter im Batch\-Modus +chpasswd \- aktualisiert Passw\(:orter im Stapel\-Modus .SH "\(:UBERSICHT" .HP \w'\fBchpasswd\fR\ 'u -\fBchpasswd\fR [\fIOptionen\fR] +\fBchpasswd\fR [\fIoptions\fR] .SH "BESCHREIBUNG" .PP The @@ -57,7 +57,7 @@ options\&. \fBchpasswd\fR first updates all the passwords in memory, and then commits all the changes to disk if no errors occurred for any user\&. .PP -Dieser Befehl ist f\(:ur den Einsatz in gro\(ssen Umgebungen vorgesehen, in der viele Konten gleichzeitig erstellt werden m\(:ussen\&. +Dieser Befehl ist f\(:ur weitreichende Systeme gedacht, bei denenviele Passw\(:orter gleichzeitig aktualisiert werden m\(:ussen\&. .SH "OPTIONEN" .PP The options which apply to the @@ -66,9 +66,14 @@ command are: .PP \fB\-c\fR, \fB\-\-crypt\-method\fR\ \&\fIMETHOD\fR .RS 4 -Definiert die Methode, mit der die Passw\(:orter verschl\(:usselt werden\&. +definiert die Methode, mit der die Passw\(:orter verschl\(:usselt werden\&. .sp -Die verf\(:ugbaren Methoden sind DES, MD5, NONE und SHA256 oder SHA512, soweit Ihre libc sie unterst\(:utzt\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp By default (if none of the \fB\-c\fR, @@ -84,17 +89,17 @@ variables of .PP \fB\-e\fR, \fB\-\-encrypted\fR .RS 4 -Passw\(:orter werden verschl\(:usselt angegeben\&. +Passw\(:orter werden verschl\(:usselt geliefert\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-m\fR, \fB\-\-md5\fR .RS 4 -werwendet zur Verschl\(:usselung MD5 anstelle von DES, wenn die Passw\(:orter unverschl\(:usselt angegeben werden +Zur Verschl\(:usselung MD5 anstelle von DES verwenden, wenn die Passw\(:orter unverschl\(:usselt geliefert werden\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -106,26 +111,29 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 -Verwendet die angegebene Anzahl von Runden, um die Passw\(:orter zu verschl\(:usseln\&. +legt die Anzahl von Runden beim Verschl\(:usseln von Passw\(:ortern fest\&. .sp -Ein Wert von 0 bedeutet, dass das System die Standardanzahl der Runden (5000) f\(:ur die Verschl\(:usselung verwenden wird\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Der Mindestwert ist 1000, der H\(:ochstwert 999\&.999\&.999\&. -.sp -Sie k\(:onnen diese Option nur mit den Verschl\(:usselungsmethoden SHA256 und SHA512 verwenden\&. -.sp -By default, the number of rounds is defined by the -\fBSHA_CRYPT_MIN_ROUNDS\fR -and -\fBSHA_CRYPT_MAX_ROUNDS\fR -variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "WARNUNGEN" .PP -Achten Sie darauf, dass die Rechte und Umask korrekt vergeben sind, um zu verhindern, dass andere Benutzer unverschl\(:usselte Dateien lesen k\(:onnen\&. +Achten Sie darauf, dass die Zugriffsrechte der unverschl\(:usselten Datei beziehungsweise +\fBUMASK\fR +ausschlie\(ssen, dass andere Benutzer sie lesen k\(:onnen\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -141,12 +149,12 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/faillog.8 b/man/de/man8/faillog.8 index cf5703b..a04d0de 100644 --- a/man/de/man8/faillog.8 +++ b/man/de/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "FAILLOG" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "FAILLOG" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -faillog \- zeigt Aufzeichnungen der fehlgeschlagenen Anmeldungen an oder richtet Beschr\(:ankungen f\(:ur fehlgeschlagene Anmeldungen ein +faillog \- zeigt Aufzeichnungen von Anmeldefehlschl\(:agen an oder begrenzt sie .SH "\(:UBERSICHT" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fIOptionen\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "BESCHREIBUNG" .PP \fBfaillog\fR @@ -54,7 +54,7 @@ The range of users can be restricted with the \fB\-u\fR option\&. .sp -Im Anzeigemodus ist dies auf vorhandene Benutzer beschr\(:ankt, erzwingt aber die Anzeige der Faillog\-Eintr\(:age, auch wenn diese leer sind\&. +Im Anzeigemodus bleibt die Beschr\(:ankung auf existierende Benutzer, erzwingt aber die Anzeige der Faillog\-Eintr\(:age, selbst wenn diese leer sind\&. .sp With the \fB\-l\fR, @@ -66,7 +66,7 @@ options, the users\*(Aq records are changed, even if the user does not exist on .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-l\fR, \fB\-\-lock\-secs\fR\ \&\fISEC\fR @@ -100,7 +100,7 @@ is required for this option\&. .PP \fB\-r\fR, \fB\-\-reset\fR .RS 4 -setzt die Z\(:ahlerst\(:ande der fehlgeschlagenen Anmeldeversuche zur\(:uck +setzt die Z\(:ahler f\(:ur Anmeldefehlschl\(:age zur\(:uck\&. .sp Write access to /var/log/faillog @@ -157,7 +157,7 @@ flag\&. .PP /var/log/faillog .RS 4 -Datei mit fehlgeschlagenen Anmeldungen +Datei zur Protokollierung von Anmeldefehlchl\(:agen .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/groupadd.8 b/man/de/man8/groupadd.8 index 3bbc5f6..3caed39 100644 --- a/man/de/man8/groupadd.8 +++ b/man/de/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GROUPADD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "GROUPADD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupadd \- erstellt eine neue Gruppe .SH "\(:UBERSICHT" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fIOPTIONEN\fR] \fINEWGROUP\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "BESCHREIBUNG" .PP The @@ -74,7 +74,7 @@ description\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-K\fR, \fB\-\-key\fR\ \&\fIKEY\fR=\fIVALUE\fR @@ -120,7 +120,7 @@ Sie sollten sicherstellen, dass das Passwort den Passwortrichtlinien des Systems .PP \fB\-r\fR, \fB\-\-system\fR .RS 4 -erstellt eine neue Systemgruppe +erstelle eine neue Systemgruppe\&. .sp The numeric identifiers of new system groups are chosen in the \fBSYS_GID_MIN\fR\-\fBSYS_GID_MAX\fR @@ -171,16 +171,16 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "WARNUNGEN" .PP -Sie k\(:onnen einen Benutzer nicht einer NIS\- oder LDAP\-Gruppe hinzuf\(:ugen\&. Dies m\(:ussen Sie auf dem entsprechenden Server durchf\(:uhren\&. +NIS\- oder LDAP\-Gruppe k\(:onnen nicht erzeugt werden\&. Dies m\(:ussen Sie auf dem entsprechenden Server durchf\(:uhren\&. .PP If the groupname already exists in an external group database such as NIS or LDAP, \fBgroupadd\fR diff --git a/man/de/man8/groupdel.8 b/man/de/man8/groupdel.8 index c537d57..4db2fad 100644 --- a/man/de/man8/groupdel.8 +++ b/man/de/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GROUPDEL" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "GROUPDEL" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- l\(:oscht eine Gruppe .SH "\(:UBERSICHT" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIOptionen\fR] \fIGRUPPE\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "BESCHREIBUNG" .PP The @@ -51,7 +51,7 @@ This option forces the removal of the group, even if there\*(Aqs some user havin .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -73,9 +73,9 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .RE .SH "WARNUNGEN" .PP -Sie k\(:onnen nicht die Hauptgruppe eines Benutzers entfernen\&. Dazu m\(:ussten Sie zun\(:achst den betreffenden Benutzer l\(:oschen\&. +Sie k\(:onnen nicht die prim\(:are Gruppe eines existierenden Benutzers entfernen\&. Dazu m\(:ussen Sie zun\(:achst den betreffenden Benutzer l\(:oschen\&. .PP -Sie sollten von Hand alle Systemdateien \(:uberpr\(:ufen, um sicherzustellen, dass keine Dateien, die der gel\(:oschten Gruppe angeh\(:oren, vorhanden sind\&. +Sie sollten von Hand alle Dateisysteme \(:uberpr\(:ufen, um sicherzustellen, dass keine der gel\(:oschten Gruppe zugeh\(:origen Dateien zur\(:uckbleiben\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -90,7 +90,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .SH "R\(:UCKGABEWERTE" .PP diff --git a/man/de/man8/groupmems.8 b/man/de/man8/groupmems.8 index 199cf7c..f741428 100644 --- a/man/de/man8/groupmems.8 +++ b/man/de/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GROUPMEMS" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "GROUPMEMS" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -groupmems \- verwaltet die Mitglieder der Hauptgruppe eines Benutzers +groupmems \- verwaltet die Mitglieder der prim\(:aren Gruppe des Benutzers .SH "\(:UBERSICHT" .HP \w'\fBgroupmems\fR\ 'u \fBgroupmems\fR \-a\ \fIuser_name\fR | \-d\ \fIuser_name\fR | [\-g\ \fIgroup_name\fR] | \-l | \-p @@ -51,7 +51,7 @@ command are: .PP \fB\-a\fR, \fB\-\-add\fR\ \&\fIuser_name\fR .RS 4 -Add a user to the group membership list\&. +f\(:ugt einen Benutzer der Mitgliederliste der Gruppe hinzu\&. .sp If the /etc/gshadow @@ -62,7 +62,7 @@ file, a new entry will be created\&. .PP \fB\-d\fR, \fB\-\-delete\fR\ \&\fIuser_name\fR .RS 4 -L\(:oscht einen Benutzer aus der Mitgliederliste der Gruppe\&. +l\(:oscht einen Benutzer aus der Mitgliederliste der Gruppe\&. .sp If the /etc/gshadow @@ -77,22 +77,22 @@ file, a new entry will be created\&. .PP \fB\-g\fR, \fB\-\-group\fR\ \&\fIgroup_name\fR .RS 4 -Root kann eine Gruppen bestimmen, deren Mitgliederliste er bearbeiten will\&. +gibt die Gruppe an, wenn eine Mitgliederliste durch den Systemadministrator bearbeitet wird\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-l\fR, \fB\-\-list\fR .RS 4 -gibt die Mitgliederliste aus +gibt die Mitgliederliste aus\&. .RE .PP \fB\-p\fR, \fB\-\-purge\fR .RS 4 -l\(:oscht alle Benutzer aus der Mitgliederliste der Gruppe +l\(:oscht alle Benutzer aus der Mitgliederliste der Gruppe\&. .sp If the /etc/gshadow @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi @@ -151,7 +151,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -verschl\(:usselte Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/groupmod.8 b/man/de/man8/groupmod.8 index e0be747..4117b74 100644 --- a/man/de/man8/groupmod.8 +++ b/man/de/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GROUPMOD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "GROUPMOD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -groupmod \- \(:andert die Eigenschaften einer Gruppe auf dem System +groupmod \- \(:andert eine Gruppendefinition auf dem System .SH "\(:UBERSICHT" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIOptionen\fR] \fIGRUPPE\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "BESCHREIBUNG" .PP The @@ -63,7 +63,7 @@ must be a non\-negative decimal integer\&. This value must be unique, unless the \fB\-o\fR option is used\&. .sp -Benutzer, welche die Gruppe als Hauptgruppe verwenden, werden aktualisiert, um die Gruppe als Hauptgruppe zu behalten\&. +Bei Benutzern, f\(:ur die die Gruppe die prim\(:are Gruppe darstellt, wird der Eintrag aktualisiert, damit die Zuordnung zu dieser Gruppe erhalten bleibt\&. .sp Any files that have the old group ID and must continue to belong to \fIGROUP\fR, must have their group ID changed manually\&. @@ -79,7 +79,7 @@ from .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-n\fR, \fB\-\-new\-name\fR\ \&\fINEW_GROUP\fR @@ -156,12 +156,12 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .PP /etc/passwd diff --git a/man/de/man8/grpck.8 b/man/de/man8/grpck.8 index 07a9cd2..72f2779 100644 --- a/man/de/man8/grpck.8 +++ b/man/de/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "GRPCK" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "GRPCK" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- \(:uberpr\(:uft die Stimmigkeit der Gruppendateien .SH "\(:UBERSICHT" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [Optionen] [\fIGruppe\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "BESCHREIBUNG" .PP The @@ -130,7 +130,7 @@ command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-r\fR, \fB\-\-read\-only\fR @@ -188,7 +188,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/passwd diff --git a/man/de/man8/lastlog.8 b/man/de/man8/lastlog.8 index 8f35ebc..dc4c673 100644 --- a/man/de/man8/lastlog.8 +++ b/man/de/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "LASTLOG" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "LASTLOG" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ lastlog \- berichtet die letzte Anmeldung f\(:ur alle oder einen bestimmten Benutzer .SH "\(:UBERSICHT" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fIOptionen\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "BESCHREIBUNG" .PP \fBlastlog\fR @@ -64,7 +64,7 @@ Clear lastlog record of a user\&. This option can be used only together with .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -91,7 +91,7 @@ Print the lastlog records more recent than .PP \fB\-u\fR, \fB\-\-user\fR\ \&\fILOGIN\fR|\fIRANGE\fR .RS 4 -gibt nur die Lastlog\-Eintr\(:age f\(:ur die angegebenen Benutzer aus +gibt nur die Lastlog\-Eintr\(:age f\(:ur die angegebenen Benutzer aus\&. .sp The users can be specified by a login name, a numerical user ID, or a \fIRANGE\fR @@ -104,7 +104,7 @@ If the user has never logged in the message \fI** Never logged in**\fR will be displayed instead of the port and time\&. .PP -Es werden nur Eintr\(:age f\(:ur auf dem System vorhandene Benutzer angezeigt, selbst wenn Eintr\(:age \(:uber gel\(:oschte Benutzer noch vorhanden sind\&. +Es werden nur Eintr\(:age f\(:ur derzeit angelegte Benutzer angezeigt, Weitere zu gel\(:oschten Benutzern geh\(:orende Eintr\(:age k\(:onnen vorhanden sein\&. .SH "ANMERKUNGEN" .PP The @@ -125,8 +125,8 @@ Datenbank mit Zeiten der letzten Anmeldung der Benutzer .RE .SH "WARNUNGEN" .PP -Gro\(sse L\(:ucken in den UID\-Zahlen haben zur Folge, dass das Lastlog\-Programm l\(:angere Zeit ohne Bildschirmausgabe l\(:auft\&. Wenn sich z\&.B\&. in der Datenbank von Lastlog kein Eintrag f\(:ur Benutzer mit der UID zwischen 170 und 800 befindet, wird es scheinen, als ob lastlog stehen geblieben ist, w\(:ahrend es die Eintr\(:age mit der UID 171 bis 799 verarbeitet\&. +Gro\(sse L\(:ucken in den Benutzerkennungen haben zur Folge, dass das Lastlog\-Programm l\(:angere Zeit nichts auf den Bildschirm ausgibt\&. Wenn sich z\&.B\&. in der Lastlog\-Datenbank kein Eintrag f\(:ur Benutzer mit der Kennung zwischen 170 und 800 befindet, wird es, w\(:ahrend der Verarbeitung der Eintr\(:age zu den Kennungen 171 bis 799, scheinen, als sei lastlog stehen geblieben\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/de/man8/logoutd.8 b/man/de/man8/logoutd.8 index 2abfeec..e9cad46 100644 --- a/man/de/man8/logoutd.8 +++ b/man/de/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "LOGOUTD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "LOGOUTD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -logoutd \- richtet Beschr\(:ankung von Anmeldezeiten ein +logoutd \- setzt die zeitlichen Einschr\(:ankungen f\(:ur Anmeldungen durch .SH "\(:UBERSICHT" .HP \w'\fBlogoutd\fR\ 'u \fBlogoutd\fR @@ -48,10 +48,10 @@ is terminated\&. .PP /etc/porttime .RS 4 -Datei, die den Port\-Zugriff enth\(:alt\&. +Datei, die Zugriffe auf Ports regelt .RE .PP /var/run/utmp .RS 4 -Liste der aktuellen angemeldeten Sitzungen +Liste aktueller Anmeldungen .RE diff --git a/man/de/man8/newusers.8 b/man/de/man8/newusers.8 index 5a69c81..0a4b9fc 100644 --- a/man/de/man8/newusers.8 +++ b/man/de/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "NEWUSERS" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "NEWUSERS" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,10 +28,10 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -newusers \- erstellt oder aktualisiert mehrere neue Benutzer am St\(:uck +newusers \- erstellt neue oder aktualisiert vorhandene Benutzerkonten in einem Aufruf .SH "\(:UBERSICHT" .HP \w'\fBnewusers\fR\ 'u -\fBnewusers\fR [\fIOptionen\fR] [\fIDatei\fR] +\fBnewusers\fR [\fIoptions\fR] [\fIfile\fR] .SH "BESCHREIBUNG" .PP The @@ -41,44 +41,44 @@ command reads a (or the standard input by default) and uses this information to update a set of existing users or to create new users\&. Each line is in the same format as the standard password file (see \fBpasswd\fR(5)) with the exceptions explained below: .PP -pw_Name:pw_Passwort:pw_uid:pw_gid:pw_gecos:pw_Verz:pw_shell +pw_Name:pw_Passwort:pw_Benutzerkennung:pw_Gruppenkennung:pw_GECOS:pw_Verzeichnis:pw_Shell .PP -\fIpw_Name\fR +\fIpw_name\fR .RS 4 -Dies ist der Name des Benutzers\&. +Dies ist der Anmeldename des Benutzers\&. .sp It can be the name of a new user or the name of an existing user (or a user created before by \fBnewusers\fR)\&. In case of an existing user, the user\*(Aqs information will be changed, otherwise a new user will be created\&. .RE .PP -\fIpw_Passwort\fR +\fIpw_passwd\fR .RS 4 -Dieses Feld wird verschl\(:usselt und als neuer Wert f\(:ur das verschl\(:usselte Passwort verwendet\&. +Dieses Feld wird verschl\(:usselt und als neues verschl\(:usseltes Passwort benutzt\&. .RE .PP \fIpw_uid\fR .RS 4 -Mit diesem Feld wird die UID des Benutzers bestimmt\&. +Mit diesem Feld wird die Benutzerkennung festgelegt\&. .sp If the field is empty, a new (unused) UID will be defined automatically by \fBnewusers\fR\&. .sp -Wenn dieses Feld eine Zahl enth\(:alt, wird sie als UID verwendet\&. +Wenn dieses Feld eine Zahl enth\(:alt, wird sie als Benutzerkennung \(:ubernommen\&. .sp If this field contains the name of an existing user (or the name of a user created before by \fBnewusers\fR), the UID of the specified user will be used\&. .sp -Falls die UID eines bestehenden Benutzers ver\(:andert wird, muss der Eigent\(:umer der Dateien des Benutzers per Hand angepasst werden\&. +Falls die Kennung eines bestehenden Benutzers ver\(:andert wird, muss bei den Dateien des Benutzers der Eigent\(:umer per Hand angepasst werden\&. .RE .PP \fIpw_gid\fR .RS 4 -Mit diesem Feld wird die ID der Hauptgruppe des Benutzers definiert\&. +Mit diesem Feld wird die Kennung der prim\(:aren Gruppe des Benutzers festgelegt\&. .sp If this field contains the name of an existing group (or a group created before by \fBnewusers\fR), the GID of this group will be used as the primary group ID for the user\&. .sp -Wenn dieses Feld eine Zahl enth\(:alt, wird sie als ID der Hauptgruppe des Benutzers verwendet\&. Falls eine Gruppe mit dieser GID nicht existiert, wird eine neue Gruppe mit dieser GID unter dem Namen des Benutzers erstellt\&. +Wenn dieses Feld eine Zahl enth\(:alt, wird sie als Kennung der prim\(:aren Gruppe des Benutzers verwendet\&. Falls keine Gruppe mit dieser Kennung existiert, wird eine neue Gruppe mit dieser Kennung und dem Namen des Benutzers erstellt\&. .sp If this field is empty, a new group will be created with the name of the user and a GID will be automatically defined by \fBnewusers\fR @@ -95,9 +95,9 @@ to be used as the primary group ID for the user and GID for the new group\&. Dieses Feld wird in das GECOS\-Feld des Benutzers kopiert\&. .RE .PP -\fIpw_Verz\fR +\fIpw_dir\fR .RS 4 -Mit diesem Feld wird das Home\-Verzeichnis des Benutzers definiert\&. +In diesem Feld wird das pers\(:onliche Verzeichnis des Benutzers definiert\&. .sp If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that \fInewusers does not create parent directories \fR @@ -110,13 +110,13 @@ does not move or copy the content of the old directory to the new location\&. Th .PP \fIpw_shell\fR .RS 4 -Mit diesem Feld wird die Shell des Benutzers definiert\&. Diese Eingabe wird nicht \(:uberpr\(:uft\&. +Mit diesem Feld wird die Shell des Benutzers festgelegt, wobei diese Eingabe nicht \(:uberpr\(:uft wird\&. .RE .PP \fBnewusers\fR first tries to create or change all the specified users, and then write these changes to the user or group databases\&. If an error occurs (except in the final writes to the databases), no changes are committed to the databases\&. .PP -Dieser Befehl ist f\(:ur den Einsatz in einer Umgebung mit zahlreichen Systemen vorgesehen, in der viele Konten gleichzeitig aktualisiert werden m\(:ussen\&. +Dieser Befehl ist f\(:ur weitreichende Systeme gedacht, bei denenviele Konten gleichzeitig angelegt werden m\(:ussen\&. .SH "OPTIONEN" .PP The options which apply to the @@ -125,19 +125,19 @@ command are: .PP \fB\-\-badname\fR\ \& .RS 4 -Allow names that do not conform to standards\&. +erlaube Namen, die nicht den Standards entsprechen\&. .RE .PP \fB\-c\fR, \fB\-\-crypt\-method\fR .RS 4 -Definiert die Methode, mit der die Passw\(:orter verschl\(:usselt werden\&. +definiert die Methode, mit der die Passw\(:orter verschl\(:usselt werden\&. .sp -Die verf\(:ugbaren Methoden sind DES, MD5, NONE und SHA256 oder SHA512, soweit Ihre libc sie unterst\(:utzt\&. +Die verf\(:ugbaren Methoden sind, sofern Ihre libc diese bereitstellt, DES, MD5, NONE und SHA256 oder SHA512\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-r\fR, \fB\-\-system\fR @@ -166,22 +166,21 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR .RS 4 -Verwendet die angegebene Anzahl von Runden, um die Passw\(:orter zu verschl\(:usseln\&. +legt die Anzahl von Runden beim Verschl\(:usseln von Passw\(:ortern fest\&. .sp -Ein Wert von 0 bedeutet, dass das System die Standardanzahl der Runden (5000) f\(:ur die Verschl\(:usselung verwenden wird\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Der Mindestwert ist 1000, der H\(:ochstwert 999\&.999\&.999\&. -.sp -Sie k\(:onnen diese Option nur mit den Verschl\(:usselungsmethoden SHA256 und SHA512 verwenden\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "WARNUNGEN" .PP Die Eingabedatei muss gesch\(:utzt werden, da sie unverschl\(:usselte Passw\(:orter enth\(:alt\&. .PP -Sie sollten darauf achten, dass Passw\(:orter und Verschl\(:usselungsmethode in Einklage mit der Passwortrichtlinie des Systems stehen\&. +Sie sollten darauf achten, dass Passw\(:orter und Verschl\(:usselungsmethode in Einklang mit der Passwortrichtlinie des Systems stehen\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -201,7 +200,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/group @@ -211,22 +210,22 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .PP /etc/subgid .RS 4 -Per user subordinate group IDs\&. +enth\(:alt untergeordnete Gruppenkennungen der einzelnen Benutzer\&. .RE .PP /etc/subuid .RS 4 -Per user subordinate user IDs\&. +enth\(:alt untergeordnete Benutzerkennungen der einzelnen Benutzer\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/nologin.8 b/man/de/man8/nologin.8 index c019453..57ece97 100644 --- a/man/de/man8/nologin.8 +++ b/man/de/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "NOLOGIN" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "NOLOGIN" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/pwck.8 b/man/de/man8/pwck.8 index 90dc820..f3cd654 100644 --- a/man/de/man8/pwck.8 +++ b/man/de/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "PWCK" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "PWCK" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ pwck \- verify the integrity of password files .SH "\(:UBERSICHT" .HP \w'\fBpwck\fR\ 'u -\fBpwck\fR [Optionen] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] +\fBpwck\fR [options] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] .SH "BESCHREIBUNG" .PP The @@ -85,7 +85,7 @@ eine g\(:ultige Benutzer\- und Gruppenkennung .sp -1 .IP \(bu 2.3 .\} -eine g\(:ultige Hauptgruppe +eine g\(:ultige prim\(:are Gruppe .RE .sp .RS 4 @@ -96,7 +96,7 @@ eine g\(:ultige Hauptgruppe .sp -1 .IP \(bu 2.3 .\} -ein g\(:ultiges Home\-Verzeichnis +ein g\(:ultiges pers\(:onliches Verzeichnis .RE .sp .RS 4 @@ -126,7 +126,11 @@ Diese Tests umfassen Folgendes: .sp -1 .IP \(bu 2.3 .\} -ob jedem Eintrag in passwd ein Eintrag in shadow entspricht und umgekehrt +ob es zu jedem Eintrag in +passwd +einen passenden Eintrag in +shadow +und umgekehrt gibt .RE .sp .RS 4 @@ -137,7 +141,7 @@ ob jedem Eintrag in passwd ein Eintrag in shadow entspricht und umgekehrt .sp -1 .IP \(bu 2.3 .\} -ob die Passw\(:orter in der Shadow\-Datei niedergelegt sind +ob die Passw\(:orter in der gesch\(:utzten Datei abgelegt sind .RE .sp .RS 4 @@ -148,7 +152,7 @@ ob die Passw\(:orter in der Shadow\-Datei niedergelegt sind .sp -1 .IP \(bu 2.3 .\} -ob die shadow\-Eintr\(:age die richtige Anzahl von Feldern haben +ob die Eintr\(:age der gesch\(:utzten Datei die richtige Anzahl von Feldern haben .RE .sp .RS 4 @@ -159,7 +163,7 @@ ob die shadow\-Eintr\(:age die richtige Anzahl von Feldern haben .sp -1 .IP \(bu 2.3 .\} -ob die Shadow\-Eintr\(:age in shadow eindeutig sind +ob die Eintr\(:age in der gesch\(:utzten Datei nicht mehrfach vorkommen .RE .sp .RS 4 @@ -196,17 +200,17 @@ command are: .PP \fB\-\-badname\fR\ \& .RS 4 -Allow names that do not conform to standards\&. +erlaube Namen, die nicht den Standards entsprechen\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR .RS 4 -meldet nur Fehler\&. Warnungen, die keine Handlung des Benutzers erfordern, werden nicht angezeigt +meldet nur Fehler\&. Warnungen, die keine Handlung des Benutzers erfordern, werden nicht angezeigt\&. .RE .PP \fB\-r\fR, \fB\-\-read\-only\fR @@ -263,7 +267,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .SH "R\(:UCKGABEWERTE" .PP diff --git a/man/de/man8/pwconv.8 b/man/de/man8/pwconv.8 index bf02773..98cd602 100644 --- a/man/de/man8/pwconv.8 +++ b/man/de/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "PWCONV" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "PWCONV" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,16 +28,16 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -pwconv, pwunconv, grpconv, grpunconv \- konvertiert zu oder von Shadow\-Passw\(:ortern und \-gruppen +pwconv, pwunconv, grpconv, grpunconv \- transferieren Passwortdaten \(:uber Benutzer oder Gruppen in gesch\(:utzte Dateien oder zur\(:uck .SH "\(:UBERSICHT" .HP \w'\fBpwconv\fR\ 'u -\fBpwconv\fR [\fIOptionen\fR] +\fBpwconv\fR [\fIoptions\fR] .HP \w'\fBpwunconv\fR\ 'u -\fBpwunconv\fR [\fIOptionen\fR] +\fBpwunconv\fR [\fIoptions\fR] .HP \w'\fBgrpconv\fR\ 'u -\fBgrpconv\fR [\fIOptionen\fR] +\fBgrpconv\fR [\fIoptions\fR] .HP \w'\fBgrpunconv\fR\ 'u -\fBgrpunconv\fR [\fIOptionen\fR] +\fBgrpunconv\fR [\fIoptions\fR] .SH "BESCHREIBUNG" .PP The @@ -119,7 +119,7 @@ commands are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -154,7 +154,7 @@ change the behavior of .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/sulogin.8 b/man/de/man8/sulogin.8 index 0b05b63..1244de9 100644 --- a/man/de/man8/sulogin.8 +++ b/man/de/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "SULOGIN" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "SULOGIN" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -88,7 +88,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/de/man8/useradd.8 b/man/de/man8/useradd.8 index 9bcbbfc..7920dbf 100644 --- a/man/de/man8/useradd.8 +++ b/man/de/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "USERADD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "USERADD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,11 +31,11 @@ useradd \- erstellt einen neuen Benutzer oder aktualisiert die Standardwerte f\(:ur neue Benutzer .SH "\(:UBERSICHT" .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR [\fIOptionen\fR] \fIANMELDENAME\fR +\fBuseradd\fR [\fIoptions\fR] \fILOGIN\fR .HP \w'\fBuseradd\fR\ 'u \fBuseradd\fR \-D .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR \-D [\fIOptionen\fR] +\fBuseradd\fR \-D [\fIoptions\fR] .SH "BESCHREIBUNG" .PP When invoked without the @@ -59,7 +59,7 @@ command are: .PP \fB\-\-badname\fR\ \& .RS 4 -Allow names that do not conform to standards\&. +erlaube Namen, die nicht den Standards entsprechen\&. .RE .PP \fB\-b\fR, \fB\-\-base\-dir\fR\ \&\fIBASE_DIR\fR @@ -169,12 +169,16 @@ variable in .RS 4 A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the \fB\-g\fR -option\&. The default is for the user to belong only to the initial group\&. +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-k\fR, \fB\-\-skel\fR\ \&\fISKEL_DIR\fR @@ -194,7 +198,11 @@ variable in or, by default, /etc/skel\&. .sp -Soweit m\(:oglich, werden die ACLs und erweiterten Attribute kopiert\&. +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp +Soweit m\(:oglich, werden die ACLs und erweiterte Attribute kopiert\&. .RE .PP \fB\-K\fR, \fB\-\-key\fR\ \&\fIKEY\fR=\fIVALUE\fR @@ -219,9 +227,13 @@ options can be specified, e\&.g\&.: .PP \fB\-l\fR, \fB\-\-no\-log\-init\fR .RS 4 -F\(:ugt den Benutzer nicht zu den Datenbanken lastlog und faillog hinzu\&. +l\(:asst den Benutzer bei den Aufzeichnungen von +\fBlastlog\fR(8) +und +\fBfaillog\fR(8) +au\(ssen vor\&. .sp -By default, the user\*(Aqs entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user\&. +Standardm\(:a\(ssig werden die Benutzereintr\(:age in den Datenbanken f\(:ur lastlog und faillog zur\(:uckgesetzt, um zu vermeiden, dass der Eintrag eines fr\(:uher gel\(:oschten Benutzers erneut verwendet wird\&. .sp If this option is not specified, \fBuseradd\fR @@ -366,7 +378,7 @@ description\&. .PP \fB\-U\fR, \fB\-\-user\-group\fR .RS 4 -erstellt eine Gruppe mit dem gleichen Name wie der Benutzer und f\(:ugt diesen der Gruppe hinzu +erstellt eine Gruppe mit dem gleichen Namen wie der Benutzer und f\(:ugt diesen der Gruppe hinzu\&. .sp The default behavior (if the \fB\-g\fR, @@ -380,9 +392,21 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -defines the SELinux user for the new account\&. Without this option, a SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses \fBsemanage\fR(8) for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "Die Standardwerte ver\(:andern" .PP @@ -459,7 +483,7 @@ directory (or any other skeleton directory specified in or on the command line)\&. .SH "WARNUNGEN" .PP -Sie d\(:urfen einen Benutzer nicht einer NIS\- oder LDAP\-Gruppe hinzuf\(:ugen\&. Dies muss auf dem entsprechenden Server durchgef\(:uhrt werden\&. +Sie d\(:urfen einer NIS\- oder LDAP\-Gruppe keine Benutzer hinzuf\(:ugen\&. Dies muss auf dem entsprechenden Server durchgef\(:uhrt werden\&. .PP Similarly, if the username already exists in an external user database such as NIS or LDAP, \fBuseradd\fR @@ -469,7 +493,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or \fBls\fR output\&. .PP -Benutzernamen d\(:urfen nur bis zu 32 Zeichen lang sein\&. +Benutzernamen d\(:urfen nur bis zu 256 Zeichen lang sein\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -484,7 +508,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/group @@ -494,7 +518,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/default/useradd @@ -518,22 +542,22 @@ will execute after user addition\&. If a script exits non\-zero then execution w .PP /etc/skel/ .RS 4 -Verzeichnis, das die Standarddateien enth\(:alt +Verzeichnis, das die Dateien mit Standardwerten enth\(:alt .RE .PP /etc/subgid .RS 4 -Per user subordinate group IDs\&. +enth\(:alt untergeordnete Gruppenkennungen der einzelnen Benutzer\&. .RE .PP /etc/subuid .RS 4 -Per user subordinate user IDs\&. +enth\(:alt untergeordnete Benutzerkennungen der einzelnen Benutzer\&. .RE .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .SH "R\(:UCKGABEWERTE" .PP diff --git a/man/de/man8/userdel.8 b/man/de/man8/userdel.8 index 2f138b1..752e07f 100644 --- a/man/de/man8/userdel.8 +++ b/man/de/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "USERDEL" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "USERDEL" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ userdel \- l\(:oscht ein Benutzerkonto und die dazugeh\(:origen Dateien .SH "\(:UBERSICHT" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [Optionen] \fIANMELDENAME\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "BESCHREIBUNG" .PP The @@ -62,12 +62,12 @@ This option is dangerous and may leave your system in an inconsistent state\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-r\fR, \fB\-\-remove\fR .RS 4 -Die Dateien im Home\-Verzeichnis des Benutzers werden zusammen mit dem Home\-Verzeichnis und dem Mailspool entfernt\&. Dateien, die sich nicht unterhalb des Home\-Verzeichnisses befinden, m\(:ussen per Hand gesucht und gel\(:oscht werden\&. +entfernt das pers\(:onliche Verzeichnis des Benutzers mit den darin enthaltenen Dateiein und die Mail\-Warteschlange\&. Dateien in anderen Dateisystemen m\(:ussen per Hand gesucht und gel\(:oscht werden\&. .sp The mail spool is defined by the \fBMAIL_DIR\fR @@ -96,7 +96,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR .RS 4 -entfernt die Zuordnung von SELinux\-Benutzern aus den Anmeldeinformationen des Benutzers +entfernt jegliche Zuordnung zu SELinux\-Benutzern f\(:ur das Benutzerkonto\&. .RE .SH "KONFIGURATION" .PP @@ -112,7 +112,7 @@ Informationen zu den Gruppenkonten .PP /etc/login\&.defs .RS 4 -Konfiguration der Shadow\-Passwort\-Werkzeugsammlung +konfiguriert die Shadow\-Hilfsprogramme\&. .RE .PP /etc/passwd @@ -122,7 +122,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .PP /etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* @@ -142,12 +142,12 @@ will execute after user deletion\&. If a script exits non\-zero then execution w .PP /etc/subgid .RS 4 -Per user subordinate group IDs\&. +enth\(:alt untergeordnete Gruppenkennungen der einzelnen Benutzer\&. .RE .PP /etc/subuid .RS 4 -Per user subordinate user IDs\&. +enth\(:alt untergeordnete Benutzerkennungen der einzelnen Benutzer\&. .RE .SH "R\(:UCKGABEWERTE" .PP @@ -196,9 +196,9 @@ will not allow you to remove an account if there are running processes which bel \fB\-f\fR option can force the deletion of this account\&. .PP -Sie sollten von Hand alle Systemdateien \(:uberpr\(:ufen, um sicherzustellen, dass keine Dateien vorhanden sind, die dem gel\(:oschten Benutzer geh\(:oren\&. +Sie sollten von Hand alle Dateisysteme in Hinblick auf Dateien dieses Benutzers pr\(:ufen und sie gegebenenfalls l\(:oschen\&. .PP -Sie sollten keine NIS\-Attribute auf einem NIS\-Client l\(:oschen\&. Dies muss auf dem NIS\-Server durchgef\(:uhrt werden\&. +Sie d\(:urfen keine NIS\-Attribute auf einem NIS\-Client l\(:oschen\&. Dies muss auf dem NIS\-Server durchgef\(:uhrt werden\&. .PP If \fBUSERGROUPS_ENAB\fR diff --git a/man/de/man8/usermod.8 b/man/de/man8/usermod.8 index 196435d..84a76b6 100644 --- a/man/de/man8/usermod.8 +++ b/man/de/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "USERMOD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "USERMOD" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ usermod \- ver\(:andert ein Benutzerkonto .SH "\(:UBERSICHT" .HP \w'\fBusermod\fR\ 'u -\fBusermod\fR [\fIOptionen\fR] \fIANMELDENAME\fR +\fBusermod\fR [\fIoptions\fR] \fILOGIN\fR .SH "BESCHREIBUNG" .PP The @@ -52,7 +52,7 @@ option\&. .PP \fB\-b\fR, \fB\-\-badname\fR .RS 4 -Allow names that do not conform to standards\&. +erlaube Namen, die nicht den Standards entsprechen\&. .RE .PP \fB\-c\fR, \fB\-\-comment\fR\ \&\fICOMMENT\fR @@ -65,7 +65,7 @@ utility\&. .PP \fB\-d\fR, \fB\-\-home\fR\ \&\fIHOME_DIR\fR .RS 4 -das neue Home\-Verzeichnis des Benutzers +\(:andert das pers\(:onliche Verzeichnis des Benutzers .sp If the \fB\-m\fR @@ -103,9 +103,9 @@ entry will be created if there were none\&. .RS 4 The name or numerical ID of the user\*(Aqs new primary group\&. The group must exist\&. .sp -Jede Datei im Home\-Verzeichnis des Benutzers, die der alten Hauptgruppe des Benutzers geh\(:orte, wird dieser neuen Gruppe geh\(:oren\&. +Im pers\(:onlichen Verzeichnis des Benutzers werden alle Dateien, die der alten prim\(:aren Gruppe zugeordnet waren, auf diese Gruppe \(:ubertragen\&. .sp -Die Gruppenzugeh\(:origkeit von Dateien au\(sserhalb des Home\-Verzeichnisses des Benutzers muss per Hand angepasst werden\&. +Die Gruppenzugeh\(:origkeit von Dateien au\(sserhalb des pers\(:onlichen Verzeichnisses des Benutzers muss per Hand angepasst werden\&. .sp The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as /\&. @@ -212,9 +212,9 @@ This value must be unique, unless the \fB\-o\fR option is used\&. The value must be non\-negative\&. .sp -F\(:ur die Mailbox des Benutzers und alle Dateien, die ihm geh\(:oren und sich in seinem Home\-Verzeichnis befinden, wird die ID des Eigent\(:umers automatisch angepasst\&. +F\(:ur das Postfach des Benutzers und alle Dateien, die ihm geh\(:oren und sich in seinem pers\(:onlichen Verzeichnis befinden, wird die Eigent\(:umerkennung automatisch angepasst\&. .sp -Der Eigent\(:umer von Dateien au\(sserhalb des Home\-Verzeichnisses des Benutzers muss per Hand angepasst werden\&. +Der Eigent\(:umer von Dateien au\(sserhalb des pers\(:onlichen Verzeichnisses des Benutzers muss per Hand angepasst werden\&. .sp The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as /\&. @@ -246,7 +246,7 @@ value from .PP \fB\-v\fR, \fB\-\-add\-subuids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 -Add a range of subordinate uids to the user\*(Aqs account\&. +f\(:ugt dem Konto des Benutzers einen Bereich untergeordneter Benutzerkennungen zu\&. .sp This option may be specified multiple times to add multiple ranges to a user\*(Aqs account\&. .sp @@ -259,7 +259,7 @@ from /etc/login\&.defs\&. .PP \fB\-V\fR, \fB\-\-del\-subuids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 -Remove a range of subordinate uids from the user\*(Aqs account\&. +entfernt aus dem Benutzerkonto einen Bereich untergeordneter Benutzerkennungen\&. .sp This option may be specified multiple times to remove multiple ranges to a user\*(Aqs account\&. When both \fB\-\-del\-subuids\fR @@ -276,7 +276,7 @@ from /etc/login\&.defs\&. .PP \fB\-w\fR, \fB\-\-add\-subgids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 -Add a range of subordinate gids to the user\*(Aqs account\&. +f\(:ugt dem Benutzerkonto einen Bereich untergeordneter Gruppenkennungen zu\&. .sp This option may be specified multiple times to add multiple ranges to a user\*(Aqs account\&. .sp @@ -289,7 +289,7 @@ from /etc/login\&.defs\&. .PP \fB\-W\fR, \fB\-\-del\-subgids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 -Remove a range of subordinate gids from the user\*(Aqs account\&. +entfernt einen Bereich untergeordneter Gruppenkennungen aus dem Benutzerkonto\&. .sp This option may be specified multiple times to remove multiple ranges to a user\*(Aqs account\&. When both \fB\-\-del\-subgids\fR @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "WARNUNGEN" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -321,7 +333,7 @@ files or \fBat\fR jobs manually\&. .PP -Sie m\(:ussen alle \(:Anderung in Bezug auf NIS auf dem NIS\-Server vornehmen\&. +Sie m\(:ussen alle \(:Anderungen, an welchen NIS beteiligt ist, auf dem NIS\-Server vornehmen\&. .SH "KONFIGURATION" .PP The following configuration variables in @@ -336,7 +348,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/de/man8/vipw.8 b/man/de/man8/vipw.8 index cbdf0e0..865106c 100644 --- a/man/de/man8/vipw.8 +++ b/man/de/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08.11.2022 -.\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.13 +.\" Date: 21.06.2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: German .\" -.TH "VIPW" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung" +.TH "VIPW" "8" "21.06.2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,19 +28,19 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -vipw, vigr \- bearbeitet die Passwort\-, Gruppen\-, Shadow\-Passwort\- oder Shadow\-Gruppen\-Datei +vipw, vigr \- bearbeitet die Passwort\- und die Gruppendatei in den ungesch\(:utzten und gesch\(:utzen Versionen .SH "\(:UBERSICHT" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fIOptionen\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fIOptionen\fR] +\fBvigr\fR [\fIoptions\fR] .SH "BESCHREIBUNG" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the @@ -62,17 +62,17 @@ commands are: .PP \fB\-g\fR, \fB\-\-group\fR .RS 4 -bearbeitet die Gruppendatenbank +bearbeitet die Daten bez\(:uglich Gruppen\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -zeigt die Hilfe an und beendet das Programm +zeigt die Hilfe an und beendet das Programm\&. .RE .PP \fB\-p\fR, \fB\-\-passwd\fR .RS 4 -bearbeitet die Passwd\-Datenbank +bearbeitet die Daten bez\(:uglich Benutzern\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR @@ -91,13 +91,13 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-s\fR, \fB\-\-shadow\fR .RS 4 -bearbeitet die Shadow\- oder Gshadow\-Datenbank +bearbeitet die gesch\(:utzten Dateiversionen\&. .RE .SH "UMGEBUNGSVARIABLEN" .PP \fBVISUAL\fR .RS 4 -der verwendete Editor +der zu verwendende Editor .RE .PP \fBEDITOR\fR @@ -115,7 +115,7 @@ Informationen zu den Gruppenkonten .PP /etc/gshadow .RS 4 -sichere Informationen zu den Gruppenkonten +gesch\(:utzte Informationen zu den Gruppenkonten .RE .PP /etc/passwd @@ -125,7 +125,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -verschl\(:usselte Informationen zu den Benutzerkonten +gesch\(:utzte Informationen zu den Benutzerkonten .RE .SH "SIEHE AUCH" .PP diff --git a/man/es/Makefile.in b/man/es/Makefile.in index 268739b..2c658c7 100644 --- a/man/es/Makefile.in +++ b/man/es/Makefile.in @@ -138,6 +138,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -156,6 +158,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -171,9 +174,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -189,6 +198,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -197,6 +207,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -219,6 +231,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/man/fi/Makefile.in b/man/fi/Makefile.in index e8ffecc..468fe98 100644 --- a/man/fi/Makefile.in +++ b/man/fi/Makefile.in @@ -169,6 +169,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -187,6 +189,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -202,9 +205,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -220,6 +229,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -228,6 +238,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -250,6 +262,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/man/fr/Makefile.am b/man/fr/Makefile.am index 230d212..335e029 100644 --- a/man/fr/Makefile.am +++ b/man/fr/Makefile.am @@ -21,7 +21,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -44,6 +43,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ diff --git a/man/fr/Makefile.in b/man/fr/Makefile.in index fb0cf81..daf92b5 100644 --- a/man/fr/Makefile.in +++ b/man/fr/Makefile.in @@ -87,10 +87,11 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@ENABLE_SUBIDS_TRUE@am__append_2 = $(man_subids) -@USE_PAM_TRUE@am__append_3 = $(man_nopam) -@ENABLE_SUBIDS_FALSE@am__append_4 = $(man_subids) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@ENABLE_SUBIDS_TRUE@am__append_3 = $(man_subids) +@USE_PAM_TRUE@am__append_4 = $(man_nopam) +@ENABLE_SUBIDS_FALSE@am__append_5 = $(man_subids) subdir = man/fr ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -178,6 +179,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -196,6 +199,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -211,9 +215,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -229,6 +239,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -237,6 +248,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -259,6 +272,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -334,13 +350,13 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man1/su.1 man5/suauth.5 \ - man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) $(am__append_2) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man1/su.1 man5/suauth.5 man8/useradd.8 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) $(am__append_3) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ @@ -352,9 +368,11 @@ man_subids = \ man5/subgid.5 \ man5/subuid.5 -EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_3) \ - $(am__append_4) +EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_4) \ + $(am__append_5) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -363,8 +381,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -748,10 +773,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -759,7 +784,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -770,11 +795,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/fr/man1/chage.1 b/man/fr/man1/chage.1 index d802a80..364eb3f 100644 --- a/man/fr/man1/chage.1 +++ b/man/fr/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "CHAGE" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "CHAGE" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/fr/man1/chfn.1 b/man/fr/man1/chfn.1 index db9a90c..92452c7 100644 --- a/man/fr/man1/chfn.1 +++ b/man/fr/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "CHFN" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "CHFN" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/chsh.1 b/man/fr/man1/chsh.1 index 7b2febd..18f1b65 100644 --- a/man/fr/man1/chsh.1 +++ b/man/fr/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "CHSH" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "CHSH" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/fr/man1/expiry.1 b/man/fr/man1/expiry.1 index c2e1506..0b237a9 100644 --- a/man/fr/man1/expiry.1 +++ b/man/fr/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "EXPIRY" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "EXPIRY" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/gpasswd.1 b/man/fr/man1/gpasswd.1 index 2aa65f3..c5042b7 100644 --- a/man/fr/man1/gpasswd.1 +++ b/man/fr/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GPASSWD" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "GPASSWD" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ gpasswd \- administer /etc/group and /etc/gshadow .SH "SYNOPSIS" .HP \w'\fBgpasswd\fR\ 'u -\fBgpasswd\fR [\fIoption\fR] \fIgroupe\fR +\fBgpasswd\fR [\fIoption\fR] \fIgroup\fR .SH "DESCRIPTION" .PP The diff --git a/man/fr/man1/groups.1 b/man/fr/man1/groups.1 index 8fd15f6..09413e5 100644 --- a/man/fr/man1/groups.1 +++ b/man/fr/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GROUPS" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "GROUPS" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groups \- Afficher la liste des groupes auxquels appartient l\*(Aqutilisateur .SH "SYNOPSIS" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIutilisateur\fR] +\fBgroups\fR [\fIuser\fR] .SH "DESCRIPTION" .PP The diff --git a/man/fr/man1/id.1 b/man/fr/man1/id.1 index 299c749..1f96b2a 100644 --- a/man/fr/man1/id.1 +++ b/man/fr/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "ID" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "ID" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/login.1 b/man/fr/man1/login.1 index 99d5a5c..6d30e44 100644 --- a/man/fr/man1/login.1 +++ b/man/fr/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "LOGIN" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "LOGIN" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,9 +31,9 @@ login \- D\('emarrer une session sur le syst\(`eme .SH "SYNOPSIS" .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fInom_utilisateur\fR] [\fIENV=VAR\fR...] +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIusername\fR] [\fIENV=VAR\fR...] .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fInom_utilisateur\fR +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIusername\fR .HP \w'\fBlogin\fR\ 'u \fBlogin\fR [\-p] \-r\ \fIhost\fR .SH "DESCRIPTION" diff --git a/man/fr/man1/newgidmap.1 b/man/fr/man1/newgidmap.1 index f455868..28bbee3 100644 --- a/man/fr/man1/newgidmap.1 +++ b/man/fr/man1/newgidmap.1 @@ -2,12 +2,12 @@ .\" Title: newgidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "NEWGIDMAP" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "NEWGIDMAP" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,6 +74,16 @@ before setting /proc/[pid]/gid_map\&. .PP Note that newgidmap may be used only once for a given process\&. +.PP +Instead of an integer process id, the first argument may be specified as +\fIfd:N\fR, where the integer N is the file descriptor number for the calling process\*(Aqs opened file descriptor for the directory +/proc/[pid]\&. In this case, +\fBnewgidmap\fR +will use +openat(2) +to open the +gid_map +file under that directory, avoiding a TOCTTOU in case the process exits and the pid is immediately reused\&. .SH "OPTIONS" .PP There currently are no options to the diff --git a/man/fr/man1/newgrp.1 b/man/fr/man1/newgrp.1 index df5a91e..797403c 100644 --- a/man/fr/man1/newgrp.1 +++ b/man/fr/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "NEWGRP" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "NEWGRP" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newgrp \- se connecter avec un nouveau groupe .SH "SYNOPSIS" .HP \w'\fBnewgrp\fR\ 'u -\fBnewgrp\fR [\-] [\fIgroupe\fR] +\fBnewgrp\fR [\-] [\fIgroup\fR] .SH "DESCRIPTION" .PP The diff --git a/man/fr/man1/newuidmap.1 b/man/fr/man1/newuidmap.1 index 53dedce..da9c65d 100644 --- a/man/fr/man1/newuidmap.1 +++ b/man/fr/man1/newuidmap.1 @@ -2,12 +2,12 @@ .\" Title: newuidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "NEWUIDMAP" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "NEWUIDMAP" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,6 +74,16 @@ before setting /proc/[pid]/uid_map\&. .PP Note that newuidmap may be used only once for a given process\&. +.PP +Instead of an integer process id, the first argument may be specified as +\fIfd:N\fR, where the integer N is the file descriptor number for the calling process\*(Aqs opened file descriptor for the directory +/proc/[pid]\&. In this case, +\fBnewuidmap\fR +will use +openat(2) +to open the +uid_map +file under that directory, avoiding a TOCTTOU in case the process exits and the pid is immediately reused\&. .SH "OPTIONS" .PP There currently are no options to the diff --git a/man/fr/man1/passwd.1 b/man/fr/man1/passwd.1 index 6aad0b7..ae6e0cb 100644 --- a/man/fr/man1/passwd.1 +++ b/man/fr/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "PASSWD" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "PASSWD" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP Le nouveau mot de passe sera demand\('e deux fois \(`a l\*(Aqutilisateur\&. Le second mot de passe est compar\('e avec le premier\&. Ces deux mots de passe devront \(^etre identiques pour que le mot de passe soit chang\('e\&. .PP -La complexit\('e de ce mot de passe est alors test\('ee\&. Comme ligne de conduite g\('en\('erale, un mot de passe doit toujours \(^etre constitu\('e de 6 \(`a 8 caract\(`eres en en choisissant un ou plus parmi chacun des ensembles suivants\ \&: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -caract\(`eres alphab\('etiques minuscules -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -chiffres de 0 \(`a 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -marques de ponctuation -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Astuces pour les mots de passe" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -96,6 +61,8 @@ System encryption method is based on the NBS DES algorithm\&. More recent method .PP Les compromissions de la s\('ecurit\('e des mots de passe r\('esultent le plus souvent d\*(Aqune n\('egligence dans le choix du mot de passe, ou lors de son utilisation\&. Pour cette raison, vous ne devez pas s\('electionner de mot de passe apparaissant dans un dictionnaire ou devant \(^etre \('ecrit\&. Le mot de passe ne doit pas non plus \(^etre un nom propre, un num\('ero min\('eralogique, une date de naissance, ou une adresse\&. En effet ceux\-ci pourraient \(^etre devin\('es pour violer la s\('ecurit\('e du syst\(`eme\&. .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP Vous pouvez trouver des conseils sur la fa\(,con de choisir un mot de passe robuste sur http://en\&.wikipedia\&.org/wiki/Password_strength (en anglais)\&. .SH "OPTIONS" .PP @@ -175,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 Afficher l\*(Aq\('etat d\*(Aqun compte\&. Cet \('etat est constitu\('e de 7 champs\&. Le premier champ est le nom du compte\&. Le second champ indique si le mot de passe est bloqu\('e (L), n\*(Aqa pas de mot de passe (NP) ou a un mot de passe utilisable (P)\&. Le troisi\(`eme champ donne la date de derni\(`ere modification du mot de passe\&. Les quatre champs suivants sont\ \&: la dur\('ee minimum avant modification, la dur\('ee maximum de validit\('e, la dur\('ee d\*(Aqavertissement, et la dur\('ee d\*(Aqinactivit\('e autoris\('ee pour le mot de passe\&. Les dur\('ees sont exprim\('ees en jours\&. @@ -205,6 +178,11 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "AVERTISSEMENTS" .PP La v\('erification de la complexit\('e des mots de passe peut varier d\*(Aqun site \(`a l\*(Aqautre\&. Il est vivement conseill\('e aux utilisateurs de choisir un mot de passe aussi complexe que possible dans la limite de ce qu\*(Aqil est capable de m\('emoriser\&. @@ -277,7 +255,10 @@ invalid argument to option .SH "VOIR AUSSI" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/fr/man1/sg.1 b/man/fr/man1/sg.1 index df41480..967e2d3 100644 --- a/man/fr/man1/sg.1 +++ b/man/fr/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SG" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "SG" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/su.1 b/man/fr/man1/su.1 index ac2f8ee..2b586fb 100644 --- a/man/fr/man1/su.1 +++ b/man/fr/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SU" "1" "08/11/2022" "shadow\-utils 4\&.13" "Commandes utilisateur" +.TH "SU" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ su \- Changer d\*(Aqidentifiant d\*(Aqutilisateur ou devenir superutilisateur .SH "SYNOPSIS" .HP \w'\fBsu\fR\ 'u -\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fInom_utilisateur\fR\ [\ \fIargs\fR\ ]] +\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fIusername\fR\ [\ \fIargs\fR\ ]] .SH "DESCRIPTION" .PP The diff --git a/man/fr/man3/shadow.3 b/man/fr/man3/shadow.3 index d2e598c..1e9729f 100644 --- a/man/fr/man3/shadow.3 +++ b/man/fr/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Appels de biblioth\(`eque -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SHADOW" "3" "08/11/2022" "shadow\-utils 4\&.13" "Appels de biblioth\(`eque" +.TH "SHADOW" "3" "21/06/2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -36,7 +36,7 @@ shadow, getspnam \- routines d\*(Aqutilisation des mots de passe cach\('es \fIstruct spwd *getspent();\fR .PP \fIstruct spwd *getspnam(char\fR -\fI*nom\fR\fI);\fR +\fI*name\fR\fI);\fR .PP \fIvoid setspent();\fR .PP @@ -50,7 +50,7 @@ shadow, getspnam \- routines d\*(Aqutilisation des mots de passe cach\('es .PP \fIint putspent(struct spwd\fR \fI*p,\fR -\fIFICHIER\fR +\fIFILE\fR \fI*fp\fR\fI);\fR .PP \fIint lckpwdf();\fR diff --git a/man/fr/man5/faillog.5 b/man/fr/man5/faillog.5 index 81548d0..e729b0b 100644 --- a/man/fr/man5/faillog.5 +++ b/man/fr/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "FAILLOG" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/gshadow.5 b/man/fr/man5/gshadow.5 index 0a39493..120301d 100644 --- a/man/fr/man5/gshadow.5 +++ b/man/fr/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GSHADOW" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ Ce fichier ne doit pas \(^etre accessible en lecture par les utilisateurs normau .PP Chaque ligne de ce fichier contient les champs suivants, s\('epar\('es par des deux\-points (\(Fo\ \&:\ \&\(Fc)\ \&: .PP -\fBnom du groupe\fR +\fBgroup name\fR .RS 4 Ce doit \(^etre un nom de groupe valable, qui existe sur le syst\(`eme\&. .RE .PP -\fBmot de passe chiffr\('e\fR +\fBencrypted password\fR .RS 4 Refer to \fBcrypt\fR(3) @@ -63,7 +63,7 @@ This password supersedes any password specified in /etc/group\&. .RE .PP -\fBadministrateurs\fR +\fBadministrators\fR .RS 4 Ce champ doit \(^etre une liste d\*(Aqutilisateurs, s\('epar\('es par des virgules\&. .sp @@ -72,7 +72,7 @@ Les administrateurs peuvent modifier le mot de passe ou les membres du groupe\&. Les administrateurs peuvent aussi avoir les m\(^emes permissions que les membres (voir ci\-dessous)\&. .RE .PP -\fBmembres\fR +\fBmembers\fR .RS 4 Ce champ doit \(^etre une liste d\*(Aqutilisateurs, s\('epar\('es par des virgules\&. .sp diff --git a/man/fr/man5/limits.5 b/man/fr/man5/limits.5 index 45ad0fb..4589e59 100644 --- a/man/fr/man5/limits.5 +++ b/man/fr/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "LIMITS" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LIMITS" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -41,11 +41,11 @@ Par d\('efaut, aucun quota (aucune limite) n\*(Aqest impos\('e \(`a \(Fo\ \&root .PP Chaque ligne d\('ecrit une limite pour un utilisateur, elle est de la forme suivante\ \&: .PP -\fIutilisateur LISTE_DE_LIMITES\fR +\fIuser LIMITS_STRING\fR .PP ou sous la forme\ \&: .PP -\fI@groupe LISTE_DE_LIMITES\fR +\fI@group LIMITS_STRING\fR .PP The \fILIMITS_STRING\fR diff --git a/man/fr/man5/login.access.5 b/man/fr/man5/login.access.5 index 42ee60b..0d4767d 100644 --- a/man/fr/man5/login.access.5 +++ b/man/fr/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "LOGIN\&.ACCESS" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/login.defs.5 b/man/fr/man5/login.defs.5 index 7b2424a..845e10b 100644 --- a/man/fr/man5/login.defs.5 +++ b/man/fr/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "LOGIN\&.DEFS" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -192,8 +192,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/fr/man5/passwd.5 b/man/fr/man5/passwd.5 index 989d092..ea061d6 100644 --- a/man/fr/man5/passwd.5 +++ b/man/fr/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "PASSWD" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PASSWD" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/porttime.5 b/man/fr/man5/porttime.5 index b392067..7ea4e73 100644 --- a/man/fr/man5/porttime.5 +++ b/man/fr/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "PORTTIME" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/shadow.5 b/man/fr/man5/shadow.5 index c482e8a..42c8ed2 100644 --- a/man/fr/man5/shadow.5 +++ b/man/fr/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SHADOW" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SHADOW" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ Ce fichier ne doit pas \(^etre accessible en lecture par les utilisateurs normau .PP Each line of this file contains 9 fields, separated by colons (\(Fo\ \&:\ \&\(Fc), in the following order: .PP -\fBnom de connexion de l\*(Aqutilisateur (\(Fo\ \&login\ \&\(Fc)\fR +\fBlogin name\fR .RS 4 Ce doit \(^etre un nom de compte valable, qui existe sur le syst\(`eme\&. .RE .PP -\fBmot de passe chiffr\('e\fR +\fBencrypted password\fR .RS 4 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 /etc/shadow @@ -59,7 +59,7 @@ If the password field contains some string that is not a valid result of \fBcrypt\fR(3), 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)\&. .RE .PP -\fBdate du dernier changement de mot de passe\fR +\fBdate of last password change\fR .RS 4 The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -68,14 +68,14 @@ La valeur 0 a une signification particuli\(`ere\ \&: l\*(Aqutilisateur devra cha Un champ vide indique que les fonctionnalit\('es de vieillissement de mot de passe sont d\('esactiv\('ees\&. .RE .PP -\fB\(^age minimum du mot de passe\fR +\fBminimum password age\fR .RS 4 L\*(Aq\(^age minimum du mot de passe est la dur\('ee (en jour) que l\*(Aqutilisateur devra attendre avant de pouvoir le changer de nouveau\&. .sp An empty field and value 0 mean that there is no minimum password age\&. .RE .PP -\fB\(^age maximum du mot de passe\fR +\fBmaximum password age\fR .RS 4 L\*(Aq\(^age maximum du mot de passe est la dur\('ee (en jour) apr\(`es laquelle l\*(Aqutilisateur devra changer son mot de passe\&. .sp @@ -86,14 +86,14 @@ Un champ vide signifie qu\*(Aqil n\*(Aqy a pour le mot de passe aucune limite d\ Si l\*(Aq\(^age maximum du mot de passe est plus petit que l\*(Aq\(^age minimum du mot de passe, l\*(Aqutilisateur ne pourra pas changer son mot de passe\&. .RE .PP -\fBp\('eriode d\*(Aqavertissement d\*(Aqexpiration du mot de passe\fR +\fBpassword warning period\fR .RS 4 La dur\('ee (en jour) pendant laquelle l\*(Aqutilisateur sera averti avant que le mot de passe n\*(Aqexpire (voir l\*(Aq\(^age maximum du mot de passe ci\-dessus)\&. .sp Un champ vide ou une valeur de 0 signifie qu\*(Aqil n\*(Aqy aura pas de p\('eriode d\*(Aqavertissement d\*(Aqexpiration du mot de passe\&. .RE .PP -\fBp\('eriode d\*(Aqinactivit\('e du mot de passe\fR +\fBpassword inactivity period\fR .RS 4 La dur\('ee (en jour) pendant laquelle le mot de passe sera quand m\(^eme accept\('e apr\(`es son expiration (voir l\*(Aq\(^age maximum du mot de passe ci\-dessus)\&. L\*(Aqutilisateur devra mettre \(`a jour son mot de passe \(`a la prochaine connexion\&. .sp @@ -102,7 +102,7 @@ After expiration of the password and this expiration period is elapsed, no login Un champ vide signifie qu\*(Aqaucune p\('eriode d\*(Aqinactivit\('e n\*(Aqest impos\('ee\&. .RE .PP -\fBdate de fin de validit\('e du compte\fR +\fBaccount expiration date\fR .RS 4 The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -113,7 +113,7 @@ Un champ vide signifie que le compte n\*(Aqexpirera jamais\&. La valeur 0 ne doit pas \(^etre utilis\('ee puisqu\*(Aqelle peut \(^etre interpr\('et\('ee soit comme un compte sans expiration, soit comme ayant expir\('e le 1er\ \&janvier\ \&1970\&. .RE .PP -\fBchamp r\('eserv\('e\fR +\fBreserved field\fR .RS 4 Ce champ est r\('eserv\('e pour une utilisation future\&. .RE diff --git a/man/fr/man5/suauth.5 b/man/fr/man5/suauth.5 index f9f3261..40d7b66 100644 --- a/man/fr/man5/suauth.5 +++ b/man/fr/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SUAUTH" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUAUTH" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/subgid.5 b/man/fr/man5/subgid.5 index e564095..a035d5f 100644 --- a/man/fr/man5/subgid.5 +++ b/man/fr/man5/subgid.5 @@ -2,12 +2,12 @@ .\" Title: subgid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SUBGID" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUBGID" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/subuid.5 b/man/fr/man5/subuid.5 index c5c6387..ebe9255 100644 --- a/man/fr/man5/subuid.5 +++ b/man/fr/man5/subuid.5 @@ -2,12 +2,12 @@ .\" Title: subuid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SUBUID" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUBUID" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -112,7 +112,7 @@ Backup file for /etc/subuid\&. \fBlogin.defs\fR(5), \fBnewgidmap\fR(1), \fBnewuidmap\fR(1), -\fBnewusers\fR(1), +\fBnewusers\fR(8), \fBsubgid\fR(5), \fBuseradd\fR(8), \fBuserdel\fR(8), diff --git a/man/fr/man8/chgpasswd.8 b/man/fr/man8/chgpasswd.8 index 5fd05f0..f8c454e 100644 --- a/man/fr/man8/chgpasswd.8 +++ b/man/fr/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "CHGPASSWD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "CHGPASSWD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -63,7 +63,12 @@ command are: .RS 4 Utiliser la m\('ethode pr\('ecis\('ee pour chiffrer les mots de passe\&. .sp -Les m\('ethodes disponibles sont DES, MD5, NONE et SHA256 ou SHA512 si votre libc prend en charge ces m\('ethodes\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR @@ -94,14 +99,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Utiliser le nombre de rounds pr\('ecis\('e pour chiffrer les mots de passe\&. .sp -La valeur 0 signifie que le syst\(`eme choisira la valeur par d\('efaut du nombre de rounds pour la m\('ethode de chiffrement (5\ \&000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Une valeur minimale de 1\ \&000 et une valeur maximale de 999\ \&999\ \&999 seront impos\('ees\&. -.sp -Vous ne pouvez utiliser cette m\('ethode qu\*(Aqavec les m\('ethodes de chiffrement SHA256 ou SHA512\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "AVERTISSEMENTS" .PP diff --git a/man/fr/man8/chpasswd.8 b/man/fr/man8/chpasswd.8 index b31a73b..f5cadc8 100644 --- a/man/fr/man8/chpasswd.8 +++ b/man/fr/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "CHPASSWD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "CHPASSWD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,12 @@ command are: .RS 4 Utiliser la m\('ethode pr\('ecis\('ee pour chiffrer les mots de passe\&. .sp -Les m\('ethodes disponibles sont DES, MD5, NONE et SHA256 ou SHA512 si votre libc prend en charge ces m\('ethodes\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp By default (if none of the \fB\-c\fR, @@ -106,22 +111,23 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 Utiliser le nombre de rounds pr\('ecis\('e pour chiffrer les mots de passe\&. .sp -La valeur 0 signifie que le syst\(`eme choisira la valeur par d\('efaut du nombre de rounds pour la m\('ethode de chiffrement (5\ \&000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Une valeur minimale de 1\ \&000 et une valeur maximale de 999\ \&999\ \&999 seront impos\('ees\&. -.sp -Vous ne pouvez utiliser cette m\('ethode qu\*(Aqavec les m\('ethodes de chiffrement SHA256 ou SHA512\&. -.sp -By default, the number of rounds is defined by the -\fBSHA_CRYPT_MIN_ROUNDS\fR -and -\fBSHA_CRYPT_MAX_ROUNDS\fR -variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "AVERTISSEMENTS" .PP diff --git a/man/fr/man8/faillog.8 b/man/fr/man8/faillog.8 index a558b3b..b74b763 100644 --- a/man/fr/man8/faillog.8 +++ b/man/fr/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "FAILLOG" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "FAILLOG" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/groupadd.8 b/man/fr/man8/groupadd.8 index b1d0816..3e9b5a3 100644 --- a/man/fr/man8/groupadd.8 +++ b/man/fr/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GROUPADD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "GROUPADD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/groupdel.8 b/man/fr/man8/groupdel.8 index 40cb607..cab97e8 100644 --- a/man/fr/man8/groupdel.8 +++ b/man/fr/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GROUPDEL" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "GROUPDEL" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- Supprimer un groupe .SH "SYNOPSIS" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIoptions\fR] \fIGROUPE\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "DESCRIPTION" .PP The diff --git a/man/fr/man8/groupmems.8 b/man/fr/man8/groupmems.8 index b02ff16..4fc0009 100644 --- a/man/fr/man8/groupmems.8 +++ b/man/fr/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GROUPMEMS" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "GROUPMEMS" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/fr/man8/groupmod.8 b/man/fr/man8/groupmod.8 index 763b777..cd40d5f 100644 --- a/man/fr/man8/groupmod.8 +++ b/man/fr/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GROUPMOD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "GROUPMOD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupmod \- Modifier la d\('efinition d\*(Aqun groupe du syst\(`eme .SH "SYNOPSIS" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIoptions\fR] \fIGROUPE\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "DESCRIPTION" .PP The diff --git a/man/fr/man8/grpck.8 b/man/fr/man8/grpck.8 index 0bc46ef..a5397b9 100644 --- a/man/fr/man8/grpck.8 +++ b/man/fr/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "GRPCK" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "GRPCK" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- V\('erifier l\*(Aqint\('egrit\('e des fichiers d\*(Aqadministration des groupes .SH "SYNOPSIS" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [options] [\fIgroupe\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "DESCRIPTION" .PP The diff --git a/man/fr/man8/lastlog.8 b/man/fr/man8/lastlog.8 index c3059d1..14bb18b 100644 --- a/man/fr/man8/lastlog.8 +++ b/man/fr/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "LASTLOG" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "LASTLOG" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,5 +130,5 @@ S\*(Aqil y a des trous importants dans les valeurs des UID, s\*(Aqex\('ecutera plus lentement, sans affichage \(`a l\*(Aq\('ecran (par exemple, s\*(Aqil n\*(Aqy a pas d\*(Aqentr\('ee pour les utilisateurs ayant un UID compris entre 170 et 800 dans base de donn\('ees lastlog, le programme lastlog semblera bloqu\('e comme s\*(Aqil traitait les entr\('ees correspondant aux UID 171 \(`a 799)\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/fr/man8/logoutd.8 b/man/fr/man8/logoutd.8 index 89caea3..43b07eb 100644 --- a/man/fr/man8/logoutd.8 +++ b/man/fr/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "LOGOUTD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "LOGOUTD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/newusers.8 b/man/fr/man8/newusers.8 index e71f59c..4f07001 100644 --- a/man/fr/man8/newusers.8 +++ b/man/fr/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "NEWUSERS" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "NEWUSERS" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newusers \- Mettre \(`a jour, ou cr\('eer de nouveaux utilisateurs par lots .SH "SYNOPSIS" .HP \w'\fBnewusers\fR\ 'u -\fBnewusers\fR [\fIoptions\fR] [\fIfichier\fR] +\fBnewusers\fR [\fIoptions\fR] [\fIfile\fR] .SH "DESCRIPTION" .PP The @@ -168,14 +168,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Utiliser le nombre de rounds pr\('ecis\('e pour chiffrer les mots de passe\&. .sp -La valeur 0 signifie que le syst\(`eme choisira la valeur par d\('efaut du nombre de rounds pour la m\('ethode de chiffrement (5\ \&000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Une valeur minimale de 1\ \&000 et une valeur maximale de 999\ \&999\ \&999 seront impos\('ees\&. -.sp -Vous ne pouvez utiliser cette m\('ethode qu\*(Aqavec les m\('ethodes de chiffrement SHA256 ou SHA512\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "AVERTISSEMENTS" .PP diff --git a/man/fr/man8/nologin.8 b/man/fr/man8/nologin.8 index 4dbf3c5..6c14f0d 100644 --- a/man/fr/man8/nologin.8 +++ b/man/fr/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "NOLOGIN" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "NOLOGIN" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/pwck.8 b/man/fr/man8/pwck.8 index 64c3473..3a6b15d 100644 --- a/man/fr/man8/pwck.8 +++ b/man/fr/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "PWCK" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "PWCK" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/pwconv.8 b/man/fr/man8/pwconv.8 index 8f3760c..bd6d678 100644 --- a/man/fr/man8/pwconv.8 +++ b/man/fr/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "PWCONV" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "PWCONV" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/sulogin.8 b/man/fr/man8/sulogin.8 index b66fc3a..82f336c 100644 --- a/man/fr/man8/sulogin.8 +++ b/man/fr/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "SULOGIN" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "SULOGIN" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/useradd.8 b/man/fr/man8/useradd.8 index 0c131ec..544c14d 100644 --- a/man/fr/man8/useradd.8 +++ b/man/fr/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "USERADD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "USERADD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,11 @@ variable in .RS 4 A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the \fB\-g\fR -option\&. The default is for the user to belong only to the initial group\&. +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -194,6 +198,10 @@ variable in or, by default, /etc/skel\&. .sp +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp Si possible, les ACL et les attributs \('etendus seront copi\('es\&. .RE .PP @@ -380,9 +388,21 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -defines the SELinux user for the new account\&. Without this option, a SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses \fBsemanage\fR(8) for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "Modifier les valeurs par d\('efaut" .PP @@ -469,7 +489,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or \fBls\fR output\&. .PP -Les noms d\*(Aqutilisateur sont limit\('es \(`a 16 caract\(`eres\&. +Les noms d\*(Aqutilisateur sont limit\('es \(`a 256 caract\(`eres\&. .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/fr/man8/userdel.8 b/man/fr/man8/userdel.8 index 663fe6b..99084c0 100644 --- a/man/fr/man8/userdel.8 +++ b/man/fr/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "USERDEL" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "USERDEL" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/usermod.8 b/man/fr/man8/usermod.8 index f84304d..17893ea 100644 --- a/man/fr/man8/usermod.8 +++ b/man/fr/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "USERMOD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "USERMOD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "AVERTISSEMENTS" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -336,7 +348,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/fr/man8/vipw.8 b/man/fr/man8/vipw.8 index 714fd73..323e95b 100644 --- a/man/fr/man8/vipw.8 +++ b/man/fr/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: French .\" -.TH "VIPW" "8" "08/11/2022" "shadow\-utils 4\&.13" "Commandes de gestion du syst\(`em" +.TH "VIPW" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -40,7 +40,7 @@ The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/generate_mans.mak b/man/generate_mans.mak index a0721b8..47f906f 100644 --- a/man/generate_mans.mak +++ b/man/generate_mans.mak @@ -1,3 +1,8 @@ +if HAVE_VENDORDIR +VENDORDIR_COND=with_vendordir +else +VENDORDIR_COND=without_vendordir +endif if USE_PAM PAM_COND=pam else @@ -20,12 +25,34 @@ else SHA_CRYPT_COND=no_sha_crypt endif +if USE_BCRYPT +BCRYPT_COND=bcrypt +else +BCRYPT_COND=no_bcrypt +endif + +if USE_YESCRYPT +YESCRYPT_COND=yescrypt +else +YESCRYPT_COND=no_yescrypt +endif + if ENABLE_SUBIDS SUBIDS_COND=subids else SUBIDS_COND=no_subids endif +if ENABLE_LASTLOG +if !USE_PAM +LASTLOG_COND=lastlog +else +LASTLOG_COND=no_lastlog +endif +else +LASTLOG_COND=no_lastlog +endif + if ENABLE_REGENERATE_MAN %.xml-config: %.xml if grep -q SHADOW-CONFIG-HERE $<; then \ @@ -35,11 +62,13 @@ if ENABLE_REGENERATE_MAN fi man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml - $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ + $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ --param "man.authors.section.enabled" "0" \ --stringparam "man.output.base.dir" "" \ + --stringparam vendordir "$(VENDORDIR)" \ --param "man.output.in.separate.dir" "1" \ - -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< + --path "$(srcdir)/login.defs.d" \ + -nonet $(top_srcdir)/man/shadow-man.xsl $< clean-local: rm -rf man1 man3 man5 man8 diff --git a/man/generate_translations.mak b/man/generate_translations.mak index eb9ac41..4c3beb9 100644 --- a/man/generate_translations.mak +++ b/man/generate_translations.mak @@ -6,10 +6,10 @@ config.xml: ../config.xml.in cp ../config.xml $@ messages.mo: ../po/$(LANG).po - msgfmt ../po/$(LANG).po -o messages.mo + msgfmt $< -o messages.mo login.defs.d: - ln -sf ../login.defs.d login.defs.d + ln -sf $(srcdir)/../login.defs.d login.defs.d %.xml: ../%.xml messages.mo login.defs.d if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -17,7 +17,7 @@ login.defs.d: else \ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ fi - itstool -d -l $(LANG) -m messages.mo -o . $@ + itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ include ../generate_mans.mak diff --git a/man/gpasswd.1.xml b/man/gpasswd.1.xml index e0d9c0d..9b89d91 100644 --- a/man/gpasswd.1.xml +++ b/man/gpasswd.1.xml @@ -6,10 +6,12 @@ --> + ]> diff --git a/man/groupmems.8.xml b/man/groupmems.8.xml index 7d06c8b..cbc8462 100644 --- a/man/groupmems.8.xml +++ b/man/groupmems.8.xml @@ -167,7 +167,7 @@ $ groupadd -r groups $ chmod 2710 groupmems - $ chown root.groups groupmems + $ chown root:groups groupmems $ groupmems -g groups -a gk4 diff --git a/man/hu/Makefile.am b/man/hu/Makefile.am index e659aef..205bb0a 100644 --- a/man/hu/Makefile.am +++ b/man/hu/Makefile.am @@ -5,7 +5,6 @@ man_MANS = \ man1/chsh.1 \ man1/gpasswd.1 \ man1/groups.1 \ - man8/lastlog.8 \ man1/login.1 \ man1/newgrp.1 \ man1/passwd.1 \ @@ -13,5 +12,9 @@ man_MANS = \ man1/sg.1 \ man1/su.1 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + EXTRA_DIST = $(man_MANS) diff --git a/man/hu/Makefile.in b/man/hu/Makefile.in index 6785ad3..45fc8eb 100644 --- a/man/hu/Makefile.in +++ b/man/hu/Makefile.in @@ -87,6 +87,7 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 subdir = man/hu ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -172,6 +173,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -190,6 +193,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,9 +209,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -223,6 +233,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -231,6 +242,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -253,6 +266,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -324,18 +340,9 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -man_MANS = \ - man1/chsh.1 \ - man1/gpasswd.1 \ - man1/groups.1 \ - man8/lastlog.8 \ - man1/login.1 \ - man1/newgrp.1 \ - man1/passwd.1 \ - man5/passwd.5 \ - man1/sg.1 \ - man1/su.1 - +man_MANS = man1/chsh.1 man1/gpasswd.1 man1/groups.1 man1/login.1 \ + man1/newgrp.1 man1/passwd.1 man5/passwd.5 man1/sg.1 man1/su.1 \ + $(am__append_1) EXTRA_DIST = $(man_MANS) all: all-am diff --git a/man/id/Makefile.in b/man/id/Makefile.in index 504ea4b..79a0521 100644 --- a/man/id/Makefile.in +++ b/man/id/Makefile.in @@ -170,6 +170,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -188,6 +190,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -203,9 +206,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -221,6 +230,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -229,6 +239,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -251,6 +263,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/man/it/Makefile.am b/man/it/Makefile.am index 94460aa..b76187f 100644 --- a/man/it/Makefile.am +++ b/man/it/Makefile.am @@ -21,7 +21,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -44,6 +43,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ diff --git a/man/it/Makefile.in b/man/it/Makefile.in index 46f6a42..dd69471 100644 --- a/man/it/Makefile.in +++ b/man/it/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/it ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -332,20 +348,22 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man1/su.1 man5/suauth.5 \ - man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man1/su.1 man5/suauth.5 man8/useradd.8 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -354,8 +372,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -739,10 +764,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -750,7 +775,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -761,11 +786,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/it/man1/chage.1 b/man/it/man1/chage.1 index 442048a..d5a2742 100644 --- a/man/it/man1/chage.1 +++ b/man/it/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "CHAGE" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "CHAGE" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chage \- cambia le informazioni sulla scadenza della password .SH "SINOSSI" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fIopzioni\fR] \fILOGIN\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "DESCRIZIONE" .PP The @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/it/man1/chfn.1 b/man/it/man1/chfn.1 index 2fcce5e..0664118 100644 --- a/man/it/man1/chfn.1 +++ b/man/it/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "CHFN" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "CHFN" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chfn \- cambia il nome dell\*(Aqutente e altre informazioni .SH "SINOSSI" .HP \w'\fBchfn\fR\ 'u -\fBchfn\fR [\fIopzioni\fR] [\fILOGIN\fR] +\fBchfn\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man1/chsh.1 b/man/it/man1/chsh.1 index 61b0ffe..77e7d3e 100644 --- a/man/it/man1/chsh.1 +++ b/man/it/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "CHSH" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "CHSH" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chsh \- cambia la shell di login .SH "SINOSSI" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fIopzioni\fR] [\fILOGIN\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "DESCRIZIONE" .PP The @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "CONFIGURAZIONE" .PP The following configuration variables in diff --git a/man/it/man1/expiry.1 b/man/it/man1/expiry.1 index b7922ee..378c08c 100644 --- a/man/it/man1/expiry.1 +++ b/man/it/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "EXPIRY" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "EXPIRY" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ expiry \- controlla e fa rispettare la scadenza della password .SH "SINOSSI" .HP \w'\fBexpiry\fR\ 'u -\fBexpiry\fR \fIopzione\fR +\fBexpiry\fR \fIoption\fR .SH "DESCRIZIONE" .PP The diff --git a/man/it/man1/gpasswd.1 b/man/it/man1/gpasswd.1 index e6d24a9..6ef70d0 100644 --- a/man/it/man1/gpasswd.1 +++ b/man/it/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GPASSWD" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "GPASSWD" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ gpasswd \- administer /etc/group and /etc/gshadow .SH "SINOSSI" .HP \w'\fBgpasswd\fR\ 'u -\fBgpasswd\fR [\fIopzione\fR] \fIgruppo\fR +\fBgpasswd\fR [\fIoption\fR] \fIgroup\fR .SH "DESCRIZIONE" .PP The diff --git a/man/it/man1/groups.1 b/man/it/man1/groups.1 index 351bd43..ead76d6 100644 --- a/man/it/man1/groups.1 +++ b/man/it/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GROUPS" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "GROUPS" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groups \- mostra i nomi dei gruppi correnti .SH "SINOSSI" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIutente\fR] +\fBgroups\fR [\fIuser\fR] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man1/id.1 b/man/it/man1/id.1 index 2e8b950..2197f9b 100644 --- a/man/it/man1/id.1 +++ b/man/it/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "ID" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "ID" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/login.1 b/man/it/man1/login.1 index b3a0fff..d35d2b4 100644 --- a/man/it/man1/login.1 +++ b/man/it/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "LOGIN" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "LOGIN" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,9 +31,9 @@ login \- apre una sessione sul sistema .SH "SINOSSI" .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fInome\fR] [\fIENV=VAR\fR...] +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIusername\fR] [\fIENV=VAR\fR...] .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fInome\fR +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIusername\fR .HP \w'\fBlogin\fR\ 'u \fBlogin\fR [\-p] \-r\ \fIhost\fR .SH "DESCRIZIONE" diff --git a/man/it/man1/newgrp.1 b/man/it/man1/newgrp.1 index 45d7489..f661d12 100644 --- a/man/it/man1/newgrp.1 +++ b/man/it/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "NEWGRP" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "NEWGRP" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newgrp \- effettua l\*(Aqaccesso a un nuovo gruppo .SH "SINOSSI" .HP \w'\fBnewgrp\fR\ 'u -\fBnewgrp\fR [\-] [\fIgruppo\fR] +\fBnewgrp\fR [\-] [\fIgroup\fR] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man1/passwd.1 b/man/it/man1/passwd.1 index 2c7d110..6f32ad2 100644 --- a/man/it/man1/passwd.1 +++ b/man/it/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "PASSWD" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "PASSWD" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ passwd \- cambia la password utente .SH "SINOSSI" .HP \w'\fBpasswd\fR\ 'u -\fBpasswd\fR [\fIopzioni\fR] [\fILOGIN\fR] +\fBpasswd\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "DESCRIZIONE" .PP The @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP All\*(Aqutente viene quindi chiesto di inserire la nuova password due volte\&. Le due password sono confrontate e devono essere uguali affinch\('e la password venga accettata\&. .PP -Quindi viene misurata la complessit\(`a della password\&. In linea di massima le password dovrebbero contenere dai 6 agli 8 caratteri, includendovi uno o pi\(`u caratteri da ciascuno dei seguenti insiemi: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -lettere minuscole -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -numeri da 0 a 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -segni di punteggiatura -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Suggerimenti per password utente" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -96,6 +61,8 @@ System encryption method is based on the NBS DES algorithm\&. More recent method .PP La compromissione di una password avviene normalmente a seguito di incuria nella scelta o nella gestione della password\&. Per questo motivo non si devono utilizzare password che appaiono nei dizionari o che devono essere scritte\&. La password non deve essere uno nome proprio, il numero della patente, la data di nascita o l\*(Aqindirizzo\&. Uno qualunque di questi potrebbe essere indovinato per violare la sicurezza del sistema\&. .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP You can find advice on how to choose a strong password on http://en\&.wikipedia\&.org/wiki/Password_strength .SH "OPZIONI" .PP @@ -175,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 Visualizza le informazioni sullo stato di un account\&. Lo stato consiste di 7 campi\&. Il primo campo \(`e il nome dell\*(Aqutente\&. Il secondo campo indica se l\*(Aqaccount ha una password bloccata (L), non ha password (NP) o ha una password valida (P)\&. Il terzo campo contiene la data di ultima modifica della password\&. I successivi quattro campi sono l\*(Aqet\(`a minima, la massima, il periodo di avviso e quello di inattivit\(`a\&. Queste et\(`a sono espresse in giorni\&. @@ -205,6 +178,11 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "AVVISI/CAVEAT" .PP Il controllo della complessit\(`a delle password varia da sistema a sistema\&. All\*(Aqutente \(`e caldamente consigliato si utilizzare una password che ritenga sufficientemente complessa\&. @@ -277,7 +255,10 @@ invalid argument to option .SH "VEDERE ANCHE" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/it/man1/sg.1 b/man/it/man1/sg.1 index 27348bb..a938344 100644 --- a/man/it/man1/sg.1 +++ b/man/it/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "SG" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "SG" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/su.1 b/man/it/man1/su.1 index d259195..cfc0d91 100644 --- a/man/it/man1/su.1 +++ b/man/it/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi utente -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "SU" "1" "08/11/2022" "shadow\-utils 4\&.13" "Comandi utente" +.TH "SU" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ su \- cambia ID utente o diventa amministratore .SH "SINOSSI" .HP \w'\fBsu\fR\ 'u -\fBsu\fR [\fIopzioni\fR] [\fI\-\fR] [\fInome\fR\ [\ \fIargs\fR\ ]] +\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fIusername\fR\ [\ \fIargs\fR\ ]] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man3/shadow.3 b/man/it/man3/shadow.3 index 7516107..54c3738 100644 --- a/man/it/man3/shadow.3 +++ b/man/it/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Chiamate di libreria -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "SHADOW" "3" "08/11/2022" "shadow\-utils 4\&.13" "Chiamate di libreria" +.TH "SHADOW" "3" "21/06/2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -36,7 +36,7 @@ shadow, getspnam \- routine per file delle password cifrate \fIstruct spwd *getspent();\fR .PP \fIstruct spwd *getspnam(char\fR -\fI*nome\fR\fI);\fR +\fI*name\fR\fI);\fR .PP \fIvoid setspent();\fR .PP diff --git a/man/it/man5/faillog.5 b/man/it/man5/faillog.5 index 3da2352..c5f659c 100644 --- a/man/it/man5/faillog.5 +++ b/man/it/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "FAILLOG" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/gshadow.5 b/man/it/man5/gshadow.5 index a8cf154..3032d1d 100644 --- a/man/it/man5/gshadow.5 +++ b/man/it/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GSHADOW" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ Questo file non deve essere leggibile dagli utenti normali se si vuole mantenere .PP Ogni riga di questo file contiene questi campi separati da due punti: .PP -\fBnome del gruppo\fR +\fBgroup name\fR .RS 4 Deve essere un nome di gruppo valido, che esista nel sistema\&. .RE .PP -\fBpassword cifrata\fR +\fBencrypted password\fR .RS 4 Refer to \fBcrypt\fR(3) @@ -63,7 +63,7 @@ This password supersedes any password specified in /etc/group\&. .RE .PP -\fBamministratori\fR +\fBadministrators\fR .RS 4 Deve essere una lista di nomi utente separati da virgole\&. .sp @@ -72,7 +72,7 @@ Gli amministratori possono cambiare la password o i membri del gruppo\&. Gli amministratori hanno anche gli stessi permessi dei membri (vedere sotto), .RE .PP -\fBmembri\fR +\fBmembers\fR .RS 4 Deve essere una lista di nomi utente separati da virgole\&. .sp diff --git a/man/it/man5/limits.5 b/man/it/man5/limits.5 index 02fa5e6..951285b 100644 --- a/man/it/man5/limits.5 +++ b/man/it/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "LIMITS" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LIMITS" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -41,11 +41,11 @@ In maniera predefinita non c\*(Aq\(`e nessun limite alla quota di \(Foroot\(Fc\& .PP Ogni riga descrive un limite per l\*(Aqutente in questo formato: .PP -\fIutente TESTO_LIMITE\fR +\fIuser LIMITS_STRING\fR .PP oppure nel formato: .PP -\fI@gruppo TESTO_LIMITE\fR +\fI@group LIMITS_STRING\fR .PP The \fILIMITS_STRING\fR diff --git a/man/it/man5/login.access.5 b/man/it/man5/login.access.5 index 0c6d858..e38d2b7 100644 --- a/man/it/man5/login.access.5 +++ b/man/it/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "LOGIN\&.ACCESS" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/login.defs.5 b/man/it/man5/login.defs.5 index e75949f..3dbd8ec 100644 --- a/man/it/man5/login.defs.5 +++ b/man/it/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "LOGIN\&.DEFS" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -192,8 +192,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/it/man5/passwd.5 b/man/it/man5/passwd.5 index c7e21d1..01c241e 100644 --- a/man/it/man5/passwd.5 +++ b/man/it/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "PASSWD" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PASSWD" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/porttime.5 b/man/it/man5/porttime.5 index 103f944..5003271 100644 --- a/man/it/man5/porttime.5 +++ b/man/it/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "PORTTIME" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/shadow.5 b/man/it/man5/shadow.5 index bff6caa..6f73d44 100644 --- a/man/it/man5/shadow.5 +++ b/man/it/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "SHADOW" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SHADOW" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ Questo file non deve essere leggibile dagli utenti normali se si vuole mantenere .PP Each line of this file contains 9 fields, separated by colons (\(Fo:\(Fc), in the following order: .PP -\fBnome di login\fR +\fBlogin name\fR .RS 4 Deve essere un nome valido di un account esistente nel sistema\&. .RE .PP -\fBpassword cifrata\fR +\fBencrypted password\fR .RS 4 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 /etc/shadow @@ -59,7 +59,7 @@ If the password field contains some string that is not a valid result of \fBcrypt\fR(3), 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)\&. .RE .PP -\fBdata dell\*(Aqultimo cambio di password\fR +\fBdate of last password change\fR .RS 4 The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -68,14 +68,14 @@ The value 0 has a special meaning, which is that the user should change her pass Un campo vuoto implica che la scadenza della password \(`e disabilitata\&. .RE .PP -\fBet\(`a minima password\fR +\fBminimum password age\fR .RS 4 L\*(Aqet\(`a minima password \(`e il numero di giorni che l\*(Aqutente dovr\(`a attendere prima di poter cambiare nuovamente la propria password\&. .sp An empty field and value 0 mean that there is no minimum password age\&. .RE .PP -\fBet\(`a massima password\fR +\fBmaximum password age\fR .RS 4 L\*(Aqet\(`a massima password \(`e il numero di giorni dopo il quale l\*(Aqutente deve cambiare la propria password\&. .sp @@ -86,14 +86,14 @@ Un campo vuoto indica che non ci sono una et\(`a massima password, un periodo di Se l\*(Aqet\(`a massima password \(`e minore dell\*(Aqet\(`a minima password, l\*(Aqutente non pu\(`o cambiare la propria password\&. .RE .PP -\fBperiodo avviso password\fR +\fBpassword warning period\fR .RS 4 Il numero di giorni prima della scadenza di una password (vedere et\(`a massima password, sopra) durante il quale l\*(Aqutente riceve un avviso\&. .sp Un campo vuoto e il valore 0 indicano che non c\*(Aq\(`e un periodo di avviso password\&. .RE .PP -\fBperiodo inattivit\(`a password\fR +\fBpassword inactivity period\fR .RS 4 Il numero di giorni dopo la scadenza della password (vedere et\(`a massima password, sopra) durante il quale la password \(`e ancora accettata (e l\*(Aqutente dovrebbe aggiornare la propria password al primo accesso)\&. .sp @@ -102,7 +102,7 @@ After expiration of the password and this expiration period is elapsed, no login Un campo vuoto implica che non \(`e applicato il periodo di inattivit\(`a\&. .RE .PP -\fBdata scadenza account\fR +\fBaccount expiration date\fR .RS 4 The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -113,7 +113,7 @@ Un campo vuoto implica che l\*(Aqaccount non scade mai\&. Il valore 0 non andrebbe usato perch\('e potrebbe essere interpretato come account che non scade o come scaduto il 1 gennaio 1970\&. .RE .PP -\fBcampo riservato\fR +\fBreserved field\fR .RS 4 Questo campo \(`e riservato per uso futuro\&. .RE diff --git a/man/it/man5/suauth.5 b/man/it/man5/suauth.5 index 9740c69..1b00ff1 100644 --- a/man/it/man5/suauth.5 +++ b/man/it/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 +.\" Date: 21/06/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "SUAUTH" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUAUTH" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/chgpasswd.8 b/man/it/man8/chgpasswd.8 index 8e889fd..381d588 100644 --- a/man/it/man8/chgpasswd.8 +++ b/man/it/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "CHGPASSWD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "CHGPASSWD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chgpasswd \- aggiorna le password di gruppo in modalit\(`a non interattiva .SH "SINOSSI" .HP \w'\fBchgpasswd\fR\ 'u -\fBchgpasswd\fR [\fIopzioni\fR] +\fBchgpasswd\fR [\fIoptions\fR] .SH "DESCRIZIONE" .PP The @@ -63,7 +63,12 @@ command are: .RS 4 Utilizza il metodo specificato per cifrare le password\&. .sp -I metodi disponibili sono DES, MD5, NONE e SHA256 o SHA512 se la propria libc lo consente\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR @@ -94,14 +99,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Usa il numero specificato di cicli per cifrare la password\&. .sp -Il valore 0 indica che il sistema utilizzer\(`a il numero predefinito di cicli per il metodo crypt (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -I valori minimo di 1\&.000 e massimo di 999\&.999\&.999 sono forzati\&. -.sp -Si pu\(`o utilizzare questa opzione solo con i metodi di cifratura SHA256 o SHA512\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "AVVISI/CAVEAT" .PP diff --git a/man/it/man8/chpasswd.8 b/man/it/man8/chpasswd.8 index fbbf955..15b22f5 100644 --- a/man/it/man8/chpasswd.8 +++ b/man/it/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "CHPASSWD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "CHPASSWD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chpasswd \- aggiorna le password in modo non interattivo .SH "SINOSSI" .HP \w'\fBchpasswd\fR\ 'u -\fBchpasswd\fR [\fIopzioni\fR] +\fBchpasswd\fR [\fIoptions\fR] .SH "DESCRIZIONE" .PP The @@ -68,7 +68,12 @@ command are: .RS 4 Utilizza il metodo specificato per cifrare le password\&. .sp -I metodi disponibili sono DES, MD5, NONE e SHA256 o SHA512 se la propria libc lo consente\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp By default (if none of the \fB\-c\fR, @@ -106,22 +111,23 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 Usa il numero specificato di cicli per cifrare la password\&. .sp -Il valore 0 indica che il sistema utilizzer\(`a il numero predefinito di cicli per il metodo crypt (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -I valori minimo di 1\&.000 e massimo di 999\&.999\&.999 sono forzati\&. -.sp -Si pu\(`o utilizzare questa opzione solo con i metodi di cifratura SHA256 o SHA512\&. -.sp -By default, the number of rounds is defined by the -\fBSHA_CRYPT_MIN_ROUNDS\fR -and -\fBSHA_CRYPT_MAX_ROUNDS\fR -variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "AVVISI/CAVEAT" .PP diff --git a/man/it/man8/faillog.8 b/man/it/man8/faillog.8 index b6e565d..d31a17b 100644 --- a/man/it/man8/faillog.8 +++ b/man/it/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "FAILLOG" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "FAILLOG" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ faillog \- mostra le registrazioni e imposta i limiti degli accessi falliti .SH "SINOSSI" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fIopzioni\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "DESCRIZIONE" .PP \fBfaillog\fR diff --git a/man/it/man8/groupadd.8 b/man/it/man8/groupadd.8 index b0904e3..b977609 100644 --- a/man/it/man8/groupadd.8 +++ b/man/it/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GROUPADD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "GROUPADD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupadd \- crea un nuovo gruppo .SH "SINOSSI" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fIOPZIONI\fR] \fINEWGROUP\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/groupdel.8 b/man/it/man8/groupdel.8 index aab0a5f..6b4b592 100644 --- a/man/it/man8/groupdel.8 +++ b/man/it/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GROUPDEL" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "GROUPDEL" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- rimuove un gruppo .SH "SINOSSI" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIopzioni\fR] \fIGRUPPO\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/groupmems.8 b/man/it/man8/groupmems.8 index f5371ec..9b2c0e2 100644 --- a/man/it/man8/groupmems.8 +++ b/man/it/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GROUPMEMS" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "GROUPMEMS" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/it/man8/groupmod.8 b/man/it/man8/groupmod.8 index 8616864..b7ae6c1 100644 --- a/man/it/man8/groupmod.8 +++ b/man/it/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GROUPMOD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "GROUPMOD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupmod \- modifica la definizione di un gruppo del sistema .SH "SINOSSI" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIopzioni\fR] \fIGRUPPO\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/grpck.8 b/man/it/man8/grpck.8 index 3f28d21..063f3d1 100644 --- a/man/it/man8/grpck.8 +++ b/man/it/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "GRPCK" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "GRPCK" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- verifica l\*(Aqintegrit\(`a dei file dei gruppi .SH "SINOSSI" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [opzioni] [\fIgruppo\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/lastlog.8 b/man/it/man8/lastlog.8 index d743e9f..8faa923 100644 --- a/man/it/man8/lastlog.8 +++ b/man/it/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "LASTLOG" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "LASTLOG" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ lastlog \- riepiloga gli accessi pi\(`u recenti di tutti gli utenti o dell\*(Aqutente dato .SH "SINOSSI" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fIopzioni\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "DESCRIZIONE" .PP \fBlastlog\fR @@ -129,5 +129,5 @@ Database degli orari dei precedenti accessi utente\&. Se ci sono dei grossi scarti tra i valori di UID, il programma lastlog pu\(`o restare in esecuzione per un tempo prolungato senza produrre output sullo schermo (ad es\&. se nel database lastlog non ci sono registrazioni per UID tra 170 e 800, il programma sembrer\(`a bloccato mentre esamina gli UID tra 171 e 799)\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/it/man8/logoutd.8 b/man/it/man8/logoutd.8 index a923e96..b60132b 100644 --- a/man/it/man8/logoutd.8 +++ b/man/it/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "LOGOUTD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "LOGOUTD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/newusers.8 b/man/it/man8/newusers.8 index 0ed541d..651dada 100644 --- a/man/it/man8/newusers.8 +++ b/man/it/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "NEWUSERS" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "NEWUSERS" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newusers \- aggiorna e crea nuovi utenti in blocco .SH "SINOSSI" .HP \w'\fBnewusers\fR\ 'u -\fBnewusers\fR [\fIopzioni\fR] [\fIfile\fR] +\fBnewusers\fR [\fIoptions\fR] [\fIfile\fR] .SH "DESCRIZIONE" .PP The @@ -168,14 +168,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Usa il numero specificato di cicli per cifrare la password\&. .sp -Il valore 0 indica che il sistema utilizzer\(`a il numero predefinito di cicli per il metodo crypt (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -I valori minimo di 1\&.000 e massimo di 999\&.999\&.999 sono forzati\&. -.sp -Si pu\(`o utilizzare questa opzione solo con i metodi di cifratura SHA256 o SHA512\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "AVVISI/CAVEAT" .PP diff --git a/man/it/man8/nologin.8 b/man/it/man8/nologin.8 index 47bcec0..10c276a 100644 --- a/man/it/man8/nologin.8 +++ b/man/it/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "NOLOGIN" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "NOLOGIN" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/pwck.8 b/man/it/man8/pwck.8 index 6eaff15..9c4d3e7 100644 --- a/man/it/man8/pwck.8 +++ b/man/it/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "PWCK" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "PWCK" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ pwck \- verify the integrity of password files .SH "SINOSSI" .HP \w'\fBpwck\fR\ 'u -\fBpwck\fR [opzioni] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] +\fBpwck\fR [options] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/pwconv.8 b/man/it/man8/pwconv.8 index d648856..b1bea59 100644 --- a/man/it/man8/pwconv.8 +++ b/man/it/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "PWCONV" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "PWCONV" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,13 +31,13 @@ pwconv, pwunconv, grpconv, grpunconv \- convertono a e da password e gruppi shadow\&. .SH "SINOSSI" .HP \w'\fBpwconv\fR\ 'u -\fBpwconv\fR [\fIopzioni\fR] +\fBpwconv\fR [\fIoptions\fR] .HP \w'\fBpwunconv\fR\ 'u -\fBpwunconv\fR [\fIopzioni\fR] +\fBpwunconv\fR [\fIoptions\fR] .HP \w'\fBgrpconv\fR\ 'u -\fBgrpconv\fR [\fIopzioni\fR] +\fBgrpconv\fR [\fIoptions\fR] .HP \w'\fBgrpunconv\fR\ 'u -\fBgrpunconv\fR [\fIopzioni\fR] +\fBgrpunconv\fR [\fIoptions\fR] .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/sulogin.8 b/man/it/man8/sulogin.8 index ce28661..0feea13 100644 --- a/man/it/man8/sulogin.8 +++ b/man/it/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "SULOGIN" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "SULOGIN" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/useradd.8 b/man/it/man8/useradd.8 index bdf759e..9810e72 100644 --- a/man/it/man8/useradd.8 +++ b/man/it/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "USERADD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "USERADD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,11 +31,11 @@ useradd \- crea un nuovo utente o aggiorna le informazioni predefinite per i nuovi utenti .SH "SINOSSI" .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR [\fIopzioni\fR] \fILOGIN\fR +\fBuseradd\fR [\fIoptions\fR] \fILOGIN\fR .HP \w'\fBuseradd\fR\ 'u \fBuseradd\fR \-D .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR \-D [\fIopzioni\fR] +\fBuseradd\fR \-D [\fIoptions\fR] .SH "DESCRIZIONE" .PP When invoked without the @@ -169,7 +169,11 @@ variable in .RS 4 A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the \fB\-g\fR -option\&. The default is for the user to belong only to the initial group\&. +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -194,6 +198,10 @@ variable in or, by default, /etc/skel\&. .sp +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp Se possibile vengono copiate le ACL e gli attributi estesi\&. .RE .PP @@ -380,9 +388,21 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -defines the SELinux user for the new account\&. Without this option, a SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses \fBsemanage\fR(8) for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "Cambiare i valori predefiniti" .PP @@ -469,7 +489,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or \fBls\fR output\&. .PP -I nomi utente non possono eccedere i 32 caratteri di lunghezza\&. +I nomi utente non possono eccedere i 256 caratteri di lunghezza\&. .SH "CONFIGURAZIONE" .PP The following configuration variables in diff --git a/man/it/man8/userdel.8 b/man/it/man8/userdel.8 index e82dc8f..439567d 100644 --- a/man/it/man8/userdel.8 +++ b/man/it/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "USERDEL" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "USERDEL" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ userdel \- rimuove l\*(Aqaccount di un utente ed i file relativi .SH "SINOSSI" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [opzioni] \fILOGIN\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "DESCRIZIONE" .PP The diff --git a/man/it/man8/usermod.8 b/man/it/man8/usermod.8 index ecb29e9..45432d1 100644 --- a/man/it/man8/usermod.8 +++ b/man/it/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "USERMOD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "USERMOD" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ usermod \- modifica l\*(Aqaccount di un utente .SH "SINOSSI" .HP \w'\fBusermod\fR\ 'u -\fBusermod\fR [\fIopzioni\fR] \fILOGIN\fR +\fBusermod\fR [\fIoptions\fR] \fILOGIN\fR .SH "DESCRIZIONE" .PP The @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "AVVISI/CAVEAT" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -336,7 +348,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/it/man8/vipw.8 b/man/it/man8/vipw.8 index 609ca65..25c8127 100644 --- a/man/it/man8/vipw.8 +++ b/man/it/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Italian .\" -.TH "VIPW" "8" "08/11/2022" "shadow\-utils 4\&.13" "Comandi per la gestione del si" +.TH "VIPW" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,16 @@ vipw, vigr \- modifica i file delle password, dei gruppi, delle password shadow o dei gruppi shadow .SH "SINOSSI" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fIopzioni\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fIopzioni\fR] +\fBvigr\fR [\fIoptions\fR] .SH "DESCRIZIONE" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/its.rules b/man/its.rules new file mode 100644 index 0000000..d6f7299 --- /dev/null +++ b/man/its.rules @@ -0,0 +1,16 @@ + + + diff --git a/man/ja/Makefile.am b/man/ja/Makefile.am index ffb75a9..13f18da 100644 --- a/man/ja/Makefile.am +++ b/man/ja/Makefile.am @@ -17,7 +17,6 @@ man_MANS = \ man8/grpck.8 \ man8/grpconv.8 \ man8/grpunconv.8 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -38,6 +37,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ diff --git a/man/ja/Makefile.in b/man/ja/Makefile.in index 1caa670..9ef122d 100644 --- a/man/ja/Makefile.in +++ b/man/ja/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/ja ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -174,6 +175,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -192,6 +195,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -207,9 +211,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -225,6 +235,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -233,6 +244,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -255,6 +268,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -329,19 +345,19 @@ top_srcdir = @top_srcdir@ man_MANS = man1/chage.1 man1/chfn.1 man8/chpasswd.8 man1/chsh.1 \ man1/expiry.1 man5/faillog.5 man8/faillog.8 man1/gpasswd.1 \ man8/groupadd.8 man8/groupdel.8 man8/groupmod.8 man1/groups.1 \ - man8/grpck.8 man8/grpconv.8 man8/grpunconv.8 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ - man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man5/shadow.5 \ - man1/su.1 man5/suauth.5 man8/useradd.8 man8/userdel.8 \ - man8/usermod.8 man8/vigr.8 man8/vipw.8 $(am__append_1) + man8/grpck.8 man8/grpconv.8 man8/grpunconv.8 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man1/passwd.1 man5/passwd.5 man8/pwck.8 man8/pwconv.8 \ + man8/pwunconv.8 man1/sg.1 man5/shadow.5 man1/su.1 \ + man5/suauth.5 man8/useradd.8 man8/userdel.8 man8/usermod.8 \ + man8/vigr.8 man8/vipw.8 $(am__append_1) $(am__append_2) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ man5/porttime.5 EXTRA_DIST = $(man_MANS) man1/id.1 man3/shadow.3 man8/sulogin.8 \ - $(am__append_2) + $(am__append_3) all: all-am .SUFFIXES: diff --git a/man/ko/Makefile.in b/man/ko/Makefile.in index 661e1e8..cabdc54 100644 --- a/man/ko/Makefile.in +++ b/man/ko/Makefile.in @@ -172,6 +172,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -190,6 +192,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,9 +208,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -223,6 +232,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -231,6 +241,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -253,6 +265,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/man/lastlog.8.xml b/man/lastlog.8.xml index 7a4ba96..6700791 100644 --- a/man/lastlog.8.xml +++ b/man/lastlog.8.xml @@ -211,8 +211,8 @@ to hang as it processes entries with UIDs 171-799). - Having high UIDs can create problems when handling the - /var/log/lastlog with external tools. Although the + Having high UIDs can create problems when handling the + /var/log/lastlog with external tools. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them. diff --git a/man/login.1.xml b/man/login.1.xml index fbfbbf1..0826b1f 100644 --- a/man/login.1.xml +++ b/man/login.1.xml @@ -277,7 +277,7 @@ &CONSOLE; &CONSOLE_GROUPS; &DEFAULT_HOME; - &ENV_HZ; + &ENV_HZ; &ENV_PATH; &ENV_SUPATH; &ENV_TZ; diff --git a/man/login.defs.5.xml b/man/login.defs.5.xml index ab62fa8..05ef512 100644 --- a/man/login.defs.5.xml +++ b/man/login.defs.5.xml @@ -7,6 +7,7 @@ --> @@ -74,6 +75,7 @@ + ]> @@ -145,6 +147,7 @@ The following configuration items are provided: + &BCRYPT_MIN_ROUNDS; &CHFN_AUTH; &CHFN_RESTRICT; &CHSH_AUTH; @@ -218,6 +221,7 @@ &USERDEL_CMD; &USERGROUPS_ENAB; &USE_TCB; + &YESCRYPT_COST_FACTOR; @@ -249,9 +253,12 @@ chgpasswd + BCRYPT_MAX_ROUNDS + BCRYPT_MIN_ROUNDS ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS + YESCRYPT_COST_FACTOR @@ -259,10 +266,13 @@ chpasswd + BCRYPT_MAX_ROUNDS + BCRYPT_MIN_ROUNDS ENCRYPT_METHOD MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS + YESCRYPT_COST_FACTOR @@ -280,9 +290,12 @@ gpasswd + BCRYPT_MAX_ROUNDS + BCRYPT_MIN_ROUNDS ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS + YESCRYPT_COST_FACTOR @@ -380,6 +393,8 @@ newusers + BCRYPT_MAX_ROUNDS + BCRYPT_MIN_ROUNDS ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB @@ -391,6 +406,7 @@ SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK + YESCRYPT_COST_FACTOR @@ -399,10 +415,13 @@ passwd + BCRYPT_MAX_ROUNDS + BCRYPT_MIN_ROUNDS ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS + YESCRYPT_COST_FACTOR @@ -449,12 +468,12 @@ - + sulogin ENV_HZ - ENV_TZ + ENV_TZ diff --git a/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml b/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml new file mode 100644 index 0000000..81ee5c9 --- /dev/null +++ b/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml @@ -0,0 +1,40 @@ + + + (number) + (number) + + + When is set to + BCRYPT, this defines the number of + BCRYPT rounds used by the encryption algorithm by default (when the + number of rounds is not specified on the command line). + + + With a lot of rounds, it is more difficult to brute force the + password. But note also that more CPU resources will be needed to + authenticate users. + + + The values must be inside the 4-31 range. + + + If only one of the or + values is set, then this value + will be used. + + + If > + , the highest value will be + used. + + + Note: This only affect the generation of group passwords. + The generation of user passwords is done by PAM and subject to the + PAM configuration. It is recommended to set this variable + consistently with the PAM configuration. + + + diff --git a/man/login.defs.d/CONSOLE_GROUPS.xml b/man/login.defs.d/CONSOLE_GROUPS.xml index 0fd874c..1875bc6 100644 --- a/man/login.defs.d/CONSOLE_GROUPS.xml +++ b/man/login.defs.d/CONSOLE_GROUPS.xml @@ -4,7 +4,7 @@ SPDX-FileCopyrightText: 2007 - 2008, Nicolas François SPDX-License-Identifier: BSD-3-Clause --> - + (string) diff --git a/man/login.defs.d/ENCRYPT_METHOD.xml b/man/login.defs.d/ENCRYPT_METHOD.xml index 85dd79b..531ce04 100644 --- a/man/login.defs.d/ENCRYPT_METHOD.xml +++ b/man/login.defs.d/ENCRYPT_METHOD.xml @@ -10,11 +10,13 @@ passwords (if no algorithm are specified on the command line). - It can take one of these values: + It can take one of these values: + BCRYPT, DES (default), MD5, SHA256, - SHA512. + SHA512, + YESCRYPT. MD5 and DES should not be used for new hashes, see crypt5 for recommendations. diff --git a/man/login.defs.d/ENV_HZ.xml b/man/login.defs.d/ENV_HZ.xml index daf1752..e1298cb 100644 --- a/man/login.defs.d/ENV_HZ.xml +++ b/man/login.defs.d/ENV_HZ.xml @@ -4,8 +4,7 @@ SPDX-FileCopyrightText: 2007 - 2008, Nicolas François SPDX-License-Identifier: BSD-3-Clause --> - - + (string) @@ -14,10 +13,6 @@ HZ=. A common value on Linux is HZ=100. - - The HZ environment variable is only set when the user - (the superuser) logs in with sulogin. - diff --git a/man/login.defs.d/PASS_WARN_AGE.xml b/man/login.defs.d/PASS_WARN_AGE.xml index 0feeb7e..f55afaf 100644 --- a/man/login.defs.d/PASS_WARN_AGE.xml +++ b/man/login.defs.d/PASS_WARN_AGE.xml @@ -9,8 +9,8 @@ The number of days warning given before a password expires. A zero - means warning is given only upon the day of expiration, a negative - value means no warning is given. If not specified, no warning will + means warning is given only upon the day of expiration, a value of + -1 means no warning is given. If not specified, no warning will be provided. diff --git a/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml b/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml index 43972d7..a22c324 100644 --- a/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml +++ b/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml @@ -14,7 +14,7 @@ of rounds is not specified on the command line). - With a lot of rounds, it is more difficult to brute forcing the + With a lot of rounds, it is more difficult to brute force the password. But note also that more CPU resources will be needed to authenticate users. diff --git a/man/login.defs.d/TTYGROUP.xml b/man/login.defs.d/TTYGROUP.xml index e7cb53d..8e0a9e8 100644 --- a/man/login.defs.d/TTYGROUP.xml +++ b/man/login.defs.d/TTYGROUP.xml @@ -13,15 +13,16 @@ group, and the permissions will be set to . - - By default, the ownership of the terminal is set to the user's - primary group and the permissions are set to - 0600. - can be either the name of a group or a numeric group identifier. + + If TTYGROUP is not defined, then the group ownership of the terminal is + set to the user's primary group. If TTYPERM is not defined, then the + permissions are set to + 0600. + If you have a write program which is "setgid" to a special group which owns the terminals, define TTYGROUP to the diff --git a/man/login.defs.d/YESCRYPT_COST_FACTOR.xml b/man/login.defs.d/YESCRYPT_COST_FACTOR.xml new file mode 100644 index 0000000..b9c5314 --- /dev/null +++ b/man/login.defs.d/YESCRYPT_COST_FACTOR.xml @@ -0,0 +1,29 @@ + + + (number) + + + When is set to + YESCRYPT, this defines the cost factor + used by the encryption algorithm by default (when the cost factor + is not specified on the command line). + + + With a high cost factor, it is more difficult to brute force the + password. But note also that more CPU resources will be needed to + authenticate users. + + + The value must be inside the 1-11 range. + + + Note: This only affect the generation of group passwords. + The generation of user passwords is done by PAM and subject to the + PAM configuration. It is recommended to set this variable + consistently with the PAM configuration. + + + diff --git a/man/man1/chage.1 b/man/man1/chage.1 index 37f72d1..0998ae8 100644 --- a/man/man1/chage.1 +++ b/man/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "CHAGE" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "CHAGE" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/man1/chfn.1 b/man/man1/chfn.1 index d73f7f1..315f32b 100644 --- a/man/man1/chfn.1 +++ b/man/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "CHFN" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "CHFN" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/chsh.1 b/man/man1/chsh.1 index 97458a4..597f3ff 100644 --- a/man/man1/chsh.1 +++ b/man/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "CHSH" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "CHSH" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/man1/expiry.1 b/man/man1/expiry.1 index 6f5a120..93dc97d 100644 --- a/man/man1/expiry.1 +++ b/man/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "EXPIRY" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "EXPIRY" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/getsubids.1 b/man/man1/getsubids.1 index 2d92334..fa026b0 100644 --- a/man/man1/getsubids.1 +++ b/man/man1/getsubids.1 @@ -2,12 +2,12 @@ .\" Title: getsubids .\" Author: Iker Pedrosa .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GETSUBIDS" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "GETSUBIDS" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/gpasswd.1 b/man/man1/gpasswd.1 index e11bcdf..68810fc 100644 --- a/man/man1/gpasswd.1 +++ b/man/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GPASSWD" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "GPASSWD" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -196,7 +196,7 @@ is set to or \fISHA512\fR, this defines the number of SHA rounds used by the encryption algorithm by default (when the number of rounds is not specified on the command line)\&. .sp -With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. +With a lot of rounds, it is more difficult to brute force the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp diff --git a/man/man1/groups.1 b/man/man1/groups.1 index 7b9fbf2..473f1ee 100644 --- a/man/man1/groups.1 +++ b/man/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GROUPS" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "GROUPS" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/id.1 b/man/man1/id.1 index 010db36..34eb349 100644 --- a/man/man1/id.1 +++ b/man/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "ID" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "ID" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/login.1 b/man/man1/login.1 index eaa39db..36028e8 100644 --- a/man/man1/login.1 +++ b/man/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "LOGIN" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "LOGIN" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -375,12 +375,12 @@ The terminal permissions: the login tty will be owned by the group, and the permissions will be set to \fBTTYPERM\fR\&. .sp -By default, the ownership of the terminal is set to the user\*(Aqs primary group and the permissions are set to -\fI0600\fR\&. -.sp \fBTTYGROUP\fR can be either the name of a group or a numeric group identifier\&. .sp +If TTYGROUP is not defined, then the group ownership of the terminal is set to the user\*(Aqs primary group\&. If TTYPERM is not defined, then the permissions are set to +\fI0600\fR\&. +.sp If you have a \fBwrite\fR program which is "setgid" to a special group which owns the terminals, define TTYGROUP to the group number and TTYPERM to 0620\&. Otherwise leave TTYGROUP commented out and assign TTYPERM to either 622 or 600\&. diff --git a/man/man1/newgidmap.1 b/man/man1/newgidmap.1 index c60cf7f..7328aef 100644 --- a/man/man1/newgidmap.1 +++ b/man/man1/newgidmap.1 @@ -2,12 +2,12 @@ .\" Title: newgidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "NEWGIDMAP" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "NEWGIDMAP" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,6 +74,16 @@ before setting /proc/[pid]/gid_map\&. .PP Note that newgidmap may be used only once for a given process\&. +.PP +Instead of an integer process id, the first argument may be specified as +\fIfd:N\fR, where the integer N is the file descriptor number for the calling process\*(Aqs opened file descriptor for the directory +/proc/[pid]\&. In this case, +\fBnewgidmap\fR +will use +openat(2) +to open the +gid_map +file under that directory, avoiding a TOCTTOU in case the process exits and the pid is immediately reused\&. .SH "OPTIONS" .PP There currently are no options to the diff --git a/man/man1/newgrp.1 b/man/man1/newgrp.1 index 312e6ca..04cf7e7 100644 --- a/man/man1/newgrp.1 +++ b/man/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "NEWGRP" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "NEWGRP" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/newuidmap.1 b/man/man1/newuidmap.1 index d4dda67..71b7226 100644 --- a/man/man1/newuidmap.1 +++ b/man/man1/newuidmap.1 @@ -2,12 +2,12 @@ .\" Title: newuidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "NEWUIDMAP" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "NEWUIDMAP" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,6 +74,16 @@ before setting /proc/[pid]/uid_map\&. .PP Note that newuidmap may be used only once for a given process\&. +.PP +Instead of an integer process id, the first argument may be specified as +\fIfd:N\fR, where the integer N is the file descriptor number for the calling process\*(Aqs opened file descriptor for the directory +/proc/[pid]\&. In this case, +\fBnewuidmap\fR +will use +openat(2) +to open the +uid_map +file under that directory, avoiding a TOCTTOU in case the process exits and the pid is immediately reused\&. .SH "OPTIONS" .PP There currently are no options to the diff --git a/man/man1/passwd.1 b/man/man1/passwd.1 index cc1a46e..04a48c2 100644 --- a/man/man1/passwd.1 +++ b/man/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "PASSWD" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "PASSWD" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP The user is then prompted twice for a replacement password\&. The second entry is compared against the first and both are required to match in order for the password to be changed\&. .PP -Then, the password is tested for complexity\&. As a general guideline, passwords should consist of 6 to 8 characters including one or more characters from each of the following sets: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -lower case alphabetics -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -digits 0 thru 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -punctuation marks -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Hints for user passwords" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -96,6 +61,8 @@ System encryption method is based on the NBS DES algorithm\&. More recent method .PP Compromises in password security normally result from careless password selection or handling\&. For this reason, you should not select a password which appears in a dictionary or which must be written down\&. The password should also not be a proper name, your license number, birth date, or street address\&. Any of these may be used as guesses to violate system security\&. .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP You can find advice on how to choose a strong password on http://en\&.wikipedia\&.org/wiki/Password_strength .SH "OPTIONS" .PP @@ -175,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 Display account status information\&. The status information consists of 7 fields\&. The first field is the user\*(Aqs login name\&. The second field indicates if the user account has a locked password (L), has no password (NP), or has a usable password (P)\&. The third field gives the date of the last password change\&. The next four fields are the minimum age, maximum age, warning period, and inactivity period for the password\&. These ages are expressed in days\&. @@ -205,6 +178,11 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "CAVEATS" .PP Password complexity checking may vary from site to site\&. The user is urged to select a password as complex as he or she feels comfortable with\&. @@ -282,7 +260,7 @@ is set to or \fISHA512\fR, this defines the number of SHA rounds used by the encryption algorithm by default (when the number of rounds is not specified on the command line)\&. .sp -With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. +With a lot of rounds, it is more difficult to brute force the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp @@ -361,7 +339,10 @@ invalid argument to option .SH "SEE ALSO" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/man1/sg.1 b/man/man1/sg.1 index 860c58e..1e104ab 100644 --- a/man/man1/sg.1 +++ b/man/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SG" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "SG" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/su.1 b/man/man1/su.1 index a7c5cb3..ebd2629 100644 --- a/man/man1/su.1 +++ b/man/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: User Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SU" "1" "11/08/2022" "shadow\-utils 4\&.13" "User Commands" +.TH "SU" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man3/shadow.3 b/man/man3/shadow.3 index 4249c5d..8489607 100644 --- a/man/man3/shadow.3 +++ b/man/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: Library Calls -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SHADOW" "3" "11/08/2022" "shadow\-utils 4\&.13" "Library Calls" +.TH "SHADOW" "3" "06/21/2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/faillog.5 b/man/man5/faillog.5 index 63a0df8..ebf45b9 100644 --- a/man/man5/faillog.5 +++ b/man/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "FAILLOG" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/gshadow.5 b/man/man5/gshadow.5 index 663c4c3..c3cdbea 100644 --- a/man/man5/gshadow.5 +++ b/man/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas François .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GSHADOW" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/limits.5 b/man/man5/limits.5 index 46c5432..e2f1611 100644 --- a/man/man5/limits.5 +++ b/man/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "LIMITS" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LIMITS" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/login.access.5 b/man/man5/login.access.5 index 37d57b2..f7d5bc7 100644 --- a/man/man5/login.access.5 +++ b/man/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "LOGIN\&.ACCESS" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/login.defs.5 b/man/man5/login.defs.5 index 350870e..7852241 100644 --- a/man/man5/login.defs.5 +++ b/man/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "LOGIN\&.DEFS" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -417,7 +417,7 @@ The minimum number of days allowed between password changes\&. Any password chan .PP \fBPASS_WARN_AGE\fR (number) .RS 4 -The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a negative value means no warning is given\&. If not specified, no warning will be provided\&. +The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a value of \-1 means no warning is given\&. If not specified, no warning will be provided\&. .RE .PP \fBPASS_MAX_DAYS\fR, @@ -458,7 +458,7 @@ is set to or \fISHA512\fR, this defines the number of SHA rounds used by the encryption algorithm by default (when the number of rounds is not specified on the command line)\&. .sp -With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. +With a lot of rounds, it is more difficult to brute force the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp @@ -595,12 +595,12 @@ The terminal permissions: the login tty will be owned by the group, and the permissions will be set to \fBTTYPERM\fR\&. .sp -By default, the ownership of the terminal is set to the user\*(Aqs primary group and the permissions are set to -\fI0600\fR\&. -.sp \fBTTYGROUP\fR can be either the name of a group or a numeric group identifier\&. .sp +If TTYGROUP is not defined, then the group ownership of the terminal is set to the user\*(Aqs primary group\&. If TTYPERM is not defined, then the permissions are set to +\fI0600\fR\&. +.sp If you have a \fBwrite\fR program which is "setgid" to a special group which owns the terminals, define TTYGROUP to the group number and TTYPERM to 0620\&. Otherwise leave TTYGROUP commented out and assign TTYPERM to either 622 or 600\&. @@ -844,8 +844,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/man5/passwd.5 b/man/man5/passwd.5 index d1171d3..83c203f 100644 --- a/man/man5/passwd.5 +++ b/man/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "PASSWD" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PASSWD" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/porttime.5 b/man/man5/porttime.5 index b9f9e3d..f59c016 100644 --- a/man/man5/porttime.5 +++ b/man/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "PORTTIME" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/shadow.5 b/man/man5/shadow.5 index 5ab04b8..706aa2b 100644 --- a/man/man5/shadow.5 +++ b/man/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SHADOW" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SHADOW" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/suauth.5 b/man/man5/suauth.5 index 7c7729c..533961d 100644 --- a/man/man5/suauth.5 +++ b/man/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SUAUTH" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUAUTH" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/subgid.5 b/man/man5/subgid.5 index 73b8617..5471ab7 100644 --- a/man/man5/subgid.5 +++ b/man/man5/subgid.5 @@ -2,12 +2,12 @@ .\" Title: subgid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SUBGID" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUBGID" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/subuid.5 b/man/man5/subuid.5 index 655fbb9..1e6ba8a 100644 --- a/man/man5/subuid.5 +++ b/man/man5/subuid.5 @@ -2,12 +2,12 @@ .\" Title: subuid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SUBUID" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUBUID" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -112,7 +112,7 @@ Backup file for /etc/subuid\&. \fBlogin.defs\fR(5), \fBnewgidmap\fR(1), \fBnewuidmap\fR(1), -\fBnewusers\fR(1), +\fBnewusers\fR(8), \fBsubgid\fR(5), \fBuseradd\fR(8), \fBuserdel\fR(8), diff --git a/man/man8/chgpasswd.8 b/man/man8/chgpasswd.8 index 67c1325..b65edaf 100644 --- a/man/man8/chgpasswd.8 +++ b/man/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas Kłoczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "CHGPASSWD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "CHGPASSWD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -63,7 +63,12 @@ command are: .RS 4 Use the specified method to encrypt the passwords\&. .sp -The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc support these methods\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR @@ -94,14 +99,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Use the specified number of rounds to encrypt the passwords\&. .sp -The value 0 means that the system will choose the default number of rounds for the crypt method (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -A minimal value of 1000 and a maximal value of 999,999,999 will be enforced\&. -.sp -You can only use this option with the SHA256 or SHA512 crypt method\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "CAVEATS" .PP @@ -170,7 +174,7 @@ is set to or \fISHA512\fR, this defines the number of SHA rounds used by the encryption algorithm by default (when the number of rounds is not specified on the command line)\&. .sp -With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. +With a lot of rounds, it is more difficult to brute force the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp diff --git a/man/man8/chpasswd.8 b/man/man8/chpasswd.8 index 67b4156..107f4ae 100644 --- a/man/man8/chpasswd.8 +++ b/man/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "CHPASSWD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "CHPASSWD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,12 @@ command are: .RS 4 Use the specified method to encrypt the passwords\&. .sp -The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc support these methods\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp By default (if none of the \fB\-c\fR, @@ -106,22 +111,23 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 Use the specified number of rounds to encrypt the passwords\&. .sp -The value 0 means that the system will choose the default number of rounds for the crypt method (5000)\&. -.sp -A minimal value of 1000 and a maximal value of 999,999,999 will be enforced\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -You can only use this option with the SHA256 or SHA512 crypt method\&. -.sp -By default, the number of rounds is defined by the -\fBSHA_CRYPT_MIN_ROUNDS\fR -and -\fBSHA_CRYPT_MAX_ROUNDS\fR -variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "CAVEATS" .PP @@ -173,7 +179,7 @@ is set to or \fISHA512\fR, this defines the number of SHA rounds used by the encryption algorithm by default (when the number of rounds is not specified on the command line)\&. .sp -With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. +With a lot of rounds, it is more difficult to brute force the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp diff --git a/man/man8/faillog.8 b/man/man8/faillog.8 index dd2285c..b5042c2 100644 --- a/man/man8/faillog.8 +++ b/man/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "FAILLOG" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "FAILLOG" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/groupadd.8 b/man/man8/groupadd.8 index af8afcf..9ab8fb2 100644 --- a/man/man8/groupadd.8 +++ b/man/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GROUPADD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "GROUPADD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/groupdel.8 b/man/man8/groupdel.8 index c9d5176..8503eba 100644 --- a/man/man8/groupdel.8 +++ b/man/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GROUPDEL" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "GROUPDEL" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/groupmems.8 b/man/man8/groupmems.8 index febe008..3518fc0 100644 --- a/man/man8/groupmems.8 +++ b/man/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GROUPMEMS" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "GROUPMEMS" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/man8/groupmod.8 b/man/man8/groupmod.8 index 371e6b1..a1e695c 100644 --- a/man/man8/groupmod.8 +++ b/man/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GROUPMOD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "GROUPMOD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/grpck.8 b/man/man8/grpck.8 index 22a372d..f408294 100644 --- a/man/man8/grpck.8 +++ b/man/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "GRPCK" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "GRPCK" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/lastlog.8 b/man/man8/lastlog.8 index ee7adca..1bbda99 100644 --- a/man/man8/lastlog.8 +++ b/man/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "LASTLOG" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "LASTLOG" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -137,5 +137,5 @@ Database times of previous user logins\&. 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)\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/man8/logoutd.8 b/man/man8/logoutd.8 index 115fe28..6f7a8de 100644 --- a/man/man8/logoutd.8 +++ b/man/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "LOGOUTD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "LOGOUTD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/newusers.8 b/man/man8/newusers.8 index 58c05d8..560ca0c 100644 --- a/man/man8/newusers.8 +++ b/man/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "NEWUSERS" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "NEWUSERS" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -168,14 +168,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Use the specified number of rounds to encrypt the passwords\&. .sp -The value 0 means that the system will choose the default number of rounds for the crypt method (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -A minimal value of 1000 and a maximal value of 999,999,999 will be enforced\&. -.sp -You can only use this option with the SHA256 or SHA512 crypt method\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "CAVEATS" .PP @@ -272,7 +271,7 @@ The minimum number of days allowed between password changes\&. Any password chan .PP \fBPASS_WARN_AGE\fR (number) .RS 4 -The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a negative value means no warning is given\&. If not specified, no warning will be provided\&. +The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a value of \-1 means no warning is given\&. If not specified, no warning will be provided\&. .RE .PP \fBSHA_CRYPT_MIN_ROUNDS\fR (number), \fBSHA_CRYPT_MAX_ROUNDS\fR (number) @@ -284,7 +283,7 @@ is set to or \fISHA512\fR, this defines the number of SHA rounds used by the encryption algorithm by default (when the number of rounds is not specified on the command line)\&. .sp -With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. +With a lot of rounds, it is more difficult to brute force the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp diff --git a/man/man8/nologin.8 b/man/man8/nologin.8 index cc1c114..64131b7 100644 --- a/man/man8/nologin.8 +++ b/man/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas François .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "NOLOGIN" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "NOLOGIN" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/pwck.8 b/man/man8/pwck.8 index 834cc83..53fb29e 100644 --- a/man/man8/pwck.8 +++ b/man/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "PWCK" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "PWCK" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -267,7 +267,7 @@ The minimum number of days allowed between password changes\&. Any password chan .PP \fBPASS_WARN_AGE\fR (number) .RS 4 -The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a negative value means no warning is given\&. If not specified, no warning will be provided\&. +The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a value of \-1 means no warning is given\&. If not specified, no warning will be provided\&. .RE .SH "FILES" .PP diff --git a/man/man8/pwconv.8 b/man/man8/pwconv.8 index 147f21f..74a81fc 100644 --- a/man/man8/pwconv.8 +++ b/man/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "PWCONV" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "PWCONV" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -178,7 +178,7 @@ The minimum number of days allowed between password changes\&. Any password chan .PP \fBPASS_WARN_AGE\fR (number) .RS 4 -The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a negative value means no warning is given\&. If not specified, no warning will be provided\&. +The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a value of \-1 means no warning is given\&. If not specified, no warning will be provided\&. .RE .SH "FILES" .PP diff --git a/man/man8/sulogin.8 b/man/man8/sulogin.8 index f33405d..a1d8196 100644 --- a/man/man8/sulogin.8 +++ b/man/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "SULOGIN" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "SULOGIN" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/useradd.8 b/man/man8/useradd.8 index e6530b3..3ec476b 100644 --- a/man/man8/useradd.8 +++ b/man/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "USERADD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "USERADD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,11 @@ variable in .RS 4 A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the \fB\-g\fR -option\&. The default is for the user to belong only to the initial group\&. +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -194,6 +198,10 @@ variable in or, by default, /etc/skel\&. .sp +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp If possible, the ACLs and extended attributes are copied\&. .RE .PP @@ -380,9 +388,21 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -defines the SELinux user for the new account\&. Without this option, a SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses \fBsemanage\fR(8) for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "Changing the default values" .PP @@ -469,7 +489,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or \fBls\fR output\&. .PP -Usernames may only be up to 32 characters long\&. +Usernames may only be up to 256 characters long\&. .SH "CONFIGURATION" .PP The following configuration variables in @@ -573,7 +593,7 @@ The minimum number of days allowed between password changes\&. Any password chan .PP \fBPASS_WARN_AGE\fR (number) .RS 4 -The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a negative value means no warning is given\&. If not specified, no warning will be provided\&. +The number of days warning given before a password expires\&. A zero means warning is given only upon the day of expiration, a value of \-1 means no warning is given\&. If not specified, no warning will be provided\&. .RE .PP \fBSUB_GID_MIN\fR (number), \fBSUB_GID_MAX\fR (number), \fBSUB_GID_COUNT\fR (number) diff --git a/man/man8/userdel.8 b/man/man8/userdel.8 index acfc412..6ee18e9 100644 --- a/man/man8/userdel.8 +++ b/man/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "USERDEL" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "USERDEL" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/usermod.8 b/man/man8/usermod.8 index f419a69..4b93a18 100644 --- a/man/man8/usermod.8 +++ b/man/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "USERMOD" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "USERMOD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "CAVEATS" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -435,7 +447,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/man8/vipw.8 b/man/man8/vipw.8 index d686fdd..ba1b2e0 100644 --- a/man/man8/vipw.8 +++ b/man/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: English .\" -.TH "VIPW" "8" "11/08/2022" "shadow\-utils 4\&.13" "System Management Commands" +.TH "VIPW" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -40,7 +40,7 @@ The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/newgidmap.1.xml b/man/newgidmap.1.xml index e4ebc69..e5b770e 100644 --- a/man/newgidmap.1.xml +++ b/man/newgidmap.1.xml @@ -116,6 +116,17 @@ Note that newgidmap may be used only once for a given process. + + Instead of an integer process id, the first argument may be + specified as fd:N, where the integer N + is the file descriptor number for the calling process's opened + file descriptor for the directory /proc/[pid]. + In this case, newgidmap will use + openat2 + to open the gid_map file under that + directory, avoiding a TOCTTOU in case the process exits and + the pid is immediately reused. + diff --git a/man/newuidmap.1.xml b/man/newuidmap.1.xml index f5cb5b4..7aed0d5 100644 --- a/man/newuidmap.1.xml +++ b/man/newuidmap.1.xml @@ -116,6 +116,17 @@ Note that newuidmap may be used only once for a given process. + + Instead of an integer process id, the first argument may be + specified as fd:N, where the integer N + is the file descriptor number for the calling process's opened + file descriptor for the directory /proc/[pid]. + In this case, newuidmap will use + openat2 + to open the uid_map file under that + directory, avoiding a TOCTTOU in case the process exits and + the pid is immediately reused. + diff --git a/man/newusers.8.xml b/man/newusers.8.xml index 4ff0052..6812c75 100644 --- a/man/newusers.8.xml +++ b/man/newusers.8.xml @@ -6,6 +6,7 @@ --> @@ -21,6 +22,7 @@ + ]> @@ -316,29 +318,48 @@ - + , Use the specified number of rounds to encrypt the passwords. - The value 0 means that the system will choose the default - number of rounds for the crypt method (5000). + You can only use this option with crypt method: + + BCRYPT + + SHA256 + SHA512 + + YESCRYPT - - A minimal value of 1000 and a maximal value of 999,999,999 - will be enforced. + + By default, the number of rounds for BCRYPT is defined by the + BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in + /etc/login.defs. - - You can only use this option with the SHA256 or SHA512 - crypt method. + + A minimal value of 4 and a maximal value of 31 + will be enforced for BCRYPT. The default is 13. - - By default, the number of rounds is defined by the + + By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs. + + A minimal value of 1000 and a maximal value of 999,999,999 + will be enforced for SHA256 and SHA512. The default is 5000. + + + By default, the number of rounds for YESCRYPT is defined by the + YESCRYPT_COST_FACTOR in /etc/login.defs. + + + A minimal value of 1 and a maximal value of 11 + will be enforced for YESCRYPT. The default is 5. + diff --git a/man/passwd.1.xml b/man/passwd.1.xml index 52b8637..506b134 100644 --- a/man/passwd.1.xml +++ b/man/passwd.1.xml @@ -6,6 +6,7 @@ --> @@ -13,6 +14,7 @@ + ]> @@ -94,27 +96,10 @@ - Then, the password is tested for complexity. As a general guideline, - passwords should consist of 6 to 8 characters including one or more - characters from each of the following sets: - - - - - lower case alphabetics - - - digits 0 thru 9 - - - punctuation marks - - - - - Care must be taken not to include the system default erase or kill - characters. passwd will reject any password which - is not suitably complex. + Then, the password is tested for complexity. + passwd will reject any password which is not + suitably complex. Care must be taken not to include the system + default erase or kill characters. @@ -139,6 +124,17 @@ used as guesses to violate system security. + + As a general guideline, passwords should be long and random. It's + fine to use simple character sets, such as passwords consisting + only of lowercase letters, if that helps memorizing longer + passwords. For a password consisting only of lowercase English + letters randomly chosen, and a length of 32, there are 26^32 + (approximately 2^150) different possible combinations. Being an + exponential equation, it's apparent that the exponent (the length) + is more important than the base (the size of the character set). + + You can find advice on how to choose a strong password on http://en.wikipedia.org/wiki/Password_strength @@ -286,6 +282,21 @@ + + + ,  PREFIX_DIR + + + + Apply changes to configuration files under the root filesystem + found under the directory PREFIX_DIR. + 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. + + + , @@ -347,6 +358,17 @@ + + + , + + + + This option is used to indicate that passwd should read the new password from standard + input, which can be a pipe. + + + @@ -473,6 +495,9 @@ chpasswd8 , + + makepasswd1 + , passwd5 , @@ -488,5 +513,11 @@ usermod8 . + + + The following web page comically (yet correctly) compares the + strength of two different methods for choosing a password: + "https://xkcd.com/936/" + diff --git a/man/pl/Makefile.am b/man/pl/Makefile.am index 724d25f..b2f096f 100644 --- a/man/pl/Makefile.am +++ b/man/pl/Makefile.am @@ -15,7 +15,6 @@ man_MANS = \ man8/groupmod.8 \ man1/groups.1 \ man8/grpck.8 \ - man8/lastlog.8 \ man8/logoutd.8 \ man1/newgrp.1 \ man1/sg.1 \ @@ -25,6 +24,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/porttime.5 diff --git a/man/pl/Makefile.in b/man/pl/Makefile.in index d6350e5..9737dc1 100644 --- a/man/pl/Makefile.in +++ b/man/pl/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/pl ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -333,14 +349,16 @@ top_srcdir = @top_srcdir@ man_MANS = man1/chage.1 man1/chsh.1 man1/expiry.1 man5/faillog.5 \ man8/faillog.8 man3/getspnam.3 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/lastlog.8 man8/logoutd.8 man1/newgrp.1 man1/sg.1 \ - man3/shadow.3 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) + man8/logoutd.8 man1/newgrp.1 man1/sg.1 man3/shadow.3 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) man_nopam = \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -349,8 +367,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -734,10 +759,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -745,7 +770,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -756,11 +781,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/pl/man1/chage.1 b/man/pl/man1/chage.1 index 920915a..7f0513b 100644 --- a/man/pl/man1/chage.1 +++ b/man/pl/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "CHAGE" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "CHAGE" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chage \- zmiana informacji o terminie ważności has\(/la użytkownika .SH "STRESZCZENIE" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fIopcje\fR] \fILOGIN\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "OPIS" .PP The @@ -138,6 +138,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/pl/man1/chsh.1 b/man/pl/man1/chsh.1 index 3097b56..58aa47b 100644 --- a/man/pl/man1/chsh.1 +++ b/man/pl/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "CHSH" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "CHSH" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chsh \- zmiana pow\(/loki zg\(/loszeniowej .SH "STRESZCZENIE" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fIopcje\fR] [\fILOGIN\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "OPIS" .PP The @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/pl/man1/expiry.1 b/man/pl/man1/expiry.1 index 7d5c76d..40d4fb9 100644 --- a/man/pl/man1/expiry.1 +++ b/man/pl/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "EXPIRY" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "EXPIRY" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/groups.1 b/man/pl/man1/groups.1 index 8adbf6c..312e682 100644 --- a/man/pl/man1/groups.1 +++ b/man/pl/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "GROUPS" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "GROUPS" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/id.1 b/man/pl/man1/id.1 index b182dc2..74523a3 100644 --- a/man/pl/man1/id.1 +++ b/man/pl/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "ID" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "ID" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/newgrp.1 b/man/pl/man1/newgrp.1 index 8cde0f6..7604ea0 100644 --- a/man/pl/man1/newgrp.1 +++ b/man/pl/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "NEWGRP" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "NEWGRP" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/sg.1 b/man/pl/man1/sg.1 index afcc14b..517013f 100644 --- a/man/pl/man1/sg.1 +++ b/man/pl/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "SG" "1" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia użytkownik\('ow" +.TH "SG" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man3/shadow.3 b/man/pl/man3/shadow.3 index e935d42..de813ed 100644 --- a/man/pl/man3/shadow.3 +++ b/man/pl/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: Library Calls -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "SHADOW" "3" "11/08/2022" "shadow\-utils 4\&.13" "Library Calls" +.TH "SHADOW" "3" "06/21/2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,7 +38,7 @@ shadow, getspnam \- encrypted password file routines \fIstruct spwd *getspnam(char\fR \fI*name\fR\fI);\fR .PP -\fIvoid setspent()\fR +\fIvoid setspent();\fR .PP \fIvoid endspent();\fR .PP diff --git a/man/pl/man5/faillog.5 b/man/pl/man5/faillog.5 index cab3443..66d970d 100644 --- a/man/pl/man5/faillog.5 +++ b/man/pl/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "FAILLOG" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man5/porttime.5 b/man/pl/man5/porttime.5 index 5ad1b3b..62878bf 100644 --- a/man/pl/man5/porttime.5 +++ b/man/pl/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "PORTTIME" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/faillog.8 b/man/pl/man8/faillog.8 index b70d9f3..7abd9e1 100644 --- a/man/pl/man8/faillog.8 +++ b/man/pl/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "FAILLOG" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "FAILLOG" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ faillog \- display faillog records or set login failure limits .SH "STRESZCZENIE" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fIopcje\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "OPIS" .PP \fBfaillog\fR diff --git a/man/pl/man8/groupadd.8 b/man/pl/man8/groupadd.8 index 2e715fb..4b0b811 100644 --- a/man/pl/man8/groupadd.8 +++ b/man/pl/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "GROUPADD" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "GROUPADD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupadd \- utw\('orz nową grupę .SH "STRESZCZENIE" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fIOPCJE\fR] \fINEWGROUP\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "OPIS" .PP The diff --git a/man/pl/man8/groupdel.8 b/man/pl/man8/groupdel.8 index 3febfce..af2e67c 100644 --- a/man/pl/man8/groupdel.8 +++ b/man/pl/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "GROUPDEL" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "GROUPDEL" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- delete a group .SH "STRESZCZENIE" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIopcje\fR] \fIGRUPA\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "OPIS" .PP The diff --git a/man/pl/man8/groupmems.8 b/man/pl/man8/groupmems.8 index 2b309eb..f0c5d4d 100644 --- a/man/pl/man8/groupmems.8 +++ b/man/pl/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "GROUPMEMS" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "GROUPMEMS" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/pl/man8/groupmod.8 b/man/pl/man8/groupmod.8 index 53c4e0f..cfbd44c 100644 --- a/man/pl/man8/groupmod.8 +++ b/man/pl/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "GROUPMOD" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "GROUPMOD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupmod \- modyfikuj definicję grupy systemowej .SH "STRESZCZENIE" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIopcje\fR] \fIGRUPA\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "OPIS" .PP The diff --git a/man/pl/man8/grpck.8 b/man/pl/man8/grpck.8 index a37d171..72c742f 100644 --- a/man/pl/man8/grpck.8 +++ b/man/pl/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "GRPCK" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "GRPCK" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- verify integrity of group files .SH "STRESZCZENIE" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [opcje] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "OPIS" .PP The diff --git a/man/pl/man8/lastlog.8 b/man/pl/man8/lastlog.8 index 540c5e4..f0288ce 100644 --- a/man/pl/man8/lastlog.8 +++ b/man/pl/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "LASTLOG" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "LASTLOG" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ lastlog \- wyświetla informacje o ostanim logowaniu dla wybranego lub wszystkich użytkowanik\('ow .SH "STRESZCZENIE" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fIopcje\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "OPIS" .PP \fBlastlog\fR @@ -128,5 +128,5 @@ Baza danych ostatnich logowań użytkownik\('ow\&. Duże luki w numeracji UID powodują, że program będzie pracowa\(/l d\(/lużej, nie wyświetlając wynik\('ow (np\&. jeśli w bazie lastlog nie ma wpis\('ow dla o UID pomiedzy 170, a 800, to program będzie sprawia\(/l wrażenie zawieszonego w trakcie przetwarzania wpis\('ow dla użytkowanik\('o\(/l o UID 171\-799)\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/pl/man8/logoutd.8 b/man/pl/man8/logoutd.8 index 488ddbf..3e5665e 100644 --- a/man/pl/man8/logoutd.8 +++ b/man/pl/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "LOGOUTD" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "LOGOUTD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/userdel.8 b/man/pl/man8/userdel.8 index 4173329..147dffb 100644 --- a/man/pl/man8/userdel.8 +++ b/man/pl/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "USERDEL" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "USERDEL" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ userdel \- plik chroniony informacji o użytkownikach .SH "STRESZCZENIE" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [opcje] \fILOGIN\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "OPIS" .PP The diff --git a/man/pl/man8/usermod.8 b/man/pl/man8/usermod.8 index d7e1c00..c5b06db 100644 --- a/man/pl/man8/usermod.8 +++ b/man/pl/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "USERMOD" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "USERMOD" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ usermod \- zmiana danych konta użytkownika .SH "STRESZCZENIE" .HP \w'\fBusermod\fR\ 'u -\fBusermod\fR [\fIopcje\fR] \fILOGIN\fR +\fBusermod\fR [\fIoptions\fR] \fILOGIN\fR .SH "OPIS" .PP The @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "OSTRZEŻENIA" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -336,7 +348,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/pl/man8/vipw.8 b/man/pl/man8/vipw.8 index 3836968..2af9cd4 100644 --- a/man/pl/man8/vipw.8 +++ b/man/pl/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 11/08/2022 -.\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Polish .\" -.TH "VIPW" "8" "11/08/2022" "shadow\-utils 4\&.13" "Polecenia Zarządzania Systemem" +.TH "VIPW" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,16 @@ vipw, vigr \- edytuj plik hase\(/l, grup lub ich wersji chronionych .SH "STRESZCZENIE" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fIopcje\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fIopcje\fR] +\fBvigr\fR [\fIoptions\fR] .SH "OPIS" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/po/Makefile.in b/man/po/Makefile.in index f194957..d0f738f 100644 --- a/man/po/Makefile.in +++ b/man/po/Makefile.in @@ -86,35 +86,38 @@ stamp-po: $(srcdir)/$(DOMAIN).pot # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. # TODO: set MSGID_BUGS_ADDRESS, COPYRIGHT_HOLDER -$(DOMAIN).pot-update: $(XMLFILES) $(srcdir)/XMLFILES remove-potcdate.sed - @set -e; tmpdir=`pwd`; \ - echo "cd $(top_srcdir)/man"; \ +$(DOMAIN).pot-update: $(XMLFILES) $(srcdir)/XMLFILES + @set -ex; tmpdir=`mktemp -d`; \ + origdir=`pwd`; \ cd $(top_srcdir)/man; \ + cp *.xml $$tmpdir/; \ files=""; \ for file in $(notdir $(XMLFILES)); do \ + base=`basename $$file`; \ + outfile=$$tmpdir/$$base.out; \ if grep -q SHADOW-CONFIG-HERE $$file ; then \ - sed -e 's/^/%config;/' $$file > $$file.out; \ + sed -e 's/^/%config;/' $$file > $$outfile; \ else \ - sed -e 's/^\(/\1 [%config;]>/' $$file > $$file.out; \ + sed -e 's/^\(/\1 [%config;]>/' $$file > $$outfile; \ fi; \ - files="$$files $$file.out"; \ + files="$$files $$outfile"; \ done; \ itstool -d -o $$tmpdir/$(DOMAIN).po $$files; \ - cd $$tmpdir; \ - test ! -f $(DOMAIN).po || { \ + sed -i '1i \ +# To re-generate, run "cd man/po; make update-po"' $$tmpdir/$(DOMAIN).po; \ + cd $$origdir; \ + test ! -f $$tmpdir/$(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ - sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ - sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ - if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ - else \ - rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $$tmpdir/$(DOMAIN).1po && \ + sed -f remove-potcdate.sed < $$tmpdir/$(DOMAIN).po > $$tmpdir/$(DOMAIN).2po && \ + if ! cmp $$tmpdir/$(DOMAIN).1po $$tmpdir/$(DOMAIN).2po >/dev/null 2>&1; then \ + rm -f $(srcdir)/$(DOMAIN).pot && \ + mv $$tmpdir/$(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ - mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ + mv $$tmpdir/$(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ - } + } ; rm -rf $$tmpdir # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. @@ -212,26 +215,25 @@ update-po: Makefile .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ - tmpdir=`pwd`; \ + ptmpdir=`mktemp -d`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ - if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ - if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ - rm -f $$tmpdir/$$lang.new.po; \ - else \ - if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ + if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$ptmpdir/$$lang.new.po; then \ + sed -f remove-potcdate.sed < $$lang.po > $$ptmpdir/$$lang.1po; \ + sed -f remove-potcdate.sed < $$ptmpdir/$$lang.new.po > $$ptmpdir/$$lang.new.1po; \ + if ! cmp $$ptmpdir/$$lang.1po $$ptmpdir/$$lang.new.1po >/dev/null 2>&1; then \ + if mv -f $$ptmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ - echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ + echo "msgmerge for $$lang.po failed: cannot move $$ptmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ - rm -f $$tmpdir/$$lang.new.po; \ - fi + fi ; rm -rf $$ptmpdir $(DUMMYPOFILES): diff --git a/man/po/da.po b/man/po/da.po index 25f78b5..49b838d 100644 --- a/man/po/da.po +++ b/man/po/da.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-man\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-03-14 18:23-0500\n" "PO-Revision-Date: 2013-08-23 01:35+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -30,12 +30,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 #: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 #: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 #: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 #: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 #: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 #: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 @@ -43,12 +43,12 @@ msgid "Julianne Frances" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 #: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 #: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 #: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 #: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 #: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 #: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 @@ -61,14 +61,14 @@ msgid "Creation, 1990" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 #: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 #: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 #: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 #: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 #: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 @@ -77,14 +77,14 @@ msgid "Thomas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 #: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 #: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 #: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 #: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 #: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 @@ -93,14 +93,14 @@ msgid "Kłoczko" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 #: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 #: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 #: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 #: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 #: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 @@ -109,14 +109,14 @@ msgid "kloczek@pld.org.pl" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 #: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 #: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 -#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 +#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 #: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 #: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 #: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 @@ -125,15 +125,15 @@ msgid "shadow-utils maintainer, 2000 - 2007" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 #: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 #: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 -#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 +#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 #: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 #: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 #: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 @@ -142,15 +142,15 @@ msgid "Nicolas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 #: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 #: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 -#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 +#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 #: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 #: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 #: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 @@ -159,15 +159,15 @@ msgid "François" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 #: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 #: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 -#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 +#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 #: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 #: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 #: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 @@ -176,15 +176,15 @@ msgid "nicolas.francois@centraliens.net" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 #: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 #: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 -#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 +#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 #: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 #: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 #: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 @@ -199,9 +199,9 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle #: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:216 chage.1.xml.out:226 -#: chage.1.xml.out:236 chage.1.xml.out:241 chage.1.xml.out:285 -#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 +#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 +#: login.defs.5.xml.out:237 shadow.5.xml.out:262 msgid "chage" msgstr "" @@ -209,11 +209,11 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:294 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:217 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:37 chsh.1.xml.out:171 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 groupadd.8.xml.out:345 groupadd.8.xml.out:348 +#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 +#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 #: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 #: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 @@ -221,44 +221,44 @@ msgstr "" #: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 #: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 #: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:456 -#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:431 -#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 -#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 -#: pwck.8.xml.out:293 shadow.5.xml.out:262 shadow.5.xml.out:265 -#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 -#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 -#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 -#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:817 -#: useradd.8.xml.out:878 useradd.8.xml.out:881 useradd.8.xml.out:884 -#: userdel.8.xml.out:241 userdel.8.xml.out:310 userdel.8.xml.out:313 -#: userdel.8.xml.out:316 usermod.8.xml.out:105 usermod.8.xml.out:244 -#: usermod.8.xml.out:605 usermod.8.xml.out:608 usermod.8.xml.out:611 -#: vipw.8.xml.out:78 vipw.8.xml.out:205 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 +#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 +#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 +#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 +#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 +#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 +#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 +#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 +#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 +#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 +#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 +#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 +#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 +#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 msgid "1" msgstr "" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 msgid "User Commands" msgstr "" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 #: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 #: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 -#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 +#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 #: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 #: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 #: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 @@ -267,20 +267,20 @@ msgid "shadow-utils" msgstr "shadow-utils" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 #: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 #: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 -#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 +#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 #: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 #: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 #: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 #: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -290,10 +290,10 @@ msgstr "ændr udløbsinformation om brugeradgangskode" #. (itstool) path: arg/replaceable #. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 #: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:64 passwd.1.xml.out:55 +#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 #: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 #: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 #: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 @@ -306,22 +306,22 @@ msgstr "tilvalg" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis #: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 #: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 #: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 msgid "LOGIN" msgstr "LOGIND" #. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 #: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 #: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 -#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 +#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 #: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 #: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 #: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 @@ -339,12 +339,12 @@ msgstr "" #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:51 +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 #: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:250 passwd.1.xml.out:150 +#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 #: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 #: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 #: vipw.8.xml.out:83 @@ -352,12 +352,12 @@ msgid "OPTIONS" msgstr "TILVALG" #. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:81 +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 -#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 +#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 #: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 #, fuzzy #| msgid "The options which apply to the chfn command are:" @@ -366,9 +366,9 @@ msgstr "Tilvalgende som gælder for kommandoen chfn er:" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:599 usermod.8.xml.out:112 usermod.8.xml.out:260 +#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 +#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 +#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 msgid "-d" msgstr "" @@ -386,44 +386,44 @@ msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 #: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 -#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 chsh.1.xml.out:83 chsh.1.xml.out:96 -#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 -#: faillog.8.xml.out:169 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 groupadd.8.xml.out:101 groupadd.8.xml.out:157 -#: groupadd.8.xml.out:200 groupadd.8.xml.out:213 groupdel.8.xml.out:88 -#: groupdel.8.xml.out:101 groupmems.8.xml.out:83 groupmems.8.xml.out:94 -#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 -#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 -#: groupmod.8.xml.out:163 groupmod.8.xml.out:176 grpck.8.xml.out:148 -#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 -#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:321 -#: passwd.1.xml.out:334 pwck.8.xml.out:196 pwconv.8.xml.out:177 -#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 -#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 -#: useradd.8.xml.out:195 useradd.8.xml.out:229 useradd.8.xml.out:277 -#: useradd.8.xml.out:424 useradd.8.xml.out:488 useradd.8.xml.out:501 -#: useradd.8.xml.out:516 useradd.8.xml.out:530 useradd.8.xml.out:565 -#: useradd.8.xml.out:591 useradd.8.xml.out:609 useradd.8.xml.out:621 -#: useradd.8.xml.out:638 useradd.8.xml.out:654 userdel.8.xml.out:122 -#: userdel.8.xml.out:135 usermod.8.xml.out:98 usermod.8.xml.out:111 -#: usermod.8.xml.out:128 usermod.8.xml.out:151 usermod.8.xml.out:173 -#: usermod.8.xml.out:216 usermod.8.xml.out:289 usermod.8.xml.out:327 -#: usermod.8.xml.out:340 usermod.8.xml.out:356 usermod.8.xml.out:368 -#: usermod.8.xml.out:500 vipw.8.xml.out:114 +#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 +#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 +#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 +#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 +#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 +#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 +#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 +#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 +#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 +#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 +#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 +#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 +#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 +#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 +#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 +#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 +#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 +#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 +#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 +#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 +#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 +#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 +#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 +#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 +#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 +#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:288 groupadd.8.xml.out:303 +#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 passwd.1.xml.out:425 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:811 userdel.8.xml.out:235 +#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 +#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 msgid "0" msgstr "" @@ -442,7 +442,7 @@ msgid "-E" msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "" @@ -450,7 +450,7 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:610 usermod.8.xml.out:129 usermod.8.xml.out:243 +#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 #: usermod.8.xml.out:416 msgid "EXPIRE_DATE" msgstr "" @@ -480,7 +480,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:344 useradd.8.xml.out:315 +#: passwd.1.xml.out:355 useradd.8.xml.out:317 msgid "-1" msgstr "" @@ -493,78 +493,78 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 #: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:271 +#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 #: userdel.8.xml.out:99 vipw.8.xml.out:96 msgid "-h" msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 -#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:271 userdel.8.xml.out:99 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 +#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 -#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 #: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 groupadd.8.xml.out:87 groupadd.8.xml.out:118 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 #: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 #: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 #: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 #: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 #: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 -#: newusers.8.xml.out:320 passwd.1.xml.out:156 passwd.1.xml.out:167 -#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 -#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:290 -#: passwd.1.xml.out:308 pwck.8.xml.out:173 pwck.8.xml.out:179 -#: pwck.8.xml.out:188 pwck.8.xml.out:209 pwconv.8.xml.out:171 -#: useradd.8.xml.out:168 useradd.8.xml.out:217 useradd.8.xml.out:271 -#: useradd.8.xml.out:330 useradd.8.xml.out:349 useradd.8.xml.out:372 -#: useradd.8.xml.out:385 useradd.8.xml.out:404 useradd.8.xml.out:455 -#: useradd.8.xml.out:548 userdel.8.xml.out:75 userdel.8.xml.out:99 -#: userdel.8.xml.out:105 userdel.8.xml.out:152 usermod.8.xml.out:77 -#: usermod.8.xml.out:88 usermod.8.xml.out:230 usermod.8.xml.out:249 -#: usermod.8.xml.out:270 usermod.8.xml.out:316 usermod.8.xml.out:404 -#: vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 -#: vipw.8.xml.out:127 vipw.8.xml.out:133 +#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 +#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 +#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 +#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 +#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 +#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 +#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 +#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 +#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 +#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 +#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 +#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 +#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 +#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 +#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 #, fuzzy #| msgid ", " msgid "<_:option-1/>, <_:option-2/>" msgstr ", " #. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:120 +#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 -#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 +#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." msgstr "Vis hjælpeteksten og afslut." #. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:197 +#: chage.1.xml.out:121 passwd.1.xml.out:193 msgid "-i" msgstr "" @@ -584,8 +584,8 @@ msgid "-I" msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 usermod.8.xml.out:152 +#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 +#: useradd.8.xml.out:642 usermod.8.xml.out:152 msgid "--inactive" msgstr "" @@ -593,8 +593,8 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/option #: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:622 useradd.8.xml.out:632 +#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 +#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "" @@ -618,10 +618,10 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:242 faillog.8.xml.out:88 +#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 #: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 -#: passwd.1.xml.out:316 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:330 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 +#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "-l" @@ -638,29 +638,29 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:287 useradd.8.xml.out:350 useradd.8.xml.out:476 +#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 msgid "-m" msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:246 +#: chage.1.xml.out:157 passwd.1.xml.out:242 msgid "--mindays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:249 +#: chage.1.xml.out:160 passwd.1.xml.out:245 msgid "" "Set the minimum number of days between password changes to <_:replaceable-1/" ">. A value of zero for this field indicates that the user may change their " @@ -669,26 +669,26 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 useradd.8.xml.out:162 useradd.8.xml.out:373 +#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 msgid "-M" msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:335 +#: chage.1.xml.out:169 passwd.1.xml.out:346 msgid "--maxdays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:335 passwd.1.xml.out:340 passwd.1.xml.out:345 +#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:203 usermod.8.xml.out:481 +#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 msgid "-W" msgstr "" @@ -703,30 +703,30 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:181 passwd.1.xml.out:343 +#: chage.1.xml.out:181 passwd.1.xml.out:354 msgid "" "Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove " "checking a password's validity." msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:189 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:191 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "-R" msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:158 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:160 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "--root" msgstr "" @@ -735,22 +735,22 @@ msgstr "" #. (itstool) path: para/replaceable #: chage.1.xml.out:190 chage.1.xml.out:194 chage.1.xml.out:196 #: chfn.1.xml.out:130 chfn.1.xml.out:134 chfn.1.xml.out:136 -#: chgpasswd.8.xml.out:123 chgpasswd.8.xml.out:127 chgpasswd.8.xml.out:129 -#: chpasswd.8.xml.out:165 chpasswd.8.xml.out:169 chpasswd.8.xml.out:171 +#: chgpasswd.8.xml.out:129 chgpasswd.8.xml.out:133 chgpasswd.8.xml.out:135 +#: chpasswd.8.xml.out:171 chpasswd.8.xml.out:175 chpasswd.8.xml.out:177 #: chsh.1.xml.out:84 chsh.1.xml.out:88 chsh.1.xml.out:90 faillog.8.xml.out:157 -#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:158 -#: gpasswd.1.xml.out:162 gpasswd.1.xml.out:164 groupadd.8.xml.out:201 +#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:160 +#: gpasswd.1.xml.out:164 gpasswd.1.xml.out:166 groupadd.8.xml.out:201 #: groupadd.8.xml.out:205 groupadd.8.xml.out:207 groupdel.8.xml.out:89 #: groupdel.8.xml.out:93 groupdel.8.xml.out:95 groupmems.8.xml.out:142 #: groupmems.8.xml.out:146 groupmems.8.xml.out:148 groupmod.8.xml.out:164 #: groupmod.8.xml.out:168 groupmod.8.xml.out:170 grpck.8.xml.out:149 #: grpck.8.xml.out:153 grpck.8.xml.out:155 lastlog.8.xml.out:104 -#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:306 -#: newusers.8.xml.out:310 newusers.8.xml.out:312 passwd.1.xml.out:278 -#: passwd.1.xml.out:282 passwd.1.xml.out:284 pwck.8.xml.out:197 +#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:308 +#: newusers.8.xml.out:312 newusers.8.xml.out:314 passwd.1.xml.out:274 +#: passwd.1.xml.out:278 passwd.1.xml.out:280 pwck.8.xml.out:197 #: pwck.8.xml.out:201 pwck.8.xml.out:203 pwconv.8.xml.out:178 -#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:489 -#: useradd.8.xml.out:493 useradd.8.xml.out:495 userdel.8.xml.out:123 +#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:491 +#: useradd.8.xml.out:495 useradd.8.xml.out:497 userdel.8.xml.out:123 #: userdel.8.xml.out:127 userdel.8.xml.out:129 usermod.8.xml.out:328 #: usermod.8.xml.out:332 usermod.8.xml.out:334 vipw.8.xml.out:115 #: vipw.8.xml.out:119 vipw.8.xml.out:121 @@ -758,12 +758,12 @@ msgid "CHROOT_DIR" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:126 -#: chpasswd.8.xml.out:168 chsh.1.xml.out:87 faillog.8.xml.out:160 -#: gpasswd.1.xml.out:161 groupadd.8.xml.out:204 groupdel.8.xml.out:92 +#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:132 +#: chpasswd.8.xml.out:174 chsh.1.xml.out:87 faillog.8.xml.out:160 +#: gpasswd.1.xml.out:163 groupadd.8.xml.out:204 groupdel.8.xml.out:92 #: groupmems.8.xml.out:145 groupmod.8.xml.out:167 grpck.8.xml.out:152 -#: lastlog.8.xml.out:107 newusers.8.xml.out:309 passwd.1.xml.out:281 -#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:492 +#: lastlog.8.xml.out:107 newusers.8.xml.out:311 passwd.1.xml.out:277 +#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:494 #: userdel.8.xml.out:126 usermod.8.xml.out:331 vipw.8.xml.out:118 #, fuzzy #| msgid "" @@ -779,19 +779,56 @@ msgstr "" "konfigurationsfilerne fra mappen CHROOT_DIR." #. (itstool) path: term/option -#: chage.1.xml.out:203 passwd.1.xml.out:322 +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "-P" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "--prefix" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:203 chage.1.xml.out:208 chpasswd.8.xml.out:184 +#: chpasswd.8.xml.out:189 groupadd.8.xml.out:214 groupadd.8.xml.out:219 +#: groupdel.8.xml.out:102 groupdel.8.xml.out:106 groupdel.8.xml.out:108 +#: groupmod.8.xml.out:177 groupmod.8.xml.out:181 groupmod.8.xml.out:183 +#: passwd.1.xml.out:287 passwd.1.xml.out:292 useradd.8.xml.out:504 +#: useradd.8.xml.out:509 userdel.8.xml.out:136 userdel.8.xml.out:140 +#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 +msgid "PREFIX_DIR" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:206 chpasswd.8.xml.out:187 groupadd.8.xml.out:217 +#: passwd.1.xml.out:290 useradd.8.xml.out:507 +msgid "" +"Apply changes to configuration files under the root filesystem found under " +"the directory <_:replaceable-1/>. 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." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:218 passwd.1.xml.out:333 msgid "--warndays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:203 chage.1.xml.out:208 passwd.1.xml.out:322 -#: passwd.1.xml.out:327 +#: chage.1.xml.out:218 chage.1.xml.out:223 passwd.1.xml.out:333 +#: passwd.1.xml.out:338 msgid "WARN_DAYS" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:206 +#: chage.1.xml.out:221 msgid "" "Set the number of days of warning before a password change is required. The " "<_:replaceable-1/> option is the number of days prior to the password " @@ -799,12 +836,12 @@ msgid "" msgstr "" #. (itstool) path: para/emphasis -#: chage.1.xml.out:220 chfn.1.xml.out:163 chsh.1.xml.out:112 +#: chage.1.xml.out:235 chfn.1.xml.out:163 chsh.1.xml.out:112 msgid "[ ]" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:215 +#: chage.1.xml.out:230 msgid "" "If none of the options are selected, <_:command-1/> operates in an " "interactive fashion, prompting the user with the current values for all of " @@ -814,13 +851,13 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:224 chsh.1.xml.out:117 groups.1.xml.out:65 +#: chage.1.xml.out:239 chsh.1.xml.out:117 groups.1.xml.out:65 #: lastlog.8.xml.out:170 msgid "NOTE" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:225 +#: chage.1.xml.out:240 #, fuzzy #| msgid "" #| "The chage program requires a shadow password file to " @@ -832,7 +869,7 @@ msgstr "" "er tilgængelig." #. (itstool) path: refsect1/para -#: chage.1.xml.out:229 +#: chage.1.xml.out:244 msgid "" "The chage program will report only the information from the shadow password " "file. This implies that configuration from other sources (e.g. LDAP or empty " @@ -846,7 +883,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: chage.1.xml.out:238 grpck.8.xml.out:294 login.defs.5.xml.out:410 +#: chage.1.xml.out:253 grpck.8.xml.out:294 login.defs.5.xml.out:429 #: passwd.5.xml.out:185 pwck.8.xml.out:40 pwck.8.xml.out:47 pwck.8.xml.out:53 #: pwck.8.xml.out:71 pwck.8.xml.out:147 pwck.8.xml.out:159 pwck.8.xml.out:191 #: pwck.8.xml.out:223 pwck.8.xml.out:284 pwconv.8.xml.out:197 @@ -855,7 +892,7 @@ msgid "pwck" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:235 +#: chage.1.xml.out:250 msgid "" "The <_:command-1/> program will also not report any inconsistency between " "the shadow and passwd files (e.g. missing x in the passwd file). The <_:" @@ -863,7 +900,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:241 +#: chage.1.xml.out:256 #, fuzzy #| msgid "" #| "The chage command is restricted to the root user, " @@ -881,52 +918,54 @@ msgstr "" "konto står til at udløbe." #. (itstool) path: refsect1/title -#: chage.1.xml.out:249 chfn.1.xml.out:170 chgpasswd.8.xml.out:175 -#: chpasswd.8.xml.out:216 chsh.1.xml.out:131 gpasswd.1.xml.out:241 +#: chage.1.xml.out:264 chfn.1.xml.out:170 chgpasswd.8.xml.out:201 +#: chpasswd.8.xml.out:256 chsh.1.xml.out:150 gpasswd.1.xml.out:243 #: groupadd.8.xml.out:247 groupdel.8.xml.out:133 groupmems.8.xml.out:176 #: groupmod.8.xml.out:212 grpck.8.xml.out:196 lastlog.8.xml.out:182 -#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:360 -#: passwd.1.xml.out:372 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 -#: su.1.xml.out:314 useradd.8.xml.out:710 userdel.8.xml.out:165 -#: usermod.8.xml.out:536 vipw.8.xml.out:142 +#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:381 +#: passwd.1.xml.out:394 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 +#: su.1.xml.out:314 useradd.8.xml.out:730 userdel.8.xml.out:165 +#: usermod.8.xml.out:553 vipw.8.xml.out:142 msgid "CONFIGURATION" msgstr "KONFIGURATION" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chage.1.xml.out:252 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 -#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:155 chgpasswd.8.xml.out:178 -#: chgpasswd.8.xml.out:205 chpasswd.8.xml.out:77 chpasswd.8.xml.out:134 -#: chpasswd.8.xml.out:200 chpasswd.8.xml.out:219 chpasswd.8.xml.out:247 -#: chsh.1.xml.out:134 chsh.1.xml.out:159 gpasswd.1.xml.out:244 -#: groupadd.8.xml.out:129 groupadd.8.xml.out:239 groupadd.8.xml.out:250 -#: groupadd.8.xml.out:276 groupdel.8.xml.out:136 groupmems.8.xml.out:179 -#: groupmod.8.xml.out:109 groupmod.8.xml.out:204 groupmod.8.xml.out:215 -#: groupmod.8.xml.out:239 grpck.8.xml.out:199 lastlog.8.xml.out:185 -#: login.1.xml.out:273 login.1.xml.out:365 login.access.5.xml.out:100 -#: login.defs.5.xml.out:116 login.defs.5.xml.out:515 newgrp.1.xml.out:88 -#: newusers.8.xml.out:340 newusers.8.xml.out:363 newusers.8.xml.out:423 -#: passwd.1.xml.out:375 passwd.1.xml.out:405 pwck.8.xml.out:243 +#: chage.1.xml.out:267 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 +#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:159 chgpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:177 chgpasswd.8.xml.out:204 chgpasswd.8.xml.out:233 +#: chpasswd.8.xml.out:79 chpasswd.8.xml.out:140 chpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:227 chpasswd.8.xml.out:236 chpasswd.8.xml.out:259 +#: chpasswd.8.xml.out:289 chsh.1.xml.out:153 chsh.1.xml.out:200 +#: gpasswd.1.xml.out:246 groupadd.8.xml.out:129 groupadd.8.xml.out:239 +#: groupadd.8.xml.out:250 groupadd.8.xml.out:276 groupdel.8.xml.out:136 +#: groupmems.8.xml.out:179 groupmod.8.xml.out:109 groupmod.8.xml.out:204 +#: groupmod.8.xml.out:215 groupmod.8.xml.out:239 grpck.8.xml.out:199 +#: lastlog.8.xml.out:185 login.1.xml.out:273 login.1.xml.out:365 +#: login.access.5.xml.out:100 login.defs.5.xml.out:118 login.defs.5.xml.out:534 +#: newgrp.1.xml.out:88 newusers.8.xml.out:340 newusers.8.xml.out:349 +#: newusers.8.xml.out:357 newusers.8.xml.out:384 newusers.8.xml.out:444 +#: passwd.1.xml.out:397 passwd.1.xml.out:427 pwck.8.xml.out:243 #: pwconv.8.xml.out:148 pwconv.8.xml.out:207 pwconv.8.xml.out:215 #: pwconv.8.xml.out:230 sg.1.xml.out:77 su.1.xml.out:109 su.1.xml.out:219 #: su.1.xml.out:277 su.1.xml.out:317 su.1.xml.out:357 useradd.8.xml.out:241 -#: useradd.8.xml.out:307 useradd.8.xml.out:378 useradd.8.xml.out:399 -#: useradd.8.xml.out:467 useradd.8.xml.out:474 useradd.8.xml.out:560 -#: useradd.8.xml.out:713 useradd.8.xml.out:797 userdel.8.xml.out:87 +#: useradd.8.xml.out:309 useradd.8.xml.out:380 useradd.8.xml.out:401 +#: useradd.8.xml.out:469 useradd.8.xml.out:476 useradd.8.xml.out:562 +#: useradd.8.xml.out:733 useradd.8.xml.out:817 userdel.8.xml.out:87 #: userdel.8.xml.out:168 userdel.8.xml.out:191 userdel.8.xml.out:297 -#: usermod.8.xml.out:399 usermod.8.xml.out:539 usermod.8.xml.out:569 +#: usermod.8.xml.out:399 usermod.8.xml.out:556 usermod.8.xml.out:586 #: vipw.8.xml.out:145 msgid "/etc/login.defs" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:250 chfn.1.xml.out:171 chgpasswd.8.xml.out:176 -#: chpasswd.8.xml.out:217 chsh.1.xml.out:132 gpasswd.1.xml.out:242 +#: chage.1.xml.out:265 chfn.1.xml.out:171 chgpasswd.8.xml.out:202 +#: chpasswd.8.xml.out:257 chsh.1.xml.out:151 gpasswd.1.xml.out:244 #: groupadd.8.xml.out:248 groupdel.8.xml.out:134 groupmems.8.xml.out:177 #: groupmod.8.xml.out:213 grpck.8.xml.out:197 lastlog.8.xml.out:183 -#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:361 -#: passwd.1.xml.out:373 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 -#: useradd.8.xml.out:711 userdel.8.xml.out:166 usermod.8.xml.out:537 +#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:382 +#: passwd.1.xml.out:395 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 +#: useradd.8.xml.out:731 userdel.8.xml.out:166 usermod.8.xml.out:554 #: vipw.8.xml.out:143 #, fuzzy #| msgid "" @@ -940,126 +979,126 @@ msgstr "" "ændrer opførelsen for dette værktøj:" #. (itstool) path: refsect1/title -#: chage.1.xml.out:261 chfn.1.xml.out:184 chgpasswd.8.xml.out:190 -#: chpasswd.8.xml.out:232 chsh.1.xml.out:144 expiry.1.xml.out:97 -#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:256 +#: chage.1.xml.out:276 chfn.1.xml.out:184 chgpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:274 chsh.1.xml.out:163 expiry.1.xml.out:97 +#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:258 #: groupadd.8.xml.out:261 groupdel.8.xml.out:145 groupmems.8.xml.out:188 #: groupmod.8.xml.out:224 groups.1.xml.out:77 grpck.8.xml.out:208 #: gshadow.5.xml.out:132 lastlog.8.xml.out:194 limits.5.xml.out:172 #: login.1.xml.out:314 login.access.5.xml.out:97 logoutd.8.xml.out:65 -#: newgrp.1.xml.out:97 newusers.8.xml.out:396 passwd.1.xml.out:390 +#: newgrp.1.xml.out:97 newusers.8.xml.out:417 passwd.1.xml.out:412 #: passwd.5.xml.out:139 porttime.5.xml.out:106 pwck.8.xml.out:258 #: pwconv.8.xml.out:227 shadow.3.xml.out:202 shadow.5.xml.out:231 -#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:740 -#: userdel.8.xml.out:182 usermod.8.xml.out:554 vipw.8.xml.out:172 +#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:760 +#: userdel.8.xml.out:182 usermod.8.xml.out:571 vipw.8.xml.out:172 msgid "FILES" msgstr "FILER" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:265 chfn.1.xml.out:193 chpasswd.8.xml.out:235 -#: chsh.1.xml.out:147 expiry.1.xml.out:100 groupmod.8.xml.out:245 +#: chage.1.xml.out:280 chfn.1.xml.out:193 chpasswd.8.xml.out:277 +#: chsh.1.xml.out:166 expiry.1.xml.out:100 groupmod.8.xml.out:245 #: grpck.8.xml.out:223 lastlog.8.xml.out:63 login.1.xml.out:145 #: login.1.xml.out:329 newgrp.1.xml.out:65 newgrp.1.xml.out:70 -#: newgrp.1.xml.out:100 newusers.8.xml.out:399 passwd.1.xml.out:393 +#: newgrp.1.xml.out:100 newusers.8.xml.out:420 passwd.1.xml.out:415 #: passwd.5.xml.out:47 passwd.5.xml.out:89 passwd.5.xml.out:142 #: pwck.8.xml.out:73 pwck.8.xml.out:145 pwck.8.xml.out:212 pwck.8.xml.out:224 #: pwck.8.xml.out:267 pwconv.8.xml.out:127 shadow.5.xml.out:234 sg.1.xml.out:89 -#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:524 -#: useradd.8.xml.out:743 userdel.8.xml.out:197 usermod.8.xml.out:103 -#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:575 +#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:526 +#: useradd.8.xml.out:763 userdel.8.xml.out:197 usermod.8.xml.out:103 +#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:592 #: vipw.8.xml.out:68 vipw.8.xml.out:187 msgid "/etc/passwd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: chage.1.xml.out:268 chfn.1.xml.out:195 chpasswd.8.xml.out:237 -#: chsh.1.xml.out:149 expiry.1.xml.out:102 groupmod.8.xml.out:247 +#: chage.1.xml.out:283 chfn.1.xml.out:195 chpasswd.8.xml.out:279 +#: chsh.1.xml.out:168 expiry.1.xml.out:102 groupmod.8.xml.out:247 #: grpck.8.xml.out:225 login.1.xml.out:331 newgrp.1.xml.out:102 -#: newusers.8.xml.out:401 passwd.1.xml.out:395 passwd.5.xml.out:144 +#: newusers.8.xml.out:422 passwd.1.xml.out:417 passwd.5.xml.out:144 #: pwck.8.xml.out:269 shadow.5.xml.out:236 sg.1.xml.out:91 su.1.xml.out:347 -#: useradd.8.xml.out:745 userdel.8.xml.out:199 vipw.8.xml.out:189 +#: useradd.8.xml.out:765 userdel.8.xml.out:199 vipw.8.xml.out:189 msgid "User account information." msgstr "Information om brugerkonto." #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:273 chpasswd.8.xml.out:241 expiry.1.xml.out:106 +#: chage.1.xml.out:288 chpasswd.8.xml.out:283 expiry.1.xml.out:106 #: login.1.xml.out:335 newgrp.1.xml.out:68 newgrp.1.xml.out:106 -#: newusers.8.xml.out:295 newusers.8.xml.out:405 passwd.1.xml.out:399 +#: newusers.8.xml.out:297 newusers.8.xml.out:426 passwd.1.xml.out:421 #: passwd.5.xml.out:82 passwd.5.xml.out:148 pwck.8.xml.out:73 #: pwck.8.xml.out:107 pwck.8.xml.out:213 pwck.8.xml.out:225 pwck.8.xml.out:273 #: pwconv.8.xml.out:128 pwconv.8.xml.out:149 shadow.3.xml.out:97 #: shadow.3.xml.out:173 shadow.3.xml.out:205 shadow.5.xml.out:78 -#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:439 -#: useradd.8.xml.out:464 useradd.8.xml.out:749 userdel.8.xml.out:203 +#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:441 +#: useradd.8.xml.out:466 useradd.8.xml.out:769 userdel.8.xml.out:203 #: usermod.8.xml.out:144 usermod.8.xml.out:145 usermod.8.xml.out:166 -#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:581 +#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:598 #: vipw.8.xml.out:71 vipw.8.xml.out:193 msgid "/etc/shadow" msgstr "/etc/shadow" #. (itstool) path: listitem/para -#: chage.1.xml.out:276 chpasswd.8.xml.out:243 expiry.1.xml.out:108 -#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:407 -#: passwd.1.xml.out:401 pwck.8.xml.out:275 shadow.3.xml.out:207 -#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:751 +#: chage.1.xml.out:291 chpasswd.8.xml.out:285 expiry.1.xml.out:108 +#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:428 +#: passwd.1.xml.out:423 pwck.8.xml.out:275 shadow.3.xml.out:207 +#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:771 #: userdel.8.xml.out:205 vipw.8.xml.out:195 msgid "Secure user account information." msgstr "Information om sikret brugerkonto." #. (itstool) path: refsect1/title -#: chage.1.xml.out:283 groupadd.8.xml.out:298 groupdel.8.xml.out:163 -#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:420 -#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:806 +#: chage.1.xml.out:298 groupadd.8.xml.out:298 groupdel.8.xml.out:163 +#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:442 +#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:826 #: userdel.8.xml.out:230 msgid "EXIT VALUES" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:290 groupadd.8.xml.out:305 groupdel.8.xml.out:170 -#: grpck.8.xml.out:239 passwd.1.xml.out:427 pwck.8.xml.out:289 -#: useradd.8.xml.out:813 userdel.8.xml.out:237 +#: chage.1.xml.out:305 groupadd.8.xml.out:305 groupdel.8.xml.out:170 +#: grpck.8.xml.out:239 passwd.1.xml.out:449 pwck.8.xml.out:289 +#: useradd.8.xml.out:833 userdel.8.xml.out:237 msgid "success" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:296 passwd.1.xml.out:433 +#: chage.1.xml.out:311 passwd.1.xml.out:455 msgid "permission denied" msgstr "tilladelse nægtet" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum -#: chage.1.xml.out:300 groupadd.8.xml.out:309 groupdel.8.xml.out:174 +#: chage.1.xml.out:315 groupadd.8.xml.out:309 groupdel.8.xml.out:174 #: groupmod.8.xml.out:265 groups.1.xml.out:95 groups.1.xml.out:98 #: groups.1.xml.out:101 grpck.8.xml.out:249 limits.5.xml.out:90 #: limits.5.xml.out:101 limits.5.xml.out:188 limits.5.xml.out:191 -#: passwd.1.xml.out:437 pwck.8.xml.out:299 useradd.8.xml.out:823 +#: passwd.1.xml.out:459 pwck.8.xml.out:299 useradd.8.xml.out:843 #: userdel.8.xml.out:247 msgid "2" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:302 groupadd.8.xml.out:311 groupdel.8.xml.out:176 -#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:825 +#: chage.1.xml.out:317 groupadd.8.xml.out:311 groupdel.8.xml.out:176 +#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:845 #: userdel.8.xml.out:249 msgid "invalid command syntax" msgstr "" #. (itstool) path: term/replaceable -#: chage.1.xml.out:306 +#: chage.1.xml.out:321 msgid "15" msgstr "15" #. (itstool) path: listitem/para -#: chage.1.xml.out:308 +#: chage.1.xml.out:323 msgid "can't find the shadow password file" msgstr "Kan ikke finde shadows adgangskodefil" #. (itstool) path: refsect1/para -#: chage.1.xml.out:284 groupadd.8.xml.out:299 groupdel.8.xml.out:164 -#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:421 -#: pwck.8.xml.out:283 useradd.8.xml.out:807 userdel.8.xml.out:231 +#: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:164 +#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:443 +#: pwck.8.xml.out:283 useradd.8.xml.out:827 userdel.8.xml.out:231 #, fuzzy #| msgid "" #| "The pwck command exits with the following values: " @@ -1072,18 +1111,18 @@ msgstr "" "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:316 chfn.1.xml.out:202 chgpasswd.8.xml.out:214 -#: chpasswd.8.xml.out:262 chsh.1.xml.out:168 expiry.1.xml.out:115 -#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:274 +#: chage.1.xml.out:331 chfn.1.xml.out:202 chgpasswd.8.xml.out:242 +#: chpasswd.8.xml.out:304 chsh.1.xml.out:209 expiry.1.xml.out:115 +#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:276 #: groupadd.8.xml.out:343 groupdel.8.xml.out:202 groupmems.8.xml.out:206 #: groupmod.8.xml.out:323 groups.1.xml.out:89 grpck.8.xml.out:277 #: gshadow.5.xml.out:150 limits.5.xml.out:182 login.1.xml.out:374 -#: login.access.5.xml.out:109 login.defs.5.xml.out:527 newgrp.1.xml.out:127 -#: newusers.8.xml.out:450 nologin.8.xml.out:57 passwd.1.xml.out:471 +#: login.access.5.xml.out:109 login.defs.5.xml.out:546 newgrp.1.xml.out:127 +#: newusers.8.xml.out:471 nologin.8.xml.out:57 passwd.1.xml.out:493 #: passwd.5.xml.out:167 porttime.5.xml.out:118 pwck.8.xml.out:333 #: pwconv.8.xml.out:239 shadow.3.xml.out:214 shadow.5.xml.out:259 -#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:875 -#: userdel.8.xml.out:308 usermod.8.xml.out:602 vipw.8.xml.out:202 +#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:895 +#: userdel.8.xml.out:308 usermod.8.xml.out:619 vipw.8.xml.out:202 msgid "SEE ALSO" msgstr "SE OGSÅ" @@ -1096,53 +1135,53 @@ msgstr "SE OGSÅ" #. (itstool) path: para/command #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: chage.1.xml.out:319 chfn.1.xml.out:211 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:177 expiry.1.xml.out:118 groupadd.8.xml.out:351 +#: chage.1.xml.out:334 chfn.1.xml.out:211 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:218 expiry.1.xml.out:118 groupadd.8.xml.out:351 #: groupdel.8.xml.out:211 groupmems.8.xml.out:215 groupmod.8.xml.out:332 #: grpck.8.xml.out:291 lastlog.8.xml.out:176 login.1.xml.out:128 -#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:399 -#: login.defs.5.xml.out:516 login.defs.5.xml.out:533 login.defs.5.xml.out:539 -#: newusers.8.xml.out:79 newusers.8.xml.out:456 passwd.1.xml.out:40 -#: passwd.1.xml.out:47 passwd.1.xml.out:53 passwd.1.xml.out:66 -#: passwd.1.xml.out:69 passwd.1.xml.out:86 passwd.1.xml.out:116 -#: passwd.1.xml.out:152 passwd.1.xml.out:366 passwd.1.xml.out:413 -#: passwd.1.xml.out:422 passwd.1.xml.out:451 passwd.1.xml.out:457 -#: passwd.1.xml.out:477 passwd.5.xml.out:33 passwd.5.xml.out:40 +#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:415 +#: login.defs.5.xml.out:535 login.defs.5.xml.out:552 login.defs.5.xml.out:558 +#: newusers.8.xml.out:81 newusers.8.xml.out:477 passwd.1.xml.out:42 +#: passwd.1.xml.out:49 passwd.1.xml.out:55 passwd.1.xml.out:68 +#: passwd.1.xml.out:71 passwd.1.xml.out:88 passwd.1.xml.out:100 +#: passwd.1.xml.out:148 passwd.1.xml.out:388 passwd.1.xml.out:435 +#: passwd.1.xml.out:444 passwd.1.xml.out:473 passwd.1.xml.out:479 +#: passwd.1.xml.out:502 passwd.5.xml.out:33 passwd.5.xml.out:40 #: passwd.5.xml.out:182 pwck.8.xml.out:228 pwck.8.xml.out:342 #: pwconv.8.xml.out:84 pwconv.8.xml.out:99 shadow.5.xml.out:268 -#: shadow.5.xml.out:271 useradd.8.xml.out:884 userdel.8.xml.out:316 -#: usermod.8.xml.out:611 vipw.8.xml.out:217 +#: shadow.5.xml.out:271 useradd.8.xml.out:904 userdel.8.xml.out:316 +#: usermod.8.xml.out:628 vipw.8.xml.out:217 msgid "passwd" msgstr "" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: refmeta/manvolnum #. (itstool) path: term/replaceable -#: chage.1.xml.out:319 chage.1.xml.out:322 chfn.1.xml.out:208 -#: chfn.1.xml.out:211 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 chsh.1.xml.out:177 expiry.1.xml.out:118 +#: chage.1.xml.out:334 chage.1.xml.out:337 chfn.1.xml.out:208 +#: chfn.1.xml.out:211 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 chsh.1.xml.out:218 expiry.1.xml.out:118 #: expiry.1.xml.out:121 faillog.5.xml.out:34 faillog.8.xml.out:238 -#: gpasswd.1.xml.out:292 gpasswd.1.xml.out:295 groupadd.8.xml.out:363 +#: gpasswd.1.xml.out:294 gpasswd.1.xml.out:297 groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 grpck.8.xml.out:267 grpck.8.xml.out:280 #: grpck.8.xml.out:287 grpck.8.xml.out:291 grpck.8.xml.out:297 #: gshadow.5.xml.out:23 gshadow.5.xml.out:153 gshadow.5.xml.out:156 #: limits.5.xml.out:36 login.1.xml.out:389 login.1.xml.out:392 #: login.1.xml.out:395 login.1.xml.out:398 login.access.5.xml.out:35 -#: login.defs.5.xml.out:103 login.defs.5.xml.out:539 login.defs.5.xml.out:542 -#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:79 -#: newusers.8.xml.out:453 newusers.8.xml.out:460 newusers.8.xml.out:463 -#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:455 -#: passwd.1.xml.out:477 passwd.1.xml.out:480 passwd.1.xml.out:484 +#: login.defs.5.xml.out:105 login.defs.5.xml.out:558 login.defs.5.xml.out:561 +#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:81 +#: newusers.8.xml.out:474 newusers.8.xml.out:481 newusers.8.xml.out:484 +#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:477 +#: passwd.1.xml.out:502 passwd.1.xml.out:505 passwd.1.xml.out:509 #: passwd.5.xml.out:34 passwd.5.xml.out:80 passwd.5.xml.out:194 #: porttime.5.xml.out:34 pwck.8.xml.out:317 pwck.8.xml.out:336 #: pwck.8.xml.out:342 pwck.8.xml.out:345 pwconv.8.xml.out:245 #: shadow.3.xml.out:220 shadow.5.xml.out:34 shadow.5.xml.out:271 #: sg.1.xml.out:134 sg.1.xml.out:137 su.1.xml.out:418 suauth.5.xml.out:34 -#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:628 -#: useradd.8.xml.out:899 useradd.8.xml.out:906 useradd.8.xml.out:909 +#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:648 +#: useradd.8.xml.out:919 useradd.8.xml.out:926 useradd.8.xml.out:929 #: userdel.8.xml.out:319 userdel.8.xml.out:335 userdel.8.xml.out:338 -#: usermod.8.xml.out:162 usermod.8.xml.out:629 usermod.8.xml.out:633 -#: usermod.8.xml.out:636 vipw.8.xml.out:208 vipw.8.xml.out:211 +#: usermod.8.xml.out:162 usermod.8.xml.out:646 usermod.8.xml.out:650 +#: usermod.8.xml.out:653 vipw.8.xml.out:208 vipw.8.xml.out:211 #: vipw.8.xml.out:214 vipw.8.xml.out:217 vipw.8.xml.out:220 vipw.8.xml.out:223 msgid "5" msgstr "5" @@ -1155,20 +1194,20 @@ msgstr "5" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/filename -#: chage.1.xml.out:322 expiry.1.xml.out:121 grpck.8.xml.out:51 -#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:542 -#: passwd.1.xml.out:480 passwd.5.xml.out:79 passwd.5.xml.out:194 +#: chage.1.xml.out:337 expiry.1.xml.out:121 grpck.8.xml.out:51 +#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:561 +#: passwd.1.xml.out:505 passwd.5.xml.out:79 passwd.5.xml.out:194 #: pwck.8.xml.out:229 pwck.8.xml.out:233 pwck.8.xml.out:345 pwconv.8.xml.out:84 #: pwconv.8.xml.out:85 pwconv.8.xml.out:100 pwconv.8.xml.out:101 #: shadow.3.xml.out:33 shadow.3.xml.out:40 shadow.3.xml.out:96 #: shadow.3.xml.out:220 shadow.5.xml.out:33 shadow.5.xml.out:40 -#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:628 +#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:648 #: usermod.8.xml.out:162 vipw.8.xml.out:223 msgid "shadow" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:317 expiry.1.xml.out:116 faillog.8.xml.out:233 +#: chage.1.xml.out:332 expiry.1.xml.out:116 faillog.8.xml.out:233 #: nologin.8.xml.out:58 shadow.3.xml.out:215 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>." msgstr "" @@ -1180,10 +1219,10 @@ msgstr "" #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: varlistentry/term #: chfn.1.xml.out:36 chfn.1.xml.out:43 chfn.1.xml.out:49 chfn.1.xml.out:62 -#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:171 +#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:212 #: groupadd.8.xml.out:345 groupdel.8.xml.out:205 groupmems.8.xml.out:209 -#: groupmod.8.xml.out:326 login.defs.5.xml.out:239 useradd.8.xml.out:878 -#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:605 +#: groupmod.8.xml.out:326 login.defs.5.xml.out:243 useradd.8.xml.out:898 +#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:622 msgid "chfn" msgstr "" @@ -1201,8 +1240,8 @@ msgstr "" #. (itstool) path: term/option #: chfn.1.xml.out:71 chfn.1.xml.out:110 groupadd.8.xml.out:106 #: groupadd.8.xml.out:145 groupadd.8.xml.out:323 groupmod.8.xml.out:93 -#: groupmod.8.xml.out:132 useradd.8.xml.out:405 useradd.8.xml.out:536 -#: useradd.8.xml.out:837 usermod.8.xml.out:271 usermod.8.xml.out:377 +#: groupmod.8.xml.out:132 useradd.8.xml.out:407 useradd.8.xml.out:538 +#: useradd.8.xml.out:857 usermod.8.xml.out:271 usermod.8.xml.out:377 msgid "-o" msgstr "" @@ -1240,7 +1279,7 @@ msgstr "" #: chfn.1.xml.out:94 expiry.1.xml.out:61 expiry.1.xml.out:79 #: groupadd.8.xml.out:88 groupdel.8.xml.out:72 login.1.xml.out:90 #: login.1.xml.out:190 login.1.xml.out:229 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 userdel.8.xml.out:76 userdel.8.xml.out:287 +#: useradd.8.xml.out:642 userdel.8.xml.out:76 userdel.8.xml.out:287 #: userdel.8.xml.out:302 usermod.8.xml.out:152 msgid "-f" msgstr "-f" @@ -1299,12 +1338,12 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chfn.1.xml.out:122 faillog.8.xml.out:89 faillog.8.xml.out:144 -#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:173 +#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:175 #: groupadd.8.xml.out:112 groupadd.8.xml.out:185 grpck.8.xml.out:124 #: grpck.8.xml.out:138 login.1.xml.out:220 login.1.xml.out:229 -#: newusers.8.xml.out:287 passwd.1.xml.out:268 pwck.8.xml.out:155 -#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:456 -#: useradd.8.xml.out:542 userdel.8.xml.out:106 usermod.8.xml.out:317 +#: newusers.8.xml.out:289 passwd.1.xml.out:264 pwck.8.xml.out:155 +#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:458 +#: useradd.8.xml.out:544 userdel.8.xml.out:106 usermod.8.xml.out:317 msgid "-r" msgstr "-r" @@ -1327,14 +1366,14 @@ msgstr "Ændr brugerens værelsesnummer." #. (itstool) path: para/option #: chfn.1.xml.out:143 faillog.8.xml.out:80 faillog.8.xml.out:180 #: faillog.8.xml.out:214 lastlog.8.xml.out:90 lastlog.8.xml.out:122 -#: lastlog.8.xml.out:139 passwd.1.xml.out:309 useradd.8.xml.out:414 -#: useradd.8.xml.out:531 usermod.8.xml.out:279 usermod.8.xml.out:369 +#: lastlog.8.xml.out:139 passwd.1.xml.out:320 useradd.8.xml.out:416 +#: useradd.8.xml.out:533 usermod.8.xml.out:279 usermod.8.xml.out:369 #: vipw.8.xml.out:133 msgid "-u" msgstr "" #. (itstool) path: term/option -#: chfn.1.xml.out:151 passwd.1.xml.out:322 usermod.8.xml.out:463 +#: chfn.1.xml.out:151 passwd.1.xml.out:333 usermod.8.xml.out:463 msgid "-w" msgstr "" @@ -1365,11 +1404,11 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: chfn.1.xml.out:189 chgpasswd.8.xml.out:207 chpasswd.8.xml.out:249 -#: chsh.1.xml.out:161 groupadd.8.xml.out:278 groupmod.8.xml.out:241 -#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:425 -#: passwd.1.xml.out:407 pwconv.8.xml.out:232 su.1.xml.out:359 -#: useradd.8.xml.out:799 userdel.8.xml.out:193 +#: chfn.1.xml.out:189 chgpasswd.8.xml.out:235 chpasswd.8.xml.out:291 +#: chsh.1.xml.out:202 groupadd.8.xml.out:278 groupmod.8.xml.out:241 +#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:446 +#: passwd.1.xml.out:429 pwconv.8.xml.out:232 su.1.xml.out:359 +#: useradd.8.xml.out:819 userdel.8.xml.out:193 msgid "Shadow password suite configuration." msgstr "" @@ -1382,8 +1421,8 @@ msgstr "" #: chfn.1.xml.out:205 chsh.1.xml.out:36 chsh.1.xml.out:43 chsh.1.xml.out:49 #: chsh.1.xml.out:62 chsh.1.xml.out:73 chsh.1.xml.out:109 #: groupadd.8.xml.out:348 groupdel.8.xml.out:208 groupmems.8.xml.out:212 -#: groupmod.8.xml.out:329 login.defs.5.xml.out:270 useradd.8.xml.out:881 -#: userdel.8.xml.out:313 usermod.8.xml.out:608 +#: groupmod.8.xml.out:329 login.defs.5.xml.out:280 useradd.8.xml.out:901 +#: userdel.8.xml.out:313 usermod.8.xml.out:625 msgid "chsh" msgstr "" @@ -1391,25 +1430,25 @@ msgstr "" #. (itstool) path: para/filename #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname -#: chfn.1.xml.out:208 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 groupadd.8.xml.out:194 groupadd.8.xml.out:363 -#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:102 -#: login.defs.5.xml.out:109 newusers.8.xml.out:298 newusers.8.xml.out:453 -#: passwd.1.xml.out:484 pwconv.8.xml.out:92 pwconv.8.xml.out:94 +#: chfn.1.xml.out:208 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 groupadd.8.xml.out:194 groupadd.8.xml.out:363 +#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:104 +#: login.defs.5.xml.out:111 newusers.8.xml.out:300 newusers.8.xml.out:474 +#: passwd.1.xml.out:509 pwconv.8.xml.out:92 pwconv.8.xml.out:94 #: pwconv.8.xml.out:108 pwconv.8.xml.out:245 su.1.xml.out:418 -#: useradd.8.xml.out:899 userdel.8.xml.out:117 userdel.8.xml.out:319 -#: usermod.8.xml.out:629 vipw.8.xml.out:214 +#: useradd.8.xml.out:919 userdel.8.xml.out:117 userdel.8.xml.out:319 +#: usermod.8.xml.out:646 vipw.8.xml.out:214 msgid "login.defs" msgstr "" #. (itstool) path: refsect1/para -#: chfn.1.xml.out:203 chgpasswd.8.xml.out:215 chsh.1.xml.out:169 +#: chfn.1.xml.out:203 chgpasswd.8.xml.out:243 chsh.1.xml.out:210 #: limits.5.xml.out:183 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." msgstr "" #. (itstool) path: author/contrib -#: chgpasswd.8.xml.out:23 +#: chgpasswd.8.xml.out:25 msgid "Creation, 2006" msgstr "" @@ -1418,19 +1457,19 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:33 chgpasswd.8.xml.out:40 chgpasswd.8.xml.out:46 -#: chgpasswd.8.xml.out:56 chgpasswd.8.xml.out:66 chgpasswd.8.xml.out:83 -#: login.defs.5.xml.out:249 +#: chgpasswd.8.xml.out:35 chgpasswd.8.xml.out:42 chgpasswd.8.xml.out:48 +#: chgpasswd.8.xml.out:58 chgpasswd.8.xml.out:68 chgpasswd.8.xml.out:85 +#: login.defs.5.xml.out:253 msgid "chgpasswd" msgstr "" #. (itstool) path: refmeta/manvolnum #. (itstool) path: citerefentry/manvolnum #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:34 chgpasswd.8.xml.out:220 chpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:268 chpasswd.8.xml.out:276 faillog.5.xml.out:87 -#: faillog.8.xml.out:34 gpasswd.1.xml.out:280 gpasswd.1.xml.out:283 -#: gpasswd.1.xml.out:286 gpasswd.1.xml.out:289 groupadd.8.xml.out:37 +#: chgpasswd.8.xml.out:36 chgpasswd.8.xml.out:248 chpasswd.8.xml.out:40 +#: chpasswd.8.xml.out:310 chpasswd.8.xml.out:318 faillog.5.xml.out:87 +#: faillog.8.xml.out:34 gpasswd.1.xml.out:282 gpasswd.1.xml.out:285 +#: gpasswd.1.xml.out:288 gpasswd.1.xml.out:291 groupadd.8.xml.out:37 #: groupadd.8.xml.out:354 groupadd.8.xml.out:357 groupadd.8.xml.out:360 #: groupadd.8.xml.out:366 groupadd.8.xml.out:369 groupadd.8.xml.out:372 #: groupdel.8.xml.out:35 groupdel.8.xml.out:186 groupdel.8.xml.out:214 @@ -1443,43 +1482,43 @@ msgstr "" #: grpck.8.xml.out:34 grpck.8.xml.out:283 grpck.8.xml.out:294 #: gshadow.5.xml.out:159 gshadow.5.xml.out:162 lastlog.8.xml.out:36 #: login.1.xml.out:174 login.1.xml.out:176 login.1.xml.out:249 -#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:545 -#: logoutd.8.xml.out:34 newusers.8.xml.out:50 newusers.8.xml.out:467 -#: nologin.8.xml.out:23 passwd.1.xml.out:474 passwd.1.xml.out:488 +#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:564 +#: logoutd.8.xml.out:34 newusers.8.xml.out:52 newusers.8.xml.out:488 +#: nologin.8.xml.out:23 passwd.1.xml.out:496 passwd.1.xml.out:513 #: passwd.5.xml.out:185 passwd.5.xml.out:188 passwd.5.xml.out:191 #: passwd.5.xml.out:200 pwck.8.xml.out:41 pwck.8.xml.out:339 pwck.8.xml.out:348 #: pwconv.8.xml.out:40 pwconv.8.xml.out:242 pwconv.8.xml.out:248 #: pwconv.8.xml.out:251 pwconv.8.xml.out:254 shadow.5.xml.out:274 #: shadow.5.xml.out:277 shadow.5.xml.out:280 shadow.5.xml.out:286 -#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:574 -#: useradd.8.xml.out:890 useradd.8.xml.out:893 useradd.8.xml.out:896 -#: useradd.8.xml.out:902 useradd.8.xml.out:913 useradd.8.xml.out:916 -#: userdel.8.xml.out:40 userdel.8.xml.out:259 userdel.8.xml.out:322 -#: userdel.8.xml.out:325 userdel.8.xml.out:328 userdel.8.xml.out:331 -#: userdel.8.xml.out:342 userdel.8.xml.out:345 usermod.8.xml.out:41 -#: usermod.8.xml.out:617 usermod.8.xml.out:620 usermod.8.xml.out:623 -#: usermod.8.xml.out:626 usermod.8.xml.out:640 usermod.8.xml.out:643 -#: vipw.8.xml.out:36 +#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:576 +#: useradd.8.xml.out:590 useradd.8.xml.out:910 useradd.8.xml.out:913 +#: useradd.8.xml.out:916 useradd.8.xml.out:922 useradd.8.xml.out:933 +#: useradd.8.xml.out:936 userdel.8.xml.out:40 userdel.8.xml.out:259 +#: userdel.8.xml.out:322 userdel.8.xml.out:325 userdel.8.xml.out:328 +#: userdel.8.xml.out:331 userdel.8.xml.out:342 userdel.8.xml.out:345 +#: usermod.8.xml.out:41 usermod.8.xml.out:522 usermod.8.xml.out:634 +#: usermod.8.xml.out:637 usermod.8.xml.out:640 usermod.8.xml.out:643 +#: usermod.8.xml.out:657 usermod.8.xml.out:660 vipw.8.xml.out:36 msgid "8" msgstr "8" #. (itstool) path: refmeta/refmiscinfo -#: chgpasswd.8.xml.out:35 chpasswd.8.xml.out:39 faillog.8.xml.out:35 +#: chgpasswd.8.xml.out:37 chpasswd.8.xml.out:41 faillog.8.xml.out:35 #: groupadd.8.xml.out:38 groupdel.8.xml.out:36 groupmems.8.xml.out:39 #: groupmod.8.xml.out:36 grpck.8.xml.out:35 lastlog.8.xml.out:37 -#: logoutd.8.xml.out:35 newusers.8.xml.out:51 nologin.8.xml.out:24 +#: logoutd.8.xml.out:35 newusers.8.xml.out:53 nologin.8.xml.out:24 #: pwck.8.xml.out:42 pwconv.8.xml.out:41 useradd.8.xml.out:54 #: userdel.8.xml.out:41 usermod.8.xml.out:42 vipw.8.xml.out:37 msgid "System Management Commands" msgstr "Kommandoer for systemhåndtering" #. (itstool) path: refnamediv/refpurpose -#: chgpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:43 msgid "update group passwords in batch mode" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:55 +#: chgpasswd.8.xml.out:57 msgid "" "The <_:command-1/> command reads a list of group name and password pairs " "from standard input and uses this information to update a set of existing " @@ -1489,12 +1528,12 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:61 groupmems.8.xml.out:54 groupmems.8.xml.out:110 +#: chgpasswd.8.xml.out:63 groupmems.8.xml.out:54 groupmems.8.xml.out:110 msgid "group_name" msgstr "" #. (itstool) path: para/emphasis -#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 passwd.5.xml.out:77 +#: chgpasswd.8.xml.out:64 chpasswd.8.xml.out:68 passwd.5.xml.out:77 #: passwd.5.xml.out:86 passwd.5.xml.out:91 passwd.5.xml.out:95 #: passwd.5.xml.out:98 #, fuzzy @@ -1503,28 +1542,28 @@ msgid "password" msgstr "/etc/passwd" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:60 chpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 msgid "<_:emphasis-1/>:<_:emphasis-2/>" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:66 msgid "" "By default the supplied password must be in clear-text, and is encrypted by " "<_:command-1/>." msgstr "" #. (itstool) path: para/option -#: chgpasswd.8.xml.out:70 chpasswd.8.xml.out:75 chpasswd.8.xml.out:132 -#: passwd.1.xml.out:129 +#: chgpasswd.8.xml.out:72 chpasswd.8.xml.out:77 chpasswd.8.xml.out:138 +#: passwd.1.xml.out:114 msgid "ENCRYPT_METHOD" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chgpasswd.8.xml.out:71 chgpasswd.8.xml.out:101 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 chpasswd.8.xml.out:139 -#: passwd.1.xml.out:180 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chgpasswd.8.xml.out:73 chgpasswd.8.xml.out:107 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 chpasswd.8.xml.out:145 +#: passwd.1.xml.out:176 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "-e" msgstr "" @@ -1532,16 +1571,16 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #. (itstool) path: arg/arg -#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:88 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:114 chpasswd.8.xml.out:129 -#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:90 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:116 chpasswd.8.xml.out:135 +#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:270 #: sg.1.xml.out:50 su.1.xml.out:86 su.1.xml.out:126 su.1.xml.out:131 #: useradd.8.xml.out:139 usermod.8.xml.out:99 msgid "-c" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:70 msgid "" "The default encryption algorithm can be defined for the system with the <_:" "option-1/> variable of <_:filename-2/>, and can be overwritten with the <_:" @@ -1549,53 +1588,107 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:74 chpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:76 chpasswd.8.xml.out:101 msgid "" "This command is intended to be used in a large system environment where many " "accounts are created at a single time." msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:88 chpasswd.8.xml.out:114 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:116 newusers.8.xml.out:270 msgid "--crypt-method" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:117 newusers.8.xml.out:270 +#: chgpasswd.8.xml.out:92 chpasswd.8.xml.out:119 newusers.8.xml.out:272 msgid "Use the specified method to encrypt the passwords." msgstr "Brug den angivne metode til at kryptere adgangskoderne." -#. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:91 chpasswd.8.xml.out:118 -msgid "The available methods are DES, MD5, and NONE." +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:95 chgpasswd.8.xml.out:149 chpasswd.8.xml.out:122 +#: chpasswd.8.xml.out:208 newusers.8.xml.out:330 +msgid "BCRYPT" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 +#, fuzzy +#| msgid "-h " +msgid "<_:replaceable-1/>," +msgstr "-h " + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:96 chpasswd.8.xml.out:123 +msgid "DES" +msgstr "" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid "MD5" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:98 chgpasswd.8.xml.out:151 chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:210 newusers.8.xml.out:332 +msgid "SHA256" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:99 chgpasswd.8.xml.out:152 chpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:211 newusers.8.xml.out:333 +msgid "SHA512" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid ", <_:replaceable-1/>, <_:replaceable-2/>" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:100 chgpasswd.8.xml.out:154 chpasswd.8.xml.out:127 +#: chpasswd.8.xml.out:213 newusers.8.xml.out:335 +#, fuzzy +#| msgid "DESCRIPTION" +msgid "YESCRYPT" +msgstr "BESKRIVELSE" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:99 chpasswd.8.xml.out:126 +#, fuzzy +#| msgid "-h " +msgid ", <_:replaceable-1/>" +msgstr "-h " + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:128 +msgid "NONE" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 newusers.8.xml.out:271 +#: chgpasswd.8.xml.out:93 chpasswd.8.xml.out:120 msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." +"The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" +"><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports " +"these methods." msgstr "" -"De tilgængelige metoder er DES, Md5, NONE og SHA256 eller SHA512 hvis din " -"libc understøtter disse metoder." #. (itstool) path: term/option -#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:139 +#: chgpasswd.8.xml.out:107 chpasswd.8.xml.out:145 msgid "--encrypted" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:103 chpasswd.8.xml.out:141 +#: chgpasswd.8.xml.out:109 chpasswd.8.xml.out:147 msgid "Supplied passwords are in encrypted form." msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:113 chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 chpasswd.8.xml.out:161 msgid "--md5" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:115 chpasswd.8.xml.out:157 +#: chgpasswd.8.xml.out:121 chpasswd.8.xml.out:163 msgid "" "Use MD5 encryption instead of DES when the supplied passwords are not " "encrypted." @@ -1603,80 +1696,134 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 chsh.1.xml.out:97 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 chsh.1.xml.out:97 #: chsh.1.xml.out:108 grpck.8.xml.out:124 grpck.8.xml.out:161 -#: newusers.8.xml.out:320 pwck.8.xml.out:155 pwck.8.xml.out:209 -#: su.1.xml.out:163 useradd.8.xml.out:517 useradd.8.xml.out:655 -#: usermod.8.xml.out:357 vipw.8.xml.out:70 vipw.8.xml.out:127 +#: newusers.8.xml.out:322 passwd.1.xml.out:363 pwck.8.xml.out:155 +#: pwck.8.xml.out:209 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 vipw.8.xml.out:70 +#: vipw.8.xml.out:127 msgid "-s" msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 newusers.8.xml.out:320 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 newusers.8.xml.out:322 msgid "--sha-rounds" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:137 chpasswd.8.xml.out:181 newusers.8.xml.out:322 +#: chgpasswd.8.xml.out:143 chpasswd.8.xml.out:202 newusers.8.xml.out:324 msgid "Use the specified number of rounds to encrypt the passwords." msgstr "Brug det angivet antal rundet til at kryhptere adgangskoderne." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:140 chpasswd.8.xml.out:184 newusers.8.xml.out:325 +#: chgpasswd.8.xml.out:146 chpasswd.8.xml.out:205 newusers.8.xml.out:327 msgid "" -"The value 0 means that the system will choose the default number of rounds " -"for the crypt method (5000)." +"You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" -"Værdien 0 betyder at systemet vil vælge antallet af standardrunder for " -"krypteringsmetoden (5000)." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:144 chpasswd.8.xml.out:188 newusers.8.xml.out:329 +#: chgpasswd.8.xml.out:156 chpasswd.8.xml.out:215 newusers.8.xml.out:337 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs." msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +"By default, the number of rounds for BCRYPT is defined by the " +"BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" +"Som standard er antallet af runder defineret af variablerne " +"SHA_CRYPT_MIN_ROUNDS og SHA_CRYPT_MAX_ROUNDS i /etc/login.defs." + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:161 chpasswd.8.xml.out:220 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default number of rounds is 13." msgstr "" "En minimusværdi på 1000 og en maksimumsværdi på 999.999.999 vil blive " "påtvunget." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:148 chpasswd.8.xml.out:192 newusers.8.xml.out:333 -msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#: chgpasswd.8.xml.out:165 chpasswd.8.xml.out:224 newusers.8.xml.out:346 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs." +msgid "" +"By default, the number of rounds for SHA256 or SHA512 is defined by the " +"SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." msgstr "" -"Du kan kun bruge dette tilvalg med SHA256- eller SHA512-krypteringsmetoden." +"Som standard er antallet af runder defineret af variablerne " +"SHA_CRYPT_MIN_ROUNDS og SHA_CRYPT_MAX_ROUNDS i /etc/login.defs." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:152 newusers.8.xml.out:337 +#: chgpasswd.8.xml.out:170 chpasswd.8.xml.out:229 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default number of rounds is 5000." +msgstr "" +"En minimusværdi på 1000 og en maksimumsværdi på 999.999.999 vil blive " +"påtvunget." + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:175 chpasswd.8.xml.out:234 newusers.8.xml.out:355 #, fuzzy #| msgid "" #| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " #| "and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs." msgid "" -"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and " -"SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +"By default, the number of rounds for YESCRYPT is defined by the " +"YESCRYPT_COST_FACTOR in <_:filename-1/>." msgstr "" "Som standard er antallet af runder defineret af variablerne " "SHA_CRYPT_MIN_ROUNDS og SHA_CRYPT_MAX_ROUNDS i /etc/login.defs." +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:179 chpasswd.8.xml.out:238 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default number of rounds is 5." +msgstr "" +"En minimusværdi på 1000 og en maksimumsværdi på 999.999.999 vil blive " +"påtvunget." + #. (itstool) path: refsect1/title -#: chgpasswd.8.xml.out:163 chpasswd.8.xml.out:208 faillog.8.xml.out:209 -#: gpasswd.1.xml.out:229 groupadd.8.xml.out:285 groupdel.8.xml.out:121 -#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:348 -#: passwd.1.xml.out:354 shadow.3.xml.out:194 su.1.xml.out:306 -#: useradd.8.xml.out:682 userdel.8.xml.out:281 usermod.8.xml.out:517 +#: chgpasswd.8.xml.out:189 chpasswd.8.xml.out:248 faillog.8.xml.out:209 +#: gpasswd.1.xml.out:231 groupadd.8.xml.out:285 groupdel.8.xml.out:121 +#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:369 +#: passwd.1.xml.out:376 shadow.3.xml.out:194 su.1.xml.out:306 +#: useradd.8.xml.out:702 userdel.8.xml.out:281 usermod.8.xml.out:534 msgid "CAVEATS" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:164 chpasswd.8.xml.out:209 +#: chgpasswd.8.xml.out:190 chpasswd.8.xml.out:249 msgid "" "Remember to set permissions or umask to prevent readability of unencrypted " "files by other users." msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:168 newusers.8.xml.out:353 +#: chgpasswd.8.xml.out:194 newusers.8.xml.out:374 msgid "" "You should make sure the passwords and the encryption method respect the " "system's password policy." @@ -1688,8 +1835,8 @@ msgstr "" #. (itstool) path: phrase/filename #. (itstool) path: para/filename #. (itstool) path: citerefentry/refentrytitle -#: chgpasswd.8.xml.out:193 gpasswd.1.xml.out:48 gpasswd.1.xml.out:51 -#: gpasswd.1.xml.out:73 gpasswd.1.xml.out:231 gpasswd.1.xml.out:259 +#: chgpasswd.8.xml.out:221 gpasswd.1.xml.out:50 gpasswd.1.xml.out:53 +#: gpasswd.1.xml.out:75 gpasswd.1.xml.out:233 gpasswd.1.xml.out:261 #: groupadd.8.xml.out:170 groupadd.8.xml.out:264 groupdel.8.xml.out:148 #: groupmems.8.xml.out:191 groupmod.8.xml.out:227 groups.1.xml.out:58 #: groups.1.xml.out:70 groups.1.xml.out:80 grpck.8.xml.out:62 @@ -1697,19 +1844,19 @@ msgstr "" #: grpck.8.xml.out:164 grpck.8.xml.out:177 grpck.8.xml.out:185 #: grpck.8.xml.out:211 gshadow.5.xml.out:91 gshadow.5.xml.out:124 #: gshadow.5.xml.out:135 newgrp.1.xml.out:80 newgrp.1.xml.out:112 -#: newusers.8.xml.out:411 pwck.8.xml.out:261 pwconv.8.xml.out:128 -#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:755 -#: userdel.8.xml.out:185 usermod.8.xml.out:557 vipw.8.xml.out:69 +#: newusers.8.xml.out:432 pwck.8.xml.out:261 pwconv.8.xml.out:128 +#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:775 +#: userdel.8.xml.out:185 usermod.8.xml.out:574 vipw.8.xml.out:69 #: vipw.8.xml.out:175 msgid "/etc/group" msgstr "/etc/group" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:195 gpasswd.1.xml.out:261 groupadd.8.xml.out:266 +#: chgpasswd.8.xml.out:223 gpasswd.1.xml.out:263 groupadd.8.xml.out:266 #: groupdel.8.xml.out:150 groupmems.8.xml.out:193 groupmod.8.xml.out:229 #: groups.1.xml.out:82 grpck.8.xml.out:213 gshadow.5.xml.out:137 -#: newgrp.1.xml.out:114 newusers.8.xml.out:413 pwck.8.xml.out:263 -#: sg.1.xml.out:103 useradd.8.xml.out:757 userdel.8.xml.out:187 +#: newgrp.1.xml.out:114 newusers.8.xml.out:434 pwck.8.xml.out:263 +#: sg.1.xml.out:103 useradd.8.xml.out:777 userdel.8.xml.out:187 #: vipw.8.xml.out:177 msgid "Group account information." msgstr "Information om gruppekonto." @@ -1717,8 +1864,8 @@ msgstr "Information om gruppekonto." #. (itstool) path: term/filename #. (itstool) path: phrase/filename #. (itstool) path: para/filename -#: chgpasswd.8.xml.out:199 gpasswd.1.xml.out:52 gpasswd.1.xml.out:74 -#: gpasswd.1.xml.out:232 gpasswd.1.xml.out:265 groupadd.8.xml.out:170 +#: chgpasswd.8.xml.out:227 gpasswd.1.xml.out:54 gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:234 gpasswd.1.xml.out:267 groupadd.8.xml.out:170 #: groupadd.8.xml.out:270 groupdel.8.xml.out:154 groupmems.8.xml.out:87 #: groupmems.8.xml.out:88 groupmems.8.xml.out:98 groupmems.8.xml.out:103 #: groupmems.8.xml.out:104 groupmems.8.xml.out:134 groupmems.8.xml.out:135 @@ -1726,17 +1873,17 @@ msgstr "Information om gruppekonto." #: grpck.8.xml.out:93 grpck.8.xml.out:114 grpck.8.xml.out:166 #: grpck.8.xml.out:186 grpck.8.xml.out:217 gshadow.5.xml.out:36 #: gshadow.5.xml.out:141 newgrp.1.xml.out:78 newgrp.1.xml.out:118 -#: newusers.8.xml.out:417 pwconv.8.xml.out:129 sg.1.xml.out:107 -#: useradd.8.xml.out:761 usermod.8.xml.out:563 vipw.8.xml.out:72 +#: newusers.8.xml.out:438 pwconv.8.xml.out:129 sg.1.xml.out:107 +#: useradd.8.xml.out:781 usermod.8.xml.out:580 vipw.8.xml.out:72 #: vipw.8.xml.out:181 msgid "/etc/gshadow" msgstr "/etc/gshadow" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:201 gpasswd.1.xml.out:267 groupadd.8.xml.out:272 +#: chgpasswd.8.xml.out:229 gpasswd.1.xml.out:269 groupadd.8.xml.out:272 #: groupdel.8.xml.out:156 groupmod.8.xml.out:235 grpck.8.xml.out:219 -#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:419 -#: sg.1.xml.out:109 useradd.8.xml.out:763 vipw.8.xml.out:183 +#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:440 +#: sg.1.xml.out:109 useradd.8.xml.out:783 vipw.8.xml.out:183 msgid "Secure group account information." msgstr "Information om sikret gruppekonto." @@ -1746,12 +1893,12 @@ msgstr "Information om sikret gruppekonto." #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:217 gpasswd.1.xml.out:38 gpasswd.1.xml.out:45 -#: gpasswd.1.xml.out:59 gpasswd.1.xml.out:72 gpasswd.1.xml.out:85 -#: gpasswd.1.xml.out:119 groupadd.8.xml.out:354 groupdel.8.xml.out:214 -#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:280 +#: chgpasswd.8.xml.out:245 gpasswd.1.xml.out:40 gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:61 gpasswd.1.xml.out:74 gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:121 groupadd.8.xml.out:354 groupdel.8.xml.out:214 +#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:290 #: newgrp.1.xml.out:142 sg.1.xml.out:131 userdel.8.xml.out:322 -#: usermod.8.xml.out:617 +#: usermod.8.xml.out:634 msgid "gpasswd" msgstr "" @@ -1761,19 +1908,19 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:220 gpasswd.1.xml.out:280 groupadd.8.xml.out:36 +#: chgpasswd.8.xml.out:248 gpasswd.1.xml.out:282 groupadd.8.xml.out:36 #: groupadd.8.xml.out:43 groupadd.8.xml.out:49 groupadd.8.xml.out:61 #: groupadd.8.xml.out:82 groupadd.8.xml.out:292 groupadd.8.xml.out:300 #: groupdel.8.xml.out:217 groupmems.8.xml.out:218 groupmod.8.xml.out:338 -#: login.defs.5.xml.out:290 useradd.8.xml.out:890 userdel.8.xml.out:325 -#: usermod.8.xml.out:620 +#: login.defs.5.xml.out:303 useradd.8.xml.out:910 userdel.8.xml.out:325 +#: usermod.8.xml.out:637 msgid "groupadd" msgstr "" #. (itstool) path: author/contrib -#: chpasswd.8.xml.out:21 groupadd.8.xml.out:20 groupdel.8.xml.out:18 -#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:86 -#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:33 +#: chpasswd.8.xml.out:23 groupadd.8.xml.out:20 groupdel.8.xml.out:18 +#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:88 +#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:35 #: sg.1.xml.out:18 useradd.8.xml.out:36 userdel.8.xml.out:23 #: usermod.8.xml.out:24 msgid "Creation, 1991" @@ -1785,20 +1932,20 @@ msgstr "" #. (itstool) path: para/command #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:37 chpasswd.8.xml.out:44 chpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:60 chpasswd.8.xml.out:70 chpasswd.8.xml.out:89 -#: chpasswd.8.xml.out:96 chpasswd.8.xml.out:108 chpasswd.8.xml.out:255 -#: login.defs.5.xml.out:259 passwd.1.xml.out:474 +#: chpasswd.8.xml.out:39 chpasswd.8.xml.out:46 chpasswd.8.xml.out:52 +#: chpasswd.8.xml.out:62 chpasswd.8.xml.out:72 chpasswd.8.xml.out:91 +#: chpasswd.8.xml.out:98 chpasswd.8.xml.out:110 chpasswd.8.xml.out:297 +#: login.defs.5.xml.out:266 passwd.1.xml.out:496 msgid "chpasswd" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:45 +#: chpasswd.8.xml.out:47 msgid "update passwords in batch mode" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:59 +#: chpasswd.8.xml.out:61 msgid "" "The <_:command-1/> command reads a list of user name and password pairs from " "standard input and uses this information to update a group of existing " @@ -1808,25 +1955,25 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:65 groupmems.8.xml.out:52 groupmems.8.xml.out:53 +#: chpasswd.8.xml.out:67 groupmems.8.xml.out:52 groupmems.8.xml.out:53 #: groupmems.8.xml.out:83 groupmems.8.xml.out:94 msgid "user_name" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:68 +#: chpasswd.8.xml.out:70 msgid "" "By default the passwords must be supplied in clear-text, and are encrypted " "by <_:command-1/>. Also the password age will be updated, if present." msgstr "" #. (itstool) path: para/option -#: chpasswd.8.xml.out:76 chpasswd.8.xml.out:133 +#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 msgid "MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:73 +#: chpasswd.8.xml.out:75 msgid "" "The default encryption algorithm can be defined for the system with the <_:" "option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be " @@ -1834,7 +1981,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:83 msgid "" "By default, passwords are encrypted by PAM, but (even if not recommended) " "you can select a different encryption method with the <_:option-1/>, <_:" @@ -1842,21 +1989,21 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:88 +#: chpasswd.8.xml.out:90 #, fuzzy #| msgid "Use the specified method to encrypt the passwords." msgid "Except when PAM is used to encrypt the passwords," msgstr "Brug den angivne metode til at kryptere adgangskoderne." #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:87 +#: chpasswd.8.xml.out:89 msgid "" "<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and " "then commits all the changes to disk if no errors occurred for any user." msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:95 msgid "" "When PAM is used to encrypt the passwords (and update the passwords in the " "system database) then if a password cannot be updated <_:command-1/> " @@ -1865,17 +2012,17 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:114 +#: chpasswd.8.xml.out:116 msgid "METHOD" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:131 msgid "By default, PAM is used to encrypt the passwords." msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:134 msgid "" "By default (if none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> " "options are specified), the encryption method is defined by the <_:option-4/" @@ -1883,44 +2030,17 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:178 -msgid "ROUNDS" -msgstr "" - -#. (itstool) path: para/option -#: chpasswd.8.xml.out:198 -#, fuzzy -#| msgid " (number)" -msgid "SHA_CRYPT_MIN_ROUNDS" -msgstr " (antal)" - -#. (itstool) path: para/option #: chpasswd.8.xml.out:199 -msgid "SHA_CRYPT_MAX_ROUNDS" -msgstr "" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:196 -#, fuzzy -#| msgid "" -#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " -#| "and SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs." -msgid "" -"By default, the number of rounds is defined by the <_:option-1/> and <_:" -"option-2/> variables in <_:filename-3/>." +msgid "ROUNDS" msgstr "" -"Som standard er antallet af runder defineret af variablerne " -"SHA_CRYPT_MIN_ROUNDS og SHA_CRYPT_MAX_ROUNDS i /etc/login.defs." #. (itstool) path: term/filename -#: chpasswd.8.xml.out:253 +#: chpasswd.8.xml.out:295 msgid "/etc/pam.d/chpasswd" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:255 newusers.8.xml.out:431 passwd.1.xml.out:413 +#: chpasswd.8.xml.out:297 newusers.8.xml.out:452 passwd.1.xml.out:435 #, fuzzy #| msgid "PAM configuration for passwd." msgid "PAM configuration for <_:command-1/>." @@ -1932,17 +2052,17 @@ msgstr "PAM-konfiguration for passwd." #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:268 login.defs.5.xml.out:380 newusers.8.xml.out:49 -#: newusers.8.xml.out:56 newusers.8.xml.out:62 newusers.8.xml.out:75 -#: newusers.8.xml.out:96 newusers.8.xml.out:123 newusers.8.xml.out:132 -#: newusers.8.xml.out:151 newusers.8.xml.out:164 newusers.8.xml.out:170 -#: newusers.8.xml.out:172 newusers.8.xml.out:210 newusers.8.xml.out:230 -#: newusers.8.xml.out:252 newusers.8.xml.out:431 useradd.8.xml.out:902 +#: chpasswd.8.xml.out:310 login.defs.5.xml.out:393 newusers.8.xml.out:51 +#: newusers.8.xml.out:58 newusers.8.xml.out:64 newusers.8.xml.out:77 +#: newusers.8.xml.out:98 newusers.8.xml.out:125 newusers.8.xml.out:134 +#: newusers.8.xml.out:153 newusers.8.xml.out:166 newusers.8.xml.out:172 +#: newusers.8.xml.out:174 newusers.8.xml.out:212 newusers.8.xml.out:232 +#: newusers.8.xml.out:254 newusers.8.xml.out:452 useradd.8.xml.out:922 msgid "newusers" msgstr "newusers" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:270 grpck.8.xml.out:285 passwd.1.xml.out:482 +#: chpasswd.8.xml.out:312 grpck.8.xml.out:285 passwd.1.xml.out:507 msgid "<_:citerefentry-1/>," msgstr "" @@ -1952,21 +2072,21 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:276 groupadd.8.xml.out:366 groupdel.8.xml.out:223 -#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:462 -#: newusers.8.xml.out:467 useradd.8.xml.out:52 useradd.8.xml.out:59 +#: chpasswd.8.xml.out:318 groupadd.8.xml.out:366 groupdel.8.xml.out:223 +#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:481 +#: newusers.8.xml.out:488 useradd.8.xml.out:52 useradd.8.xml.out:59 #: useradd.8.xml.out:64 useradd.8.xml.out:71 useradd.8.xml.out:75 #: useradd.8.xml.out:87 useradd.8.xml.out:90 useradd.8.xml.out:103 #: useradd.8.xml.out:129 useradd.8.xml.out:187 useradd.8.xml.out:209 -#: useradd.8.xml.out:239 useradd.8.xml.out:284 useradd.8.xml.out:341 -#: useradd.8.xml.out:472 useradd.8.xml.out:584 useradd.8.xml.out:586 -#: useradd.8.xml.out:690 useradd.8.xml.out:808 userdel.8.xml.out:342 -#: usermod.8.xml.out:640 +#: useradd.8.xml.out:239 useradd.8.xml.out:286 useradd.8.xml.out:343 +#: useradd.8.xml.out:474 useradd.8.xml.out:604 useradd.8.xml.out:606 +#: useradd.8.xml.out:710 useradd.8.xml.out:828 userdel.8.xml.out:342 +#: usermod.8.xml.out:657 msgid "useradd" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:263 newusers.8.xml.out:451 +#: chpasswd.8.xml.out:305 newusers.8.xml.out:472 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." msgstr "" @@ -1987,15 +2107,15 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:517 -#: useradd.8.xml.out:655 usermod.8.xml.out:357 +#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 msgid "--shell" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:517 -#: useradd.8.xml.out:522 useradd.8.xml.out:655 useradd.8.xml.out:662 +#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:524 useradd.8.xml.out:675 useradd.8.xml.out:682 #: usermod.8.xml.out:357 msgid "SHELL" msgstr "" @@ -2019,12 +2139,13 @@ msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:153 su.1.xml.out:198 +#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:130 chsh.1.xml.out:143 +#: chsh.1.xml.out:172 chsh.1.xml.out:184 su.1.xml.out:198 msgid "/etc/shells" msgstr "" #. (itstool) path: para/filename -#: chsh.1.xml.out:123 +#: chsh.1.xml.out:123 chsh.1.xml.out:142 msgid "/bin/rsh" msgstr "" @@ -2040,11 +2161,93 @@ msgid "" "original value." msgstr "" +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chsh.1.xml.out:132 chsh.1.xml.out:181 +msgid "%vendordir%/shells" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:133 +msgid "%vendordir%/shells.d/*" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:134 +#, fuzzy +#| msgid "/etc/skel/" +msgid "/etc/shells.d/*" +msgstr "/etc/skel/" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:135 +msgid "/etc/shells.d/@filename@" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:136 +msgid "%vendordir%/shells.d/@filename@" +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:128 +msgid "" +"The only restriction placed on the login shell is that the command name must " +"be listed in <_:filename-1/>. If this file does not exist, the definitions " +"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" +"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " +"used. If the invoker is the superuser any value may be added regardless what " +"is defined in the configuration files. An account with a restricted login " +"shell may not change her login shell." +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:141 +msgid "" +"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " +"since accidentally changing to a restricted shell would prevent the user " +"from ever changing her login shell back to its original value." +msgstr "" + #. (itstool) path: listitem/para -#: chsh.1.xml.out:155 +#: chsh.1.xml.out:174 msgid "List of valid login shells." msgstr "" +#. (itstool) path: listitem/para +#: chsh.1.xml.out:177 +msgid "User defined list of valid login shells." +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:183 +msgid "Default configuration file if <_:filename-1/> does not exist." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:188 +msgid "%vendordir%/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:190 +msgid "Directory for additional vendor specific configuration files." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:194 +#, fuzzy +#| msgid "/etc/skel/" +msgid "/etc/shells.d" +msgstr "/etc/skel/" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:196 +#, fuzzy +#| msgid "Directory containing default files." +msgid "Directory for additional user defined configuration files." +msgstr "Mappe indeholdende standardfiler." + #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command @@ -2060,7 +2263,7 @@ msgid "check and enforce password expiration policy" msgstr "" #. (itstool) path: arg/replaceable -#: expiry.1.xml.out:52 gpasswd.1.xml.out:61 +#: expiry.1.xml.out:52 gpasswd.1.xml.out:63 msgid "option" msgstr "" @@ -2095,7 +2298,7 @@ msgstr "" #. (itstool) path: author/contrib #: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 -#: passwd.1.xml.out:24 passwd.5.xml.out:17 porttime.5.xml.out:17 +#: passwd.1.xml.out:26 passwd.5.xml.out:17 porttime.5.xml.out:17 #: shadow.3.xml.out:17 shadow.5.xml.out:17 su.1.xml.out:34 msgid "Creation, 1989" msgstr "" @@ -2116,7 +2319,7 @@ msgstr "" #. (itstool) path: refmeta/refmiscinfo #: faillog.5.xml.out:35 gshadow.5.xml.out:24 limits.5.xml.out:37 -#: login.access.5.xml.out:36 login.defs.5.xml.out:104 passwd.5.xml.out:35 +#: login.access.5.xml.out:36 login.defs.5.xml.out:106 passwd.5.xml.out:35 #: porttime.5.xml.out:35 shadow.5.xml.out:35 suauth.5.xml.out:35 msgid "File Formats and Configuration Files" msgstr "" @@ -2185,14 +2388,14 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:124 -#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 +#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 #: usermod.8.xml.out:78 usermod.8.xml.out:210 msgid "-a" msgstr "" #. (itstool) path: term/option -#: faillog.8.xml.out:72 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 passwd.1.xml.out:153 msgid "--all" msgstr "" @@ -2402,8 +2605,8 @@ msgstr "" #: login.1.xml.out:108 login.1.xml.out:112 login.1.xml.out:119 #: login.1.xml.out:171 login.1.xml.out:177 login.1.xml.out:230 #: login.1.xml.out:238 login.1.xml.out:247 login.1.xml.out:253 -#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:343 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:530 newgrp.1.xml.out:133 +#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:356 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:549 newgrp.1.xml.out:133 #: nologin.8.xml.out:60 passwd.5.xml.out:125 passwd.5.xml.out:132 #: passwd.5.xml.out:179 porttime.5.xml.out:121 shadow.5.xml.out:265 #: sg.1.xml.out:122 su.1.xml.out:415 @@ -2411,28 +2614,28 @@ msgid "login" msgstr "" #. (itstool) path: author/firstname -#: gpasswd.1.xml.out:20 +#: gpasswd.1.xml.out:22 msgid "Rafal" msgstr "" #. (itstool) path: author/surname -#: gpasswd.1.xml.out:21 +#: gpasswd.1.xml.out:23 msgid "Maszkowski" msgstr "" #. (itstool) path: author/contrib -#: gpasswd.1.xml.out:22 login.access.5.xml.out:18 pwconv.8.xml.out:23 +#: gpasswd.1.xml.out:24 login.access.5.xml.out:18 pwconv.8.xml.out:23 #: suauth.5.xml.out:17 msgid "Creation, 1996" msgstr "" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:49 msgid "administer <_:filename-1/>" msgstr "" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:52 msgid "administer <_:filename-1/> and <_:filename-2/>" msgstr "" @@ -2440,9 +2643,9 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:64 gpasswd.1.xml.out:89 gpasswd.1.xml.out:129 -#: gpasswd.1.xml.out:142 gpasswd.1.xml.out:177 gpasswd.1.xml.out:181 -#: gpasswd.1.xml.out:193 gpasswd.1.xml.out:197 gpasswd.1.xml.out:292 +#: gpasswd.1.xml.out:66 gpasswd.1.xml.out:91 gpasswd.1.xml.out:131 +#: gpasswd.1.xml.out:144 gpasswd.1.xml.out:179 gpasswd.1.xml.out:183 +#: gpasswd.1.xml.out:195 gpasswd.1.xml.out:199 gpasswd.1.xml.out:294 #: grpck.8.xml.out:49 grpck.8.xml.out:188 grpck.8.xml.out:280 #: gshadow.5.xml.out:156 limits.5.xml.out:138 newgrp.1.xml.out:48 #: newgrp.1.xml.out:145 pwck.8.xml.out:336 pwconv.8.xml.out:114 @@ -2451,19 +2654,19 @@ msgid "group" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:73 +#: gpasswd.1.xml.out:75 msgid ", and <_:filename-1/>" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:78 #, fuzzy #| msgid "administrators" msgid "administrators," msgstr "administratorer" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:71 +#: gpasswd.1.xml.out:73 msgid "" "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" ">. Every group can have <_:phrase-4/> members and a password." @@ -2471,12 +2674,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: gpasswd.1.xml.out:80 gpasswd.1.xml.out:112 gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 msgid "-A" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:79 +#: gpasswd.1.xml.out:81 msgid "" "System administrators can use the <_:option-1/> option to define group " "administrator(s) and the <_:option-2/> option to define members. They have " @@ -2484,21 +2687,21 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:86 +#: gpasswd.1.xml.out:88 #, fuzzy #| msgid "administrators" msgid "a group administrator" msgstr "administratorer" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:89 #, fuzzy #| msgid "administrators" msgid "a system administrator" msgstr "administratorer" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:84 +#: gpasswd.1.xml.out:86 msgid "" "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " "prompts for the new password of the <_:replaceable-4/>." @@ -2509,8 +2712,8 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:93 gpasswd.1.xml.out:180 gpasswd.1.xml.out:196 -#: gpasswd.1.xml.out:277 groups.1.xml.out:71 groups.1.xml.out:92 +#: gpasswd.1.xml.out:95 gpasswd.1.xml.out:182 gpasswd.1.xml.out:198 +#: gpasswd.1.xml.out:279 groups.1.xml.out:71 groups.1.xml.out:92 #: gshadow.5.xml.out:76 gshadow.5.xml.out:165 newgrp.1.xml.out:34 #: newgrp.1.xml.out:41 newgrp.1.xml.out:47 newgrp.1.xml.out:55 #: newgrp.1.xml.out:63 newgrp.1.xml.out:66 sg.1.xml.out:60 sg.1.xml.out:64 @@ -2519,19 +2722,19 @@ msgid "newgrp" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:93 msgid "" "If a password is set the members can still use <_:citerefentry-1/> without a " "password, and non-members must supply the password." msgstr "" #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "" #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "" "Group passwords are an inherent security problem since more than one person " "is permitted to know the password. However, groups are a useful tool for " @@ -2539,58 +2742,58 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 msgid "" "Except for the <_:option-1/> and <_:option-2/> options, the options cannot " "be combined." msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 groupmems.8.xml.out:83 +#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 msgid "--add" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 gpasswd.1.xml.out:128 gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 gpasswd.1.xml.out:205 gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 #: groups.1.xml.out:48 groups.1.xml.out:59 msgid "user" msgstr "bruger" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 msgid "Add the <_:replaceable-1/> to the named <_:replaceable-2/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 groupmems.8.xml.out:94 passwd.1.xml.out:168 +#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 msgid "--delete" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 msgid "Remove the <_:replaceable-1/> from the named <_:replaceable-2/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 msgid "-Q" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 msgid "" "Remove the password from the named <_:replaceable-1/>. The group password " "will be empty. Only group members will be allowed to use <_:command-2/> to " @@ -2598,12 +2801,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 msgid "" "Restrict the access to the named <_:replaceable-1/>. The group password is " "set to \"!\". Only group members with a password will be allowed to use <_:" @@ -2611,48 +2814,48 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 #, fuzzy #| msgid "administrators" msgid "--administrators" msgstr "administratorer" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 msgid "Set the list of administrative users." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 #, fuzzy #| msgid "members" msgid "--members" msgstr "medlemmer" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 msgid "Set the list of group members." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 msgid "and <_:filename-1/> files." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 #, fuzzy #| msgid "file" msgid "file." msgstr "fil" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 #, fuzzy #| msgid "" #| "You may not add a user to a NIS or LDAP group. This must be performed on " @@ -2671,11 +2874,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 groupadd.8.xml.out:357 groupdel.8.xml.out:34 +#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 #: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:299 useradd.8.xml.out:893 -#: userdel.8.xml.out:328 usermod.8.xml.out:623 +#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 +#: userdel.8.xml.out:328 usermod.8.xml.out:640 msgid "groupdel" msgstr "" @@ -2685,11 +2888,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 groupadd.8.xml.out:360 groupdel.8.xml.out:220 +#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 #: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 userdel.8.xml.out:331 usermod.8.xml.out:626 +#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 msgid "groupmod" msgstr "" @@ -2699,10 +2902,10 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 grpck.8.xml.out:33 grpck.8.xml.out:40 +#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 #: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 #: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:318 +#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 #: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 msgid "grpck" msgstr "" @@ -2712,7 +2915,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 grpck.8.xml.out:95 grpck.8.xml.out:287 +#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 #: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 #: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 #: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 @@ -2720,12 +2923,12 @@ msgid "gshadow" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 newgrp.1.xml.out:146 sg.1.xml.out:135 +#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 newgrp.1.xml.out:128 sg.1.xml.out:117 +#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -2773,8 +2976,8 @@ msgstr "Brugernavne må kun være op til 32 tegn lange." #: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 #: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 #: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:391 -#: useradd.8.xml.out:396 useradd.8.xml.out:557 useradd.8.xml.out:639 +#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 +#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 msgid "-g" msgstr "" @@ -2790,7 +2993,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:639 usermod.8.xml.out:174 +#: useradd.8.xml.out:659 usermod.8.xml.out:174 msgid "--gid" msgstr "" @@ -2799,8 +3002,8 @@ msgstr "" #. (itstool) path: para/option #: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 #: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "" @@ -2828,7 +3031,7 @@ msgid "GID_MAX" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:111 useradd.8.xml.out:541 +#: groupadd.8.xml.out:111 useradd.8.xml.out:543 #, fuzzy #| msgid "" #| "See also the option and the " @@ -2841,29 +3044,29 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:125 groupadd.8.xml.out:131 groupadd.8.xml.out:134 -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:303 -#: useradd.8.xml.out:314 useradd.8.xml.out:317 useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 +#: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 +#: useradd.8.xml.out:322 msgid "-K" msgstr "" #. (itstool) path: term/option -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "--key" msgstr "" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "KEY" msgstr "" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "VALUE" msgstr "" #. (itstool) path: varlistentry/term -#: groupadd.8.xml.out:124 useradd.8.xml.out:302 +#: groupadd.8.xml.out:124 useradd.8.xml.out:304 #, fuzzy #| msgid "" #| ",  OTHER." msgstr "" -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "-P" -msgstr "" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "--prefix" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 groupadd.8.xml.out:219 groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 groupdel.8.xml.out:108 groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 groupmod.8.xml.out:183 useradd.8.xml.out:502 -#: useradd.8.xml.out:507 userdel.8.xml.out:136 userdel.8.xml.out:140 -#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 useradd.8.xml.out:505 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. 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." -msgstr "" - #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:397 -#: useradd.8.xml.out:549 useradd.8.xml.out:558 usermod.8.xml.out:238 +#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 +#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 msgid "-U" msgstr "" @@ -3093,21 +3264,21 @@ msgstr "Administratorer kan ændre adgangskoden eller medlemmerne af gruppen." #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:386 useradd.8.xml.out:397 useradd.8.xml.out:558 +#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 msgid "-N" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:448 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:398 -#: useradd.8.xml.out:559 userdel.8.xml.out:86 userdel.8.xml.out:296 +#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 +#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 +#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 +#: useradd.8.xml.out:558 msgid "" "The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> " "options are not specified) is defined by the <_:option-4/> variable in <_:" @@ -3129,13 +3300,13 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:463 useradd.8.xml.out:831 +#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "Ugyldigt argument for tilvalg" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:449 pwck.8.xml.out:311 useradd.8.xml.out:835 +#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 msgid "4" msgstr "4" @@ -3147,7 +3318,7 @@ msgid "GID is already used (when called without <_:option-1/>)" msgstr "UID er allerede i brug (og intet )" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:847 +#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 msgid "9" msgstr "9" @@ -3159,7 +3330,7 @@ msgid "group name is already used" msgstr "gruppenavn er allerede i brug" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:855 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "" @@ -3171,11 +3342,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:480 useradd.8.xml.out:913 +#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 #: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 #: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 #: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:643 +#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 msgid "userdel" msgstr "" @@ -3186,11 +3357,11 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:490 passwd.1.xml.out:488 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:916 +#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 +#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 #: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 #: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:522 +#: usermod.8.xml.out:263 usermod.8.xml.out:539 msgid "usermod" msgstr "usermod" @@ -3216,8 +3387,8 @@ msgstr "slet en gruppe" #: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 #: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 #: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:392 -#: useradd.8.xml.out:639 useradd.8.xml.out:648 usermod.8.xml.out:174 +#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 +#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 msgid "GROUP" msgstr "GRUPPE" @@ -3270,13 +3441,13 @@ msgstr "" "filer fortsat er ejet af denne gruppe." #. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:461 -#: pwck.8.xml.out:323 useradd.8.xml.out:841 userdel.8.xml.out:253 +#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 +#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 msgid "6" msgstr "" #. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:843 +#: groupdel.8.xml.out:182 useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "angivet gruppe findes ikke" @@ -3321,7 +3492,7 @@ msgstr "" #: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 #: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 #: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "" @@ -3462,7 +3633,7 @@ msgstr "" #. (itstool) path: refsect1/programlisting #: groupmems.8.xml.out:167 msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " +"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " "groupmems -g groups -a gk4" msgstr "" @@ -3541,7 +3712,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:246 +#: groupmod.8.xml.out:121 passwd.1.xml.out:242 msgid "-n" msgstr "" @@ -3633,7 +3804,7 @@ msgid "E_CLEANUP_SERVICE: can't setup cleanup service" msgstr "" #. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:859 userdel.8.xml.out:271 +#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 msgid "12" msgstr "" @@ -3802,7 +3973,7 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:67 newusers.8.xml.out:75 +#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 msgid "file" msgstr "fil" @@ -3831,7 +4002,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:134 login.defs.5.xml.out:136 +#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "" @@ -3856,8 +4027,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 +#: passwd.1.xml.out:302 msgid "-S" msgstr "" @@ -4071,7 +4242,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:324 pwconv.8.xml.out:48 +#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 #: pwconv.8.xml.out:166 pwconv.8.xml.out:208 msgid "grpconv" @@ -4085,7 +4256,7 @@ msgstr "" #. (itstool) path: varlistentry/term #: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 #: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "" @@ -4125,7 +4296,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:592 +#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 msgid "-b" msgstr "" @@ -4445,7 +4616,7 @@ msgstr "" #. (itstool) path: para/command #: limits.5.xml.out:122 login.1.xml.out:83 login.1.xml.out:91 #: login.1.xml.out:197 su.1.xml.out:70 su.1.xml.out:82 su.1.xml.out:95 -#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:775 +#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:795 msgid "username" msgstr "" @@ -4887,8 +5058,8 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:436 login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 newgrp.1.xml.out:136 passwd.5.xml.out:197 +#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 #: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 #: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 #: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 @@ -5047,12 +5218,12 @@ msgid "<_:citerefentry-1/>." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 msgid "" "The <_:filename-1/> file defines the site-specific configuration for the " "shadow password suite. This file is required. Absence of this file will not " @@ -5060,7 +5231,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "" "This file is a readable text file, each line of the file describing one " "configuration parameter. The lines consist of a configuration name and " @@ -5076,18 +5247,18 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 useradd.8.xml.out:242 useradd.8.xml.out:380 +#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 #: userdel.8.xml.out:87 userdel.8.xml.out:297 msgid "yes" msgstr "" #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 msgid "0x" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 msgid "" "Parameter values may be of four types: strings, booleans, numbers, and long " "numbers. A string is comprised of any printable characters. A boolean should " @@ -5100,32 +5271,32 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "De følgende konfigurationspunkter tilbydes:" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 pwconv.8.xml.out:146 useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 pwconv.8.xml.out:145 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 pwconv.8.xml.out:147 +#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "" #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 msgid "" "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " "account creation. Any changes to these settings won't affect existing " @@ -5133,12 +5304,12 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "" "The following cross references show which programs in the shadow password " "suite use which parameters." @@ -5150,59 +5321,73 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 login.defs.5.xml.out:423 login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 pwck.8.xml.out:75 pwck.8.xml.out:216 +#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 #: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 #: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 msgid "USE_TCB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 #, fuzzy #| msgid "user LIMITS_STRING" msgid "LOGIN_STRING" msgstr "bruger LIMITS_STRING" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 login.defs.5.xml.out:264 login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 login.defs.5.xml.out:282 -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" +"phrase-2/> <_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 msgid "CHSH_AUTH LOGIN_STRING" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 login.defs.5.xml.out:307 login.defs.5.xml.out:313 -#: login.defs.5.xml.out:320 login.defs.5.xml.out:326 login.defs.5.xml.out:332 +#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 +#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "" @@ -5210,61 +5395,61 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 pwconv.8.xml.out:49 pwconv.8.xml.out:73 +#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 #: pwconv.8.xml.out:208 msgid "grpunconv" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 msgid "FAILLOG_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 msgid "FTMP_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "" "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " "<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " @@ -5274,38 +5459,40 @@ msgid "" msgstr "" #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 msgid "newgrp / sg" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 +#: login.defs.5.xml.out:395 msgid "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " +"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" +"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " +"UMASK <_:phrase-3/>" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 +#: login.defs.5.xml.out:417 msgid "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " +"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" msgstr "" @@ -5315,7 +5502,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 passwd.5.xml.out:188 pwconv.8.xml.out:39 +#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 #: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 #: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 @@ -5328,7 +5515,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 passwd.5.xml.out:191 pwconv.8.xml.out:47 +#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 #: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 #: pwconv.8.xml.out:166 shadow.5.xml.out:280 @@ -5336,22 +5523,22 @@ msgid "pwunconv" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " "<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" @@ -5359,28 +5546,22 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 passwd.5.xml.out:200 shadow.5.xml.out:286 +#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 msgid "sulogin" msgstr "" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +msgid "ENV_HZ ENV_TZ" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 msgid "" "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " "MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " @@ -5390,19 +5571,19 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 msgid "" "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" "phrase-1/>" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 msgid "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" msgstr "" @@ -5411,18 +5592,18 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 vipw.8.xml.out:35 vipw.8.xml.out:42 +#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 #: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 msgid "vipw" msgstr "vipw" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 pwconv.8.xml.out:193 suauth.5.xml.out:179 +#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 msgid "BUGS" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 msgid "" "Much of the functionality that used to be provided by the shadow password " "suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:" @@ -5431,12 +5612,12 @@ msgid "" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 msgid "pam" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." @@ -5540,12 +5721,12 @@ msgid "id" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "opdater og opret nye brugere i et job" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 msgid "" "The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input " "by default) and uses this information to update a set of existing users or " @@ -5554,22 +5735,22 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 msgid "pw_name" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "Dette er navnet på brugeren." #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 #, fuzzy #| msgid "" #| "If this field contains the name of an existing user (or the name of an " @@ -5585,12 +5766,12 @@ msgstr "" "den angivne bruger blive brugt." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "" "This field will be encrypted and used as the new value of the encrypted " "password." @@ -5599,17 +5780,17 @@ msgstr "" "adgangskode." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 msgid "pw_uid" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "Dette flet bruges til at definere UID for brugeren." #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 #, fuzzy #| msgid "" #| "If the field is empty, an new (unused) UID will be defined automatically " @@ -5622,13 +5803,13 @@ msgstr "" "newusers." #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "" "Hvis dette felt indeholer et tal, så vil dette tal blive brugt som UID'en." #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 #, fuzzy #| msgid "" #| "If this field contains the name of an existing user (or the name of an " @@ -5644,7 +5825,7 @@ msgstr "" "den angivne bruger blive brugt." #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "" "If the UID of an existing user is changed, the files ownership of the user's " "file should be fixed manually." @@ -5653,17 +5834,17 @@ msgstr "" "ejerskab for brugerens fil rettes manuelt." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "Dette felt bruges til at definere det primære gruppe-id for brugeren." #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 #, fuzzy #| msgid "" #| "If this field contains the name of an existing user (or the name of an " @@ -5679,7 +5860,7 @@ msgstr "" "den angivne bruger blive brugt." #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "" "If this field is a number, this number will be used as the primary group ID " "of the user. If no groups exist with this GID, a new group will be created " @@ -5687,7 +5868,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 msgid "" "If this field is empty, a new group will be created with the name of the " "user and a GID will be automatically defined by <_:command-1/> to be used as " @@ -5695,7 +5876,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 msgid "" "If this field contains the name of a group which does not exist (and was not " "created before by <_:command-1/>), a new group will be created with the " @@ -5704,32 +5885,32 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "Dette felt er kopieret i GECOS-feltet for brugeren." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "Dette felt bruges til at definere hjemmemappen for brugeren." #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "" "If this field does not specify an existing directory, the specified " "directory is created, with ownership set to the user being created or " @@ -5742,7 +5923,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 #, fuzzy #| msgid "" #| "If the home directory of an existing user is changed, newusers first tries to create or change all the specified users, and " "then write these changes to the user or group databases. If an error occurs " @@ -5781,7 +5962,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "" "During this first pass, users are created with a locked password (and " "passwords are not changed for the users which are not created). A second " @@ -5790,7 +5971,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "" "This command is intended to be used in a large system environment where many " "accounts are updated at a single time." @@ -5799,48 +5980,57 @@ msgstr "" "opdateres på en gang." #. (itstool) path: term/option -#: newusers.8.xml.out:257 pwck.8.xml.out:164 useradd.8.xml.out:108 +#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 #: usermod.8.xml.out:89 msgid "--badname" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 pwck.8.xml.out:167 useradd.8.xml.out:111 +#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 #: usermod.8.xml.out:92 msgid "Allow names that do not conform to standards." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "" +"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " +"support these methods." +msgstr "" +"De tilgængelige metoder er DES, Md5, NONE og SHA256 eller SHA512 hvis din " +"libc understøtter disse metoder." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 useradd.8.xml.out:461 msgid "Create a system account." msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:319 -#: useradd.8.xml.out:468 useradd.8.xml.out:538 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 +#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 msgid "UID_MIN" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:321 -#: useradd.8.xml.out:468 useradd.8.xml.out:543 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 +#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 msgid "UID_MAX" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 useradd.8.xml.out:462 +#: newusers.8.xml.out:295 useradd.8.xml.out:464 #, fuzzy #| msgid "" #| "System users will be created with no aging information in /etc/" @@ -5862,8 +6052,47 @@ msgstr "" " (og deres -modparte for " "oprettelsen af grupper.)." +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default is 13." +msgstr "" +"En minimusværdi på 1000 og en maksimumsværdi på 999.999.999 vil blive " +"påtvunget." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default is 5000." +msgstr "" +"En minimusværdi på 1000 og en maksimumsværdi på 999.999.999 vil blive " +"påtvunget." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default is 5." +msgstr "" +"En minimusværdi på 1000 og en maksimumsværdi på 999.999.999 vil blive " +"påtvunget." + #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "" "The input file must be protected since it contains unencrypted passwords." msgstr "" @@ -5871,57 +6100,57 @@ msgstr "" "krypteret." #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 msgid "/etc/pam.d/newusers" msgstr "/etc/pam.d/newusers" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 useradd.8.xml.out:222 useradd.8.xml.out:481 -#: useradd.8.xml.out:785 userdel.8.xml.out:215 usermod.8.xml.out:587 +#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 +#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subgid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 useradd.8.xml.out:787 userdel.8.xml.out:217 +#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 useradd.8.xml.out:222 useradd.8.xml.out:480 -#: useradd.8.xml.out:791 userdel.8.xml.out:221 usermod.8.xml.out:593 +#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 +#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subuid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 useradd.8.xml.out:793 userdel.8.xml.out:223 +#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 useradd.8.xml.out:906 userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 +#: usermod.8.xml.out:650 #, fuzzy #| msgid "/etc/suauth" msgid "subgid" msgstr "/etc/suauth" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 useradd.8.xml.out:909 userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 +#: usermod.8.xml.out:653 #, fuzzy #| msgid "/etc/suauth" msgid "subuid" msgstr "/etc/suauth" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 useradd.8.xml.out:904 userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "" @@ -5966,12 +6195,12 @@ msgid "The <_:command-1/> command appeared in BSD 4.4." msgstr "Kommandoen nologin fremkom i BSD 4.4." #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 msgid "" "The <_:command-1/> command changes passwords for user accounts. A normal " "user may only change the password for their own account, while the superuser " @@ -5980,12 +6209,12 @@ msgid "" msgstr "" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 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 " @@ -5994,7 +6223,7 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 msgid "" "After the password has been entered, password aging information is checked " "to see if the user is permitted to change the password at this time. If not, " @@ -6002,7 +6231,7 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "" "The user is then prompted twice for a replacement password. The second entry " "is compared against the first and both are required to match in order for " @@ -6010,48 +6239,25 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 -msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 +#: passwd.1.xml.out:98 msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. <_:command-1/> will reject any password which is not suitably " -"complex." +"Then, the password is tested for complexity. <_:command-1/> will reject any " +"password which is not suitably complex. Care must be taken not to include " +"the system default erase or kill characters." msgstr "" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 msgid "" "The security of a password depends upon the strength of the encryption " "algorithm and the size of the key space. The legacy <_:emphasis-1/> System " @@ -6061,7 +6267,7 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "" "Compromises in password security normally result from careless password " "selection or handling. For this reason, you should not select a password " @@ -6071,7 +6277,19 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "" +"As a general guideline, passwords should be long and random. It's fine to " +"use simple character sets, such as passwords consisting only of lowercase " +"letters, if that helps memorizing longer passwords. For a password " +"consisting only of lowercase English letters randomly chosen, and a length " +"of 32, there are 26^32 (approximately 2^150) different possible " +"combinations. Being an exponential equation, it's apparent that the exponent " +"(the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 #, fuzzy #| msgid "" #| "You can find advices on how to choose a strong password on http://en." @@ -6084,7 +6302,7 @@ msgstr "" "wikipedia.org/wiki/Password_strength" #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 #, fuzzy #| msgid "" #| "This option can be used only with and causes show " @@ -6097,7 +6315,7 @@ msgstr "" "alle brugere." #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "" "Delete a user's password (make it empty). This is a quick way to disable a " "password for an account. It will set the named account passwordless." @@ -6107,12 +6325,12 @@ msgstr "" "uden adgangskode." #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 msgid "--expire" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 msgid "" "Immediately expire an account's password. This in effect can force a user to " "change their password at the user's next login." @@ -6121,7 +6339,7 @@ msgstr "" "bruger til at ændre sin adgangskode ved brugerens næste logind." #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 #, fuzzy #| msgid "" #| "This option is used to disable an account after the password has been " @@ -6141,17 +6359,17 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 useradd.8.xml.out:278 useradd.8.xml.out:356 +#: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 msgid "-k" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 msgid "" "Indicate password change should be performed only for expired authentication " "tokens (passwords). The user wishes to keep their non-expired tokens as " @@ -6159,12 +6377,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:222 usermod.8.xml.out:231 +#: passwd.1.xml.out:218 usermod.8.xml.out:231 msgid "--lock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 msgid "" "Lock the password of the named account. This option disables a password by " "changing it to a value which matches no possible encrypted value (it adds a " @@ -6172,12 +6390,12 @@ msgid "" msgstr "" #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 msgid "" "Note that this does not disable the account. The user may still be able to " "login using another authentication token (e.g. an SSH key). To disable the " @@ -6186,50 +6404,50 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "-q" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "--quiet" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 vipw.8.xml.out:110 +#: passwd.1.xml.out:257 vipw.8.xml.out:110 msgid "Quiet mode." msgstr "Stille tilstand." #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: passwd.1.xml.out:268 passwd.1.xml.out:272 +#: passwd.1.xml.out:264 passwd.1.xml.out:268 #, fuzzy #| msgid "EDITOR" msgid "REPOSITORY" msgstr "REDIGERINGSPROGRAM" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 msgid "change password in <_:replaceable-1/> repository" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 msgid "" "Display account status information. The status information consists of 7 " "fields. The first field is the user's login name. The second field indicates " @@ -6241,12 +6459,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:309 usermod.8.xml.out:405 +#: passwd.1.xml.out:320 usermod.8.xml.out:405 msgid "--unlock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 msgid "" "Unlock the password of the named account. This option re-enables a password " "by changing the password back to its previous value (to the value before " @@ -6254,7 +6472,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 msgid "" "Set the number of days of warning before a password change is required. The " "<_:replaceable-1/> option is the number of days prior to the password " @@ -6262,71 +6480,97 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 msgid "-x" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 msgid "" "Set the maximum number of days a password remains valid. After <_:" "replaceable-1/>, the password is required to be changed." msgstr "" +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "" +"This option is used to indicate that passwd should read the new password " +"from standard input, which can be a pipe." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 msgid "" "Password complexity checking may vary from site to site. The user is urged " "to select a password as complex as he or she feels comfortable with." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "" "Users may not be able to change their password on a system if NIS is enabled " "and they are not logged into the NIS server." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 msgid "" "<_:command-1/> uses PAM to authenticate users and to change their passwords." msgstr "" #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 msgid "/etc/pam.d/passwd" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "Ugyldig kombination af tilvalg" #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "uventet fejl, intet udført" #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 #, fuzzy #| msgid "unexpected failure, passwd file missing" msgid "unexpected failure, <_:filename-1/> file missing" msgstr "uventet fejl, passwd-filen mangler" #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 #, fuzzy #| msgid "passwd file busy, try again" msgid "<_:filename-1/> file busy, try again" msgstr "passwd-filen er optaget, forsøg igen" +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +#, fuzzy +#| msgid "/etc/passwd" +msgid "makepasswd" +msgstr "/etc/passwd" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 +#: passwd.1.xml.out:494 msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:517 +msgid "" +"The following web page comically (yet correctly) compares the strength of " +"two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -7795,6 +8039,11 @@ msgstr "" msgid "$HZ" msgstr "" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -8077,7 +8326,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:583 useradd.8.xml.out:585 +#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 msgid "-D" msgstr "" @@ -8099,14 +8348,14 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:592 +#: useradd.8.xml.out:118 useradd.8.xml.out:612 msgid "--base-dir" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:592 useradd.8.xml.out:598 +#: useradd.8.xml.out:612 useradd.8.xml.out:618 msgid "BASE_DIR" msgstr "" @@ -8126,18 +8375,18 @@ msgid "" msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:603 +#: useradd.8.xml.out:131 useradd.8.xml.out:623 msgid "HOME" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename #: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:293 useradd.8.xml.out:343 -#: useradd.8.xml.out:393 useradd.8.xml.out:523 useradd.8.xml.out:604 -#: useradd.8.xml.out:616 useradd.8.xml.out:633 useradd.8.xml.out:649 -#: useradd.8.xml.out:663 useradd.8.xml.out:677 useradd.8.xml.out:767 -#: usermod.8.xml.out:419 +#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 +#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 +#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 +#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 +#: useradd.8.xml.out:787 usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "/etc/default/useradd" @@ -8215,7 +8464,7 @@ msgstr "" "formatet ÅÅÅÅ-MM-DD." #. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:615 usermod.8.xml.out:418 +#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 msgid "EXPIRE" msgstr "" @@ -8246,7 +8495,7 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:482 +#: useradd.8.xml.out:218 useradd.8.xml.out:484 msgid "-F" msgstr "" @@ -8334,6 +8583,13 @@ msgid "" "emphasis-5/>]]]" msgstr "" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +#, fuzzy +#| msgid "GROUP" +msgid "GROUPS" +msgstr "GRUPPE" + #. (itstool) path: listitem/para #: useradd.8.xml.out:260 msgid "" @@ -8341,21 +8597,23 @@ msgid "" "group is separated from the next by a comma, with no intervening whitespace. " "The groups are subject to the same restrictions as the group given with the " "<_:option-1/> option. The default is for the user to belong only to the " -"initial group." +"initial group. In addition to passing in the -G flag, you can add the option " +"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " +"to those supplementary groups." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "SKEL_DIR" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 msgid "" "The skeleton directory, which contains files and directories to be copied in " "the user's home directory, when the home directory is created by <_:" @@ -8364,55 +8622,55 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 useradd.8.xml.out:350 +#: useradd.8.xml.out:290 useradd.8.xml.out:352 msgid "--create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 msgid "" "This option is only valid if the <_:option-1/> (or <_:option-2/>) option is " "specified." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 #, fuzzy #| msgid "/etc/skel/" msgid "/etc/skel" msgstr "/etc/skel/" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 msgid "" "If this option is not set, the skeleton directory is defined by the <_:" "option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "" "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" "option-4/>, <_:option-5/> and others)." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "" "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " "when creating an account to turn off password aging. Multiple <_:option-4/> " @@ -8421,29 +8679,29 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 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 "" #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "" "If this option is not specified, <_:command-1/> will also consult the " "variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " @@ -8451,7 +8709,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 msgid "" "Create the user's home directory if it does not exist. The files and " "directories contained in the skeleton directory (which can be defined with " @@ -8459,19 +8717,19 @@ msgid "" msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:361 useradd.8.xml.out:379 useradd.8.xml.out:475 +#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 msgid "" "By default, if this option is not specified and <_:option-1/> is not " "enabled, no home directories are created." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "" "The directory where the user's home directory is created must exist and have " "proper SELinux context and permissions. Otherwise the user's home directory " @@ -8479,24 +8737,24 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 msgid "" "Do not create the user's home directory, even if the system wide setting " "from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 msgid "" "Do not create a group with the same name as the user, but add the user to " "the group specified by the <_:option-1/> option or by the <_:option-2/> " @@ -8504,12 +8762,12 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 msgid "allows the creation of an account with an already existing UID." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 usermod.8.xml.out:277 +#: useradd.8.xml.out:414 usermod.8.xml.out:277 msgid "" "This option is only valid in combination with the <_:option-1/> option. As a " "user identity serves as key to map between users on one hand and " @@ -8519,7 +8777,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "" "defines an initial password for the account. PASSWORD is expected to be " "encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " @@ -8527,7 +8785,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "" "Without this option, the new account will be locked and with no password " "defined, i.e. a single exclamation mark in the respective field of <_:" @@ -8536,14 +8794,14 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 msgid "" "<_:emphasis-1/>Avoid this option on the command line because the password " "(or encrypted password) will be visible by users listing the processes." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 msgid "" "Note that <_:command-1/> will not create a home directory for such a user, " "regardless of the default setting in <_:filename-2/> (<_:option-3/>). You " @@ -8552,7 +8810,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 msgid "" "Note that this option will not update <_:filename-1/> and <_:filename-2/>. " "You have to specify the <_:option-3/> options if you want to update the " @@ -8560,7 +8818,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 msgid "" "sets the path to the user's login shell. Without this option, the system " "will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " @@ -8569,17 +8827,17 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "--uid" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "UID" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 msgid "" "The numerical value of the user's ID. This value must be unique, unless the " "<_:option-1/> option is used. The value must be non-negative. The default is " @@ -8588,52 +8846,74 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "" "Create a group with the same name as the user, and add the user to this " "group." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:525 msgid "-Z" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:594 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:526 msgid "--selinux-user" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 usermod.8.xml.out:501 +#: useradd.8.xml.out:568 usermod.8.xml.out:501 msgid "SEUSER" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 useradd.8.xml.out:589 usermod.8.xml.out:521 msgid "semanage" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 +#: useradd.8.xml.out:571 msgid "" -"defines the SELinux user for the new account. Without this option, a SELinux " +"defines the SELinux user for the new account. Without this option, SELinux " "uses the default user. Note that the shadow system doesn't store the selinux-" "user, it uses <_:citerefentry-1/> for that." msgstr "" +#. (itstool) path: term/option +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "--selinux-range" +msgstr "" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "SERANGE" +msgstr "" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +msgid "" +"defines the SELinux MLS range for the new account. Without this option, " +"SELinux uses the default range. Note that the shadow system doesn't store " +"the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "" #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 msgid "" "When invoked with only the <_:option-1/> option, <_:command-2/> will display " "the current default values. When invoked with <_:option-3/> plus other " @@ -8642,7 +8922,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 msgid "" "sets the path prefix for a new user's home directory. The user's name will " "be affixed to the end of <_:replaceable-1/> to form the new user's home " @@ -8651,8 +8931,8 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 #, fuzzy #| msgid "" #| "This option sets the variable in /etc/" @@ -8663,12 +8943,12 @@ msgstr "" "default/useradd." #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 msgid "sets the date on which newly created user accounts are disabled." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -8676,7 +8956,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "" "sets the default primary group for newly created users, accepting group " "names or a numerical group ID. The named group must exist, and the GID must " @@ -8684,23 +8964,23 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 msgid "" "The system administrator is responsible for placing the default user files " "in the <_:filename-1/> directory (or any other skeleton directory specified " @@ -8708,7 +8988,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " "corresponding server." @@ -8717,19 +8997,19 @@ msgstr "" "udføres på den tilsvarende server." #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 msgid "" "Similarly, if the username already exists in an external user database such " "as NIS or LDAP, <_:command-1/> will deny the user account creation request." msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -8740,56 +9020,56 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." -msgstr "Brugernavne må kun være op til 32 tegn lange." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." +msgstr "Brugernavne må kun være op til 256 tegn lange." #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "Standardværdier for kontooprettelse." #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #, fuzzy #| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/default/useradd" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 #, fuzzy #| msgid "OPTIONS" msgid "ACTION" msgstr "TILVALG" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "useradd-pre.d" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "useradd-post.d" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -8799,48 +9079,48 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "Mappe indeholdende standardfiler." #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 #, fuzzy #| msgid "UID already in use (and no )" msgid "UID already in use (and no <_:option-1/>)" msgstr "UID er allerede i brug (og intet )" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "group name already in use" msgid "username or group name already in use" msgstr "gruppenavn er allerede i brug" #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "kan ikke oprette hjemmemappe" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 #, fuzzy #| msgid "4" msgid "14" msgstr "4" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -9486,9 +9766,16 @@ msgid "" "shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 +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-1/> " @@ -9497,67 +9784,67 @@ msgid "" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 msgid "" "You must change the owner of any <_:command-1/> files or <_:command-2/> jobs " "manually." msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 #, fuzzy #| msgid "Group account information." msgid "Group account information" msgstr "Information om gruppekonto." #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 +#: usermod.8.xml.out:582 #, fuzzy #| msgid "Secure group account information." -msgid "Secure group account informatio." +msgid "Secure group account information" msgstr "Information om sikret gruppekonto." #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 msgid "Shadow password suite configuration" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 #, fuzzy #| msgid "User account information." msgid "User account information" msgstr "Information om brugerkonto." #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 #, fuzzy #| msgid "Secure user account information." msgid "Secure user account information" msgstr "Information om sikret brugerkonto." #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -9610,7 +9897,7 @@ msgstr "vipw" #| "envar>, and finally the default editor, vi1." msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -10215,6 +10502,9 @@ msgstr "" #~ msgid " (number)" #~ msgstr " (antal)" +#~ msgid " (number)" +#~ msgstr " (antal)" + #~ msgid "" #~ "The passwd command exits with the following values: " #~ "" @@ -10242,6 +10532,18 @@ msgstr "" #~ msgid ", " #~ msgstr ", " +#~ msgid "" +#~ "The value 0 means that the system will choose the default number of " +#~ "rounds for the crypt method (5000)." +#~ msgstr "" +#~ "Værdien 0 betyder at systemet vil vælge antallet af standardrunder for " +#~ "krypteringsmetoden (5000)." + +#~ msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#~ msgstr "" +#~ "Du kan kun bruge dette tilvalg med SHA256- eller SHA512-" +#~ "krypteringsmetoden." + #~ msgid "PAM configuration for newusers." #~ msgstr "PAM-konfiguration for newusers." @@ -10287,7 +10589,7 @@ msgstr "" #~ msgstr " (antal)" #~ msgid "Enable logging of successful logins." -#~ msgstr "Aktiver logning af succesfulde logind." +#~ msgstr "Aktiver logning af successfulde logind." #~ msgid " (boolean)" #~ msgstr " (boolesk)" diff --git a/man/po/de.po b/man/po/de.po index 28dd653..7063b52 100644 --- a/man/po/de.po +++ b/man/po/de.po @@ -1,27 +1,31 @@ # German translation of shadow-man-pages # Copyright (C) 2006 Free Software Foundation, Inc. # Simon Brandmair , 2005, 2006, 2007, 2011, 2012. -# +# Markus Hiereth , 2021, 2022, 2023 +# Remark +# This message catalogue does not contain strings for manpages +# subuid(5), subgid(5), cpgr(8), cppw(8), msgid "" msgstr "" "Project-Id-Version: shadow-man-pages\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" -"PO-Revision-Date: 2013-08-23 01:36+0200\n" -"Last-Translator: Simon Brandmair \n" -"Language-Team: debian-l10n-german \n" -"Language: \n" +"POT-Creation-Date: 2024-03-14 18:23-0500\n" +"PO-Revision-Date: 2023-02-08 22:03+0100\n" +"Last-Translator: Markus Hiereth \n" +"Language-Team: debian-l10n-german \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.4.2\n" #. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 #: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 #: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 #: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 #: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 #: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 #: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 @@ -29,12 +33,12 @@ msgid "Julianne Frances" msgstr "Julianne Frances" #. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 #: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 #: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 #: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 #: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 #: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 #: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 @@ -44,17 +48,17 @@ msgstr "Haugh" #. (itstool) path: author/contrib #: chage.1.xml.out:18 chfn.1.xml.out:20 chsh.1.xml.out:20 expiry.1.xml.out:21 msgid "Creation, 1990" -msgstr "ursprünglicher Autor, 1990" +msgstr "Erstellung, 1990" #. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 #: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 #: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 #: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 #: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 #: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 @@ -63,14 +67,14 @@ msgid "Thomas" msgstr "Thomas" #. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 #: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 #: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 #: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 #: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 #: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 @@ -79,14 +83,14 @@ msgid "Kłoczko" msgstr "Kłoczko" #. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 #: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 #: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 #: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 #: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 #: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 @@ -95,14 +99,14 @@ msgid "kloczek@pld.org.pl" msgstr "kloczek@pld.org.pl" #. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 #: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 #: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 -#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 +#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 #: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 #: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 #: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 @@ -111,15 +115,15 @@ msgid "shadow-utils maintainer, 2000 - 2007" msgstr "shadow-utils-Betreuer, 2000 - 2007" #. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 #: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 #: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 -#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 +#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 #: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 #: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 #: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 @@ -128,15 +132,15 @@ msgid "Nicolas" msgstr "Nicolas" #. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 #: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 #: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 -#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 +#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 #: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 #: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 #: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 @@ -145,15 +149,15 @@ msgid "François" msgstr "François" #. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 #: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 #: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 -#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 +#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 #: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 #: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 #: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 @@ -162,15 +166,15 @@ msgid "nicolas.francois@centraliens.net" msgstr "nicolas.francois@centraliens.net" #. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 #: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 #: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 -#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 +#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 #: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 #: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 #: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 @@ -185,9 +189,9 @@ msgstr "shadow-utils-Betreuer, 2007 - heute" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle #: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:216 chage.1.xml.out:226 -#: chage.1.xml.out:236 chage.1.xml.out:241 chage.1.xml.out:285 -#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 +#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 +#: login.defs.5.xml.out:237 shadow.5.xml.out:262 msgid "chage" msgstr "chage" @@ -195,11 +199,11 @@ msgstr "chage" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:294 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:217 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:37 chsh.1.xml.out:171 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 groupadd.8.xml.out:345 groupadd.8.xml.out:348 +#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 +#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 #: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 #: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 @@ -207,44 +211,44 @@ msgstr "chage" #: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 #: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 #: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:456 -#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:431 -#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 -#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 -#: pwck.8.xml.out:293 shadow.5.xml.out:262 shadow.5.xml.out:265 -#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 -#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 -#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 -#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:817 -#: useradd.8.xml.out:878 useradd.8.xml.out:881 useradd.8.xml.out:884 -#: userdel.8.xml.out:241 userdel.8.xml.out:310 userdel.8.xml.out:313 -#: userdel.8.xml.out:316 usermod.8.xml.out:105 usermod.8.xml.out:244 -#: usermod.8.xml.out:605 usermod.8.xml.out:608 usermod.8.xml.out:611 -#: vipw.8.xml.out:78 vipw.8.xml.out:205 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 +#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 +#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 +#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 +#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 +#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 +#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 +#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 +#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 +#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 +#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 +#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 +#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 +#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 msgid "1" msgstr "1" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 msgid "User Commands" -msgstr "Dienstprogramme für Benutzer" +msgstr "Befehle für Benutzer" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 #: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 #: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 -#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 +#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 #: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 #: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 #: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 @@ -253,33 +257,39 @@ msgid "shadow-utils" msgstr "shadow-utils" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 #: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 #: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 -#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 +#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 #: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 #: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 #: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 #: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" +# ENDE Teil 38 weiter mit chage +# BEGINN Teil 39 setzt chfn fort +# MH171: This description ignores a part of the commands applications, e.g. +# it edits the date of the last password change, the earliest date for a +# password change. Thus write +# edit data with reference to the password's and the account's validity #. (itstool) path: refnamediv/refpurpose #: chage.1.xml.out:42 msgid "change user password expiry information" -msgstr "ändert die Information zum Passwortverfall" +msgstr "ändert das Ablaufdatum des Passworts und damit verknüpfte Fristen" #. (itstool) path: arg/replaceable #. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 #: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:64 passwd.1.xml.out:55 +#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 #: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 #: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 #: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 @@ -292,22 +302,22 @@ msgstr "Optionen" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis #: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 #: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 #: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 msgid "LOGIN" msgstr "ANMELDENAME" #. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 #: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 #: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 -#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 +#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 #: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 #: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 #: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 @@ -315,6 +325,13 @@ msgstr "ANMELDENAME" msgid "DESCRIPTION" msgstr "BESCHREIBUNG" +# MH172: This is a really bad description of the command: Hard to +# understand and not really covering the scope of it, e.g. editing the +# date of the last password change, the earliest date for a password +# change. +# MH173 +# s/user must change their/user must change his or her +# or s/user must change their/users must change their #. (itstool) path: refsect1/para #: chage.1.xml.out:58 #, fuzzy @@ -328,19 +345,19 @@ msgid "" "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 "" -"Der Befehl chage verändert die Anzahl der Tage zwischen " -"dem letzten Wechsel des Passworts und dem nächsten Wechsel. Mit dieser " -"Information bestimmt das System, wann ein Benutzer sein Passwort verändern " -"muss." +"Der Befehl chage verändert den Tag des letzten " +"Passwortwechsels, das Ablaufdatum des Passworts, seine minimale und maximale " +"Verwendungsdauer die Warnzeit vor und die Karenzzeit nach dessen Ablauf " +"sowie das Datum, an dem das Benutzerkontos stillgelegt soll" #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:51 +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 #: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:250 passwd.1.xml.out:150 +#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 #: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 #: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 #: vipw.8.xml.out:83 @@ -348,24 +365,25 @@ msgid "OPTIONS" msgstr "OPTIONEN" #. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:81 +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 -#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 +#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 #: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 #, fuzzy #| msgid "The options which apply to the su command are:" msgid "The options which apply to the <_:command-1/> command are:" msgstr "" -"Die Optionen, die vom Befehl su unterstützt werden, sind:" +"Der Befehl su kann mit folgenden Optionen verwendet " +"werden:" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:599 usermod.8.xml.out:112 usermod.8.xml.out:260 +#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 +#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 +#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 #, fuzzy #| msgid "-" msgid "-d" @@ -379,54 +397,58 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:74 chage.1.xml.out:81 chage.1.xml.out:175 +#, fuzzy +#| msgid "LASTLOG_UID_MAX" msgid "LAST_DAY" -msgstr "" +msgstr "LASTLOG_UID_MAX" #. (itstool) path: varlistentry/term #: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 #: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 -#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 chsh.1.xml.out:83 chsh.1.xml.out:96 -#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 -#: faillog.8.xml.out:169 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 groupadd.8.xml.out:101 groupadd.8.xml.out:157 -#: groupadd.8.xml.out:200 groupadd.8.xml.out:213 groupdel.8.xml.out:88 -#: groupdel.8.xml.out:101 groupmems.8.xml.out:83 groupmems.8.xml.out:94 -#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 -#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 -#: groupmod.8.xml.out:163 groupmod.8.xml.out:176 grpck.8.xml.out:148 -#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 -#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:321 -#: passwd.1.xml.out:334 pwck.8.xml.out:196 pwconv.8.xml.out:177 -#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 -#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 -#: useradd.8.xml.out:195 useradd.8.xml.out:229 useradd.8.xml.out:277 -#: useradd.8.xml.out:424 useradd.8.xml.out:488 useradd.8.xml.out:501 -#: useradd.8.xml.out:516 useradd.8.xml.out:530 useradd.8.xml.out:565 -#: useradd.8.xml.out:591 useradd.8.xml.out:609 useradd.8.xml.out:621 -#: useradd.8.xml.out:638 useradd.8.xml.out:654 userdel.8.xml.out:122 -#: userdel.8.xml.out:135 usermod.8.xml.out:98 usermod.8.xml.out:111 -#: usermod.8.xml.out:128 usermod.8.xml.out:151 usermod.8.xml.out:173 -#: usermod.8.xml.out:216 usermod.8.xml.out:289 usermod.8.xml.out:327 -#: usermod.8.xml.out:340 usermod.8.xml.out:356 usermod.8.xml.out:368 -#: usermod.8.xml.out:500 vipw.8.xml.out:114 +#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 +#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 +#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 +#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 +#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 +#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 +#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 +#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 +#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 +#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 +#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 +#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 +#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 +#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 +#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 +#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 +#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 +#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 +#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 +#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 +#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 +#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 +#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 +#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 +#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 +#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:288 groupadd.8.xml.out:303 +#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 passwd.1.xml.out:425 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:811 userdel.8.xml.out:235 +#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 +#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 msgid "0" msgstr "0" # SB: So I could also do DD.MM.YYYY or MM.DD.YYYY? How does system know which format I chose? +# MH174: A test showed that dates in format YYYY-MM-DD are accepted, +# whereas the German format DD.MM.YYYY is not accepted. #. (itstool) path: listitem/para #: chage.1.xml.out:77 #, fuzzy @@ -440,10 +462,10 @@ msgid "" "format more commonly used in your area). If the <_:replaceable-1/> is set to " "<_:emphasis-2/> the user is forced to change his password on the next log on." msgstr "" -"Legt die Anzahl der Tage, gerechnet ab dem 1. Januar 1970, fest, seit denen " -"das Passwort das letzte Mal gewechselt wurde. Das Datum kann auch im Format " -"JJJJ-MM-TT (oder in dem Format, das in Ihrer Region verbreitet ist) " -"angegeben werden." +"setzt den Tag, angegeben als Anzahl von Tagen nach dem 1. Januar 1970, an " +"dem das Passwort zuletzt geändert wurde. Das Datum kann auch im Format JJJJ-" +"MM-TT (oder in dem Format, das in Ihrer Region verbreitet ist) angegeben " +"werden." #. (itstool) path: term/option #: chage.1.xml.out:89 @@ -453,7 +475,7 @@ msgid "-E" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "" @@ -461,7 +483,7 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:610 usermod.8.xml.out:129 usermod.8.xml.out:243 +#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 #: usermod.8.xml.out:416 msgid "EXPIRE_DATE" msgstr "" @@ -475,12 +497,12 @@ msgid "" "whose account is locked must contact the system administrator before being " "able to use the system again." msgstr "" -"Setzt das Datum oder die Anzahl der Tage seit dem 1. Januar 1970, ab dem auf " -"das Benutzerkonto nicht mehr zugegriffen werden kann. Das Datum kann auch im " +"setzt den Tag angegeben als Anzahl von Tagen nach dem 1. Januar 1970, ab dem " +"das Benutzerkonto nicht mehr zugänglich sein soll. Das Datum kann auch im " "Format JJJJ-MM-TT (oder in dem Format, das in Ihrer Region verbreitet ist) " -"angegeben werden. Ein Benutzer, dessen Konto gesperrt ist, muss sich mit dem " -"Systemadministrator in Verbindung setzen, ehe er sich wieder am System " -"anmelden kann." +"angegeben werden. Ein Benutzer, dessen Konto stillgelegt ist, muss sich mit " +"dem Systemadministrator in Verbindung setzen, ehe er das System wieder " +"verwenden kann." #. (itstool) path: listitem/para #: chage.1.xml.out:100 @@ -497,7 +519,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:344 useradd.8.xml.out:315 +#: passwd.1.xml.out:355 useradd.8.xml.out:317 #, fuzzy #| msgid "1" msgid "-1" @@ -514,83 +536,83 @@ msgid "" "Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " "account expiration date." msgstr "" -"Wenn -1 als VERFALLSDATUM angegeben wird, wird das Verfallsdatum für das Konto entfernt." +"Wenn -1 als STILLLEGUNGSDATUM angegeben wird, wird das Stilllegungsdatum gelöscht." #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 #: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:271 +#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 #: userdel.8.xml.out:99 vipw.8.xml.out:96 msgid "-h" msgstr "-h" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 -#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:271 userdel.8.xml.out:99 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 +#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 -#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 #: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 groupadd.8.xml.out:87 groupadd.8.xml.out:118 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 #: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 #: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 #: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 #: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 #: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 -#: newusers.8.xml.out:320 passwd.1.xml.out:156 passwd.1.xml.out:167 -#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 -#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:290 -#: passwd.1.xml.out:308 pwck.8.xml.out:173 pwck.8.xml.out:179 -#: pwck.8.xml.out:188 pwck.8.xml.out:209 pwconv.8.xml.out:171 -#: useradd.8.xml.out:168 useradd.8.xml.out:217 useradd.8.xml.out:271 -#: useradd.8.xml.out:330 useradd.8.xml.out:349 useradd.8.xml.out:372 -#: useradd.8.xml.out:385 useradd.8.xml.out:404 useradd.8.xml.out:455 -#: useradd.8.xml.out:548 userdel.8.xml.out:75 userdel.8.xml.out:99 -#: userdel.8.xml.out:105 userdel.8.xml.out:152 usermod.8.xml.out:77 -#: usermod.8.xml.out:88 usermod.8.xml.out:230 usermod.8.xml.out:249 -#: usermod.8.xml.out:270 usermod.8.xml.out:316 usermod.8.xml.out:404 -#: vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 -#: vipw.8.xml.out:127 vipw.8.xml.out:133 +#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 +#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 +#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 +#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 +#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 +#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 +#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 +#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 +#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 +#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 +#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 +#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 +#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 +#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 +#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 #, fuzzy #| msgid ", " msgid "<_:option-1/>, <_:option-2/>" msgstr ", " #. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:120 +#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 -#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 +#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." -msgstr "zeigt die Hilfe an und beendet das Programm" +msgstr "zeigt die Hilfe an und beendet das Programm." #. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:197 +#: chage.1.xml.out:121 passwd.1.xml.out:193 #, fuzzy #| msgid "-" msgid "-i" @@ -604,7 +626,7 @@ msgstr "" #. (itstool) path: listitem/para #: chage.1.xml.out:123 msgid "When printing dates, use YYYY-MM-DD format." -msgstr "" +msgstr "Bei der Datumsausgabe das ISO-Format JJJJ-MM-TT verwenden" #. (itstool) path: term/option #: chage.1.xml.out:128 @@ -614,8 +636,8 @@ msgid "-I" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 usermod.8.xml.out:152 +#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 +#: useradd.8.xml.out:642 usermod.8.xml.out:152 msgid "--inactive" msgstr "" @@ -623,8 +645,8 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/option #: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:622 useradd.8.xml.out:632 +#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 +#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "" @@ -644,12 +666,11 @@ msgid "" "inactivity. A user whose account is locked must contact the system " "administrator before being able to use the system again." msgstr "" -"Legt die Anzahl der Tage der Untätigkeit fest, nach denen ein Passwort " -"abgelaufen ist, bevor das Konto gesperrt wird. Die Option " -"INAKTIV bezeichnet die Anzahl der Tage, für die " -"das Konto inaktiv ist. Ein Benutzer, dessen Konto gesperrt ist, muss sich " -"mit dem Systemadministrator in Verbindung setzen, ehe er sich wieder am " -"System anmelden kann." +"legt eine Karenzzeit nach Ablaufen des Passwortes fest. Danach ist das Konto " +"nicht mehr zugänglich. Die Eingabe INAKTIV ist die " +"Länge dieser Karenzzeit in Tagen. Nach ihrem Ablauf muss sich der Benutzer " +"mit dem Systemadministrator in Verbindung setzen, ehe er das System wieder " +"nutzen kann." #. (itstool) path: listitem/para #: chage.1.xml.out:138 @@ -662,16 +683,16 @@ msgid "" "account's inactivity." msgstr "" "Wenn -1 als INAKTIV angegeben wird, wird die Überwachung der fehlenden Verwendung " -"des Kontos entfernt." +"replaceable> eingegeben wird, wird der vorliegende Wert entfernt und das " +"Passworts verliert seine Gültigkeit unverzüglich." #. (itstool) path: term/option #. (itstool) path: para/option #. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:242 faillog.8.xml.out:88 +#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 #: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 -#: passwd.1.xml.out:316 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:330 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 +#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "-l" @@ -681,18 +702,22 @@ msgstr "-l" msgid "--list" msgstr "" +# MH177: both the account's and the password's validity are subject to time restrictions. +# s +# /Show account aging information. +# /Show usage and validity information on the password and the account. #. (itstool) path: listitem/para #: chage.1.xml.out:150 msgid "Show account aging information." -msgstr "zeigt Informationen zur Kontoalterung an" +msgstr "zeigt den Zugang zum Benutzerkonto betreffende Fristen an." #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:287 useradd.8.xml.out:350 useradd.8.xml.out:476 +#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 #, fuzzy #| msgid "-" @@ -700,19 +725,23 @@ msgid "-m" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:246 +#: chage.1.xml.out:157 passwd.1.xml.out:242 msgid "--mindays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "" +# MH105 inconsistency on singular / plural +# s/force a user to/force users to +# or, as before +# s/their/his or her #. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:249 +#: chage.1.xml.out:160 passwd.1.xml.out:245 #, fuzzy #| msgid "" #| "Set the minimum number of days between password changes to " @@ -723,38 +752,42 @@ msgid "" ">. A value of zero for this field indicates that the user may change their " "password at any time." msgstr "" -"Setzt die Anzahl von Tagen, die mindestens zwischen zwei Änderungen eines " -"Passworts vergehen müssen, auf MIN_TAGE. Ein Wert " -"von Null in diesem Feld bedeutet, dass der Benutzer sein Passwort jederzeit " -"ändern darf." +"setzt die Anzahl von Tagen, die mindestens zwischen zwei Änderungen eines " +"Passworts vergehen müssen, auf MIN_TAGE Tage. Ein " +"Wert von Null in diesem Feld bedeutet, dass der Benutzer sein Passwort " +"jederzeit ändern darf." #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 useradd.8.xml.out:162 useradd.8.xml.out:373 +#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 msgid "-M" msgstr "-M" #. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:335 +#: chage.1.xml.out:169 passwd.1.xml.out:346 msgid "--maxdays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:335 passwd.1.xml.out:340 passwd.1.xml.out:345 +#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:203 usermod.8.xml.out:481 +#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 #, fuzzy #| msgid "-" msgid "-W" msgstr "-" +# MH "user will be required to change their" is only one possibilty of two. In case INAKTIVE=0, +# the user is not asked for a change and cannot use this password anymore +# MH178: The third phrase needs to be simplified +# MH179: singular of "user" needs the pronoun "his" or "her", not "their" #. (itstool) path: listitem/para #: chage.1.xml.out:172 #, fuzzy @@ -772,15 +805,15 @@ msgid "" "their account. This occurrence can be planned for in advance by use of the " "<_:option-3/> option, which provides the user with advance warning." msgstr "" -"Bestimmt die maximale Anzahl von Tagen, die das Passwort gültig bleibt. Wenn " -"MAX_TAGE plus LETZTER_TAG älter als das aktuelle Datum ist, muss der Benutzer sein " -"Passwort ändern, ehe er sein Konto benutzen kann. Mit der Option , " #~ msgstr ", " -#, fuzzy -#~| msgid "" -#~| ",  LOGIN|RANGE" #~ msgid "" #~ ",  " #~ "FIRST-LAST" #~ msgstr "" -#~ ",  LOGIN|MENGE" +#~ ",  " +#~ "ERSTE-LETZTE" -#, fuzzy -#~| msgid "" -#~| ",  LOGIN|RANGE" #~ msgid "" #~ ",  " #~ "FIRST-LAST" #~ msgstr "" -#~ ",  LOGIN|MENGE" +#~ ",  " +#~ "ERSTE-LETZTE" -#, fuzzy -#~| msgid "" -#~| ",  LOGIN|RANGE" #~ msgid "" #~ ",  " #~ "FIRST-LAST" #~ msgstr "" -#~ ",  LOGIN|MENGE" +#~ ",  " +#~ "ERSTE-LETZTE" -#, fuzzy -#~| msgid "" -#~| "No checks will be performed with regard to the , " -#~| ", , or " -#~| " from /etc/login.defs." #~ msgid "" #~ "No checks will be performed with regard to , " #~ ", or from /etc/" #~ "login.defs." #~ msgstr "" -#~ "Die Werte von , , " -#~ " und aus " -#~ "/etc/login.defs werden nicht geprüft." +#~ "Ein Abgleich hinsichtlich der Einträge für , " +#~ " und aus " +#~ "/etc/login.defs erfolgt nicht." -#, fuzzy -#~| msgid "" -#~| ",  LOGIN|RANGE" #~ msgid "" #~ ",  " #~ "FIRST-LAST" #~ msgstr "" -#~ ",  LOGIN|MENGE" +#~ ",  " +#~ "ERSTE-LETZTE" #~ msgid "" #~ ",  " @@ -13094,15 +14120,50 @@ msgstr "" #~ "BENUTZER" #~ msgid "The new SELinux user for the user's login." -#~ msgstr "der neue SELinux-Benutzer für den Anmeldenamen des Benutzers" +#~ msgstr "" +#~ "definiert den SELinux-Benutzer SE-BENUTZER, " +#~ "der dem Anmeldenamen LOGIN zuzuordnen ist. " +# MH change this string in the same way as in useradd.8, see SH 2022-02-05: +# defines the SELinux user for the new account. Without this +# option, an SELinux system uses the default user. Note that the shadow system +# doesn't store the selinux-user, it uses semanage(8) for that. +# +# defines the SELinux user to be mapped with LOGIN. +# An empty string ("") will remove the respective entry (if any). Note that the shadow system +# doesn't store the selinux-user, it uses semanage(8) for that. +# #~ msgid "" #~ "A blank SEUSER will remove the SELinux user " #~ "mapping for user LOGIN (if any)." #~ msgstr "" -#~ "Wenn SEBENUTZER leer ist, wird die Zuordnung " -#~ "von SELinux-Benutzern (sofern vorhanden) aus den Anmeldeinformationen des " -#~ "Benutzers entfernt" +#~ "Wird ein Leerstring (\"\") übergeben, wird eine Zuordnung, soweit " +#~ "vorhanden, aufgehoben. Beachten sie, dass die SE-Linux-Benutzer nicht von " +#~ "den Shadow-Programmen gespeichert werden, sondern diese sich semanage(8) " +#~ "bedienen. " + +#~ msgid " (number)" +#~ msgstr " (Zahl)" + +#~ msgid "" +#~ "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." +#~ msgstr "" +#~ "Die höchste Benutzerkennung, die lastlog bei den " +#~ "Aufzeichnungen berücksichtigen soll. Da gewöhnlich spezielle Dienste die " +#~ "Identität und Authentizität von Benutzern an entfernten Systemen " +#~ "protokollieren, gibt es keinen Grund, ihretwegen eine riesige Sparse-" +#~ "Datei lastlog anzulegen." + +#~ msgid "" +#~ "No option present in the configuration " +#~ "means that there is no user ID limit for writing lastlog entries." +#~ msgstr "" +#~ "Wenn in der Konfiguration fehlt, gibt es " +#~ "keine Grenze zur Berücksichtigung von Benutzerkennungen bei den " +#~ "Aufzeichungen in lastlog." #~ msgid " (string)" #~ msgstr " (Zeichenkette)" @@ -13112,10 +14173,10 @@ msgstr "" #~ "its corresponding user account is modified or deleted. If not specified, " #~ "a compile-time default is used." #~ msgstr "" -#~ "Das Verzeichnis des Mail-Spools. Diese Angabe wird benötigt, um die " -#~ "Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto verändert " -#~ "oder gelöscht wurde. Falls nicht angegeben, wird ein Standard verwendet, " -#~ "der beim Kompilieren festgelegt wurde." +#~ "das Verzeichnis der Mail-Warteschlange. Diese Angabe wird benötigt, um " +#~ "das Postfach zu bearbeiten, nachdem das entsprechende Benutzerkonto " +#~ "verändert oder gelöscht wurde. Falls nicht angegeben, wird eine auf die " +#~ "Kompilierung zurückgehende Vorgabe herangezogen." #~ msgid " (string)" #~ msgstr " (Zeichenkette)" @@ -13124,8 +14185,8 @@ msgstr "" #~ "Defines the location of the users mail spool files relatively to their " #~ "home directory." #~ msgstr "" -#~ "Legt den Ort der Mail-Spool-Dateien eines Benutzers relativ zu seinem " -#~ "Home-Verzeichnis fest." +#~ "legt fest, wo sich die Dateien der Mail-Warteschlange des Benutzers " +#~ "relativ zu seinem persönlichen Verzeichnis befinden." #~ msgid "" #~ "The and variables " @@ -13135,9 +14196,11 @@ msgstr "" #~ msgstr "" #~ "Die Variablen und " #~ "werden von useradd, usermod und " -#~ "userdel verwendet, um den Mail-Spool eines Benutzers " -#~ "zu erstellen, zu verschieben oder zu löschen." +#~ "userdel verwendet, um die Mail-Warteschlange eines " +#~ "Benutzers zu erstellen, zu verschieben oder zu löschen." +# MH 2022-12-28: Presumably no one understand this explanation, +# varible MAIL does not appear anywhere else. #~ msgid "" #~ "If is set to yes, they are also used to define the MAIL " @@ -13155,16 +14218,16 @@ msgstr "" #~ "entry (line) is started in /etc/group (with the same " #~ "name, same password, and same GID)." #~ msgstr "" -#~ "Maximale Anzahl von Mitgliedern je Gruppeneintrag. Wenn das Maximum " +#~ "maximale Anzahl von Mitgliedern je Gruppeneintrag. Wenn das Maximum " #~ "erreicht wird, wird ein weiterer Eintrag in /etc/group (mit dem gleichen Namen, dem gleichen Passwort und der gleichen " -#~ "GID) erstellt." +#~ "Gruppenkennung) erstellt." #~ msgid "" #~ "The default value is 0, meaning that there are no limits in the number of " #~ "members in a group." #~ msgstr "" -#~ "Der Standardwert ist 0, was zur Folge hat, dass die Anzahl der Mitglieder " +#~ "Der Standardwert ist 0, was bedeutet, dass die Anzahl der Mitglieder " #~ "einer Gruppe nicht begrenzt ist." #~ msgid "" @@ -13172,9 +14235,9 @@ msgstr "" #~ "group file. This is useful to make sure that lines for NIS groups are not " #~ "larger than 1024 characters." #~ msgstr "" -#~ "Diese Fähigkeit (der aufgeteilten Gruppe) ermöglicht es, die Zeilenlänge " -#~ "in der Gruppendatei zu begrenzen. Damit kann sichergestellt werden, dass " -#~ "die Zeilen für NIS-Gruppen nicht länger als 1024 Zeichen sind." +#~ "Das Aufteilen von Gruppen ermöglicht es, Längenvorgaben für die Zeilen " +#~ "der Gruppendatei einzuhalten. Damit kann sichergestellt werden, dass die " +#~ "Zeilen für NIS-Gruppen nicht länger als 1024 Zeichen sind." #~ msgid "If you need to enforce such limit, you can use 25." #~ msgstr "" @@ -13184,67 +14247,78 @@ msgstr "" #~ "Note: split groups may not be supported by all tools (even in the Shadow " #~ "toolsuite). You should not use this variable unless you really need it." #~ msgstr "" -#~ "Hinweis: Aufgeteilte Gruppen werden möglicherweise nicht von allen " -#~ "Werkzeugen unterstützt, selbst nicht aus der Shadow-Werkzeugsammlung. Sie " -#~ "sollten diese Variable nur setzen, falls Sie zwingend darauf angewiesen " -#~ "sind." +#~ "Hinweis: Mit aufgeteilten Gruppen können möglicherweise nicht alle " +#~ "Hilfsprogramme (nicht einmal jene der Shadow-Programmsammlung) umgehen. " +#~ "Sie sollten diese Variable nur setzen, wenn Sie sie wirklich benötigen." -#, fuzzy -#~| msgid " (number)" #~ msgid " (number)" -#~ msgstr " (Zahl)" +#~ msgstr " (Zahl)" -#, fuzzy -#~| msgid " (number)" #~ msgid " (number)" -#~ msgstr " (Zahl)" +#~ msgstr " (Zahl)" -#, fuzzy -#~| msgid " (number)" #~ msgid " (number)" -#~ msgstr " (Zahl)" +#~ msgstr " (Zahl)" + +# Wird in nächster Version korrigiert: +# Statt Datei subuid muss hier subgid genannt werden SG 2022-02-11 +#~ msgid "" +#~ "If /etc/subuid exists, the commands " +#~ "useradd and newusers (unless the " +#~ "user already have subordinate group IDs) allocate to " +#~ " for each new user." +#~ msgstr "" +#~ "Wenn /etc/subgid existiert, fordern die Befehle " +#~ "useradd und newusers für jeden " +#~ "neuen Benutzer eine Zahl von freier " +#~ "Gruppenkennungen aus dem Bereich von bis " +#~ " an. (Dies gilt nicht, wenn für diesen " +#~ "Benutzer bereits untergeordnete Gruppenkennungen existieren.)" -#, fuzzy -#~| msgid "" -#~| "The default value for (resp. " -#~| ") is 101 (resp. -1)." #~ msgid "" #~ "The default values for , are respectively 100000, " -#~ "600100000 and 10000." +#~ "600100000 and 65536." #~ msgstr "" -#~ "Der Standardwert für ist 101, für " -#~ " -1." +#~ "Die jeweiligen Standardwerte für , " +#~ " und sind " +#~ "100000, 600100000 und 65536" -#, fuzzy -#~| msgid " (number)" #~ msgid " (number)" -#~ msgstr " (Zahl)" +#~ msgstr " (Zahl)" -#, fuzzy -#~| msgid " (number)" #~ msgid " (number)" -#~ msgstr " (Zahl)" +#~ msgstr " (Zahl)" -#, fuzzy -#~| msgid " (number)" #~ msgid " (number)" -#~ msgstr " (Zahl)" +#~ msgstr " (Zahl)" + +#~ msgid "" +#~ "If /etc/subuid exists, the commands " +#~ "useradd and newusers (unless the " +#~ "user already have subordinate user IDs) allocate to " +#~ " for each new user." +#~ msgstr "" +#~ "Wenn /etc/subuid existiert, fordern die Befehle " +#~ "useradd und newusers für jeden " +#~ "neuen Benutzer eine Zahl von freier " +#~ "Benutzerkennungen aus dem Bereich von bis " +#~ " an. (Dies gilt nicht, wenn für diesen " +#~ "Benutzer bereits untergeordnete Benutzerkennungen existieren.)" -#, fuzzy -#~| msgid "" -#~| "The default value for (resp. " -#~| ") is 101 (resp. -1)." #~ msgid "" #~ "The default values for , are respectively 100000, " -#~ "600100000 and 10000." +#~ "600100000 and 65536." #~ msgstr "" -#~ "Der Standardwert für ist 101, für " -#~ " -1." +#~ "Die jeweiligen Standardwerte für , " +#~ " und sind " +#~ "100000, 600100000 und 65536." #~ msgid " (boolean)" -#~ msgstr " (boolesch)" +#~ msgstr " (Wahrheitswert)" #, no-wrap #~ msgid "" @@ -13269,12 +14343,12 @@ msgstr "" #~ "} anderenfalls, falls ( UID kleiner als 1000000) {\n" #~ " kilos = UID / 1000\n" #~ " verwende /etc/tcb/:kilos/user\n" -#~ " erstelle symbolischen Verweis /etc/tcb/user zu dem genannten Verzeichnis\n" +#~ " erstelle symbolischen Verweis /etc/tcb/user zu obigem Verzeichnis\n" #~ "} anderenfalls {\n" #~ " megas = UID / 1000000\n" #~ " kilos = ( UID / megas * 1000000 ) / 1000\n" #~ " verwende /etc/tcb/:megas/:kilos/user\n" -#~ " erstelle symbolischen Verweis /etc/tcb/user zu dem genannten Verzeichnis\n" +#~ " erstelle symbolischen Verweis /etc/tcb/user zu obigem Verzeichnis\n" #~ "}\n" #~ " " @@ -13284,30 +14358,11 @@ msgstr "" #~ "computed depending on the UID of the user, according to the following " #~ "algorithm: " #~ msgstr "" -#~ "Falls der Wert yes ist, wird der Ort des Tcb-" +#~ "Falls der Wert yes ist, wird der Ort des tcb-" #~ "Verzeichnisses des Benutzers nicht automatisch /etc/tcb/user sein, " -#~ "sondern nach dem folgenden Algorithmus aus der UID des Benutzers " +#~ "sondern nach dem folgenden Algorithmus aus der Kennung des Benutzers " #~ "errechnet: " -#, fuzzy -#~| msgid "" -#~| "chfn1, chsh1, " -#~| "passwd1, crypt3, " -#~| "gpasswd8, groupadd8, " -#~| "groupdel8, groupmod8, " -#~| "login.defs5, useradd8, " -#~| "userdel8." #~ msgid "" #~ "chfn1, chsh, groupmod8, " #~ "login.defs5, useradd, subgid5, " +#~ "subuid5, useradd8, " #~ "userdel8." @@ -13352,8 +14411,8 @@ msgstr "" #~ msgid "" #~ "The options which apply to the userdel command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl userdel unterstützt " -#~ "werden, sind:" +#~ "Der Befehl userdel kann mit den folgenden Optionen " +#~ "verwendet werden:" #~ msgid ", " #~ msgstr ", (string)" #~ msgstr " (Zeichenkette)" +# MH30: make more simple and more clear: +# s/owned by the user to be removed (passed as the first +# /owned by this user. His login name is expected as first #~ msgid "" #~ "If defined, this command is run when removing a user. It should remove " #~ "any at/cron/print jobs etc. owned by the user to be removed (passed as " #~ "the first argument)." #~ msgstr "" -#~ "Falls angegeben, wird dieser Befehl ausgeführt, wenn ein Benutzer " +#~ "falls angegeben, wird dieser Befehl ausgeführt, wenn ein Benutzer " #~ "entfernt wird. Damit können At-, Cron- und Druckaufträge etc. des " -#~ "entfernten Benutzers (wird als erstes Argument übergeben) gelöscht werden." +#~ "Benutzers (sein Name ist als erstes Argument zu übergeben) gelöscht " +#~ "werden." #~ msgid "The return code of the script is not taken into account." -#~ msgstr "Der Rückgabewert des Skripts wird nicht ausgewertet." +#~ msgstr "Der Rückgabewert des Skripts bleibt unberücksichtigt." #, no-wrap #~ msgid "" @@ -13411,7 +14474,7 @@ msgstr "" #~ "\n" #~ "# Prüfen, ob das benötigte Argument angegeben wurde\n" #~ "if [ $# != 1 ]; then\n" -#~ "\techo \"Verwendungsweise: $0 Benutzername\"\n" +#~ "\techo \"Verwendungsweis: $0 Anmeldename\"\n" #~ "\texit 1\n" #~ "fi\n" #~ "\n" @@ -13419,9 +14482,9 @@ msgstr "" #~ "crontab -r -u $1\n" #~ "\n" #~ "# at-Aufträge entfernen.\n" -#~ "# Hinweis: Dies wird alle Aufträge entfernen, die der gleichen UID\n" -#~ "# gehören, selbst wenn sie von einem Benutzer mit einem anderen Namen\n" -#~ "# eingerichtet wurden.\n" +#~ "# Hinweis: Dies wird alle Aufträge entfernen, die der gleichen \n" +#~ "# Benutzerkennung gehören, selbst wenn sie von einem Benutzer mit \n" +#~ "# einem anderen Namen eingerichtet wurden.\n" #~ "AT_SPOOL_DIR=/var/spool/cron/atjobs\n" #~ "find $AT_SPOOL_DIR -name \"[^.]*\" -type f -user $1 -delete \\;\n" #~ "\n" @@ -13440,17 +14503,20 @@ msgstr "" #~ "Benutzers entfernt:" #~ msgid " (boolean)" -#~ msgstr " (boolesch)" +#~ msgstr " (Wahrheitswert)" +# MH31: Perhaps, it would be easier to use the file mode bits (e.g. 755) +# instead of their description as umask (e.g. 077) bit pattern. #~ msgid "" #~ "Enable setting of the umask group bits to be the same as owner bits " #~ "(examples: 022 -> 002, 077 -> 007) for non-root users, if the uid " #~ "is the same as gid, and username is the same as the primary group name." #~ msgstr "" -#~ "Erlaubt Benutzern, die nicht Root sind, die Umask-Gruppen-Bits auf ihre " -#~ "Umask-Bits zu setzen (Beispiel: 022 -> 002, 077 -> 007), falls die " -#~ "UID mit der GID identisch ist sowie der Benutzername mit dem Gruppennamen " -#~ "übereinstimmt." +#~ "Führt bei Benutzern, die nicht Systemadministrator sind, dazu, dass der " +#~ "Gruppe die gleichen Zugriffsrechte wie dem Eigentümer eingeräumt werden. " +#~ "Die Objekte erhielten als Umask-Muster beispielsweise 002 statt 022 und " +#~ "007 statt 077. Hierfür müssen Benutzerkennung und Gruppenkennung sowie " +#~ "der Benutzername und der der primären Gruppe übereinstimmen." #~ msgid "" #~ "If set to yes, userdel will " @@ -13470,25 +14536,6 @@ msgstr "" #~ "Der Befehl userdel gibt beim Beenden folgende Werte " #~ "zurück: " -#, fuzzy -#~| msgid "" -#~| "chfn1, chsh1, " -#~| "passwd1, crypt3, " -#~| "gpasswd8, groupadd8, " -#~| "groupdel8, groupmod8, " -#~| "login.defs5, useradd8, " -#~| "userdel8." #~ msgid "" #~ "chfn1, chsh, chsh1, " #~ "passwd1, crypt3, " +#~ "manvolnum>, login.defs5, " #~ "gpasswd8, groupadd8, " #~ "groupdel8, groupmod8, subgid5, " +#~ "subuid5, useradd8, " -#~ "login.defs5, useradd8, " -#~ "userdel8usermod8." #~ msgid "" #~ "The options which apply to the useradd command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl useradd unterstützt " -#~ "werden, sind:" +#~ "Der Befehl useradd kann mit folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ ",  " #~ "BASE_DIR" #~ msgstr "" #~ ",  " -#~ "WURZEL_VERZ" +#~ "BASIS_VERZ" -#, fuzzy -#~| msgid "" -#~| ",  HOME_DIR" #~ msgid "" #~ ",  " #~ "HOME_DIR" #~ msgstr "" -#~ ",  HOME_VERZ" +#~ ",  " +#~ "PERS_VERZ" #~ msgid ", " #~ msgstr ", " +# SH 2022-02-05: Is about to be fixed/improved +# 'disabling inactivity' field means user can't login without changing password. +# Inactivity that's expired means you can't even change your password. #~ msgid "" #~ "The number of days after a password expires until the account is " #~ "permanently disabled. A value of 0 disables the account as soon as the " #~ "password has expired, and a value of -1 disables the feature." #~ msgstr "" -#~ "Die Anzahl von Tagen nach Ablaufen des Passworts bis das Konto dauerhaft " -#~ "deaktiviert wird. Ein Wert von 0 deaktiviert das Konto, sobald das " -#~ "Passwort abläuft. Ein Wert von -1 schaltet diese Funktion ab." +#~ "definiert eine Anzahl von Tagen nach Überschreiten des Höchstalters des " +#~ "Passworts, In dieser Zeit wird der Benutzer aufgefordert, sein Passwort " +#~ "zu ersetzen. DerWert wird in der geschützten Passwortdatei abgelegt. Ein " +#~ "Wert von 0 macht das Passwort sofort nach Ablauf des Passworts " +#~ "unbrauchbar. Ein Wert von -1 entfernt den entsprechenden Eintrag in " +#~ "/etc/shadow. In shadow5finden Sie weitere " +#~ "Informationen." #~ msgid "" #~ ",  SKEL_DIR-K,  SCHLÜSSEL=WERT" -#, fuzzy -#~| msgid "" -#~| "Overrides /etc/login.defs defaults " -#~| "(, , and others). " -#~| "Example:  PASS_MAX_DAYS=-1 can be used when creating " -#~| "system account to turn off password ageing, even though system account " -#~| "has no password at all. Multiple options can be " -#~| "specified, e.g.:  UID_MIN=100 ,  TAGE" +# MH144 in --help zu lastlog wird BENUTZERZUGANG benutzt, in den Handbuchseiten +# hier dagegen dafür immer ANMELDENAME #~ msgid "" #~ ",  LOGIN|RANGE" #~ msgstr "" -#~ ",  LOGIN|MENGE" +#~ ",  " +#~ "ANMELDENAME|BEREICH" #~ msgid "" #~ "gpasswd5 (/etc/" #~ "group only)" #~ msgstr "" -#~ "eine gültige Gruppenkennung (nur für " +#~ "eine gültige Gruppenkennung (GID) (nur für " #~ "/etc/group)" #~ msgid "" @@ -15456,6 +16587,7 @@ msgstr "" #~ "eine gültige Liste der Mitglieder und " #~ "Gruppenverwalter" +# MH fehlender Leerraum vor "and" #~ msgid "" #~ "The commands which operate on the /etc/groupfileand " @@ -15466,24 +16598,27 @@ msgstr "" #~ "Die Befehle, welche die Datei /" #~ "etc/groupDateien " #~ "/etc/group und /etc/gshadow bearbeiten, können falsche oder doppelte Einträge nicht " +#~ "phrase> bearbeiten, können beschädigte oder doppelte Einträge nicht " #~ "verändern. In solchen Fällen sollte grpwck verwendet " #~ "werden, um die betreffenden Einträge zu entfernen." #~ msgid "The options which apply to the grpck command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl grpck unterstützt werden, " -#~ "sind:" +#~ "Der Befehl grpck kann mit folgenden Optionen verwendet " +#~ "werden:" #~ msgid "" #~ "Sort entries in /etc/groupand /etc/gshadow by " #~ "GID." #~ msgstr "" -#~ "Ordnet die Einträge in /etc/groupund /etc/gshadow nach " -#~ "der GID." +#~ "Sortiert die Einträge in /etc/group und /etc/gshadow nach " +#~ "Gruppenkennung." +# MH146: check whether spaces are necessary: +# after the first appearance /etc/group and +# and after group to separate it from parameter or and. #~ msgid "" #~ "By default, grpck operates on /etc/groupand /etc/gshadow und /etc/" #~ "gshadow. Der Benutzer kann andere Dateien mit dem Parameter groupden Parametern group und shadow auswählen." +#~ "emphasis> den Parametern group und shadow " +#~ "auswählen." #~ msgid "" #~ "The grpck command exits with the following values: " @@ -15549,8 +16684,8 @@ msgstr "" #~ msgid "" #~ "The options which apply to the groupmod command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl groupmod unterstützt " -#~ "werden, sind:" +#~ "Der Befehl groupmod kann mit folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ ",  GIDGID_MAX, , or " #~ " from /etc/login.defs." #~ msgstr "" -#~ "Die Werte von , , " -#~ " und aus " -#~ "/etc/login.defs werden nicht geprüft." +#~ "Eine Prüfung der Vorgaben , und " +#~ "aus /etc/login.defs erfolgt nicht." #~ msgid "" #~ ",  " @@ -15575,6 +16710,11 @@ msgstr "" #~ ",  " #~ "NEUE_GRUPPE" +# MH according to line 66 in groupmod.c +# E_GID_IN_USE indicates that GID is already in use +#~ msgid "E_GID_IN_USE: specified group doesn't exist" +#~ msgstr "E_GID_IN_USE: Die angegebene Gruppenkennung wird schon verwendet" + #~ msgid "" #~ "The groupmod command exits with the following values: " #~ "" @@ -15618,29 +16758,29 @@ msgstr "" #~ msgid "" #~ "The options which apply to the groupmems command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl groupmems unterstützt " -#~ "werden, sind:" +#~ "Der Befehl groupmems kann mit den folgendenOptionen " +#~ "verwendet werden:" #~ msgid "" #~ ",  user_name" #~ msgstr "" #~ ",  " -#~ "Benutzer_Name" +#~ "Anmeldename" #~ msgid "" #~ ",  " #~ "user_name" #~ msgstr "" #~ ",  " -#~ "Benutzer_Name" +#~ "Anmeldename" #~ msgid "" #~ ",  " #~ "group_name" #~ msgstr "" #~ ",  " -#~ "Gruppen_Name" +#~ "Gruppenname" #~ msgid ", " #~ msgstr ", " @@ -15678,8 +16818,8 @@ msgstr "" #~ msgid "" #~ "The options which apply to the groupdel command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl groupdel unterstützt " -#~ "werden, sind:" +#~ "Der Befehl groupdel kann mit den folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ "The groupdel command exits with the following values: " @@ -15722,15 +16862,15 @@ msgstr "" #~ msgid "" #~ "The options which apply to the groupadd command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl groupadd unterstützt " -#~ "werden, sind:" +#~ "Der Befehl groupadd kann mit den folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ "See also the option and the " #~ "description." #~ msgstr "" -#~ "Vergleichen Sie auch die Option und die Ausführungen " -#~ "zu ." +#~ "Beachten Sie auch die Option und die Beschreibung von " +#~ "." #~ msgid "" #~ "Example:  GID_MIN=100  " #~ "GID_MAX=499" +# Änderung im Original vorgeschlagen MH 2022-02-17 #~ msgid "This option permits to add a group with a non-unique GID." #~ msgstr "" -#~ "Diese Option erlaubt es, eine Gruppe mit einer nicht eindeutigen GID zu " -#~ "erstellen." +#~ "erlaubt es, die neue Gruppe mit einer schon vergebenen Gruppenkennung zu " +#~ "erstellen. Diese Kennung wird nicht mehr eindeutig einem Gruppennamen " +#~ "zuordenbar sein." #~ msgid "" #~ "Groupnames must start with a lower case letter or an underscore, followed " @@ -15752,20 +16894,23 @@ msgstr "" #~ "a dollar sign. In regular expression terms: [a-z_][a-z0-9_-]*[$]?" #~ msgstr "" #~ "Gruppennamen müssen mit einem Kleinbuchstaben oder einem Unterstrich " -#~ "beginnen. Nachfolgend dürfen sie Kleinbuchstaben, Zahlen, Unterstriche " -#~ "und Gedankenstriche enthalten. Das letzte Zeichen darf auch ein " -#~ "Dollarzeichen sein. Als regulärer Ausdruck: [a-z_][a-z0-9_-]*[$]?" +#~ "beginnen, dem Kleinbuchstaben, Zahlen, Unterstriche oder Bindestriche " +#~ "folgen. Das letzte Zeichen darf auch ein Dollarzeichen sein. Als " +#~ "regulärer Ausdruck: [a-z_][a-z0-9_-]*[$]?" #~ msgid "" #~ "Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long." #~ msgstr "" #~ "Gruppennamen dürfen nur bis zu &GROUP_NAME_MAX_LENGTH; Zeichen lang sein." +# String müsste auch angepasst werden: s/nicht eindeutig/bereits vergeben MH 2022-02-18 #~ msgid "GID not unique (when not used)" -#~ msgstr "GID nicht eindeutig (wenn nicht angegeben wird)" +#~ msgstr "" +#~ "Gruppenkennung ist nicht eindeutig (wenn nicht " +#~ "verwendet wurde)" #~ msgid "group name not unique" -#~ msgstr "Gruppenname nicht eindeutig" +#~ msgstr "Gruppenname ist schon vergeben" #~ msgid "" #~ "The groupadd command exits with the following values: " @@ -15833,8 +16978,8 @@ msgstr "" #~ msgid "" #~ "The options which apply to the gpasswd command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl gpasswd unterstützt " -#~ "werden, sind:" +#~ "Der Befehl gpasswd kann mit den folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ ",  userfaillog command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl faillog unterstützt " -#~ "werden, sind:" +#~ "Der Befehl faillog kann mit folgenden Optionen benutzt " +#~ "werden:" #~ msgid "" #~ ",  SECexpiry command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl expiry unterstützt " -#~ "werden, sind:" +#~ "Der Befehl expiry wird mit den folgenden Optionen " +#~ "verwendet:" #~ msgid ", " #~ msgstr ", " @@ -15954,8 +17099,8 @@ msgstr "" #~ msgid "The options which apply to the chsh command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl chsh unterstützt werden, " -#~ "sind:" +#~ "Der Befehl chsh kann mit den folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ "chfn1user_name:password" #~ msgstr "" -#~ "Benutzername:Anmeldename:Passwort" -#, fuzzy -#~| msgid "" -#~| "The default encryption algorithm can be defined for the system with the " -#~| " or " -#~| "variables of /etc/login.defs, and can be overwitten " -#~| "with the , , or or " @@ -15993,15 +17132,15 @@ msgstr "" #~ msgstr "" #~ "Der standardmäßige Verschlüsselungsalgorithmus kann systemweit mit den " #~ "Variablen oder , oder " -#~ " überschrieben werden." +#~ " außer Kraft gesetzt werden." #~ msgid "" #~ "The options which apply to the chpasswd command are:" #~ msgstr "" -#~ "Die Optionen, die vom Befehl chpasswd unterstützt " -#~ "werden, sind:" +#~ "Der Befehl chpasswd kann mit den folgenden Optionen " +#~ "verwendet werden:" #~ msgid "" #~ ",  " @@ -16010,6 +17149,9 @@ msgstr "" #~ ",  " #~ "METHODE" +#~ msgid "The available methods are DES, MD5, and NONE." +#~ msgstr "Die verfügbaren Methoden sind DES, MD5 und NONE." + #~ msgid ", " #~ msgstr ", " @@ -16023,6 +17165,15 @@ msgstr "" #~ ",  " #~ "RUNDEN" +#~ msgid "" +#~ "By default, the number of rounds is defined by the " +#~ " and und quando si crea un nuovo account." #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 #, fuzzy #| msgid "" #| "This option sets the variable in /etc/" @@ -11721,14 +11982,14 @@ msgstr "" # type: Plain text #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 #, fuzzy #| msgid "The date on which the user account is disabled." msgid "sets the date on which newly created user accounts are disabled." msgstr "La data in cui l'account dell'utente verrà disabilitato." #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -11736,7 +11997,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "" "sets the default primary group for newly created users, accepting group " "names or a numerical group ID. The named group must exist, and the GID must " @@ -11744,25 +12005,25 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" # type: SH #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "NOTE" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" # type: Plain text #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 #, fuzzy #| msgid "" #| "The system administrator is responsible for placing the default user " @@ -11781,7 +12042,7 @@ msgstr "" # type: Plain text #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " "corresponding server." @@ -11790,7 +12051,7 @@ msgstr "" "essere fatto sul server corrispondente." #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 #, fuzzy #| msgid "" #| "Similarly, if the username already exists in an external user database " @@ -11804,12 +12065,12 @@ msgstr "" "LDAP, useradd bloccherà la creazione dell'account." #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -11820,62 +12081,62 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." -msgstr "I nomi utente non possono eccedere i 32 caratteri di lunghezza." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." +msgstr "I nomi utente non possono eccedere i 256 caratteri di lunghezza." #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "Valori predefiniti per la creazione dell'account." # type: Plain text #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #, fuzzy #| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/default/useradd" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" # type: SH #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 #, fuzzy #| msgid "OPTIONS" msgid "ACTION" msgstr "OPZIONI" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-pre.d" msgstr "useradd" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-post.d" msgstr "useradd" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -11886,25 +12147,25 @@ msgstr "" # type: Plain text #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "Directory contenente i file predefiniti." # type: Plain text #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "impossibile aggiornare il file delle password" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 #, fuzzy #| msgid "UID already in use (and no )" msgid "UID already in use (and no <_:option-1/>)" msgstr "UID già in uso (e assente)" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "group name already in use" msgid "username or group name already in use" @@ -11912,25 +12173,25 @@ msgstr "nome di gruppo già in uso" # type: Plain text #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "non è possibile creare la directory home" # type: IP #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 #, fuzzy #| msgid "1" msgid "14" msgstr "1" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -12818,8 +13079,15 @@ msgid "" "shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 +msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 #, fuzzy #| msgid "" #| "You must make certain that the named user is not executing any processes " @@ -12841,17 +13109,17 @@ msgstr "" "sistemi controlla solo che non sia registrato come collegato in utmp." #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 #, fuzzy #| msgid "" #| "You must change the owner of any crontab files or " @@ -12864,14 +13132,14 @@ msgstr "" "crontab e compiti at." #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "" "Si devono apportare tutte le modifiche che riguardano NIS sul server NIS." # type: Plain text #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 #, fuzzy #| msgid "Group account information." msgid "Group account information" @@ -12879,14 +13147,14 @@ msgstr "Informazioni sugli account di gruppo." # type: Plain text #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 +#: usermod.8.xml.out:582 #, fuzzy #| msgid "Secure group account information." -msgid "Secure group account informatio." +msgid "Secure group account information" msgstr "Informazioni sicure sugli account di gruppo." #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 #, fuzzy #| msgid "Shadow password suite configuration." msgid "Shadow password suite configuration" @@ -12894,7 +13162,7 @@ msgstr "Configurazione del pacchetto password shadow" # type: Plain text #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 #, fuzzy #| msgid "User account information." msgid "User account information" @@ -12902,19 +13170,19 @@ msgstr "Informazioni sugli account utente." # type: Plain text #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 #, fuzzy #| msgid "Secure user account information." msgid "Secure user account information" msgstr "Informazioni sicure sugli account utente." #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -12970,7 +13238,7 @@ msgstr "vipw" #| "envar>, and finally the default editor, vi1." msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -14978,6 +15246,38 @@ msgstr "" #~ "sulogin8." +# type: Plain text +#~ msgid "" +#~ "Then, the password is tested for complexity. As a general guideline, " +#~ "passwords should consist of 6 to 8 characters including one or more " +#~ "characters from each of the following sets:" +#~ msgstr "" +#~ "Quindi viene misurata la complessità della password. In linea di massima " +#~ "le password dovrebbero contenere dai 6 agli 8 caratteri, includendovi uno " +#~ "o più caratteri da ciascuno dei seguenti insiemi:" + +# type: Plain text +#~ msgid "lower case alphabetics" +#~ msgstr "lettere minuscole" + +# type: Plain text +#~ msgid "digits 0 thru 9" +#~ msgstr "numeri da 0 a 9" + +# type: Plain text +#~ msgid "punctuation marks" +#~ msgstr "segni di punteggiatura" + +# type: Plain text +#~ msgid "" +#~ "Care must be taken not to include the system default erase or kill " +#~ "characters. passwd will reject any password which is " +#~ "not suitably complex." +#~ msgstr "" +#~ "Si deve fare attenzione a non inserire il carattere di cancellazione o di " +#~ "kill (azzeramento della riga). passwd non accetta " +#~ "password non sufficientemente complesse." + # type: IP #~ msgid ", " #~ msgstr ", " @@ -15284,6 +15584,18 @@ msgstr "" #~ msgid ", " #~ msgstr ", " +#~ msgid "" +#~ "The value 0 means that the system will choose the default number of " +#~ "rounds for the crypt method (5000)." +#~ msgstr "" +#~ "Il valore 0 indica che il sistema utilizzerà il numero predefinito di " +#~ "cicli per il metodo crypt (5000)." + +#~ msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#~ msgstr "" +#~ "Si può utilizzare questa opzione solo con i metodi di cifratura SHA256 o " +#~ "SHA512." + #~ msgid "PAM configuration for newusers." #~ msgstr "Configurazione PAM per newusers." @@ -16481,6 +16793,9 @@ msgstr "" #~ ",  " #~ "METODO" +#~ msgid "The available methods are DES, MD5, and NONE." +#~ msgstr "I metodi disponibili sono DES, MD5 e NONE (nessuno)." + # type: IP #~ msgid ", " #~ msgstr ", " @@ -16497,6 +16812,15 @@ msgstr "" #~ ",  " #~ "CICLI" +#~ msgid "" +#~ "By default, the number of rounds is defined by the " +#~ " and e ." #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "" #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "" "Group passwords are an inherent security problem since more than one person " "is permitted to know the password. However, groups are a useful tool for " @@ -2736,7 +2928,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 #, fuzzy msgid "" "Except for the <_:option-1/> and <_:option-2/> options, the options cannot " @@ -2744,26 +2936,26 @@ msgid "" msgstr ", , " #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 groupmems.8.xml.out:83 +#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 msgid "--add" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 gpasswd.1.xml.out:128 gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 gpasswd.1.xml.out:205 gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 #: groups.1.xml.out:48 groups.1.xml.out:59 msgid "user" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 #, fuzzy msgid "Add the <_:replaceable-1/> to the named <_:replaceable-2/>." msgstr "" @@ -2771,12 +2963,12 @@ msgstr "" "NOWA_GRUPA." #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 groupmems.8.xml.out:94 passwd.1.xml.out:168 +#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 msgid "--delete" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 #, fuzzy msgid "Remove the <_:replaceable-1/> from the named <_:replaceable-2/>." msgstr "" @@ -2784,19 +2976,19 @@ msgstr "" "NOWA_GRUPA." #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 #, fuzzy #| msgid "-" msgid "-Q" msgstr "-" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 msgid "" "Remove the password from the named <_:replaceable-1/>. The group password " "will be empty. Only group members will be allowed to use <_:command-2/> to " @@ -2804,12 +2996,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 msgid "" "Restrict the access to the named <_:replaceable-1/>. The group password is " "set to \"!\". Only group members with a password will be allowed to use <_:" @@ -2817,12 +3009,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 msgid "--administrators" msgstr "" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 #, fuzzy msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "" @@ -2830,33 +3022,33 @@ msgstr "" "replaceable>" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 msgid "Set the list of administrative users." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 msgid "--members" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 msgid "Set the list of group members." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 #, fuzzy msgid "and <_:filename-1/> files." msgstr "-a " #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 msgid "file." msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 msgid "" "This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> " "Thus you cannot change any NIS or LDAP group. This must be performed on the " @@ -2869,11 +3061,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 groupadd.8.xml.out:357 groupdel.8.xml.out:34 +#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 #: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:299 useradd.8.xml.out:893 -#: userdel.8.xml.out:328 usermod.8.xml.out:623 +#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 +#: userdel.8.xml.out:328 usermod.8.xml.out:640 msgid "groupdel" msgstr "groupdel" @@ -2883,11 +3075,11 @@ msgstr "groupdel" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 groupadd.8.xml.out:360 groupdel.8.xml.out:220 +#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 #: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 userdel.8.xml.out:331 usermod.8.xml.out:626 +#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 msgid "groupmod" msgstr "groupmod" @@ -2897,10 +3089,10 @@ msgstr "groupmod" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 grpck.8.xml.out:33 grpck.8.xml.out:40 +#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 #: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 #: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:318 +#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 #: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 msgid "grpck" msgstr "grpck" @@ -2910,7 +3102,7 @@ msgstr "grpck" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 grpck.8.xml.out:95 grpck.8.xml.out:287 +#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 #: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 #: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 #: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 @@ -2918,12 +3110,12 @@ msgid "gshadow" msgstr "gshadow" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 newgrp.1.xml.out:146 sg.1.xml.out:135 +#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 newgrp.1.xml.out:128 sg.1.xml.out:117 +#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -2969,8 +3161,8 @@ msgstr "" #: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 #: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 #: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:391 -#: useradd.8.xml.out:396 useradd.8.xml.out:557 useradd.8.xml.out:639 +#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 +#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 msgid "-g" msgstr "-g" @@ -2986,7 +3178,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:639 usermod.8.xml.out:174 +#: useradd.8.xml.out:659 usermod.8.xml.out:174 msgid "--gid" msgstr "" @@ -2995,8 +3187,8 @@ msgstr "" #. (itstool) path: para/option #: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 #: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "GID" @@ -3028,7 +3220,7 @@ msgid "GID_MAX" msgstr "GID_MAX GID_MIN" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:111 useradd.8.xml.out:541 +#: groupadd.8.xml.out:111 useradd.8.xml.out:543 #, fuzzy msgid "See also the <_:option-1/> option and the <_:option-2/> description." msgstr ", , " @@ -3036,31 +3228,31 @@ msgstr ", , " #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:125 groupadd.8.xml.out:131 groupadd.8.xml.out:134 -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:303 -#: useradd.8.xml.out:314 useradd.8.xml.out:317 useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 +#: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 +#: useradd.8.xml.out:322 #, fuzzy #| msgid "-" msgid "-K" msgstr "-" #. (itstool) path: term/option -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "--key" msgstr "" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "KEY" msgstr "KLUCZ" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "VALUE" msgstr "WARTOŚĆ" #. (itstool) path: varlistentry/term -#: groupadd.8.xml.out:124 useradd.8.xml.out:302 +#: groupadd.8.xml.out:124 useradd.8.xml.out:304 #, fuzzy msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" msgstr "" @@ -3075,14 +3267,14 @@ msgid "" msgstr "" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:134 useradd.8.xml.out:320 +#: groupadd.8.xml.out:134 useradd.8.xml.out:322 #, fuzzy #| msgid "10" msgid "100" msgstr "10" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:321 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:323 msgid "499" msgstr "" @@ -3099,7 +3291,7 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: term/replaceable #: groupadd.8.xml.out:138 groupadd.8.xml.out:333 groupdel.8.xml.out:192 -#: groupmod.8.xml.out:295 useradd.8.xml.out:853 userdel.8.xml.out:265 +#: groupmod.8.xml.out:295 useradd.8.xml.out:873 userdel.8.xml.out:265 msgid "10" msgstr "10" @@ -3111,7 +3303,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:405 +#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 #: usermod.8.xml.out:271 msgid "--non-unique" msgstr "" @@ -3131,13 +3323,13 @@ msgstr "" #: groupadd.8.xml.out:158 groupmems.8.xml.out:55 groupmems.8.xml.out:130 #: groupmod.8.xml.out:143 login.1.xml.out:80 login.1.xml.out:88 #: login.1.xml.out:95 login.1.xml.out:212 su.1.xml.out:207 -#: useradd.8.xml.out:425 usermod.8.xml.out:237 usermod.8.xml.out:290 +#: useradd.8.xml.out:427 usermod.8.xml.out:237 usermod.8.xml.out:290 #: usermod.8.xml.out:411 vipw.8.xml.out:102 msgid "-p" msgstr "-p" #. (itstool) path: term/option -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 #, fuzzy #| msgid "passwd" @@ -3145,7 +3337,7 @@ msgid "--password" msgstr "passwd" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "PASSWORD" msgstr "" @@ -3154,8 +3346,8 @@ msgstr "" #: groupadd.8.xml.out:163 groupmod.8.xml.out:148 gshadow.5.xml.out:62 #: gshadow.5.xml.out:68 passwd.5.xml.out:103 passwd.5.xml.out:109 #: passwd.5.xml.out:170 shadow.5.xml.out:88 shadow.5.xml.out:94 -#: useradd.8.xml.out:430 useradd.8.xml.out:887 usermod.8.xml.out:295 -#: usermod.8.xml.out:614 +#: useradd.8.xml.out:432 useradd.8.xml.out:907 usermod.8.xml.out:295 +#: usermod.8.xml.out:631 msgid "crypt" msgstr "" @@ -3165,11 +3357,11 @@ msgstr "" #: groupadd.8.xml.out:164 groupadd.8.xml.out:315 groupmod.8.xml.out:148 #: groupmod.8.xml.out:271 groups.1.xml.out:68 groups.1.xml.out:104 #: grpck.8.xml.out:255 gshadow.5.xml.out:63 gshadow.5.xml.out:69 -#: passwd.1.xml.out:443 passwd.5.xml.out:104 passwd.5.xml.out:110 +#: passwd.1.xml.out:465 passwd.5.xml.out:104 passwd.5.xml.out:110 #: passwd.5.xml.out:170 passwd.5.xml.out:176 pwck.8.xml.out:305 #: shadow.3.xml.out:34 shadow.3.xml.out:217 shadow.5.xml.out:89 -#: shadow.5.xml.out:95 useradd.8.xml.out:431 useradd.8.xml.out:829 -#: useradd.8.xml.out:887 usermod.8.xml.out:296 usermod.8.xml.out:614 +#: shadow.5.xml.out:95 useradd.8.xml.out:433 useradd.8.xml.out:849 +#: useradd.8.xml.out:907 usermod.8.xml.out:296 usermod.8.xml.out:631 msgid "3" msgstr "3" @@ -3189,7 +3381,7 @@ msgid "" msgstr "" #. (itstool) path: para/emphasis -#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:444 +#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 #: userdel.8.xml.out:93 usermod.8.xml.out:299 msgid "Note:" msgstr "" @@ -3202,14 +3394,14 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:448 +#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 #: usermod.8.xml.out:309 msgid "" "You should make sure the password respects the system's password policy." msgstr "" #. (itstool) path: term/option -#: groupadd.8.xml.out:185 newusers.8.xml.out:287 useradd.8.xml.out:456 +#: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 msgid "--system" msgstr "" @@ -3240,45 +3432,11 @@ msgid "" "option-5/>." msgstr "" -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -#, fuzzy -#| msgid "-" -msgid "-P" -msgstr "-" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "--prefix" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 groupadd.8.xml.out:219 groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 groupdel.8.xml.out:108 groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 groupmod.8.xml.out:183 useradd.8.xml.out:502 -#: useradd.8.xml.out:507 userdel.8.xml.out:136 userdel.8.xml.out:140 -#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 useradd.8.xml.out:505 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. 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." -msgstr "" - #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:397 -#: useradd.8.xml.out:549 useradd.8.xml.out:558 usermod.8.xml.out:238 +#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 +#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 #, fuzzy #| msgid "-" @@ -3300,7 +3458,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:386 useradd.8.xml.out:397 useradd.8.xml.out:558 +#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 #, fuzzy #| msgid "-" msgid "-N" @@ -3308,15 +3466,15 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:448 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:398 -#: useradd.8.xml.out:559 userdel.8.xml.out:86 userdel.8.xml.out:296 +#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 +#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 +#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 +#: useradd.8.xml.out:558 msgid "" "The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> " "options are not specified) is defined by the <_:option-4/> variable in <_:" @@ -3338,13 +3496,13 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:463 useradd.8.xml.out:831 +#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "nieprawidłowy argument opcji" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:449 pwck.8.xml.out:311 useradd.8.xml.out:835 +#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 msgid "4" msgstr "4" @@ -3356,7 +3514,7 @@ msgid "GID is already used (when called without <_:option-1/>)" msgstr "UID juz jest używany (i nie uzyto opcji )" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:847 +#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 msgid "9" msgstr "9" @@ -3368,7 +3526,7 @@ msgid "group name is already used" msgstr "nazwa grupy już jest w użyciu" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:855 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "nie można zaktualizować pliku z grupami" @@ -3380,11 +3538,11 @@ msgstr "nie można zaktualizować pliku z grupami" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:480 useradd.8.xml.out:913 +#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 #: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 #: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 #: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:643 +#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 msgid "userdel" msgstr "userdel" @@ -3395,11 +3553,11 @@ msgstr "userdel" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:490 passwd.1.xml.out:488 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:916 +#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 +#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 #: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 #: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:522 +#: usermod.8.xml.out:263 usermod.8.xml.out:539 msgid "usermod" msgstr "usermod" @@ -3425,8 +3583,8 @@ msgstr "" #: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 #: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 #: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:392 -#: useradd.8.xml.out:639 useradd.8.xml.out:648 usermod.8.xml.out:174 +#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 +#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 msgid "GROUP" msgstr "GRUPA" @@ -3472,13 +3630,13 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:461 -#: pwck.8.xml.out:323 useradd.8.xml.out:841 userdel.8.xml.out:253 +#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 +#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 msgid "6" msgstr "6" #. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:843 +#: groupdel.8.xml.out:182 useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "" @@ -3523,7 +3681,7 @@ msgstr "" #: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 #: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 #: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "groupmems" @@ -3660,7 +3818,7 @@ msgstr "" #| "\t$ groupmems -g groups -a gk4\n" #| " " msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " +"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " "groupmems -g groups -a gk4" msgstr "" "\n" @@ -3764,7 +3922,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:246 +#: groupmod.8.xml.out:121 passwd.1.xml.out:242 #, fuzzy #| msgid "-" msgid "-n" @@ -3869,7 +4027,7 @@ msgid "E_CLEANUP_SERVICE: can't setup cleanup service" msgstr "" #. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:859 userdel.8.xml.out:271 +#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 msgid "12" msgstr "12" @@ -4036,7 +4194,7 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:67 newusers.8.xml.out:75 +#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 msgid "file" msgstr "" @@ -4067,7 +4225,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:134 login.defs.5.xml.out:136 +#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "" @@ -4092,8 +4250,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 +#: passwd.1.xml.out:302 #, fuzzy #| msgid "-" msgid "-S" @@ -4306,7 +4464,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:324 pwconv.8.xml.out:48 +#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 #: pwconv.8.xml.out:166 pwconv.8.xml.out:208 msgid "grpconv" @@ -4320,7 +4478,7 @@ msgstr "grpconv" #. (itstool) path: varlistentry/term #: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 #: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "lastlog" @@ -4380,7 +4538,7 @@ msgstr "" "passwd." #. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:592 +#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 #, fuzzy #| msgid "-" @@ -4759,7 +4917,7 @@ msgstr "" #. (itstool) path: para/command #: limits.5.xml.out:122 login.1.xml.out:83 login.1.xml.out:91 #: login.1.xml.out:197 su.1.xml.out:70 su.1.xml.out:82 su.1.xml.out:95 -#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:775 +#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:795 msgid "username" msgstr "" @@ -5205,8 +5363,8 @@ msgstr "chsh" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:436 login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 newgrp.1.xml.out:136 passwd.5.xml.out:197 +#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 #: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 #: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 #: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 @@ -5363,12 +5521,12 @@ msgid "<_:citerefentry-1/>." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 msgid "" "The <_:filename-1/> file defines the site-specific configuration for the " "shadow password suite. This file is required. Absence of this file will not " @@ -5376,7 +5534,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "" "This file is a readable text file, each line of the file describing one " "configuration parameter. The lines consist of a configuration name and " @@ -5387,20 +5545,20 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 useradd.8.xml.out:242 useradd.8.xml.out:380 +#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 #: userdel.8.xml.out:87 userdel.8.xml.out:297 msgid "yes" msgstr "" #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 #, fuzzy #| msgid "0" msgid "0x" msgstr "0" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 msgid "" "Parameter values may be of four types: strings, booleans, numbers, and long " "numbers. A string is comprised of any printable characters. A boolean should " @@ -5413,32 +5571,32 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 pwconv.8.xml.out:146 useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 pwconv.8.xml.out:145 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 pwconv.8.xml.out:147 +#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "" #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 msgid "" "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " "account creation. Any changes to these settings won't affect existing " @@ -5446,12 +5604,12 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "" "The following cross references show which programs in the shadow password " "suite use which parameters." @@ -5461,53 +5619,67 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 login.defs.5.xml.out:423 login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 pwck.8.xml.out:75 pwck.8.xml.out:216 +#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 #: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 #: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 msgid "USE_TCB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "CHFN_AUTH" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 #, fuzzy msgid "LOGIN_STRING" msgstr "CHFN_AUTH CHFN_RESTRICT" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 login.defs.5.xml.out:264 login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 login.defs.5.xml.out:282 -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" +"phrase-2/> <_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 #, fuzzy msgid "CHSH_AUTH LOGIN_STRING" msgstr "CHFN_AUTH CHFN_RESTRICT" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 #, fuzzy msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "" @@ -5515,8 +5687,8 @@ msgstr "" "UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 login.defs.5.xml.out:307 login.defs.5.xml.out:313 -#: login.defs.5.xml.out:320 login.defs.5.xml.out:326 login.defs.5.xml.out:332 +#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 +#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "" @@ -5524,63 +5696,63 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 pwconv.8.xml.out:49 pwconv.8.xml.out:73 +#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 #: pwconv.8.xml.out:208 msgid "grpunconv" msgstr "grpunconv" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 msgid "FAILLOG_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 #, fuzzy #| msgid "FILE" msgid "FTMP_FILE" msgstr "FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "" "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " "<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " @@ -5590,43 +5762,45 @@ msgid "" msgstr "" #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 #, fuzzy #| msgid "newgrp" msgid "newgrp / sg" msgstr "newgrp" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 +#: login.defs.5.xml.out:395 #, fuzzy msgid "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " +"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" +"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " +"UMASK <_:phrase-3/>" msgstr "" "GID_MAX GID_MIN PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE UID_MAX UID_MIN " "UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 +#: login.defs.5.xml.out:417 msgid "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " +"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 #, fuzzy #| msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" @@ -5638,7 +5812,7 @@ msgstr "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 passwd.5.xml.out:188 pwconv.8.xml.out:39 +#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 #: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 #: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 @@ -5651,7 +5825,7 @@ msgstr "pwconv" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 passwd.5.xml.out:191 pwconv.8.xml.out:47 +#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 #: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 #: pwconv.8.xml.out:166 shadow.5.xml.out:280 @@ -5659,22 +5833,22 @@ msgid "pwunconv" msgstr "pwunconv" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " "<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" @@ -5682,29 +5856,23 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 passwd.5.xml.out:200 shadow.5.xml.out:286 +#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 #, fuzzy msgid "sulogin" msgstr "login" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +msgid "ENV_HZ ENV_TZ" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 #, fuzzy msgid "" "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " @@ -5717,19 +5885,19 @@ msgstr "" "UMASK" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 msgid "" "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" "phrase-1/>" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 msgid "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" msgstr "" @@ -5738,18 +5906,18 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 vipw.8.xml.out:35 vipw.8.xml.out:42 +#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 #: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 msgid "vipw" msgstr "vipw" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 pwconv.8.xml.out:193 suauth.5.xml.out:179 +#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 msgid "BUGS" msgstr "BŁĘDY" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 #, fuzzy #| msgid "" #| "group58." #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 #, fuzzy #| msgid "*name" msgid "pam" msgstr "*name" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." @@ -5888,12 +6056,12 @@ msgid "id" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "wsadowa aktualizacja i tworzenie nowych użytkowników" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 #, fuzzy #| msgid "" #| "The newusers command reads a file of user name and " @@ -5916,24 +6084,24 @@ msgstr "" "citerefentry>), z następującymi wyjątkami:" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 #, fuzzy #| msgid "*name" msgid "pw_name" msgstr "*name" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 msgid "" "It can be the name of a new user or the name of an existing user (or a user " "created before by <_:command-1/>). In case of an existing user, the user's " @@ -5941,12 +6109,12 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "pw_passwd" #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "" "This field will be encrypted and used as the new value of the encrypted " "password." @@ -5954,31 +6122,31 @@ msgstr "" "To pole zostanie zakodowane i użyte jako nowa wartość zakodowanego hasła." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 #, fuzzy #| msgid "pw_gid" msgid "pw_uid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 msgid "" "If the field is empty, a new (unused) UID will be defined automatically by " "<_:command-1/>." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 msgid "" "If this field contains the name of an existing user (or the name of a user " "created before by <_:command-1/>), the UID of the specified user will be " @@ -5986,24 +6154,24 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "" "If the UID of an existing user is changed, the files ownership of the user's " "file should be fixed manually." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 msgid "" "If this field contains the name of an existing group (or a group created " "before by <_:command-1/>), the GID of this group will be used as the primary " @@ -6011,7 +6179,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "" "If this field is a number, this number will be used as the primary group ID " "of the user. If no groups exist with this GID, a new group will be created " @@ -6019,7 +6187,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 msgid "" "If this field is empty, a new group will be created with the name of the " "user and a GID will be automatically defined by <_:command-1/> to be used as " @@ -6027,7 +6195,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 msgid "" "If this field contains the name of a group which does not exist (and was not " "created before by <_:command-1/>), a new group will be created with the " @@ -6036,32 +6204,32 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "pw_dir" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "" #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "" "If this field does not specify an existing directory, the specified " "directory is created, with ownership set to the user being created or " @@ -6074,7 +6242,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 msgid "" "If the home directory of an existing user is changed, <_:command-1/> does " "not move or copy the content of the old directory to the new location. This " @@ -6082,19 +6250,19 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:218 +#: newusers.8.xml.out:220 msgid "pw_shell" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:221 +#: newusers.8.xml.out:223 msgid "" "This field defines the shell of the user. No checks are performed on this " "field." msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:229 +#: newusers.8.xml.out:231 msgid "" "<_:command-1/> first tries to create or change all the specified users, and " "then write these changes to the user or group databases. If an error occurs " @@ -6103,7 +6271,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "" "During this first pass, users are created with a locked password (and " "passwords are not changed for the users which are not created). A second " @@ -6112,55 +6280,62 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "" "This command is intended to be used in a large system environment where many " "accounts are updated at a single time." msgstr "" #. (itstool) path: term/option -#: newusers.8.xml.out:257 pwck.8.xml.out:164 useradd.8.xml.out:108 +#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 #: usermod.8.xml.out:89 msgid "--badname" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 pwck.8.xml.out:167 useradd.8.xml.out:111 +#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 #: usermod.8.xml.out:92 msgid "Allow names that do not conform to standards." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "" +"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " +"support these methods." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 useradd.8.xml.out:461 msgid "Create a system account." msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:319 -#: useradd.8.xml.out:468 useradd.8.xml.out:538 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 +#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 msgid "UID_MIN" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:321 -#: useradd.8.xml.out:468 useradd.8.xml.out:543 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 +#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 msgid "UID_MAX" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 useradd.8.xml.out:462 +#: newusers.8.xml.out:295 useradd.8.xml.out:464 msgid "" "System users will be created with no aging information in <_:filename-1/>, " "and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> " @@ -6168,14 +6343,35 @@ msgid "" "(and their <_:option-7/> counterparts for the creation of groups)." msgstr "" +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default is 13." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default is 5000." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default is 5." +msgstr "" + #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "" "The input file must be protected since it contains unencrypted passwords." msgstr "" #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 #, fuzzy #| msgid "/etc/passwd" msgid "/etc/pam.d/newusers" @@ -6183,51 +6379,51 @@ msgstr "/etc/passwd" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 useradd.8.xml.out:222 useradd.8.xml.out:481 -#: useradd.8.xml.out:785 userdel.8.xml.out:215 usermod.8.xml.out:587 +#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 +#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subgid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 useradd.8.xml.out:787 userdel.8.xml.out:217 +#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 useradd.8.xml.out:222 useradd.8.xml.out:480 -#: useradd.8.xml.out:791 userdel.8.xml.out:221 usermod.8.xml.out:593 +#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 +#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subuid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 useradd.8.xml.out:793 userdel.8.xml.out:223 +#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 useradd.8.xml.out:906 userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 +#: usermod.8.xml.out:650 #, fuzzy #| msgid "/etc/suauth" msgid "subgid" msgstr "/etc/suauth" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 useradd.8.xml.out:909 userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 +#: usermod.8.xml.out:653 #, fuzzy #| msgid "/etc/suauth" msgid "subuid" msgstr "/etc/suauth" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 useradd.8.xml.out:904 userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "" @@ -6270,12 +6466,12 @@ msgid "The <_:command-1/> command appeared in BSD 4.4." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "zmiana hasła użytkownika" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 msgid "" "The <_:command-1/> command changes passwords for user accounts. A normal " "user may only change the password for their own account, while the superuser " @@ -6284,12 +6480,12 @@ msgid "" msgstr "" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 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 " @@ -6298,7 +6494,7 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 msgid "" "After the password has been entered, password aging information is checked " "to see if the user is permitted to change the password at this time. If not, " @@ -6306,7 +6502,7 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "" "The user is then prompted twice for a replacement password. The second entry " "is compared against the first and both are required to match in order for " @@ -6314,48 +6510,25 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 -msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 +#: passwd.1.xml.out:98 msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. <_:command-1/> will reject any password which is not suitably " -"complex." +"Then, the password is tested for complexity. <_:command-1/> will reject any " +"password which is not suitably complex. Care must be taken not to include " +"the system default erase or kill characters." msgstr "" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 msgid "" "The security of a password depends upon the strength of the encryption " "algorithm and the size of the key space. The legacy <_:emphasis-1/> System " @@ -6365,7 +6538,7 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "" "Compromises in password security normally result from careless password " "selection or handling. For this reason, you should not select a password " @@ -6375,42 +6548,54 @@ msgid "" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "" +"As a general guideline, passwords should be long and random. It's fine to " +"use simple character sets, such as passwords consisting only of lowercase " +"letters, if that helps memorizing longer passwords. For a password " +"consisting only of lowercase English letters randomly chosen, and a length " +"of 32, there are 26^32 (approximately 2^150) different possible " +"combinations. Being an exponential equation, it's apparent that the exponent " +"(the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 msgid "" "You can find advice on how to choose a strong password on http://en." "wikipedia.org/wiki/Password_strength" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 msgid "" "This option can be used only with <_:option-1/> and causes show status for " "all users." msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "" "Delete a user's password (make it empty). This is a quick way to disable a " "password for an account. It will set the named account passwordless." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 #, fuzzy #| msgid "expiry" msgid "--expire" msgstr "expiry" #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 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 "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 msgid "" "This option is used to disable an account after the password has been " "expired for a number of days. After a user account has had an expired " @@ -6420,19 +6605,19 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 useradd.8.xml.out:278 useradd.8.xml.out:356 +#: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 #, fuzzy #| msgid "-" msgid "-k" msgstr "-" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 msgid "" "Indicate password change should be performed only for expired authentication " "tokens (passwords). The user wishes to keep their non-expired tokens as " @@ -6440,12 +6625,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:222 usermod.8.xml.out:231 +#: passwd.1.xml.out:218 usermod.8.xml.out:231 msgid "--lock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 msgid "" "Lock the password of the named account. This option disables a password by " "changing it to a value which matches no possible encrypted value (it adds a " @@ -6453,12 +6638,12 @@ msgid "" msgstr "" #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 msgid "" "Note that this does not disable the account. The user may still be able to " "login using another authentication token (e.g. an SSH key). To disable the " @@ -6467,48 +6652,48 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "-q" msgstr "-q" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "--quiet" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 vipw.8.xml.out:110 +#: passwd.1.xml.out:257 vipw.8.xml.out:110 msgid "Quiet mode." msgstr "Cichy tryb pracy." #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: passwd.1.xml.out:268 passwd.1.xml.out:272 +#: passwd.1.xml.out:264 passwd.1.xml.out:268 msgid "REPOSITORY" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 msgid "change password in <_:replaceable-1/> repository" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 msgid "" "Display account status information. The status information consists of 7 " "fields. The first field is the user's login name. The second field indicates " @@ -6520,12 +6705,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:309 usermod.8.xml.out:405 +#: passwd.1.xml.out:320 usermod.8.xml.out:405 msgid "--unlock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 msgid "" "Unlock the password of the named account. This option re-enables a password " "by changing the password back to its previous value (to the value before " @@ -6533,7 +6718,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 #, fuzzy #| msgid "" #| "Set the number of days of warning before a password change is required. " @@ -6550,71 +6735,97 @@ msgstr "" "terminie zmiany hasła." #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 #, fuzzy #| msgid "-" msgid "-x" msgstr "-" #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 msgid "" "Set the maximum number of days a password remains valid. After <_:" "replaceable-1/>, the password is required to be changed." msgstr "" +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "" +"This option is used to indicate that passwd should read the new password " +"from standard input, which can be a pipe." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 msgid "" "Password complexity checking may vary from site to site. The user is urged " "to select a password as complex as he or she feels comfortable with." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "" "Users may not be able to change their password on a system if NIS is enabled " "and they are not logged into the NIS server." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 msgid "" "<_:command-1/> uses PAM to authenticate users and to change their passwords." msgstr "" #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 #, fuzzy #| msgid "/etc/passwd" msgid "/etc/pam.d/passwd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "nieprawidłowa kombinacja opcji" #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 msgid "unexpected failure, <_:filename-1/> file missing" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 msgid "<_:filename-1/> file busy, try again" msgstr "" +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +#, fuzzy +#| msgid "passwd" +msgid "makepasswd" +msgstr "passwd" + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:494 +msgid "" +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 +#: passwd.1.xml.out:517 msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." +"The following web page comically (yet correctly) compares the strength of " +"two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -8107,6 +8318,11 @@ msgstr "" msgid "$HZ" msgstr "" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -8399,7 +8615,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:583 useradd.8.xml.out:585 +#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 msgid "-D" msgstr "-D" @@ -8421,14 +8637,14 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:592 +#: useradd.8.xml.out:118 useradd.8.xml.out:612 msgid "--base-dir" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:592 useradd.8.xml.out:598 +#: useradd.8.xml.out:612 useradd.8.xml.out:618 #, fuzzy #| msgid "MAIL_DIR" msgid "BASE_DIR" @@ -8452,18 +8668,18 @@ msgid "" msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:603 +#: useradd.8.xml.out:131 useradd.8.xml.out:623 msgid "HOME" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename #: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:293 useradd.8.xml.out:343 -#: useradd.8.xml.out:393 useradd.8.xml.out:523 useradd.8.xml.out:604 -#: useradd.8.xml.out:616 useradd.8.xml.out:633 useradd.8.xml.out:649 -#: useradd.8.xml.out:663 useradd.8.xml.out:677 useradd.8.xml.out:767 -#: usermod.8.xml.out:419 +#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 +#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 +#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 +#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 +#: useradd.8.xml.out:787 usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "/etc/default/useradd" @@ -8543,7 +8759,7 @@ msgstr "" "jest w formacie MM/DD/RR." #. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:615 usermod.8.xml.out:418 +#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 msgid "EXPIRE" msgstr "" @@ -8574,7 +8790,7 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:482 +#: useradd.8.xml.out:218 useradd.8.xml.out:484 #, fuzzy #| msgid "-" msgid "-F" @@ -8674,6 +8890,13 @@ msgid "" "emphasis-5/>]]]" msgstr "" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +#, fuzzy +#| msgid "GROUP" +msgid "GROUPS" +msgstr "GRUPA" + #. (itstool) path: listitem/para #: useradd.8.xml.out:260 #, fuzzy @@ -8682,7 +8905,9 @@ msgid "" "group is separated from the next by a comma, with no intervening whitespace. " "The groups are subject to the same restrictions as the group given with the " "<_:option-1/> option. The default is for the user to belong only to the " -"initial group." +"initial group. In addition to passing in the -G flag, you can add the option " +"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " +"to those supplementary groups." msgstr "" "Lista dodatkowych grup, do których również należy użytkownik. Każda grupa " "oddzielona jest od następnej przecinkiem, bez wtrąconej spacji. Do grup " @@ -8691,19 +8916,19 @@ msgstr "" "której nie podano na liście, to zostanie z niej usunięty." #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 #, fuzzy #| msgid "MAIL_DIR" msgid "SKEL_DIR" msgstr "MAIL_DIR" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 msgid "" "The skeleton directory, which contains files and directories to be copied in " "the user's home directory, when the home directory is created by <_:" @@ -8712,12 +8937,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 useradd.8.xml.out:350 +#: useradd.8.xml.out:290 useradd.8.xml.out:352 msgid "--create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 #, fuzzy #| msgid ", " msgid "" @@ -8726,43 +8951,43 @@ msgid "" msgstr ", " #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 #, fuzzy #| msgid "/etc/skel/" msgid "/etc/skel" msgstr "/etc/skel/" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 msgid "" "If this option is not set, the skeleton directory is defined by the <_:" "option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "" "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" "option-4/>, <_:option-5/> and others)." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "" "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " "when creating an account to turn off password aging. Multiple <_:option-4/> " @@ -8771,29 +8996,29 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 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 "" #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "" "If this option is not specified, <_:command-1/> will also consult the " "variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " @@ -8801,7 +9026,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 msgid "" "Create the user's home directory if it does not exist. The files and " "directories contained in the skeleton directory (which can be defined with " @@ -8809,19 +9034,19 @@ msgid "" msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:361 useradd.8.xml.out:379 useradd.8.xml.out:475 +#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 msgid "" "By default, if this option is not specified and <_:option-1/> is not " "enabled, no home directories are created." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "" "The directory where the user's home directory is created must exist and have " "proper SELinux context and permissions. Otherwise the user's home directory " @@ -8829,24 +9054,24 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 msgid "" "Do not create the user's home directory, even if the system wide setting " "from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 msgid "" "Do not create a group with the same name as the user, but add the user to " "the group specified by the <_:option-1/> option or by the <_:option-2/> " @@ -8854,12 +9079,12 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 msgid "allows the creation of an account with an already existing UID." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 usermod.8.xml.out:277 +#: useradd.8.xml.out:414 usermod.8.xml.out:277 msgid "" "This option is only valid in combination with the <_:option-1/> option. As a " "user identity serves as key to map between users on one hand and " @@ -8869,7 +9094,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "" "defines an initial password for the account. PASSWORD is expected to be " "encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " @@ -8877,7 +9102,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "" "Without this option, the new account will be locked and with no password " "defined, i.e. a single exclamation mark in the respective field of <_:" @@ -8886,14 +9111,14 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 msgid "" "<_:emphasis-1/>Avoid this option on the command line because the password " "(or encrypted password) will be visible by users listing the processes." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 msgid "" "Note that <_:command-1/> will not create a home directory for such a user, " "regardless of the default setting in <_:filename-2/> (<_:option-3/>). You " @@ -8902,7 +9127,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 msgid "" "Note that this option will not update <_:filename-1/> and <_:filename-2/>. " "You have to specify the <_:option-3/> options if you want to update the " @@ -8910,7 +9135,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 msgid "" "sets the path to the user's login shell. Without this option, the system " "will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " @@ -8919,19 +9144,19 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "--uid" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 #, fuzzy #| msgid "GID" msgid "UID" msgstr "GID" #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 msgid "" "The numerical value of the user's ID. This value must be unique, unless the " "<_:option-1/> option is used. The value must be non-negative. The default is " @@ -8940,54 +9165,76 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "" "Create a group with the same name as the user, and add the user to this " "group." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:525 #, fuzzy #| msgid "-" msgid "-Z" msgstr "-" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:594 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:526 msgid "--selinux-user" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 usermod.8.xml.out:501 +#: useradd.8.xml.out:568 usermod.8.xml.out:501 msgid "SEUSER" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 useradd.8.xml.out:589 usermod.8.xml.out:521 msgid "semanage" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 +#: useradd.8.xml.out:571 msgid "" -"defines the SELinux user for the new account. Without this option, a SELinux " +"defines the SELinux user for the new account. Without this option, SELinux " "uses the default user. Note that the shadow system doesn't store the selinux-" "user, it uses <_:citerefentry-1/> for that." msgstr "" +#. (itstool) path: term/option +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "--selinux-range" +msgstr "" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "SERANGE" +msgstr "" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +msgid "" +"defines the SELinux MLS range for the new account. Without this option, " +"SELinux uses the default range. Note that the shadow system doesn't store " +"the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "" #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 msgid "" "When invoked with only the <_:option-1/> option, <_:command-2/> will display " "the current default values. When invoked with <_:option-3/> plus other " @@ -8996,7 +9243,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 msgid "" "sets the path prefix for a new user's home directory. The user's name will " "be affixed to the end of <_:replaceable-1/> to form the new user's home " @@ -9005,18 +9252,18 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 msgid "This option sets the <_:option-1/> variable in <_:filename-2/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 msgid "sets the date on which newly created user accounts are disabled." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -9024,7 +9271,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "" "sets the default primary group for newly created users, accepting group " "names or a numerical group ID. The named group must exist, and the GID must " @@ -9032,23 +9279,23 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "UWAGI" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 msgid "" "The system administrator is responsible for placing the default user files " "in the <_:filename-1/> directory (or any other skeleton directory specified " @@ -9056,26 +9303,26 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " "corresponding server." msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 msgid "" "Similarly, if the username already exists in an external user database such " "as NIS or LDAP, <_:command-1/> will deny the user account creation request." msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -9086,60 +9333,60 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #, fuzzy #| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/default/useradd" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 #, fuzzy #| msgid "OPTIONS" msgid "ACTION" msgstr "OPCJE" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-pre.d" msgstr "useradd" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-post.d" msgstr "useradd" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -9149,48 +9396,48 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "nie można zaktualizować pliku z hasłami" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 #, fuzzy #| msgid "UID already in use (and no )" msgid "UID already in use (and no <_:option-1/>)" msgstr "UID juz jest używany (i nie uzyto opcji )" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "group name already in use" msgid "username or group name already in use" msgstr "nazwa grupy już jest w użyciu" #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 #, fuzzy #| msgid "1" msgid "14" msgstr "1" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -9886,9 +10133,16 @@ msgid "" "shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 +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-1/> " @@ -9897,69 +10151,69 @@ msgid "" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 msgid "" "You must change the owner of any <_:command-1/> files or <_:command-2/> jobs " "manually." msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 #, fuzzy #| msgid "Group account information." msgid "Group account information" msgstr "Informacje o grupach użytkowników." #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 +#: usermod.8.xml.out:582 #, fuzzy #| msgid "Secure group account information." -msgid "Secure group account informatio." +msgid "Secure group account information" msgstr "Informacje chronione o grupach użytkowników." #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 #, fuzzy #| msgid "Shadow password suite configuration." msgid "Shadow password suite configuration" msgstr "Konfiguracja pakietu shadow." #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 #, fuzzy #| msgid "User account information." msgid "User account information" msgstr "Informacja o kontach użytkowników." #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 #, fuzzy #| msgid "Secure user account information." msgid "Secure user account information" msgstr "Informacje chronione o użytkownikach." #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -10007,7 +10261,7 @@ msgstr "vipw" #| "envar>, and finally the default editor, vi1." msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -12609,9 +12863,6 @@ msgstr "" #~ "newgrp5." -#~ msgid "-K =" -#~ msgstr "-K =" - #, fuzzy #~ msgid " user,..." #~ msgstr "" diff --git a/man/po/ru.po b/man/po/ru.po index c9bb37e..02417b0 100644 --- a/man/po/ru.po +++ b/man/po/ru.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: 1:4.0.18.2-1\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-03-14 18:23-0500\n" "PO-Revision-Date: 2013-08-23 01:39+0200\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -17,12 +17,12 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 #: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 #: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 #: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 #: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 #: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 #: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 @@ -30,12 +30,12 @@ msgid "Julianne Frances" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 #: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 #: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 #: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 #: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 #: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 #: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 @@ -48,14 +48,14 @@ msgid "Creation, 1990" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 #: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 #: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 #: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 #: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 #: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 @@ -64,14 +64,14 @@ msgid "Thomas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 #: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 #: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 #: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 #: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 #: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 @@ -80,14 +80,14 @@ msgid "Kłoczko" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 #: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 #: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 #: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 #: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 #: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 @@ -96,14 +96,14 @@ msgid "kloczek@pld.org.pl" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 #: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 #: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 -#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 +#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 #: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 #: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 #: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 @@ -112,15 +112,15 @@ msgid "shadow-utils maintainer, 2000 - 2007" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 #: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 #: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 -#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 +#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 #: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 #: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 #: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 @@ -129,15 +129,15 @@ msgid "Nicolas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 #: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 #: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 -#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 +#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 #: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 #: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 #: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 @@ -146,15 +146,15 @@ msgid "François" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 #: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 #: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 -#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 +#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 #: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 #: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 #: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 @@ -163,15 +163,15 @@ msgid "nicolas.francois@centraliens.net" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 #: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 #: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 -#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 +#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 #: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 #: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 #: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 @@ -187,9 +187,9 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle #: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:216 chage.1.xml.out:226 -#: chage.1.xml.out:236 chage.1.xml.out:241 chage.1.xml.out:285 -#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 +#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 +#: login.defs.5.xml.out:237 shadow.5.xml.out:262 msgid "chage" msgstr "chage" @@ -198,11 +198,11 @@ msgstr "chage" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:294 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:217 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:37 chsh.1.xml.out:171 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 groupadd.8.xml.out:345 groupadd.8.xml.out:348 +#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 +#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 #: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 #: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 @@ -210,46 +210,46 @@ msgstr "chage" #: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 #: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 #: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:456 -#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:431 -#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 -#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 -#: pwck.8.xml.out:293 shadow.5.xml.out:262 shadow.5.xml.out:265 -#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 -#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 -#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 -#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:817 -#: useradd.8.xml.out:878 useradd.8.xml.out:881 useradd.8.xml.out:884 -#: userdel.8.xml.out:241 userdel.8.xml.out:310 userdel.8.xml.out:313 -#: userdel.8.xml.out:316 usermod.8.xml.out:105 usermod.8.xml.out:244 -#: usermod.8.xml.out:605 usermod.8.xml.out:608 usermod.8.xml.out:611 -#: vipw.8.xml.out:78 vipw.8.xml.out:205 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 +#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 +#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 +#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 +#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 +#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 +#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 +#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 +#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 +#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 +#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 +#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 +#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 +#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 msgid "1" msgstr "1" # type: Content of: #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 msgid "User Commands" msgstr "Пользовательские команды" # type: Content of: #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 #: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 #: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 -#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 +#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 #: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 #: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 #: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 @@ -258,20 +258,20 @@ msgid "shadow-utils" msgstr "shadow-utils" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 #: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 #: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 -#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 +#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 #: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 #: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 #: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 #: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" # type: Content of: @@ -283,10 +283,10 @@ msgstr "изменяет информацию об устаревании пар # type: Content of: #. (itstool) path: arg/replaceable #. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 #: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:64 passwd.1.xml.out:55 +#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 #: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 #: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 #: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 @@ -300,7 +300,7 @@ msgstr "параметры" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis #: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 #: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 #: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 msgid "LOGIN" @@ -308,15 +308,15 @@ msgstr "УЧЁТНАЯ_ЗАПИСЬ" # type: Content of: #. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 #: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 #: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 -#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 +#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 #: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 #: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 #: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 @@ -346,12 +346,12 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:51 +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 #: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:250 passwd.1.xml.out:150 +#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 #: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 #: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 #: vipw.8.xml.out:83 @@ -360,12 +360,12 @@ msgstr "ПАРАМЕТРЫ" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:81 +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 -#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 +#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 #: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 #, fuzzy #| msgid "The options which apply to the <command>su</command> command are:" @@ -375,9 +375,9 @@ msgstr "Параметры команды <command>su</command>:" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:599 usermod.8.xml.out:112 usermod.8.xml.out:260 +#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 +#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 +#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 msgid "-d" msgstr "-d" @@ -395,34 +395,34 @@ msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 #: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 -#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 chsh.1.xml.out:83 chsh.1.xml.out:96 -#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 -#: faillog.8.xml.out:169 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 groupadd.8.xml.out:101 groupadd.8.xml.out:157 -#: groupadd.8.xml.out:200 groupadd.8.xml.out:213 groupdel.8.xml.out:88 -#: groupdel.8.xml.out:101 groupmems.8.xml.out:83 groupmems.8.xml.out:94 -#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 -#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 -#: groupmod.8.xml.out:163 groupmod.8.xml.out:176 grpck.8.xml.out:148 -#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 -#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:321 -#: passwd.1.xml.out:334 pwck.8.xml.out:196 pwconv.8.xml.out:177 -#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 -#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 -#: useradd.8.xml.out:195 useradd.8.xml.out:229 useradd.8.xml.out:277 -#: useradd.8.xml.out:424 useradd.8.xml.out:488 useradd.8.xml.out:501 -#: useradd.8.xml.out:516 useradd.8.xml.out:530 useradd.8.xml.out:565 -#: useradd.8.xml.out:591 useradd.8.xml.out:609 useradd.8.xml.out:621 -#: useradd.8.xml.out:638 useradd.8.xml.out:654 userdel.8.xml.out:122 -#: userdel.8.xml.out:135 usermod.8.xml.out:98 usermod.8.xml.out:111 -#: usermod.8.xml.out:128 usermod.8.xml.out:151 usermod.8.xml.out:173 -#: usermod.8.xml.out:216 usermod.8.xml.out:289 usermod.8.xml.out:327 -#: usermod.8.xml.out:340 usermod.8.xml.out:356 usermod.8.xml.out:368 -#: usermod.8.xml.out:500 vipw.8.xml.out:114 +#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 +#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 +#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 +#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 +#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 +#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 +#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 +#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 +#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 +#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 +#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 +#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 +#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 +#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 +#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 +#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 +#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 +#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 +#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 +#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 +#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 +#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 +#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 +#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 +#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 +#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" msgstr "" @@ -430,10 +430,10 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:288 groupadd.8.xml.out:303 +#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 passwd.1.xml.out:425 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:811 userdel.8.xml.out:235 +#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 +#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 msgid "0" msgstr "0" @@ -464,7 +464,7 @@ msgid "-E" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "" @@ -472,7 +472,7 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:610 usermod.8.xml.out:129 usermod.8.xml.out:243 +#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 #: usermod.8.xml.out:416 msgid "EXPIRE_DATE" msgstr "" @@ -509,7 +509,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:344 useradd.8.xml.out:315 +#: passwd.1.xml.out:355 useradd.8.xml.out:317 #, fuzzy #| msgid "1" msgid "-1" @@ -533,60 +533,60 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 #: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:271 +#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 #: userdel.8.xml.out:99 vipw.8.xml.out:96 msgid "-h" msgstr "-h" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 -#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:271 userdel.8.xml.out:99 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 +#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 -#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 #: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 groupadd.8.xml.out:87 groupadd.8.xml.out:118 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 #: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 #: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 #: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 #: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 #: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 -#: newusers.8.xml.out:320 passwd.1.xml.out:156 passwd.1.xml.out:167 -#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 -#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:290 -#: passwd.1.xml.out:308 pwck.8.xml.out:173 pwck.8.xml.out:179 -#: pwck.8.xml.out:188 pwck.8.xml.out:209 pwconv.8.xml.out:171 -#: useradd.8.xml.out:168 useradd.8.xml.out:217 useradd.8.xml.out:271 -#: useradd.8.xml.out:330 useradd.8.xml.out:349 useradd.8.xml.out:372 -#: useradd.8.xml.out:385 useradd.8.xml.out:404 useradd.8.xml.out:455 -#: useradd.8.xml.out:548 userdel.8.xml.out:75 userdel.8.xml.out:99 -#: userdel.8.xml.out:105 userdel.8.xml.out:152 usermod.8.xml.out:77 -#: usermod.8.xml.out:88 usermod.8.xml.out:230 usermod.8.xml.out:249 -#: usermod.8.xml.out:270 usermod.8.xml.out:316 usermod.8.xml.out:404 -#: vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 -#: vipw.8.xml.out:127 vipw.8.xml.out:133 +#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 +#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 +#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 +#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 +#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 +#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 +#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 +#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 +#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 +#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 +#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 +#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 +#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 +#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 +#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 #, fuzzy #| msgid "<option>-a</option>, <option>--all</option>" msgid "<_:option-1/>, <_:option-2/>" @@ -594,19 +594,19 @@ msgstr "<option>-a</option>, <option>--all</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:120 +#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 -#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 +#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." msgstr "Показать краткую справку и закончить работу." # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:197 +#: chage.1.xml.out:121 passwd.1.xml.out:193 #, fuzzy #| msgid "-" msgid "-i" @@ -631,8 +631,8 @@ msgid "-I" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 usermod.8.xml.out:152 +#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 +#: useradd.8.xml.out:642 usermod.8.xml.out:152 msgid "--inactive" msgstr "" @@ -640,8 +640,8 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/option #: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:622 useradd.8.xml.out:632 +#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 +#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "" @@ -685,10 +685,10 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:242 faillog.8.xml.out:88 +#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 #: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 -#: passwd.1.xml.out:316 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:330 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 +#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "-l" @@ -707,11 +707,11 @@ msgstr "Показать информацию об устаревании учё # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:287 useradd.8.xml.out:350 useradd.8.xml.out:476 +#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 #, fuzzy #| msgid "-" @@ -719,20 +719,20 @@ msgid "-m" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:246 +#: chage.1.xml.out:157 passwd.1.xml.out:242 msgid "--mindays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:249 +#: chage.1.xml.out:160 passwd.1.xml.out:245 #, fuzzy #| msgid "" #| "Set the minimum number of days between password changes to " @@ -750,27 +750,27 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 useradd.8.xml.out:162 useradd.8.xml.out:373 +#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 msgid "-M" msgstr "-M" #. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:335 +#: chage.1.xml.out:169 passwd.1.xml.out:346 msgid "--maxdays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:335 passwd.1.xml.out:340 passwd.1.xml.out:345 +#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: para/option #. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:203 usermod.8.xml.out:481 +#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 #, fuzzy #| msgid "-" msgid "-W" @@ -802,7 +802,7 @@ msgstr "" "активирует выдачу предупреждения о смене пароля пользователя заранее." #. (itstool) path: listitem/para -#: chage.1.xml.out:181 passwd.1.xml.out:343 +#: chage.1.xml.out:181 passwd.1.xml.out:354 #, fuzzy #| msgid "" #| "Passing the number <emphasis remap=\"I\">-1</emphasis> as " @@ -817,24 +817,24 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:189 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:191 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 #, fuzzy msgid "-R" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:158 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:160 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "--root" msgstr "" @@ -843,22 +843,22 @@ msgstr "" #. (itstool) path: para/replaceable #: chage.1.xml.out:190 chage.1.xml.out:194 chage.1.xml.out:196 #: chfn.1.xml.out:130 chfn.1.xml.out:134 chfn.1.xml.out:136 -#: chgpasswd.8.xml.out:123 chgpasswd.8.xml.out:127 chgpasswd.8.xml.out:129 -#: chpasswd.8.xml.out:165 chpasswd.8.xml.out:169 chpasswd.8.xml.out:171 +#: chgpasswd.8.xml.out:129 chgpasswd.8.xml.out:133 chgpasswd.8.xml.out:135 +#: chpasswd.8.xml.out:171 chpasswd.8.xml.out:175 chpasswd.8.xml.out:177 #: chsh.1.xml.out:84 chsh.1.xml.out:88 chsh.1.xml.out:90 faillog.8.xml.out:157 -#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:158 -#: gpasswd.1.xml.out:162 gpasswd.1.xml.out:164 groupadd.8.xml.out:201 +#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:160 +#: gpasswd.1.xml.out:164 gpasswd.1.xml.out:166 groupadd.8.xml.out:201 #: groupadd.8.xml.out:205 groupadd.8.xml.out:207 groupdel.8.xml.out:89 #: groupdel.8.xml.out:93 groupdel.8.xml.out:95 groupmems.8.xml.out:142 #: groupmems.8.xml.out:146 groupmems.8.xml.out:148 groupmod.8.xml.out:164 #: groupmod.8.xml.out:168 groupmod.8.xml.out:170 grpck.8.xml.out:149 #: grpck.8.xml.out:153 grpck.8.xml.out:155 lastlog.8.xml.out:104 -#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:306 -#: newusers.8.xml.out:310 newusers.8.xml.out:312 passwd.1.xml.out:278 -#: passwd.1.xml.out:282 passwd.1.xml.out:284 pwck.8.xml.out:197 +#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:308 +#: newusers.8.xml.out:312 newusers.8.xml.out:314 passwd.1.xml.out:274 +#: passwd.1.xml.out:278 passwd.1.xml.out:280 pwck.8.xml.out:197 #: pwck.8.xml.out:201 pwck.8.xml.out:203 pwconv.8.xml.out:178 -#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:489 -#: useradd.8.xml.out:493 useradd.8.xml.out:495 userdel.8.xml.out:123 +#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:491 +#: useradd.8.xml.out:495 useradd.8.xml.out:497 userdel.8.xml.out:123 #: userdel.8.xml.out:127 userdel.8.xml.out:129 usermod.8.xml.out:328 #: usermod.8.xml.out:332 usermod.8.xml.out:334 vipw.8.xml.out:115 #: vipw.8.xml.out:119 vipw.8.xml.out:121 @@ -866,12 +866,12 @@ msgid "CHROOT_DIR" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:126 -#: chpasswd.8.xml.out:168 chsh.1.xml.out:87 faillog.8.xml.out:160 -#: gpasswd.1.xml.out:161 groupadd.8.xml.out:204 groupdel.8.xml.out:92 +#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:132 +#: chpasswd.8.xml.out:174 chsh.1.xml.out:87 faillog.8.xml.out:160 +#: gpasswd.1.xml.out:163 groupadd.8.xml.out:204 groupdel.8.xml.out:92 #: groupmems.8.xml.out:145 groupmod.8.xml.out:167 grpck.8.xml.out:152 -#: lastlog.8.xml.out:107 newusers.8.xml.out:309 passwd.1.xml.out:281 -#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:492 +#: lastlog.8.xml.out:107 newusers.8.xml.out:311 passwd.1.xml.out:277 +#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:494 #: userdel.8.xml.out:126 usermod.8.xml.out:331 vipw.8.xml.out:118 #, fuzzy #| msgid "" @@ -887,21 +887,61 @@ msgstr "" "использовать файлы настройки из каталога <replaceable>КАТ_CHROOT</" "replaceable>." +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> +#. (itstool) path: term/option +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +#, fuzzy +#| msgid "-" +msgid "-P" +msgstr "-" + #. (itstool) path: term/option -#: chage.1.xml.out:203 passwd.1.xml.out:322 +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "--prefix" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:203 chage.1.xml.out:208 chpasswd.8.xml.out:184 +#: chpasswd.8.xml.out:189 groupadd.8.xml.out:214 groupadd.8.xml.out:219 +#: groupdel.8.xml.out:102 groupdel.8.xml.out:106 groupdel.8.xml.out:108 +#: groupmod.8.xml.out:177 groupmod.8.xml.out:181 groupmod.8.xml.out:183 +#: passwd.1.xml.out:287 passwd.1.xml.out:292 useradd.8.xml.out:504 +#: useradd.8.xml.out:509 userdel.8.xml.out:136 userdel.8.xml.out:140 +#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 +msgid "PREFIX_DIR" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:206 chpasswd.8.xml.out:187 groupadd.8.xml.out:217 +#: passwd.1.xml.out:290 useradd.8.xml.out:507 +msgid "" +"Apply changes to configuration files under the root filesystem found under " +"the directory <_:replaceable-1/>. 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." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:218 passwd.1.xml.out:333 msgid "--warndays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:203 chage.1.xml.out:208 passwd.1.xml.out:322 -#: passwd.1.xml.out:327 +#: chage.1.xml.out:218 chage.1.xml.out:223 passwd.1.xml.out:333 +#: passwd.1.xml.out:338 msgid "WARN_DAYS" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:206 +#: chage.1.xml.out:221 #, fuzzy #| msgid "" #| "Set the number of days of warning before a password change is required. " @@ -919,13 +959,13 @@ msgstr "" "устаревании пароля, перед тем как это случится." #. (itstool) path: para/emphasis -#: chage.1.xml.out:220 chfn.1.xml.out:163 chsh.1.xml.out:112 +#: chage.1.xml.out:235 chfn.1.xml.out:163 chsh.1.xml.out:112 msgid "[ ]" msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chage.1.xml.out:215 +#: chage.1.xml.out:230 #, fuzzy #| msgid "" #| "If none of the options are selected, <command>chage</command> operates in " @@ -948,14 +988,14 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: chage.1.xml.out:224 chsh.1.xml.out:117 groups.1.xml.out:65 +#: chage.1.xml.out:239 chsh.1.xml.out:117 groups.1.xml.out:65 #: lastlog.8.xml.out:170 msgid "NOTE" msgstr "ЗАМЕЧАНИЕ" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chage.1.xml.out:225 +#: chage.1.xml.out:240 #, fuzzy #| msgid "" #| "The <command>chage</command> program requires a shadow password file to " @@ -966,7 +1006,7 @@ msgstr "" "Программа <command>chage</command> требует наличия файла теневых паролей." #. (itstool) path: refsect1/para -#: chage.1.xml.out:229 +#: chage.1.xml.out:244 msgid "" "The chage program will report only the information from the shadow password " "file. This implies that configuration from other sources (e.g. LDAP or empty " @@ -981,7 +1021,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: chage.1.xml.out:238 grpck.8.xml.out:294 login.defs.5.xml.out:410 +#: chage.1.xml.out:253 grpck.8.xml.out:294 login.defs.5.xml.out:429 #: passwd.5.xml.out:185 pwck.8.xml.out:40 pwck.8.xml.out:47 pwck.8.xml.out:53 #: pwck.8.xml.out:71 pwck.8.xml.out:147 pwck.8.xml.out:159 pwck.8.xml.out:191 #: pwck.8.xml.out:223 pwck.8.xml.out:284 pwconv.8.xml.out:197 @@ -990,7 +1030,7 @@ msgid "pwck" msgstr "pwck" #. (itstool) path: refsect1/para -#: chage.1.xml.out:235 +#: chage.1.xml.out:250 msgid "" "The <_:command-1/> program will also not report any inconsistency between " "the shadow and passwd files (e.g. missing x in the passwd file). The <_:" @@ -999,7 +1039,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chage.1.xml.out:241 +#: chage.1.xml.out:256 #, fuzzy #| msgid "" #| "The <command>chage</command> command is restricted to the root user, " @@ -1017,53 +1057,55 @@ msgstr "" "устаревания своего пароля." #. (itstool) path: refsect1/title -#: chage.1.xml.out:249 chfn.1.xml.out:170 chgpasswd.8.xml.out:175 -#: chpasswd.8.xml.out:216 chsh.1.xml.out:131 gpasswd.1.xml.out:241 +#: chage.1.xml.out:264 chfn.1.xml.out:170 chgpasswd.8.xml.out:201 +#: chpasswd.8.xml.out:256 chsh.1.xml.out:150 gpasswd.1.xml.out:243 #: groupadd.8.xml.out:247 groupdel.8.xml.out:133 groupmems.8.xml.out:176 #: groupmod.8.xml.out:212 grpck.8.xml.out:196 lastlog.8.xml.out:182 -#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:360 -#: passwd.1.xml.out:372 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 -#: su.1.xml.out:314 useradd.8.xml.out:710 userdel.8.xml.out:165 -#: usermod.8.xml.out:536 vipw.8.xml.out:142 +#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:381 +#: passwd.1.xml.out:394 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 +#: su.1.xml.out:314 useradd.8.xml.out:730 userdel.8.xml.out:165 +#: usermod.8.xml.out:553 vipw.8.xml.out:142 msgid "CONFIGURATION" msgstr "НАСТРОЙКА" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chage.1.xml.out:252 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 -#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:155 chgpasswd.8.xml.out:178 -#: chgpasswd.8.xml.out:205 chpasswd.8.xml.out:77 chpasswd.8.xml.out:134 -#: chpasswd.8.xml.out:200 chpasswd.8.xml.out:219 chpasswd.8.xml.out:247 -#: chsh.1.xml.out:134 chsh.1.xml.out:159 gpasswd.1.xml.out:244 -#: groupadd.8.xml.out:129 groupadd.8.xml.out:239 groupadd.8.xml.out:250 -#: groupadd.8.xml.out:276 groupdel.8.xml.out:136 groupmems.8.xml.out:179 -#: groupmod.8.xml.out:109 groupmod.8.xml.out:204 groupmod.8.xml.out:215 -#: groupmod.8.xml.out:239 grpck.8.xml.out:199 lastlog.8.xml.out:185 -#: login.1.xml.out:273 login.1.xml.out:365 login.access.5.xml.out:100 -#: login.defs.5.xml.out:116 login.defs.5.xml.out:515 newgrp.1.xml.out:88 -#: newusers.8.xml.out:340 newusers.8.xml.out:363 newusers.8.xml.out:423 -#: passwd.1.xml.out:375 passwd.1.xml.out:405 pwck.8.xml.out:243 +#: chage.1.xml.out:267 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 +#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:159 chgpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:177 chgpasswd.8.xml.out:204 chgpasswd.8.xml.out:233 +#: chpasswd.8.xml.out:79 chpasswd.8.xml.out:140 chpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:227 chpasswd.8.xml.out:236 chpasswd.8.xml.out:259 +#: chpasswd.8.xml.out:289 chsh.1.xml.out:153 chsh.1.xml.out:200 +#: gpasswd.1.xml.out:246 groupadd.8.xml.out:129 groupadd.8.xml.out:239 +#: groupadd.8.xml.out:250 groupadd.8.xml.out:276 groupdel.8.xml.out:136 +#: groupmems.8.xml.out:179 groupmod.8.xml.out:109 groupmod.8.xml.out:204 +#: groupmod.8.xml.out:215 groupmod.8.xml.out:239 grpck.8.xml.out:199 +#: lastlog.8.xml.out:185 login.1.xml.out:273 login.1.xml.out:365 +#: login.access.5.xml.out:100 login.defs.5.xml.out:118 login.defs.5.xml.out:534 +#: newgrp.1.xml.out:88 newusers.8.xml.out:340 newusers.8.xml.out:349 +#: newusers.8.xml.out:357 newusers.8.xml.out:384 newusers.8.xml.out:444 +#: passwd.1.xml.out:397 passwd.1.xml.out:427 pwck.8.xml.out:243 #: pwconv.8.xml.out:148 pwconv.8.xml.out:207 pwconv.8.xml.out:215 #: pwconv.8.xml.out:230 sg.1.xml.out:77 su.1.xml.out:109 su.1.xml.out:219 #: su.1.xml.out:277 su.1.xml.out:317 su.1.xml.out:357 useradd.8.xml.out:241 -#: useradd.8.xml.out:307 useradd.8.xml.out:378 useradd.8.xml.out:399 -#: useradd.8.xml.out:467 useradd.8.xml.out:474 useradd.8.xml.out:560 -#: useradd.8.xml.out:713 useradd.8.xml.out:797 userdel.8.xml.out:87 +#: useradd.8.xml.out:309 useradd.8.xml.out:380 useradd.8.xml.out:401 +#: useradd.8.xml.out:469 useradd.8.xml.out:476 useradd.8.xml.out:562 +#: useradd.8.xml.out:733 useradd.8.xml.out:817 userdel.8.xml.out:87 #: userdel.8.xml.out:168 userdel.8.xml.out:191 userdel.8.xml.out:297 -#: usermod.8.xml.out:399 usermod.8.xml.out:539 usermod.8.xml.out:569 +#: usermod.8.xml.out:399 usermod.8.xml.out:556 usermod.8.xml.out:586 #: vipw.8.xml.out:145 msgid "/etc/login.defs" msgstr "/etc/login.defs" #. (itstool) path: refsect1/para -#: chage.1.xml.out:250 chfn.1.xml.out:171 chgpasswd.8.xml.out:176 -#: chpasswd.8.xml.out:217 chsh.1.xml.out:132 gpasswd.1.xml.out:242 +#: chage.1.xml.out:265 chfn.1.xml.out:171 chgpasswd.8.xml.out:202 +#: chpasswd.8.xml.out:257 chsh.1.xml.out:151 gpasswd.1.xml.out:244 #: groupadd.8.xml.out:248 groupdel.8.xml.out:134 groupmems.8.xml.out:177 #: groupmod.8.xml.out:213 grpck.8.xml.out:197 lastlog.8.xml.out:183 -#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:361 -#: passwd.1.xml.out:373 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 -#: useradd.8.xml.out:711 userdel.8.xml.out:166 usermod.8.xml.out:537 +#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:382 +#: passwd.1.xml.out:395 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 +#: useradd.8.xml.out:731 userdel.8.xml.out:166 usermod.8.xml.out:554 #: vipw.8.xml.out:143 #, fuzzy #| msgid "" @@ -1078,138 +1120,138 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: chage.1.xml.out:261 chfn.1.xml.out:184 chgpasswd.8.xml.out:190 -#: chpasswd.8.xml.out:232 chsh.1.xml.out:144 expiry.1.xml.out:97 -#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:256 +#: chage.1.xml.out:276 chfn.1.xml.out:184 chgpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:274 chsh.1.xml.out:163 expiry.1.xml.out:97 +#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:258 #: groupadd.8.xml.out:261 groupdel.8.xml.out:145 groupmems.8.xml.out:188 #: groupmod.8.xml.out:224 groups.1.xml.out:77 grpck.8.xml.out:208 #: gshadow.5.xml.out:132 lastlog.8.xml.out:194 limits.5.xml.out:172 #: login.1.xml.out:314 login.access.5.xml.out:97 logoutd.8.xml.out:65 -#: newgrp.1.xml.out:97 newusers.8.xml.out:396 passwd.1.xml.out:390 +#: newgrp.1.xml.out:97 newusers.8.xml.out:417 passwd.1.xml.out:412 #: passwd.5.xml.out:139 porttime.5.xml.out:106 pwck.8.xml.out:258 #: pwconv.8.xml.out:227 shadow.3.xml.out:202 shadow.5.xml.out:231 -#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:740 -#: userdel.8.xml.out:182 usermod.8.xml.out:554 vipw.8.xml.out:172 +#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:760 +#: userdel.8.xml.out:182 usermod.8.xml.out:571 vipw.8.xml.out:172 msgid "FILES" msgstr "ФАЙЛЫ" # type: Content of: <refentry><refsect1><para><filename> #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:265 chfn.1.xml.out:193 chpasswd.8.xml.out:235 -#: chsh.1.xml.out:147 expiry.1.xml.out:100 groupmod.8.xml.out:245 +#: chage.1.xml.out:280 chfn.1.xml.out:193 chpasswd.8.xml.out:277 +#: chsh.1.xml.out:166 expiry.1.xml.out:100 groupmod.8.xml.out:245 #: grpck.8.xml.out:223 lastlog.8.xml.out:63 login.1.xml.out:145 #: login.1.xml.out:329 newgrp.1.xml.out:65 newgrp.1.xml.out:70 -#: newgrp.1.xml.out:100 newusers.8.xml.out:399 passwd.1.xml.out:393 +#: newgrp.1.xml.out:100 newusers.8.xml.out:420 passwd.1.xml.out:415 #: passwd.5.xml.out:47 passwd.5.xml.out:89 passwd.5.xml.out:142 #: pwck.8.xml.out:73 pwck.8.xml.out:145 pwck.8.xml.out:212 pwck.8.xml.out:224 #: pwck.8.xml.out:267 pwconv.8.xml.out:127 shadow.5.xml.out:234 sg.1.xml.out:89 -#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:524 -#: useradd.8.xml.out:743 userdel.8.xml.out:197 usermod.8.xml.out:103 -#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:575 +#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:526 +#: useradd.8.xml.out:763 userdel.8.xml.out:197 usermod.8.xml.out:103 +#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:592 #: vipw.8.xml.out:68 vipw.8.xml.out:187 msgid "/etc/passwd" msgstr "/etc/passwd" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:268 chfn.1.xml.out:195 chpasswd.8.xml.out:237 -#: chsh.1.xml.out:149 expiry.1.xml.out:102 groupmod.8.xml.out:247 +#: chage.1.xml.out:283 chfn.1.xml.out:195 chpasswd.8.xml.out:279 +#: chsh.1.xml.out:168 expiry.1.xml.out:102 groupmod.8.xml.out:247 #: grpck.8.xml.out:225 login.1.xml.out:331 newgrp.1.xml.out:102 -#: newusers.8.xml.out:401 passwd.1.xml.out:395 passwd.5.xml.out:144 +#: newusers.8.xml.out:422 passwd.1.xml.out:417 passwd.5.xml.out:144 #: pwck.8.xml.out:269 shadow.5.xml.out:236 sg.1.xml.out:91 su.1.xml.out:347 -#: useradd.8.xml.out:745 userdel.8.xml.out:199 vipw.8.xml.out:189 +#: useradd.8.xml.out:765 userdel.8.xml.out:199 vipw.8.xml.out:189 msgid "User account information." msgstr "содержит информацию о пользователях" # type: Content of: <refentry><refsect1><para><filename> #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:273 chpasswd.8.xml.out:241 expiry.1.xml.out:106 +#: chage.1.xml.out:288 chpasswd.8.xml.out:283 expiry.1.xml.out:106 #: login.1.xml.out:335 newgrp.1.xml.out:68 newgrp.1.xml.out:106 -#: newusers.8.xml.out:295 newusers.8.xml.out:405 passwd.1.xml.out:399 +#: newusers.8.xml.out:297 newusers.8.xml.out:426 passwd.1.xml.out:421 #: passwd.5.xml.out:82 passwd.5.xml.out:148 pwck.8.xml.out:73 #: pwck.8.xml.out:107 pwck.8.xml.out:213 pwck.8.xml.out:225 pwck.8.xml.out:273 #: pwconv.8.xml.out:128 pwconv.8.xml.out:149 shadow.3.xml.out:97 #: shadow.3.xml.out:173 shadow.3.xml.out:205 shadow.5.xml.out:78 -#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:439 -#: useradd.8.xml.out:464 useradd.8.xml.out:749 userdel.8.xml.out:203 +#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:441 +#: useradd.8.xml.out:466 useradd.8.xml.out:769 userdel.8.xml.out:203 #: usermod.8.xml.out:144 usermod.8.xml.out:145 usermod.8.xml.out:166 -#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:581 +#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:598 #: vipw.8.xml.out:71 vipw.8.xml.out:193 msgid "/etc/shadow" msgstr "/etc/shadow" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:276 chpasswd.8.xml.out:243 expiry.1.xml.out:108 -#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:407 -#: passwd.1.xml.out:401 pwck.8.xml.out:275 shadow.3.xml.out:207 -#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:751 +#: chage.1.xml.out:291 chpasswd.8.xml.out:285 expiry.1.xml.out:108 +#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:428 +#: passwd.1.xml.out:423 pwck.8.xml.out:275 shadow.3.xml.out:207 +#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:771 #: userdel.8.xml.out:205 vipw.8.xml.out:195 msgid "Secure user account information." msgstr "содержит защищаемую информацию о пользователях" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: chage.1.xml.out:283 groupadd.8.xml.out:298 groupdel.8.xml.out:163 -#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:420 -#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:806 +#: chage.1.xml.out:298 groupadd.8.xml.out:298 groupdel.8.xml.out:163 +#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:442 +#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:826 #: userdel.8.xml.out:230 msgid "EXIT VALUES" msgstr "ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:290 groupadd.8.xml.out:305 groupdel.8.xml.out:170 -#: grpck.8.xml.out:239 passwd.1.xml.out:427 pwck.8.xml.out:289 -#: useradd.8.xml.out:813 userdel.8.xml.out:237 +#: chage.1.xml.out:305 groupadd.8.xml.out:305 groupdel.8.xml.out:170 +#: grpck.8.xml.out:239 passwd.1.xml.out:449 pwck.8.xml.out:289 +#: useradd.8.xml.out:833 userdel.8.xml.out:237 msgid "success" msgstr "успешное выполнение" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:296 passwd.1.xml.out:433 +#: chage.1.xml.out:311 passwd.1.xml.out:455 msgid "permission denied" msgstr "доступ запрещён" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum -#: chage.1.xml.out:300 groupadd.8.xml.out:309 groupdel.8.xml.out:174 +#: chage.1.xml.out:315 groupadd.8.xml.out:309 groupdel.8.xml.out:174 #: groupmod.8.xml.out:265 groups.1.xml.out:95 groups.1.xml.out:98 #: groups.1.xml.out:101 grpck.8.xml.out:249 limits.5.xml.out:90 #: limits.5.xml.out:101 limits.5.xml.out:188 limits.5.xml.out:191 -#: passwd.1.xml.out:437 pwck.8.xml.out:299 useradd.8.xml.out:823 +#: passwd.1.xml.out:459 pwck.8.xml.out:299 useradd.8.xml.out:843 #: userdel.8.xml.out:247 msgid "2" msgstr "2" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:302 groupadd.8.xml.out:311 groupdel.8.xml.out:176 -#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:825 +#: chage.1.xml.out:317 groupadd.8.xml.out:311 groupdel.8.xml.out:176 +#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:845 #: userdel.8.xml.out:249 msgid "invalid command syntax" msgstr "ошибка в параметрах команды" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: chage.1.xml.out:306 +#: chage.1.xml.out:321 msgid "15" msgstr "15" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chage.1.xml.out:308 +#: chage.1.xml.out:323 msgid "can't find the shadow password file" msgstr "не удалось найти файл теневых паролей" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chage.1.xml.out:284 groupadd.8.xml.out:299 groupdel.8.xml.out:164 -#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:421 -#: pwck.8.xml.out:283 useradd.8.xml.out:807 userdel.8.xml.out:231 +#: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:164 +#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:443 +#: pwck.8.xml.out:283 useradd.8.xml.out:827 userdel.8.xml.out:231 #, fuzzy #| msgid "" #| "The <command>pwck</command> command exits with the following values: " @@ -1223,18 +1265,18 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: chage.1.xml.out:316 chfn.1.xml.out:202 chgpasswd.8.xml.out:214 -#: chpasswd.8.xml.out:262 chsh.1.xml.out:168 expiry.1.xml.out:115 -#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:274 +#: chage.1.xml.out:331 chfn.1.xml.out:202 chgpasswd.8.xml.out:242 +#: chpasswd.8.xml.out:304 chsh.1.xml.out:209 expiry.1.xml.out:115 +#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:276 #: groupadd.8.xml.out:343 groupdel.8.xml.out:202 groupmems.8.xml.out:206 #: groupmod.8.xml.out:323 groups.1.xml.out:89 grpck.8.xml.out:277 #: gshadow.5.xml.out:150 limits.5.xml.out:182 login.1.xml.out:374 -#: login.access.5.xml.out:109 login.defs.5.xml.out:527 newgrp.1.xml.out:127 -#: newusers.8.xml.out:450 nologin.8.xml.out:57 passwd.1.xml.out:471 +#: login.access.5.xml.out:109 login.defs.5.xml.out:546 newgrp.1.xml.out:127 +#: newusers.8.xml.out:471 nologin.8.xml.out:57 passwd.1.xml.out:493 #: passwd.5.xml.out:167 porttime.5.xml.out:118 pwck.8.xml.out:333 #: pwconv.8.xml.out:239 shadow.3.xml.out:214 shadow.5.xml.out:259 -#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:875 -#: userdel.8.xml.out:308 usermod.8.xml.out:602 vipw.8.xml.out:202 +#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:895 +#: userdel.8.xml.out:308 usermod.8.xml.out:619 vipw.8.xml.out:202 msgid "SEE ALSO" msgstr "СМОТРИТЕ ТАКЖЕ" @@ -1248,22 +1290,22 @@ msgstr "СМОТРИТЕ ТАКЖЕ" #. (itstool) path: para/command #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: chage.1.xml.out:319 chfn.1.xml.out:211 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:177 expiry.1.xml.out:118 groupadd.8.xml.out:351 +#: chage.1.xml.out:334 chfn.1.xml.out:211 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:218 expiry.1.xml.out:118 groupadd.8.xml.out:351 #: groupdel.8.xml.out:211 groupmems.8.xml.out:215 groupmod.8.xml.out:332 #: grpck.8.xml.out:291 lastlog.8.xml.out:176 login.1.xml.out:128 -#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:399 -#: login.defs.5.xml.out:516 login.defs.5.xml.out:533 login.defs.5.xml.out:539 -#: newusers.8.xml.out:79 newusers.8.xml.out:456 passwd.1.xml.out:40 -#: passwd.1.xml.out:47 passwd.1.xml.out:53 passwd.1.xml.out:66 -#: passwd.1.xml.out:69 passwd.1.xml.out:86 passwd.1.xml.out:116 -#: passwd.1.xml.out:152 passwd.1.xml.out:366 passwd.1.xml.out:413 -#: passwd.1.xml.out:422 passwd.1.xml.out:451 passwd.1.xml.out:457 -#: passwd.1.xml.out:477 passwd.5.xml.out:33 passwd.5.xml.out:40 +#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:415 +#: login.defs.5.xml.out:535 login.defs.5.xml.out:552 login.defs.5.xml.out:558 +#: newusers.8.xml.out:81 newusers.8.xml.out:477 passwd.1.xml.out:42 +#: passwd.1.xml.out:49 passwd.1.xml.out:55 passwd.1.xml.out:68 +#: passwd.1.xml.out:71 passwd.1.xml.out:88 passwd.1.xml.out:100 +#: passwd.1.xml.out:148 passwd.1.xml.out:388 passwd.1.xml.out:435 +#: passwd.1.xml.out:444 passwd.1.xml.out:473 passwd.1.xml.out:479 +#: passwd.1.xml.out:502 passwd.5.xml.out:33 passwd.5.xml.out:40 #: passwd.5.xml.out:182 pwck.8.xml.out:228 pwck.8.xml.out:342 #: pwconv.8.xml.out:84 pwconv.8.xml.out:99 shadow.5.xml.out:268 -#: shadow.5.xml.out:271 useradd.8.xml.out:884 userdel.8.xml.out:316 -#: usermod.8.xml.out:611 vipw.8.xml.out:217 +#: shadow.5.xml.out:271 useradd.8.xml.out:904 userdel.8.xml.out:316 +#: usermod.8.xml.out:628 vipw.8.xml.out:217 msgid "passwd" msgstr "passwd" @@ -1271,31 +1313,31 @@ msgstr "passwd" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: refmeta/manvolnum #. (itstool) path: term/replaceable -#: chage.1.xml.out:319 chage.1.xml.out:322 chfn.1.xml.out:208 -#: chfn.1.xml.out:211 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 chsh.1.xml.out:177 expiry.1.xml.out:118 +#: chage.1.xml.out:334 chage.1.xml.out:337 chfn.1.xml.out:208 +#: chfn.1.xml.out:211 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 chsh.1.xml.out:218 expiry.1.xml.out:118 #: expiry.1.xml.out:121 faillog.5.xml.out:34 faillog.8.xml.out:238 -#: gpasswd.1.xml.out:292 gpasswd.1.xml.out:295 groupadd.8.xml.out:363 +#: gpasswd.1.xml.out:294 gpasswd.1.xml.out:297 groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 grpck.8.xml.out:267 grpck.8.xml.out:280 #: grpck.8.xml.out:287 grpck.8.xml.out:291 grpck.8.xml.out:297 #: gshadow.5.xml.out:23 gshadow.5.xml.out:153 gshadow.5.xml.out:156 #: limits.5.xml.out:36 login.1.xml.out:389 login.1.xml.out:392 #: login.1.xml.out:395 login.1.xml.out:398 login.access.5.xml.out:35 -#: login.defs.5.xml.out:103 login.defs.5.xml.out:539 login.defs.5.xml.out:542 -#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:79 -#: newusers.8.xml.out:453 newusers.8.xml.out:460 newusers.8.xml.out:463 -#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:455 -#: passwd.1.xml.out:477 passwd.1.xml.out:480 passwd.1.xml.out:484 +#: login.defs.5.xml.out:105 login.defs.5.xml.out:558 login.defs.5.xml.out:561 +#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:81 +#: newusers.8.xml.out:474 newusers.8.xml.out:481 newusers.8.xml.out:484 +#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:477 +#: passwd.1.xml.out:502 passwd.1.xml.out:505 passwd.1.xml.out:509 #: passwd.5.xml.out:34 passwd.5.xml.out:80 passwd.5.xml.out:194 #: porttime.5.xml.out:34 pwck.8.xml.out:317 pwck.8.xml.out:336 #: pwck.8.xml.out:342 pwck.8.xml.out:345 pwconv.8.xml.out:245 #: shadow.3.xml.out:220 shadow.5.xml.out:34 shadow.5.xml.out:271 #: sg.1.xml.out:134 sg.1.xml.out:137 su.1.xml.out:418 suauth.5.xml.out:34 -#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:628 -#: useradd.8.xml.out:899 useradd.8.xml.out:906 useradd.8.xml.out:909 +#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:648 +#: useradd.8.xml.out:919 useradd.8.xml.out:926 useradd.8.xml.out:929 #: userdel.8.xml.out:319 userdel.8.xml.out:335 userdel.8.xml.out:338 -#: usermod.8.xml.out:162 usermod.8.xml.out:629 usermod.8.xml.out:633 -#: usermod.8.xml.out:636 vipw.8.xml.out:208 vipw.8.xml.out:211 +#: usermod.8.xml.out:162 usermod.8.xml.out:646 usermod.8.xml.out:650 +#: usermod.8.xml.out:653 vipw.8.xml.out:208 vipw.8.xml.out:211 #: vipw.8.xml.out:214 vipw.8.xml.out:217 vipw.8.xml.out:220 vipw.8.xml.out:223 msgid "5" msgstr "5" @@ -1309,20 +1351,20 @@ msgstr "5" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/filename -#: chage.1.xml.out:322 expiry.1.xml.out:121 grpck.8.xml.out:51 -#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:542 -#: passwd.1.xml.out:480 passwd.5.xml.out:79 passwd.5.xml.out:194 +#: chage.1.xml.out:337 expiry.1.xml.out:121 grpck.8.xml.out:51 +#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:561 +#: passwd.1.xml.out:505 passwd.5.xml.out:79 passwd.5.xml.out:194 #: pwck.8.xml.out:229 pwck.8.xml.out:233 pwck.8.xml.out:345 pwconv.8.xml.out:84 #: pwconv.8.xml.out:85 pwconv.8.xml.out:100 pwconv.8.xml.out:101 #: shadow.3.xml.out:33 shadow.3.xml.out:40 shadow.3.xml.out:96 #: shadow.3.xml.out:220 shadow.5.xml.out:33 shadow.5.xml.out:40 -#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:628 +#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:648 #: usermod.8.xml.out:162 vipw.8.xml.out:223 msgid "shadow" msgstr "shadow" #. (itstool) path: refsect1/para -#: chage.1.xml.out:317 expiry.1.xml.out:116 faillog.8.xml.out:233 +#: chage.1.xml.out:332 expiry.1.xml.out:116 faillog.8.xml.out:233 #: nologin.8.xml.out:58 shadow.3.xml.out:215 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>." msgstr "" @@ -1335,10 +1377,10 @@ msgstr "" #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: varlistentry/term #: chfn.1.xml.out:36 chfn.1.xml.out:43 chfn.1.xml.out:49 chfn.1.xml.out:62 -#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:171 +#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:212 #: groupadd.8.xml.out:345 groupdel.8.xml.out:205 groupmems.8.xml.out:209 -#: groupmod.8.xml.out:326 login.defs.5.xml.out:239 useradd.8.xml.out:878 -#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:605 +#: groupmod.8.xml.out:326 login.defs.5.xml.out:243 useradd.8.xml.out:898 +#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:622 msgid "chfn" msgstr "chfn" @@ -1358,8 +1400,8 @@ msgstr "" #. (itstool) path: term/option #: chfn.1.xml.out:71 chfn.1.xml.out:110 groupadd.8.xml.out:106 #: groupadd.8.xml.out:145 groupadd.8.xml.out:323 groupmod.8.xml.out:93 -#: groupmod.8.xml.out:132 useradd.8.xml.out:405 useradd.8.xml.out:536 -#: useradd.8.xml.out:837 usermod.8.xml.out:271 usermod.8.xml.out:377 +#: groupmod.8.xml.out:132 useradd.8.xml.out:407 useradd.8.xml.out:538 +#: useradd.8.xml.out:857 usermod.8.xml.out:271 usermod.8.xml.out:377 msgid "-o" msgstr "-o" @@ -1437,7 +1479,7 @@ msgstr "" #: chfn.1.xml.out:94 expiry.1.xml.out:61 expiry.1.xml.out:79 #: groupadd.8.xml.out:88 groupdel.8.xml.out:72 login.1.xml.out:90 #: login.1.xml.out:190 login.1.xml.out:229 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 userdel.8.xml.out:76 userdel.8.xml.out:287 +#: useradd.8.xml.out:642 userdel.8.xml.out:76 userdel.8.xml.out:287 #: userdel.8.xml.out:302 usermod.8.xml.out:152 msgid "-f" msgstr "-f" @@ -1507,12 +1549,12 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chfn.1.xml.out:122 faillog.8.xml.out:89 faillog.8.xml.out:144 -#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:173 +#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:175 #: groupadd.8.xml.out:112 groupadd.8.xml.out:185 grpck.8.xml.out:124 #: grpck.8.xml.out:138 login.1.xml.out:220 login.1.xml.out:229 -#: newusers.8.xml.out:287 passwd.1.xml.out:268 pwck.8.xml.out:155 -#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:456 -#: useradd.8.xml.out:542 userdel.8.xml.out:106 usermod.8.xml.out:317 +#: newusers.8.xml.out:289 passwd.1.xml.out:264 pwck.8.xml.out:155 +#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:458 +#: useradd.8.xml.out:544 userdel.8.xml.out:106 usermod.8.xml.out:317 msgid "-r" msgstr "-r" @@ -1539,8 +1581,8 @@ msgstr "Изменяет номер комнаты пользователя." #. (itstool) path: para/option #: chfn.1.xml.out:143 faillog.8.xml.out:80 faillog.8.xml.out:180 #: faillog.8.xml.out:214 lastlog.8.xml.out:90 lastlog.8.xml.out:122 -#: lastlog.8.xml.out:139 passwd.1.xml.out:309 useradd.8.xml.out:414 -#: useradd.8.xml.out:531 usermod.8.xml.out:279 usermod.8.xml.out:369 +#: lastlog.8.xml.out:139 passwd.1.xml.out:320 useradd.8.xml.out:416 +#: useradd.8.xml.out:533 usermod.8.xml.out:279 usermod.8.xml.out:369 #: vipw.8.xml.out:133 #, fuzzy #| msgid "-" @@ -1549,7 +1591,7 @@ msgstr "-" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: chfn.1.xml.out:151 passwd.1.xml.out:322 usermod.8.xml.out:463 +#: chfn.1.xml.out:151 passwd.1.xml.out:333 usermod.8.xml.out:463 #, fuzzy #| msgid "-" msgid "-w" @@ -1602,11 +1644,11 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chfn.1.xml.out:189 chgpasswd.8.xml.out:207 chpasswd.8.xml.out:249 -#: chsh.1.xml.out:161 groupadd.8.xml.out:278 groupmod.8.xml.out:241 -#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:425 -#: passwd.1.xml.out:407 pwconv.8.xml.out:232 su.1.xml.out:359 -#: useradd.8.xml.out:799 userdel.8.xml.out:193 +#: chfn.1.xml.out:189 chgpasswd.8.xml.out:235 chpasswd.8.xml.out:291 +#: chsh.1.xml.out:202 groupadd.8.xml.out:278 groupmod.8.xml.out:241 +#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:446 +#: passwd.1.xml.out:429 pwconv.8.xml.out:232 su.1.xml.out:359 +#: useradd.8.xml.out:819 userdel.8.xml.out:193 msgid "Shadow password suite configuration." msgstr "содержит конфигурацию подсистемы теневых паролей" @@ -1620,8 +1662,8 @@ msgstr "содержит конфигурацию подсистемы тене #: chfn.1.xml.out:205 chsh.1.xml.out:36 chsh.1.xml.out:43 chsh.1.xml.out:49 #: chsh.1.xml.out:62 chsh.1.xml.out:73 chsh.1.xml.out:109 #: groupadd.8.xml.out:348 groupdel.8.xml.out:208 groupmems.8.xml.out:212 -#: groupmod.8.xml.out:329 login.defs.5.xml.out:270 useradd.8.xml.out:881 -#: userdel.8.xml.out:313 usermod.8.xml.out:608 +#: groupmod.8.xml.out:329 login.defs.5.xml.out:280 useradd.8.xml.out:901 +#: userdel.8.xml.out:313 usermod.8.xml.out:625 msgid "chsh" msgstr "chsh" @@ -1630,25 +1672,25 @@ msgstr "chsh" #. (itstool) path: para/filename #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname -#: chfn.1.xml.out:208 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 groupadd.8.xml.out:194 groupadd.8.xml.out:363 -#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:102 -#: login.defs.5.xml.out:109 newusers.8.xml.out:298 newusers.8.xml.out:453 -#: passwd.1.xml.out:484 pwconv.8.xml.out:92 pwconv.8.xml.out:94 +#: chfn.1.xml.out:208 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 groupadd.8.xml.out:194 groupadd.8.xml.out:363 +#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:104 +#: login.defs.5.xml.out:111 newusers.8.xml.out:300 newusers.8.xml.out:474 +#: passwd.1.xml.out:509 pwconv.8.xml.out:92 pwconv.8.xml.out:94 #: pwconv.8.xml.out:108 pwconv.8.xml.out:245 su.1.xml.out:418 -#: useradd.8.xml.out:899 userdel.8.xml.out:117 userdel.8.xml.out:319 -#: usermod.8.xml.out:629 vipw.8.xml.out:214 +#: useradd.8.xml.out:919 userdel.8.xml.out:117 userdel.8.xml.out:319 +#: usermod.8.xml.out:646 vipw.8.xml.out:214 msgid "login.defs" msgstr "login.defs" #. (itstool) path: refsect1/para -#: chfn.1.xml.out:203 chgpasswd.8.xml.out:215 chsh.1.xml.out:169 +#: chfn.1.xml.out:203 chgpasswd.8.xml.out:243 chsh.1.xml.out:210 #: limits.5.xml.out:183 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." msgstr "" #. (itstool) path: author/contrib -#: chgpasswd.8.xml.out:23 +#: chgpasswd.8.xml.out:25 msgid "Creation, 2006" msgstr "" @@ -1658,9 +1700,9 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:33 chgpasswd.8.xml.out:40 chgpasswd.8.xml.out:46 -#: chgpasswd.8.xml.out:56 chgpasswd.8.xml.out:66 chgpasswd.8.xml.out:83 -#: login.defs.5.xml.out:249 +#: chgpasswd.8.xml.out:35 chgpasswd.8.xml.out:42 chgpasswd.8.xml.out:48 +#: chgpasswd.8.xml.out:58 chgpasswd.8.xml.out:68 chgpasswd.8.xml.out:85 +#: login.defs.5.xml.out:253 msgid "chgpasswd" msgstr "chgpasswd" @@ -1668,10 +1710,10 @@ msgstr "chgpasswd" #. (itstool) path: refmeta/manvolnum #. (itstool) path: citerefentry/manvolnum #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:34 chgpasswd.8.xml.out:220 chpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:268 chpasswd.8.xml.out:276 faillog.5.xml.out:87 -#: faillog.8.xml.out:34 gpasswd.1.xml.out:280 gpasswd.1.xml.out:283 -#: gpasswd.1.xml.out:286 gpasswd.1.xml.out:289 groupadd.8.xml.out:37 +#: chgpasswd.8.xml.out:36 chgpasswd.8.xml.out:248 chpasswd.8.xml.out:40 +#: chpasswd.8.xml.out:310 chpasswd.8.xml.out:318 faillog.5.xml.out:87 +#: faillog.8.xml.out:34 gpasswd.1.xml.out:282 gpasswd.1.xml.out:285 +#: gpasswd.1.xml.out:288 gpasswd.1.xml.out:291 groupadd.8.xml.out:37 #: groupadd.8.xml.out:354 groupadd.8.xml.out:357 groupadd.8.xml.out:360 #: groupadd.8.xml.out:366 groupadd.8.xml.out:369 groupadd.8.xml.out:372 #: groupdel.8.xml.out:35 groupdel.8.xml.out:186 groupdel.8.xml.out:214 @@ -1684,32 +1726,32 @@ msgstr "chgpasswd" #: grpck.8.xml.out:34 grpck.8.xml.out:283 grpck.8.xml.out:294 #: gshadow.5.xml.out:159 gshadow.5.xml.out:162 lastlog.8.xml.out:36 #: login.1.xml.out:174 login.1.xml.out:176 login.1.xml.out:249 -#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:545 -#: logoutd.8.xml.out:34 newusers.8.xml.out:50 newusers.8.xml.out:467 -#: nologin.8.xml.out:23 passwd.1.xml.out:474 passwd.1.xml.out:488 +#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:564 +#: logoutd.8.xml.out:34 newusers.8.xml.out:52 newusers.8.xml.out:488 +#: nologin.8.xml.out:23 passwd.1.xml.out:496 passwd.1.xml.out:513 #: passwd.5.xml.out:185 passwd.5.xml.out:188 passwd.5.xml.out:191 #: passwd.5.xml.out:200 pwck.8.xml.out:41 pwck.8.xml.out:339 pwck.8.xml.out:348 #: pwconv.8.xml.out:40 pwconv.8.xml.out:242 pwconv.8.xml.out:248 #: pwconv.8.xml.out:251 pwconv.8.xml.out:254 shadow.5.xml.out:274 #: shadow.5.xml.out:277 shadow.5.xml.out:280 shadow.5.xml.out:286 -#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:574 -#: useradd.8.xml.out:890 useradd.8.xml.out:893 useradd.8.xml.out:896 -#: useradd.8.xml.out:902 useradd.8.xml.out:913 useradd.8.xml.out:916 -#: userdel.8.xml.out:40 userdel.8.xml.out:259 userdel.8.xml.out:322 -#: userdel.8.xml.out:325 userdel.8.xml.out:328 userdel.8.xml.out:331 -#: userdel.8.xml.out:342 userdel.8.xml.out:345 usermod.8.xml.out:41 -#: usermod.8.xml.out:617 usermod.8.xml.out:620 usermod.8.xml.out:623 -#: usermod.8.xml.out:626 usermod.8.xml.out:640 usermod.8.xml.out:643 -#: vipw.8.xml.out:36 +#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:576 +#: useradd.8.xml.out:590 useradd.8.xml.out:910 useradd.8.xml.out:913 +#: useradd.8.xml.out:916 useradd.8.xml.out:922 useradd.8.xml.out:933 +#: useradd.8.xml.out:936 userdel.8.xml.out:40 userdel.8.xml.out:259 +#: userdel.8.xml.out:322 userdel.8.xml.out:325 userdel.8.xml.out:328 +#: userdel.8.xml.out:331 userdel.8.xml.out:342 userdel.8.xml.out:345 +#: usermod.8.xml.out:41 usermod.8.xml.out:522 usermod.8.xml.out:634 +#: usermod.8.xml.out:637 usermod.8.xml.out:640 usermod.8.xml.out:643 +#: usermod.8.xml.out:657 usermod.8.xml.out:660 vipw.8.xml.out:36 msgid "8" msgstr "8" # type: Content of: <refentry><refmeta><refmiscinfo> #. (itstool) path: refmeta/refmiscinfo -#: chgpasswd.8.xml.out:35 chpasswd.8.xml.out:39 faillog.8.xml.out:35 +#: chgpasswd.8.xml.out:37 chpasswd.8.xml.out:41 faillog.8.xml.out:35 #: groupadd.8.xml.out:38 groupdel.8.xml.out:36 groupmems.8.xml.out:39 #: groupmod.8.xml.out:36 grpck.8.xml.out:35 lastlog.8.xml.out:37 -#: logoutd.8.xml.out:35 newusers.8.xml.out:51 nologin.8.xml.out:24 +#: logoutd.8.xml.out:35 newusers.8.xml.out:53 nologin.8.xml.out:24 #: pwck.8.xml.out:42 pwconv.8.xml.out:41 useradd.8.xml.out:54 #: userdel.8.xml.out:41 usermod.8.xml.out:42 vipw.8.xml.out:37 msgid "System Management Commands" @@ -1717,13 +1759,13 @@ msgstr "Команды управления системой" # type: Content of: <refentry><refnamediv><refpurpose> #. (itstool) path: refnamediv/refpurpose -#: chgpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:43 msgid "update group passwords in batch mode" msgstr "обновляет пароли групп в пакетном режиме" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:55 +#: chgpasswd.8.xml.out:57 #, fuzzy #| msgid "" #| "The <command>chgpasswd</command> command reads a list of group name and " @@ -1742,13 +1784,13 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:61 groupmems.8.xml.out:54 groupmems.8.xml.out:110 +#: chgpasswd.8.xml.out:63 groupmems.8.xml.out:54 groupmems.8.xml.out:110 msgid "group_name" msgstr "имя_группы" # type: Content of: <refentry><refsect1><para><emphasis> #. (itstool) path: para/emphasis -#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 passwd.5.xml.out:77 +#: chgpasswd.8.xml.out:64 chpasswd.8.xml.out:68 passwd.5.xml.out:77 #: passwd.5.xml.out:86 passwd.5.xml.out:91 passwd.5.xml.out:95 #: passwd.5.xml.out:98 #, fuzzy @@ -1757,13 +1799,13 @@ msgid "password" msgstr "passwd" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:60 chpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 msgid "<_:emphasis-1/>:<_:emphasis-2/>" msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:66 #, fuzzy #| msgid "" #| "By default the supplied password must be in clear-text, and is encrypted " @@ -1776,8 +1818,8 @@ msgstr "" "шифруется командой <command>chgpasswd</command>." #. (itstool) path: para/option -#: chgpasswd.8.xml.out:70 chpasswd.8.xml.out:75 chpasswd.8.xml.out:132 -#: passwd.1.xml.out:129 +#: chgpasswd.8.xml.out:72 chpasswd.8.xml.out:77 chpasswd.8.xml.out:138 +#: passwd.1.xml.out:114 #, fuzzy #| msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgid "ENCRYPT_METHOD" @@ -1786,9 +1828,9 @@ msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: para/option #. (itstool) path: term/option -#: chgpasswd.8.xml.out:71 chgpasswd.8.xml.out:101 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 chpasswd.8.xml.out:139 -#: passwd.1.xml.out:180 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chgpasswd.8.xml.out:73 chgpasswd.8.xml.out:107 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 chpasswd.8.xml.out:145 +#: passwd.1.xml.out:176 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 #, fuzzy #| msgid "-" @@ -1799,16 +1841,16 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: term/option #. (itstool) path: arg/arg -#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:88 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:114 chpasswd.8.xml.out:129 -#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:90 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:116 chpasswd.8.xml.out:135 +#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:270 #: sg.1.xml.out:50 su.1.xml.out:86 su.1.xml.out:126 su.1.xml.out:131 #: useradd.8.xml.out:139 usermod.8.xml.out:99 msgid "-c" msgstr "-c" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:70 #, fuzzy #| msgid "" #| "The default encryption algorithm can be defined for the system with the " @@ -1827,7 +1869,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:74 chpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:76 chpasswd.8.xml.out:101 msgid "" "This command is intended to be used in a large system environment where many " "accounts are created at a single time." @@ -1836,32 +1878,89 @@ msgstr "" "один раз заводится несколько учётных записей." #. (itstool) path: term/option -#: chgpasswd.8.xml.out:88 chpasswd.8.xml.out:114 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:116 newusers.8.xml.out:270 msgid "--crypt-method" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:117 newusers.8.xml.out:270 +#: chgpasswd.8.xml.out:92 chpasswd.8.xml.out:119 newusers.8.xml.out:272 msgid "Use the specified method to encrypt the passwords." msgstr "Использовать указанный метод для шифрования паролей." -#. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:91 chpasswd.8.xml.out:118 -msgid "The available methods are DES, MD5, and NONE." -msgstr "Возможные методы: DES, MD5 и NONE." +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:95 chgpasswd.8.xml.out:149 chpasswd.8.xml.out:122 +#: chpasswd.8.xml.out:208 newusers.8.xml.out:330 +msgid "BCRYPT" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 +#, fuzzy +#| msgid "-h <placeholder-1/>" +msgid "<_:replaceable-1/>," +msgstr "-h <placeholder-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:96 chpasswd.8.xml.out:123 +msgid "DES" +msgstr "" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid "MD5" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:98 chgpasswd.8.xml.out:151 chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:210 newusers.8.xml.out:332 +msgid "SHA256" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:99 chgpasswd.8.xml.out:152 chpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:211 newusers.8.xml.out:333 +msgid "SHA512" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +#, fuzzy +#| msgid "-K <placeholder-1/>=<placeholder-2/>" +msgid ", <_:replaceable-1/>, <_:replaceable-2/>" +msgstr "-K <placeholder-1/>=<placeholder-2/>" + +# type: Content of: <refentry><refsect1><title> +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:100 chgpasswd.8.xml.out:154 chpasswd.8.xml.out:127 +#: chpasswd.8.xml.out:213 newusers.8.xml.out:335 +#, fuzzy +#| msgid "DESCRIPTION" +msgid "YESCRYPT" +msgstr "ОПИСАНИЕ" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:99 chpasswd.8.xml.out:126 +#, fuzzy +#| msgid "-h <placeholder-1/>" +msgid ", <_:replaceable-1/>" +msgstr "-h <placeholder-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:128 +msgid "NONE" +msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 newusers.8.xml.out:271 +#: chgpasswd.8.xml.out:93 chpasswd.8.xml.out:120 msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." +"The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" +"><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports " +"these methods." msgstr "" -"Возможные методы: DES, MD5, NONE и SHA256 или SHA512, если эти методы " -"поддерживается libc." # type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #. (itstool) path: term/option -#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:139 +#: chgpasswd.8.xml.out:107 chpasswd.8.xml.out:145 #, fuzzy #| msgid "encrypted password" msgid "--encrypted" @@ -1869,18 +1968,18 @@ msgstr "шифрованный пароль" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:103 chpasswd.8.xml.out:141 +#: chgpasswd.8.xml.out:109 chpasswd.8.xml.out:147 msgid "Supplied passwords are in encrypted form." msgstr "Передаваемые пароли заданы в шифрованном виде." #. (itstool) path: term/option -#: chgpasswd.8.xml.out:113 chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 chpasswd.8.xml.out:161 msgid "--md5" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:115 chpasswd.8.xml.out:157 +#: chgpasswd.8.xml.out:121 chpasswd.8.xml.out:163 msgid "" "Use MD5 encryption instead of DES when the supplied passwords are not " "encrypted." @@ -1891,75 +1990,126 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 chsh.1.xml.out:97 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 chsh.1.xml.out:97 #: chsh.1.xml.out:108 grpck.8.xml.out:124 grpck.8.xml.out:161 -#: newusers.8.xml.out:320 pwck.8.xml.out:155 pwck.8.xml.out:209 -#: su.1.xml.out:163 useradd.8.xml.out:517 useradd.8.xml.out:655 -#: usermod.8.xml.out:357 vipw.8.xml.out:70 vipw.8.xml.out:127 +#: newusers.8.xml.out:322 passwd.1.xml.out:363 pwck.8.xml.out:155 +#: pwck.8.xml.out:209 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 vipw.8.xml.out:70 +#: vipw.8.xml.out:127 msgid "-s" msgstr "-s" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 newusers.8.xml.out:320 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 newusers.8.xml.out:322 msgid "--sha-rounds" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:137 chpasswd.8.xml.out:181 newusers.8.xml.out:322 +#: chgpasswd.8.xml.out:143 chpasswd.8.xml.out:202 newusers.8.xml.out:324 msgid "Use the specified number of rounds to encrypt the passwords." msgstr "Использовать указанное количество раундов шифрования паролей." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:140 chpasswd.8.xml.out:184 newusers.8.xml.out:325 +#: chgpasswd.8.xml.out:146 chpasswd.8.xml.out:205 newusers.8.xml.out:327 msgid "" -"The value 0 means that the system will choose the default number of rounds " -"for the crypt method (5000)." +"You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" -"Значение 0 означает, что система выберет количество раундов по умолчанию для " -"выбранного метода шифрования (5000)." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:144 chpasswd.8.xml.out:188 newusers.8.xml.out:329 +#: chgpasswd.8.xml.out:156 chpasswd.8.xml.out:215 newusers.8.xml.out:337 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" +#| "filename>." msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +"By default, the number of rounds for BCRYPT is defined by the " +"BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" +"По умолчанию, количество раундов определяется переменными " +"SHA_CRYPT_MIN_ROUNDS и SHA_CRYPT_MAX_ROUNDS из <filename>/etc/login.defs</" +"filename>." + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:161 chpasswd.8.xml.out:220 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default number of rounds is 13." msgstr "" "Минимальное значение равно 1000, а максимальное значение равно 999,999,999." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:148 chpasswd.8.xml.out:192 newusers.8.xml.out:333 -msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#: chgpasswd.8.xml.out:165 chpasswd.8.xml.out:224 newusers.8.xml.out:346 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" +#| "filename>." +msgid "" +"By default, the number of rounds for SHA256 or SHA512 is defined by the " +"SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" +"По умолчанию, количество раундов определяется переменными " +"SHA_CRYPT_MIN_ROUNDS и SHA_CRYPT_MAX_ROUNDS из <filename>/etc/login.defs</" +"filename>." + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:170 chpasswd.8.xml.out:229 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default number of rounds is 5000." msgstr "" -"Вы можете использовать этот параметр только при методе шифрования SHA256 или " -"SHA512." +"Минимальное значение равно 1000, а максимальное значение равно 999,999,999." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:152 newusers.8.xml.out:337 +#: chgpasswd.8.xml.out:175 chpasswd.8.xml.out:234 newusers.8.xml.out:355 #, fuzzy #| msgid "" #| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " #| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" #| "filename>." msgid "" -"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and " -"SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +"By default, the number of rounds for YESCRYPT is defined by the " +"YESCRYPT_COST_FACTOR in <_:filename-1/>." msgstr "" "По умолчанию, количество раундов определяется переменными " "SHA_CRYPT_MIN_ROUNDS и SHA_CRYPT_MAX_ROUNDS из <filename>/etc/login.defs</" "filename>." +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:179 chpasswd.8.xml.out:238 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default number of rounds is 5." +msgstr "" +"Минимальное значение равно 1000, а максимальное значение равно 999,999,999." + # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: chgpasswd.8.xml.out:163 chpasswd.8.xml.out:208 faillog.8.xml.out:209 -#: gpasswd.1.xml.out:229 groupadd.8.xml.out:285 groupdel.8.xml.out:121 -#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:348 -#: passwd.1.xml.out:354 shadow.3.xml.out:194 su.1.xml.out:306 -#: useradd.8.xml.out:682 userdel.8.xml.out:281 usermod.8.xml.out:517 +#: chgpasswd.8.xml.out:189 chpasswd.8.xml.out:248 faillog.8.xml.out:209 +#: gpasswd.1.xml.out:231 groupadd.8.xml.out:285 groupdel.8.xml.out:121 +#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:369 +#: passwd.1.xml.out:376 shadow.3.xml.out:194 su.1.xml.out:306 +#: useradd.8.xml.out:702 userdel.8.xml.out:281 usermod.8.xml.out:534 msgid "CAVEATS" msgstr "ПРЕДОСТЕРЕЖЕНИЯ" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:164 chpasswd.8.xml.out:209 +#: chgpasswd.8.xml.out:190 chpasswd.8.xml.out:249 msgid "" "Remember to set permissions or umask to prevent readability of unencrypted " "files by other users." @@ -1968,7 +2118,7 @@ msgstr "" "шифрованных файлов другими пользователями." #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:168 newusers.8.xml.out:353 +#: chgpasswd.8.xml.out:194 newusers.8.xml.out:374 msgid "" "You should make sure the passwords and the encryption method respect the " "system's password policy." @@ -1981,8 +2131,8 @@ msgstr "" #. (itstool) path: phrase/filename #. (itstool) path: para/filename #. (itstool) path: citerefentry/refentrytitle -#: chgpasswd.8.xml.out:193 gpasswd.1.xml.out:48 gpasswd.1.xml.out:51 -#: gpasswd.1.xml.out:73 gpasswd.1.xml.out:231 gpasswd.1.xml.out:259 +#: chgpasswd.8.xml.out:221 gpasswd.1.xml.out:50 gpasswd.1.xml.out:53 +#: gpasswd.1.xml.out:75 gpasswd.1.xml.out:233 gpasswd.1.xml.out:261 #: groupadd.8.xml.out:170 groupadd.8.xml.out:264 groupdel.8.xml.out:148 #: groupmems.8.xml.out:191 groupmod.8.xml.out:227 groups.1.xml.out:58 #: groups.1.xml.out:70 groups.1.xml.out:80 grpck.8.xml.out:62 @@ -1990,20 +2140,20 @@ msgstr "" #: grpck.8.xml.out:164 grpck.8.xml.out:177 grpck.8.xml.out:185 #: grpck.8.xml.out:211 gshadow.5.xml.out:91 gshadow.5.xml.out:124 #: gshadow.5.xml.out:135 newgrp.1.xml.out:80 newgrp.1.xml.out:112 -#: newusers.8.xml.out:411 pwck.8.xml.out:261 pwconv.8.xml.out:128 -#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:755 -#: userdel.8.xml.out:185 usermod.8.xml.out:557 vipw.8.xml.out:69 +#: newusers.8.xml.out:432 pwck.8.xml.out:261 pwconv.8.xml.out:128 +#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:775 +#: userdel.8.xml.out:185 usermod.8.xml.out:574 vipw.8.xml.out:69 #: vipw.8.xml.out:175 msgid "/etc/group" msgstr "/etc/group" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:195 gpasswd.1.xml.out:261 groupadd.8.xml.out:266 +#: chgpasswd.8.xml.out:223 gpasswd.1.xml.out:263 groupadd.8.xml.out:266 #: groupdel.8.xml.out:150 groupmems.8.xml.out:193 groupmod.8.xml.out:229 #: groups.1.xml.out:82 grpck.8.xml.out:213 gshadow.5.xml.out:137 -#: newgrp.1.xml.out:114 newusers.8.xml.out:413 pwck.8.xml.out:263 -#: sg.1.xml.out:103 useradd.8.xml.out:757 userdel.8.xml.out:187 +#: newgrp.1.xml.out:114 newusers.8.xml.out:434 pwck.8.xml.out:263 +#: sg.1.xml.out:103 useradd.8.xml.out:777 userdel.8.xml.out:187 #: vipw.8.xml.out:177 msgid "Group account information." msgstr "содержит информацию о группах" @@ -2012,8 +2162,8 @@ msgstr "содержит информацию о группах" #. (itstool) path: term/filename #. (itstool) path: phrase/filename #. (itstool) path: para/filename -#: chgpasswd.8.xml.out:199 gpasswd.1.xml.out:52 gpasswd.1.xml.out:74 -#: gpasswd.1.xml.out:232 gpasswd.1.xml.out:265 groupadd.8.xml.out:170 +#: chgpasswd.8.xml.out:227 gpasswd.1.xml.out:54 gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:234 gpasswd.1.xml.out:267 groupadd.8.xml.out:170 #: groupadd.8.xml.out:270 groupdel.8.xml.out:154 groupmems.8.xml.out:87 #: groupmems.8.xml.out:88 groupmems.8.xml.out:98 groupmems.8.xml.out:103 #: groupmems.8.xml.out:104 groupmems.8.xml.out:134 groupmems.8.xml.out:135 @@ -2021,18 +2171,18 @@ msgstr "содержит информацию о группах" #: grpck.8.xml.out:93 grpck.8.xml.out:114 grpck.8.xml.out:166 #: grpck.8.xml.out:186 grpck.8.xml.out:217 gshadow.5.xml.out:36 #: gshadow.5.xml.out:141 newgrp.1.xml.out:78 newgrp.1.xml.out:118 -#: newusers.8.xml.out:417 pwconv.8.xml.out:129 sg.1.xml.out:107 -#: useradd.8.xml.out:761 usermod.8.xml.out:563 vipw.8.xml.out:72 +#: newusers.8.xml.out:438 pwconv.8.xml.out:129 sg.1.xml.out:107 +#: useradd.8.xml.out:781 usermod.8.xml.out:580 vipw.8.xml.out:72 #: vipw.8.xml.out:181 msgid "/etc/gshadow" msgstr "/etc/gshadow" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:201 gpasswd.1.xml.out:267 groupadd.8.xml.out:272 +#: chgpasswd.8.xml.out:229 gpasswd.1.xml.out:269 groupadd.8.xml.out:272 #: groupdel.8.xml.out:156 groupmod.8.xml.out:235 grpck.8.xml.out:219 -#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:419 -#: sg.1.xml.out:109 useradd.8.xml.out:763 vipw.8.xml.out:183 +#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:440 +#: sg.1.xml.out:109 useradd.8.xml.out:783 vipw.8.xml.out:183 msgid "Secure group account information." msgstr "содержит защищаемую информацию о группах" @@ -2043,12 +2193,12 @@ msgstr "содержит защищаемую информацию о групп #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:217 gpasswd.1.xml.out:38 gpasswd.1.xml.out:45 -#: gpasswd.1.xml.out:59 gpasswd.1.xml.out:72 gpasswd.1.xml.out:85 -#: gpasswd.1.xml.out:119 groupadd.8.xml.out:354 groupdel.8.xml.out:214 -#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:280 +#: chgpasswd.8.xml.out:245 gpasswd.1.xml.out:40 gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:61 gpasswd.1.xml.out:74 gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:121 groupadd.8.xml.out:354 groupdel.8.xml.out:214 +#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:290 #: newgrp.1.xml.out:142 sg.1.xml.out:131 userdel.8.xml.out:322 -#: usermod.8.xml.out:617 +#: usermod.8.xml.out:634 msgid "gpasswd" msgstr "gpasswd" @@ -2059,19 +2209,19 @@ msgstr "gpasswd" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:220 gpasswd.1.xml.out:280 groupadd.8.xml.out:36 +#: chgpasswd.8.xml.out:248 gpasswd.1.xml.out:282 groupadd.8.xml.out:36 #: groupadd.8.xml.out:43 groupadd.8.xml.out:49 groupadd.8.xml.out:61 #: groupadd.8.xml.out:82 groupadd.8.xml.out:292 groupadd.8.xml.out:300 #: groupdel.8.xml.out:217 groupmems.8.xml.out:218 groupmod.8.xml.out:338 -#: login.defs.5.xml.out:290 useradd.8.xml.out:890 userdel.8.xml.out:325 -#: usermod.8.xml.out:620 +#: login.defs.5.xml.out:303 useradd.8.xml.out:910 userdel.8.xml.out:325 +#: usermod.8.xml.out:637 msgid "groupadd" msgstr "groupadd" #. (itstool) path: author/contrib -#: chpasswd.8.xml.out:21 groupadd.8.xml.out:20 groupdel.8.xml.out:18 -#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:86 -#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:33 +#: chpasswd.8.xml.out:23 groupadd.8.xml.out:20 groupdel.8.xml.out:18 +#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:88 +#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:35 #: sg.1.xml.out:18 useradd.8.xml.out:36 userdel.8.xml.out:23 #: usermod.8.xml.out:24 msgid "Creation, 1991" @@ -2084,22 +2234,22 @@ msgstr "" #. (itstool) path: para/command #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:37 chpasswd.8.xml.out:44 chpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:60 chpasswd.8.xml.out:70 chpasswd.8.xml.out:89 -#: chpasswd.8.xml.out:96 chpasswd.8.xml.out:108 chpasswd.8.xml.out:255 -#: login.defs.5.xml.out:259 passwd.1.xml.out:474 +#: chpasswd.8.xml.out:39 chpasswd.8.xml.out:46 chpasswd.8.xml.out:52 +#: chpasswd.8.xml.out:62 chpasswd.8.xml.out:72 chpasswd.8.xml.out:91 +#: chpasswd.8.xml.out:98 chpasswd.8.xml.out:110 chpasswd.8.xml.out:297 +#: login.defs.5.xml.out:266 passwd.1.xml.out:496 msgid "chpasswd" msgstr "chpasswd" # type: Content of: <refentry><refnamediv><refpurpose> #. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:45 +#: chpasswd.8.xml.out:47 msgid "update passwords in batch mode" msgstr "обновляет пароли в пакетном режиме" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:59 +#: chpasswd.8.xml.out:61 #, fuzzy #| msgid "" #| "The <command>chpasswd</command> command reads a list of user name and " @@ -2118,14 +2268,14 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:65 groupmems.8.xml.out:52 groupmems.8.xml.out:53 +#: chpasswd.8.xml.out:67 groupmems.8.xml.out:52 groupmems.8.xml.out:53 #: groupmems.8.xml.out:83 groupmems.8.xml.out:94 msgid "user_name" msgstr "имя_пользователя" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:68 +#: chpasswd.8.xml.out:70 #, fuzzy #| msgid "" #| "By default the passwords must be supplied in clear-text, and are " @@ -2140,14 +2290,14 @@ msgstr "" "действия пароля, то он будет обновлён." #. (itstool) path: para/option -#: chpasswd.8.xml.out:76 chpasswd.8.xml.out:133 +#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 #, fuzzy #| msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgid "MD5_CRYPT_ENAB" msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:73 +#: chpasswd.8.xml.out:75 #, fuzzy #| msgid "" #| "The default encryption algorithm can be defined for the system with the " @@ -2165,7 +2315,7 @@ msgstr "" "<option>-m</option> или <option>-c</option>." #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:83 #, fuzzy #| msgid "" #| "By default, passwords are encrypted by PAM, but (even if not recommended) " @@ -2181,14 +2331,14 @@ msgstr "" "option>, <option>-m</option> или <option>-c</option>." #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:88 +#: chpasswd.8.xml.out:90 #, fuzzy #| msgid "By default, PAM is used to encrypt the passwords." msgid "Except when PAM is used to encrypt the passwords," msgstr "По умолчанию, для шифрования паролей используется PAM." #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:87 +#: chpasswd.8.xml.out:89 #, fuzzy #| msgid "" #| "<phrase condition=\"pam\">Except when PAM is used to encrypt the " @@ -2205,7 +2355,7 @@ msgstr "" "никаких ошибок." #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:95 #, fuzzy #| msgid "" #| "When PAM is used to encrypt the passwords (and update the passwords in " @@ -2224,17 +2374,17 @@ msgstr "" "работу с кодом ошибки." #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:114 +#: chpasswd.8.xml.out:116 msgid "METHOD" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:131 msgid "By default, PAM is used to encrypt the passwords." msgstr "По умолчанию, для шифрования паролей используется PAM." #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:134 #, fuzzy #| msgid "" #| "By default (if none of the <option>-c</option>, <option>-m</option>, or " @@ -2252,47 +2402,18 @@ msgstr "" "<filename>/etc/login.defs</filename>." #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:178 -msgid "ROUNDS" -msgstr "" - -#. (itstool) path: para/option -#: chpasswd.8.xml.out:198 -#, fuzzy -#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "SHA_CRYPT_MIN_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/option #: chpasswd.8.xml.out:199 -#, fuzzy -#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "SHA_CRYPT_MAX_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:196 -#, fuzzy -#| msgid "" -#| "By default, the number of rounds is defined by the " -#| "<option>SHA_CRYPT_MIN_ROUNDS</option> and <option>SHA_CRYPT_MAX_ROUNDS</" -#| "option> variables in <filename>/etc/login.defs</filename>." -msgid "" -"By default, the number of rounds is defined by the <_:option-1/> and <_:" -"option-2/> variables in <_:filename-3/>." +msgid "ROUNDS" msgstr "" -"По умолчанию, количество раундов определяется переменными " -"<option>SHA_CRYPT_MIN_ROUNDS</option> и <option>SHA_CRYPT_MAX_ROUNDS</" -"option> в <filename>/etc/login.defs</filename>." # type: Content of: <refentry><refsect1><para><filename> #. (itstool) path: term/filename -#: chpasswd.8.xml.out:253 +#: chpasswd.8.xml.out:295 msgid "/etc/pam.d/chpasswd" msgstr "/etc/pam.d/chpasswd" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:255 newusers.8.xml.out:431 passwd.1.xml.out:413 +#: chpasswd.8.xml.out:297 newusers.8.xml.out:452 passwd.1.xml.out:435 #, fuzzy #| msgid "PAM configuration for <command>passwd</command>." msgid "PAM configuration for <_:command-1/>." @@ -2305,17 +2426,17 @@ msgstr "настройки PAM для <command>passwd</command>" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:268 login.defs.5.xml.out:380 newusers.8.xml.out:49 -#: newusers.8.xml.out:56 newusers.8.xml.out:62 newusers.8.xml.out:75 -#: newusers.8.xml.out:96 newusers.8.xml.out:123 newusers.8.xml.out:132 -#: newusers.8.xml.out:151 newusers.8.xml.out:164 newusers.8.xml.out:170 -#: newusers.8.xml.out:172 newusers.8.xml.out:210 newusers.8.xml.out:230 -#: newusers.8.xml.out:252 newusers.8.xml.out:431 useradd.8.xml.out:902 +#: chpasswd.8.xml.out:310 login.defs.5.xml.out:393 newusers.8.xml.out:51 +#: newusers.8.xml.out:58 newusers.8.xml.out:64 newusers.8.xml.out:77 +#: newusers.8.xml.out:98 newusers.8.xml.out:125 newusers.8.xml.out:134 +#: newusers.8.xml.out:153 newusers.8.xml.out:166 newusers.8.xml.out:172 +#: newusers.8.xml.out:174 newusers.8.xml.out:212 newusers.8.xml.out:232 +#: newusers.8.xml.out:254 newusers.8.xml.out:452 useradd.8.xml.out:922 msgid "newusers" msgstr "newusers" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:270 grpck.8.xml.out:285 passwd.1.xml.out:482 +#: chpasswd.8.xml.out:312 grpck.8.xml.out:285 passwd.1.xml.out:507 msgid "<_:citerefentry-1/>," msgstr "" @@ -2326,21 +2447,21 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:276 groupadd.8.xml.out:366 groupdel.8.xml.out:223 -#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:462 -#: newusers.8.xml.out:467 useradd.8.xml.out:52 useradd.8.xml.out:59 +#: chpasswd.8.xml.out:318 groupadd.8.xml.out:366 groupdel.8.xml.out:223 +#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:481 +#: newusers.8.xml.out:488 useradd.8.xml.out:52 useradd.8.xml.out:59 #: useradd.8.xml.out:64 useradd.8.xml.out:71 useradd.8.xml.out:75 #: useradd.8.xml.out:87 useradd.8.xml.out:90 useradd.8.xml.out:103 #: useradd.8.xml.out:129 useradd.8.xml.out:187 useradd.8.xml.out:209 -#: useradd.8.xml.out:239 useradd.8.xml.out:284 useradd.8.xml.out:341 -#: useradd.8.xml.out:472 useradd.8.xml.out:584 useradd.8.xml.out:586 -#: useradd.8.xml.out:690 useradd.8.xml.out:808 userdel.8.xml.out:342 -#: usermod.8.xml.out:640 +#: useradd.8.xml.out:239 useradd.8.xml.out:286 useradd.8.xml.out:343 +#: useradd.8.xml.out:474 useradd.8.xml.out:604 useradd.8.xml.out:606 +#: useradd.8.xml.out:710 useradd.8.xml.out:828 userdel.8.xml.out:342 +#: usermod.8.xml.out:657 msgid "useradd" msgstr "useradd" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:263 newusers.8.xml.out:451 +#: chpasswd.8.xml.out:305 newusers.8.xml.out:472 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." msgstr "" @@ -2374,8 +2495,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:517 -#: useradd.8.xml.out:655 usermod.8.xml.out:357 +#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 #, fuzzy #| msgid "pw_shell" msgid "--shell" @@ -2383,8 +2504,8 @@ msgstr "pw_shell" #. (itstool) path: term/replaceable #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:517 -#: useradd.8.xml.out:522 useradd.8.xml.out:655 useradd.8.xml.out:662 +#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:524 useradd.8.xml.out:675 useradd.8.xml.out:682 #: usermod.8.xml.out:357 msgid "SHELL" msgstr "" @@ -2425,12 +2546,13 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:153 su.1.xml.out:198 +#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:130 chsh.1.xml.out:143 +#: chsh.1.xml.out:172 chsh.1.xml.out:184 su.1.xml.out:198 msgid "/etc/shells" msgstr "/etc/shells" #. (itstool) path: para/filename -#: chsh.1.xml.out:123 +#: chsh.1.xml.out:123 chsh.1.xml.out:142 msgid "/bin/rsh" msgstr "" @@ -2464,12 +2586,103 @@ msgstr "" "как, если пользователь случайно изменит свою регистрационную оболочку на эту " "ограниченную оболочку, то не сможет восстановить её первоначальное значение." +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chsh.1.xml.out:132 chsh.1.xml.out:181 +msgid "%vendordir%/shells" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:133 +msgid "%vendordir%/shells.d/*" +msgstr "" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> +#. (itstool) path: para/filename +#: chsh.1.xml.out:134 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/*" +msgstr "/etc/shells" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> +#. (itstool) path: para/filename +#: chsh.1.xml.out:135 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/@filename@" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:136 +msgid "%vendordir%/shells.d/@filename@" +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:128 +msgid "" +"The only restriction placed on the login shell is that the command name must " +"be listed in <_:filename-1/>. If this file does not exist, the definitions " +"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" +"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " +"used. If the invoker is the superuser any value may be added regardless what " +"is defined in the configuration files. An account with a restricted login " +"shell may not change her login shell." +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:141 +msgid "" +"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " +"since accidentally changing to a restricted shell would prevent the user " +"from ever changing her login shell back to its original value." +msgstr "" + # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: chsh.1.xml.out:155 +#: chsh.1.xml.out:174 msgid "List of valid login shells." msgstr "содержит список разрешённых регистрационных оболочек" +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#. (itstool) path: listitem/para +#: chsh.1.xml.out:177 +#, fuzzy +#| msgid "List of valid login shells." +msgid "User defined list of valid login shells." +msgstr "содержит список разрешённых регистрационных оболочек" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:183 +msgid "Default configuration file if <_:filename-1/> does not exist." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:188 +msgid "%vendordir%/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:190 +msgid "Directory for additional vendor specific configuration files." +msgstr "" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> +#. (itstool) path: term/filename +#: chsh.1.xml.out:194 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d" +msgstr "/etc/shells" + +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#. (itstool) path: listitem/para +#: chsh.1.xml.out:196 +#, fuzzy +#| msgid "Directory containing default files." +msgid "Directory for additional user defined configuration files." +msgstr "каталог, содержащий файлы по умолчанию" + # type: Content of: <refentry><refsect1><para><command> #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname @@ -2488,7 +2701,7 @@ msgstr "проверяет и изменяет пароль согласно п # type: Content of: <refentry><refsynopsisdiv><cmdsynopsis><arg><replaceable> #. (itstool) path: arg/replaceable -#: expiry.1.xml.out:52 gpasswd.1.xml.out:61 +#: expiry.1.xml.out:52 gpasswd.1.xml.out:63 msgid "option" msgstr "параметр" @@ -2533,7 +2746,7 @@ msgstr "Принудительно меняет пароль, если его с #. (itstool) path: author/contrib #: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 -#: passwd.1.xml.out:24 passwd.5.xml.out:17 porttime.5.xml.out:17 +#: passwd.1.xml.out:26 passwd.5.xml.out:17 porttime.5.xml.out:17 #: shadow.3.xml.out:17 shadow.5.xml.out:17 su.1.xml.out:34 msgid "Creation, 1989" msgstr "" @@ -2556,7 +2769,7 @@ msgstr "faillog" # type: Content of: <refentry><refmeta><refmiscinfo> #. (itstool) path: refmeta/refmiscinfo #: faillog.5.xml.out:35 gshadow.5.xml.out:24 limits.5.xml.out:37 -#: login.access.5.xml.out:36 login.defs.5.xml.out:104 passwd.5.xml.out:35 +#: login.access.5.xml.out:36 login.defs.5.xml.out:106 passwd.5.xml.out:35 #: porttime.5.xml.out:35 shadow.5.xml.out:35 suauth.5.xml.out:35 #, fuzzy #| msgid "File Formats and Conversions" @@ -2681,14 +2894,14 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:124 -#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 +#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 #: usermod.8.xml.out:78 usermod.8.xml.out:210 msgid "-a" msgstr "-a" #. (itstool) path: term/option -#: faillog.8.xml.out:72 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 passwd.1.xml.out:153 msgid "--all" msgstr "" @@ -3004,8 +3217,8 @@ msgstr "" #: login.1.xml.out:108 login.1.xml.out:112 login.1.xml.out:119 #: login.1.xml.out:171 login.1.xml.out:177 login.1.xml.out:230 #: login.1.xml.out:238 login.1.xml.out:247 login.1.xml.out:253 -#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:343 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:530 newgrp.1.xml.out:133 +#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:356 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:549 newgrp.1.xml.out:133 #: nologin.8.xml.out:60 passwd.5.xml.out:125 passwd.5.xml.out:132 #: passwd.5.xml.out:179 porttime.5.xml.out:121 shadow.5.xml.out:265 #: sg.1.xml.out:122 su.1.xml.out:415 @@ -3013,31 +3226,31 @@ msgid "login" msgstr "login" #. (itstool) path: author/firstname -#: gpasswd.1.xml.out:20 +#: gpasswd.1.xml.out:22 msgid "Rafal" msgstr "" #. (itstool) path: author/surname -#: gpasswd.1.xml.out:21 +#: gpasswd.1.xml.out:23 msgid "Maszkowski" msgstr "" #. (itstool) path: author/contrib -#: gpasswd.1.xml.out:22 login.access.5.xml.out:18 pwconv.8.xml.out:23 +#: gpasswd.1.xml.out:24 login.access.5.xml.out:18 pwconv.8.xml.out:23 #: suauth.5.xml.out:17 msgid "Creation, 1996" msgstr "" # type: Content of: <refentry><refnamediv><refpurpose> #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:49 #, fuzzy #| msgid "administer <placeholder-1/>" msgid "administer <_:filename-1/>" msgstr "управление <placeholder-1/>" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:52 #, fuzzy #| msgid "administer <placeholder-1/> and <placeholder-2/>" msgid "administer <_:filename-1/> and <_:filename-2/>" @@ -3048,9 +3261,9 @@ msgstr "управление <placeholder-1/> и <placeholder-2/>" #. (itstool) path: para/replaceable #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:64 gpasswd.1.xml.out:89 gpasswd.1.xml.out:129 -#: gpasswd.1.xml.out:142 gpasswd.1.xml.out:177 gpasswd.1.xml.out:181 -#: gpasswd.1.xml.out:193 gpasswd.1.xml.out:197 gpasswd.1.xml.out:292 +#: gpasswd.1.xml.out:66 gpasswd.1.xml.out:91 gpasswd.1.xml.out:131 +#: gpasswd.1.xml.out:144 gpasswd.1.xml.out:179 gpasswd.1.xml.out:183 +#: gpasswd.1.xml.out:195 gpasswd.1.xml.out:199 gpasswd.1.xml.out:294 #: grpck.8.xml.out:49 grpck.8.xml.out:188 grpck.8.xml.out:280 #: gshadow.5.xml.out:156 limits.5.xml.out:138 newgrp.1.xml.out:48 #: newgrp.1.xml.out:145 pwck.8.xml.out:336 pwconv.8.xml.out:114 @@ -3059,19 +3272,19 @@ msgid "group" msgstr "группа" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:73 +#: gpasswd.1.xml.out:75 msgid ", and <_:filename-1/>" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:78 #, fuzzy #| msgid "administrators" msgid "administrators," msgstr "администраторы" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:71 +#: gpasswd.1.xml.out:73 msgid "" "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" ">. Every group can have <_:phrase-4/> members and a password." @@ -3080,14 +3293,14 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: para/option #. (itstool) path: term/option -#: gpasswd.1.xml.out:80 gpasswd.1.xml.out:112 gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 #, fuzzy #| msgid "-" msgid "-A" msgstr "-" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:79 +#: gpasswd.1.xml.out:81 #, fuzzy #| msgid "" #| "System administrators can use the <option>-A</option> option to define " @@ -3104,21 +3317,21 @@ msgstr "" "группы." #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:86 +#: gpasswd.1.xml.out:88 #, fuzzy #| msgid "administrators" msgid "a group administrator" msgstr "администраторы" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:89 #, fuzzy #| msgid "administrators" msgid "a system administrator" msgstr "администраторы" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:84 +#: gpasswd.1.xml.out:86 msgid "" "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " "prompts for the new password of the <_:replaceable-4/>." @@ -3130,8 +3343,8 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:93 gpasswd.1.xml.out:180 gpasswd.1.xml.out:196 -#: gpasswd.1.xml.out:277 groups.1.xml.out:71 groups.1.xml.out:92 +#: gpasswd.1.xml.out:95 gpasswd.1.xml.out:182 gpasswd.1.xml.out:198 +#: gpasswd.1.xml.out:279 groups.1.xml.out:71 groups.1.xml.out:92 #: gshadow.5.xml.out:76 gshadow.5.xml.out:165 newgrp.1.xml.out:34 #: newgrp.1.xml.out:41 newgrp.1.xml.out:47 newgrp.1.xml.out:55 #: newgrp.1.xml.out:63 newgrp.1.xml.out:66 sg.1.xml.out:60 sg.1.xml.out:64 @@ -3140,7 +3353,7 @@ msgid "newgrp" msgstr "newgrp" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:93 #, fuzzy #| msgid "" #| "If a password is set the members can still use " @@ -3157,13 +3370,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "Замечания о паролях групп" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "" "Group passwords are an inherent security problem since more than one person " "is permitted to know the password. However, groups are a useful tool for " @@ -3174,7 +3387,7 @@ msgstr "" "совместной работы различных пользователей." #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 #, fuzzy #| msgid "" #| "Except for the <option>-A</option> and <option>-M</option> options, the " @@ -3187,12 +3400,12 @@ msgstr "" "параметры нельзя использовать вместе." #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "Параметры не могут быть указаны одновременно." #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 groupmems.8.xml.out:83 +#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 msgid "--add" msgstr "" @@ -3200,14 +3413,14 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 gpasswd.1.xml.out:128 gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 gpasswd.1.xml.out:205 gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 #: groups.1.xml.out:48 groups.1.xml.out:59 msgid "user" msgstr "имя" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 #, fuzzy #| msgid "" #| "Add the <replaceable>user</replaceable> to the named <replaceable>group</" @@ -3218,12 +3431,12 @@ msgstr "" "<replaceable>группу</replaceable>." #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 groupmems.8.xml.out:94 passwd.1.xml.out:168 +#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 msgid "--delete" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 #, fuzzy #| msgid "" #| "Remove the <replaceable>user</replaceable> from the named " @@ -3235,19 +3448,19 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 #, fuzzy #| msgid "-" msgid "-Q" msgstr "-" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 #, fuzzy #| msgid "" #| "Remove the password from the named <replaceable>group</replaceable>. The " @@ -3264,12 +3477,12 @@ msgstr "" "command> для входа в указанную <replaceable>группу</replaceable>." #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 #, fuzzy #| msgid "" #| "Restrict the access to the named <replaceable>group</replaceable>. The " @@ -3287,14 +3500,14 @@ msgstr "" "<replaceable>группу</replaceable>." #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 #, fuzzy #| msgid "administrators" msgid "--administrators" msgstr "администраторы" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 #, fuzzy msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "" @@ -3303,12 +3516,12 @@ msgstr "" # type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 msgid "Set the list of administrative users." msgstr "Задать список администраторов группы." #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 #, fuzzy #| msgid "members" msgid "--members" @@ -3316,25 +3529,25 @@ msgstr "члены" # type: Content of: <refentry><refsect1><itemizedlist><listitem><para> #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 msgid "Set the list of group members." msgstr "Задать список членов группы." #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 #, fuzzy msgid "and <_:filename-1/> files." msgstr "-a <placeholder-1/>" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 #, fuzzy #| msgid "file" msgid "file." msgstr "файл" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 #, fuzzy #| msgid "" #| "This tool only operates on the <filename>/etc/group</filename><phrase " @@ -3359,11 +3572,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 groupadd.8.xml.out:357 groupdel.8.xml.out:34 +#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 #: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:299 useradd.8.xml.out:893 -#: userdel.8.xml.out:328 usermod.8.xml.out:623 +#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 +#: userdel.8.xml.out:328 usermod.8.xml.out:640 msgid "groupdel" msgstr "groupdel" @@ -3374,11 +3587,11 @@ msgstr "groupdel" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 groupadd.8.xml.out:360 groupdel.8.xml.out:220 +#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 #: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 userdel.8.xml.out:331 usermod.8.xml.out:626 +#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 msgid "groupmod" msgstr "groupmod" @@ -3389,10 +3602,10 @@ msgstr "groupmod" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 grpck.8.xml.out:33 grpck.8.xml.out:40 +#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 #: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 #: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:318 +#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 #: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 msgid "grpck" msgstr "grpck" @@ -3403,7 +3616,7 @@ msgstr "grpck" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 grpck.8.xml.out:95 grpck.8.xml.out:287 +#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 #: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 #: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 #: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 @@ -3411,12 +3624,12 @@ msgid "gshadow" msgstr "gshadow" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 newgrp.1.xml.out:146 sg.1.xml.out:135 +#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 newgrp.1.xml.out:128 sg.1.xml.out:117 +#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -3476,8 +3689,8 @@ msgstr "Имена пользователей могут быть длиной #: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 #: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 #: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:391 -#: useradd.8.xml.out:396 useradd.8.xml.out:557 useradd.8.xml.out:639 +#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 +#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 msgid "-g" msgstr "-g" @@ -3503,7 +3716,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:639 usermod.8.xml.out:174 +#: useradd.8.xml.out:659 usermod.8.xml.out:174 msgid "--gid" msgstr "" @@ -3513,8 +3726,8 @@ msgstr "" #. (itstool) path: para/option #: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 #: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "GID" @@ -3559,7 +3772,7 @@ msgid "GID_MAX" msgstr "GID_MAX GID_MIN" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:111 useradd.8.xml.out:541 +#: groupadd.8.xml.out:111 useradd.8.xml.out:543 #, fuzzy #| msgid "" #| "See also the <option>-r</option> option and the <option>UID_MAX</option> " @@ -3572,33 +3785,33 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:125 groupadd.8.xml.out:131 groupadd.8.xml.out:134 -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:303 -#: useradd.8.xml.out:314 useradd.8.xml.out:317 useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 +#: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 +#: useradd.8.xml.out:322 #, fuzzy #| msgid "-" msgid "-K" msgstr "-" #. (itstool) path: term/option -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "--key" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "KEY" msgstr "КЛЮЧ" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "VALUE" msgstr "ЗНАЧЕНИЕ" #. (itstool) path: varlistentry/term -#: groupadd.8.xml.out:124 useradd.8.xml.out:302 +#: groupadd.8.xml.out:124 useradd.8.xml.out:304 #, fuzzy msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" msgstr "" @@ -3622,14 +3835,14 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:134 useradd.8.xml.out:320 +#: groupadd.8.xml.out:134 useradd.8.xml.out:322 #, fuzzy #| msgid "10" msgid "100" msgstr "10" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:321 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:323 msgid "499" msgstr "" @@ -3650,7 +3863,7 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: term/replaceable #: groupadd.8.xml.out:138 groupadd.8.xml.out:333 groupdel.8.xml.out:192 -#: groupmod.8.xml.out:295 useradd.8.xml.out:853 userdel.8.xml.out:265 +#: groupmod.8.xml.out:295 useradd.8.xml.out:873 userdel.8.xml.out:265 msgid "10" msgstr "10" @@ -3670,7 +3883,7 @@ msgstr "" "replaceable>=<replaceable>499</replaceable> пока не работает." #. (itstool) path: term/option -#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:405 +#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 #: usermod.8.xml.out:271 msgid "--non-unique" msgstr "" @@ -3691,14 +3904,14 @@ msgstr "" #: groupadd.8.xml.out:158 groupmems.8.xml.out:55 groupmems.8.xml.out:130 #: groupmod.8.xml.out:143 login.1.xml.out:80 login.1.xml.out:88 #: login.1.xml.out:95 login.1.xml.out:212 su.1.xml.out:207 -#: useradd.8.xml.out:425 usermod.8.xml.out:237 usermod.8.xml.out:290 +#: useradd.8.xml.out:427 usermod.8.xml.out:237 usermod.8.xml.out:290 #: usermod.8.xml.out:411 vipw.8.xml.out:102 msgid "-p" msgstr "-p" # type: Content of: <refentry><refsect1><para><emphasis> #. (itstool) path: term/option -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 #, fuzzy #| msgid "passwd" @@ -3706,7 +3919,7 @@ msgid "--password" msgstr "passwd" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "PASSWORD" msgstr "" @@ -3715,8 +3928,8 @@ msgstr "" #: groupadd.8.xml.out:163 groupmod.8.xml.out:148 gshadow.5.xml.out:62 #: gshadow.5.xml.out:68 passwd.5.xml.out:103 passwd.5.xml.out:109 #: passwd.5.xml.out:170 shadow.5.xml.out:88 shadow.5.xml.out:94 -#: useradd.8.xml.out:430 useradd.8.xml.out:887 usermod.8.xml.out:295 -#: usermod.8.xml.out:614 +#: useradd.8.xml.out:432 useradd.8.xml.out:907 usermod.8.xml.out:295 +#: usermod.8.xml.out:631 msgid "crypt" msgstr "" @@ -3727,11 +3940,11 @@ msgstr "" #: groupadd.8.xml.out:164 groupadd.8.xml.out:315 groupmod.8.xml.out:148 #: groupmod.8.xml.out:271 groups.1.xml.out:68 groups.1.xml.out:104 #: grpck.8.xml.out:255 gshadow.5.xml.out:63 gshadow.5.xml.out:69 -#: passwd.1.xml.out:443 passwd.5.xml.out:104 passwd.5.xml.out:110 +#: passwd.1.xml.out:465 passwd.5.xml.out:104 passwd.5.xml.out:110 #: passwd.5.xml.out:170 passwd.5.xml.out:176 pwck.8.xml.out:305 #: shadow.3.xml.out:34 shadow.3.xml.out:217 shadow.5.xml.out:89 -#: shadow.5.xml.out:95 useradd.8.xml.out:431 useradd.8.xml.out:829 -#: useradd.8.xml.out:887 usermod.8.xml.out:296 usermod.8.xml.out:614 +#: shadow.5.xml.out:95 useradd.8.xml.out:433 useradd.8.xml.out:849 +#: useradd.8.xml.out:907 usermod.8.xml.out:296 usermod.8.xml.out:631 msgid "3" msgstr "3" @@ -3751,7 +3964,7 @@ msgid "" msgstr "" #. (itstool) path: para/emphasis -#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:444 +#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 #: userdel.8.xml.out:93 usermod.8.xml.out:299 msgid "Note:" msgstr "" @@ -3772,7 +3985,7 @@ msgstr "" "другими пользователям в списке процессов." #. (itstool) path: listitem/para -#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:448 +#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 #: usermod.8.xml.out:309 msgid "" "You should make sure the password respects the system's password policy." @@ -3780,7 +3993,7 @@ msgstr "" "Вы должны проверить, что пароль соответствует политике системных паролей." #. (itstool) path: term/option -#: groupadd.8.xml.out:185 newusers.8.xml.out:287 useradd.8.xml.out:456 +#: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 msgid "--system" msgstr "" @@ -3821,47 +4034,12 @@ msgstr "" "<filename>login.defs</filename>, а не из <option>GID_MIN</option>-" "<option>GID_MAX</option>." -# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -#, fuzzy -#| msgid "-" -msgid "-P" -msgstr "-" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "--prefix" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 groupadd.8.xml.out:219 groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 groupdel.8.xml.out:108 groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 groupmod.8.xml.out:183 useradd.8.xml.out:502 -#: useradd.8.xml.out:507 userdel.8.xml.out:136 userdel.8.xml.out:140 -#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 useradd.8.xml.out:505 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. 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." -msgstr "" - # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:397 -#: useradd.8.xml.out:549 useradd.8.xml.out:558 usermod.8.xml.out:238 +#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 +#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 #, fuzzy #| msgid "-" @@ -3887,7 +4065,7 @@ msgstr "Администраторы могут менять пароль или #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:386 useradd.8.xml.out:397 useradd.8.xml.out:558 +#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 #, fuzzy #| msgid "-" msgid "-N" @@ -3895,15 +4073,15 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:448 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:398 -#: useradd.8.xml.out:559 userdel.8.xml.out:86 userdel.8.xml.out:296 +#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 +#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 +#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 +#: useradd.8.xml.out:558 #, fuzzy #| msgid "" #| "The default behavior (if the <option>-g</option>, <option>-N</option>, " @@ -3946,14 +4124,14 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:463 useradd.8.xml.out:831 +#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "недопустимое значение параметра" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable #: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:449 pwck.8.xml.out:311 useradd.8.xml.out:835 +#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 msgid "4" msgstr "4" @@ -3967,7 +4145,7 @@ msgstr "такой UID уже существует (и не задан пара # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:847 +#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 msgid "9" msgstr "9" @@ -3981,7 +4159,7 @@ msgstr "такое имя группы уже используется" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:855 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "не удалось изменить файл групп" @@ -3994,11 +4172,11 @@ msgstr "не удалось изменить файл групп" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:480 useradd.8.xml.out:913 +#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 #: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 #: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 #: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:643 +#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 msgid "userdel" msgstr "userdel" @@ -4010,11 +4188,11 @@ msgstr "userdel" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:490 passwd.1.xml.out:488 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:916 +#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 +#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 #: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 #: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:522 +#: usermod.8.xml.out:263 usermod.8.xml.out:539 msgid "usermod" msgstr "usermod" @@ -4041,8 +4219,8 @@ msgstr "удаляет группу" #: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 #: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 #: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:392 -#: useradd.8.xml.out:639 useradd.8.xml.out:648 usermod.8.xml.out:174 +#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 +#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 msgid "GROUP" msgstr "ГРУППА" @@ -4100,14 +4278,14 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:461 -#: pwck.8.xml.out:323 useradd.8.xml.out:841 userdel.8.xml.out:253 +#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 +#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 msgid "6" msgstr "6" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:843 +#: groupdel.8.xml.out:182 useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "указанная группа не существует" @@ -4154,7 +4332,7 @@ msgstr "" #: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 #: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 #: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "groupmems" @@ -4350,7 +4528,7 @@ msgstr "" #| "\t$ groupmems -g groups -a gk4\n" #| " " msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " +"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " "groupmems -g groups -a gk4" msgstr "" "\n" @@ -4476,7 +4654,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:246 +#: groupmod.8.xml.out:121 passwd.1.xml.out:242 #, fuzzy #| msgid "-" msgid "-n" @@ -4595,7 +4773,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:859 userdel.8.xml.out:271 +#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 msgid "12" msgstr "12" @@ -4838,7 +5016,7 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:67 newusers.8.xml.out:75 +#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 msgid "file" msgstr "файл" @@ -4883,7 +5061,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:134 login.defs.5.xml.out:136 +#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "" @@ -4917,8 +5095,8 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 +#: passwd.1.xml.out:302 #, fuzzy #| msgid "-" msgid "-S" @@ -5193,7 +5371,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:324 pwconv.8.xml.out:48 +#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 #: pwconv.8.xml.out:166 pwconv.8.xml.out:208 msgid "grpconv" @@ -5208,7 +5386,7 @@ msgstr "grpconv" #. (itstool) path: varlistentry/term #: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 #: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "lastlog" @@ -5276,7 +5454,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:592 +#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 #, fuzzy #| msgid "-" @@ -5724,7 +5902,7 @@ msgstr "" #. (itstool) path: para/command #: limits.5.xml.out:122 login.1.xml.out:83 login.1.xml.out:91 #: login.1.xml.out:197 su.1.xml.out:70 su.1.xml.out:82 su.1.xml.out:95 -#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:775 +#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:795 msgid "username" msgstr "имя_пользователя" @@ -6402,8 +6580,8 @@ msgstr "chsh" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:436 login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 newgrp.1.xml.out:136 passwd.5.xml.out:197 +#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 #: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 #: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 #: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 @@ -6627,13 +6805,13 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "содержит конфигурацию подсистемы теневых паролей" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 #, fuzzy #| msgid "" #| "The <filename>/etc/login.defs</filename> file defines the site-specific " @@ -6652,7 +6830,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "" "This file is a readable text file, each line of the file describing one " "configuration parameter. The lines consist of a configuration name and " @@ -6668,14 +6846,14 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 useradd.8.xml.out:242 useradd.8.xml.out:380 +#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 #: userdel.8.xml.out:87 userdel.8.xml.out:297 msgid "yes" msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term><replaceable> #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 #, fuzzy #| msgid "0" msgid "0x" @@ -6683,7 +6861,7 @@ msgstr "0" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 #, fuzzy #| msgid "" #| "Parameter values may be of four types: strings, booleans, numbers, and " @@ -6719,33 +6897,33 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "Возможны следующие параметры настройки:" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 pwconv.8.xml.out:146 useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 pwconv.8.xml.out:145 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 pwconv.8.xml.out:147 +#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 #, fuzzy #| msgid "" #| "<option>PASS_MAX_DAYS</option>, <option>PASS_MIN_DAYS</option> and " @@ -6763,13 +6941,13 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "ПЕРЕКРЁСТНЫЕ ССЫЛКИ" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "" "The following cross references show which programs in the shadow password " "suite use which parameters." @@ -6781,8 +6959,8 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 login.defs.5.xml.out:423 login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 pwck.8.xml.out:75 pwck.8.xml.out:216 +#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 #: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 #: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 msgid "USE_TCB" @@ -6790,60 +6968,76 @@ msgstr "USE_TCB" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "CHFN_AUTH" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 #, fuzzy #| msgid "CHSH_AUTH LOGIN_STRING" msgid "LOGIN_STRING" msgstr "CHSH_AUTH LOGIN_STRING" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 login.defs.5.xml.out:264 login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 +#, fuzzy +#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 login.defs.5.xml.out:282 +#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 #, fuzzy #| msgid "" #| "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <phrase " #| "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" +"phrase-2/> <_:phrase-3/>" msgstr "" "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <phrase " "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 msgid "CHSH_AUTH LOGIN_STRING" msgstr "CHSH_AUTH LOGIN_STRING" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 login.defs.5.xml.out:307 login.defs.5.xml.out:313 -#: login.defs.5.xml.out:320 login.defs.5.xml.out:326 login.defs.5.xml.out:332 +#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 +#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "MAX_MEMBERS_PER_GROUP" @@ -6852,29 +7046,29 @@ msgstr "MAX_MEMBERS_PER_GROUP" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 pwconv.8.xml.out:49 pwconv.8.xml.out:73 +#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 #: pwconv.8.xml.out:208 msgid "grpunconv" msgstr "grpunconv" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 #, fuzzy #| msgid "SYSLOG_SG_ENAB" msgid "FAILLOG_ENAB" @@ -6882,36 +7076,36 @@ msgstr "SYSLOG_SG_ENAB" # type: Content of: <refentry><refsect1><title> #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 #, fuzzy #| msgid "FILE" msgid "FTMP_FILE" msgstr "ФАЙЛ" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "" "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " "<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " @@ -6922,18 +7116,18 @@ msgstr "" # type: Content of: <refentry><refsect1><para><citerefentry><refentrytitle> #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 msgid "newgrp / sg" msgstr "newgrp / sg" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "SYSLOG_SG_ENAB" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 +#: login.defs.5.xml.out:395 #, fuzzy #| msgid "" #| "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " @@ -6942,10 +7136,11 @@ msgstr "SYSLOG_SG_ENAB" #| "phrase> SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " #| "UMASK" msgid "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " +"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" +"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " +"UMASK <_:phrase-3/>" msgstr "" "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <phrase " @@ -6953,28 +7148,29 @@ msgstr "" "SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 +#: login.defs.5.xml.out:417 #, fuzzy #| msgid "" #| "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " #| "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <phrase " #| "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" msgid "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " +"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <phrase " "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 #, fuzzy #| msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" @@ -6987,7 +7183,7 @@ msgstr "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 passwd.5.xml.out:188 pwconv.8.xml.out:39 +#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 #: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 #: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 @@ -7001,7 +7197,7 @@ msgstr "pwconv" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 passwd.5.xml.out:191 pwconv.8.xml.out:47 +#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 #: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 #: pwconv.8.xml.out:166 shadow.5.xml.out:280 @@ -7009,22 +7205,22 @@ msgid "pwunconv" msgstr "pwunconv" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " "<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" @@ -7033,29 +7229,23 @@ msgstr "" # type: Content of: <refentry><refsect1><para><citerefentry><refentrytitle> #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 passwd.5.xml.out:200 shadow.5.xml.out:286 +#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 msgid "sulogin" msgstr "sulogin" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +msgid "ENV_HZ ENV_TZ" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 #, fuzzy #| msgid "" #| "CREATE_HOME GID_MAX GID_MIN MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS " @@ -7075,12 +7265,12 @@ msgstr "" "USE_TCB</phrase>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 #, fuzzy #| msgid "" #| "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB " @@ -7093,7 +7283,7 @@ msgstr "" "condition=\"tcb\">TCB_SYMLINKS USE_TCB</phrase>" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 #, fuzzy #| msgid "" #| "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <phrase " @@ -7109,19 +7299,19 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 vipw.8.xml.out:35 vipw.8.xml.out:42 +#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 #: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 msgid "vipw" msgstr "vipw" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 pwconv.8.xml.out:193 suauth.5.xml.out:179 +#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 msgid "BUGS" msgstr "ОШИБКИ РЕАЛИЗАЦИИ" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 #, fuzzy #| msgid "" #| "Much of the functionality that used to be provided by the shadow password " @@ -7149,14 +7339,14 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 #, fuzzy #| msgid "pw_name" msgid "pam" msgstr "pw_name" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." @@ -7320,14 +7510,14 @@ msgstr "" # type: Content of: <refentry><refnamediv><refpurpose> #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "" "обновляет и создаёт новые учётные записи пользователей в пакетном режиме" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 #, fuzzy #| msgid "" #| "The <command>newusers</command> command reads a <replaceable>file</" @@ -7350,23 +7540,23 @@ msgstr "" "citerefentry>) за исключением:" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 msgid "pw_name" msgstr "pw_name" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "Имя пользователя." #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 #, fuzzy #| msgid "" #| "It can be the name of a new user or the name of an existing user (or an " @@ -7385,13 +7575,13 @@ msgstr "" # type: Content of: <refentry><refsect1><para><emphasis> #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "pw_passwd" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "" "This field will be encrypted and used as the new value of the encrypted " "password." @@ -7401,17 +7591,17 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 msgid "pw_uid" msgstr " pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "Это поле используется для определения UID пользователя." #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 #, fuzzy #| msgid "" #| "If the field is empty, an new (unused) UID will be defined automatically " @@ -7424,13 +7614,13 @@ msgstr "" "определяется новый (неиспользованный) UID." #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "" "Если в этом поле указано число, то оно будет использовано в качестве UID." #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 #, fuzzy #| msgid "" #| "If this field contains the name of an existing user (or the name of an " @@ -7446,7 +7636,7 @@ msgstr "" "пользователя." #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "" "If the UID of an existing user is changed, the files ownership of the user's " "file should be fixed manually." @@ -7456,18 +7646,18 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "" "Это поле используется для определения ID первичной группы пользователя." #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 #, fuzzy #| msgid "" #| "If this field contains the name of an existing group (or a group created " @@ -7483,7 +7673,7 @@ msgstr "" "пользователя будет использован GID этой группы." #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "" "If this field is a number, this number will be used as the primary group ID " "of the user. If no groups exist with this GID, a new group will be created " @@ -7494,7 +7684,7 @@ msgstr "" "создана новая группа с этим GID и именем пользователя." #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 #, fuzzy #| msgid "" #| "If this field is empty, a new group will be created with the name of the " @@ -7512,7 +7702,7 @@ msgstr "" "группы)." #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 #, fuzzy #| msgid "" #| "If this field contains the name of a group which does not exist (and was " @@ -7533,33 +7723,33 @@ msgstr "" "и GID новой группы)." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "pw_gecos" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "Это поле копируется в поле GECOS записи пользователя." # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><emphasis> #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "pw_dir" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "Это поле используется для определения домашнего каталога пользователя." #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "" "If this field does not specify an existing directory, the specified " "directory is created, with ownership set to the user being created or " @@ -7572,7 +7762,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 #, fuzzy #| msgid "" #| "If the home directory of an existing user is changed, <command>newusers</" @@ -7588,12 +7778,12 @@ msgstr "" "каталога в новое место. Это нужно выполнить вручную." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:218 +#: newusers.8.xml.out:220 msgid "pw_shell" msgstr "pw_shell" #. (itstool) path: listitem/para -#: newusers.8.xml.out:221 +#: newusers.8.xml.out:223 msgid "" "This field defines the shell of the user. No checks are performed on this " "field." @@ -7602,7 +7792,7 @@ msgstr "" "делается." #. (itstool) path: refsect1/para -#: newusers.8.xml.out:229 +#: newusers.8.xml.out:231 #, fuzzy #| msgid "" #| "<command>newusers</command> first tries to create or change all the " @@ -7621,7 +7811,7 @@ msgstr "" "записи в базы данных), то изменения в базы не сохраняются." #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "" "During this first pass, users are created with a locked password (and " "passwords are not changed for the users which are not created). A second " @@ -7635,7 +7825,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "" "This command is intended to be used in a large system environment where many " "accounts are updated at a single time." @@ -7644,48 +7834,57 @@ msgstr "" "один раз обновляется несколько учётных записей." #. (itstool) path: term/option -#: newusers.8.xml.out:257 pwck.8.xml.out:164 useradd.8.xml.out:108 +#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 #: usermod.8.xml.out:89 msgid "--badname" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 pwck.8.xml.out:167 useradd.8.xml.out:111 +#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 #: usermod.8.xml.out:92 msgid "Allow names that do not conform to standards." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "" +"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " +"support these methods." +msgstr "" +"Возможные методы: DES, MD5, NONE и SHA256 или SHA512, если эти методы " +"поддерживается libc." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 useradd.8.xml.out:461 msgid "Create a system account." msgstr "Создать системную учётную запись." #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:319 -#: useradd.8.xml.out:468 useradd.8.xml.out:538 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 +#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 msgid "UID_MIN" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:321 -#: useradd.8.xml.out:468 useradd.8.xml.out:543 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 +#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 msgid "UID_MAX" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 useradd.8.xml.out:462 +#: newusers.8.xml.out:295 useradd.8.xml.out:464 #, fuzzy #| msgid "" #| "System users will be created with no aging information in <filename>/etc/" @@ -7707,9 +7906,45 @@ msgstr "" "<option>UID_MAX</option> (это же касается и части с <option>GID</option> при " "создании групп)." +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default is 13." +msgstr "" +"Минимальное значение равно 1000, а максимальное значение равно 999,999,999." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default is 5000." +msgstr "" +"Минимальное значение равно 1000, а максимальное значение равно 999,999,999." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default is 5." +msgstr "" +"Минимальное значение равно 1000, а максимальное значение равно 999,999,999." + # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "" "The input file must be protected since it contains unencrypted passwords." msgstr "" @@ -7718,44 +7953,44 @@ msgstr "" # type: Content of: <refentry><refsect1><para><filename> #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 msgid "/etc/pam.d/newusers" msgstr "/etc/pam.d/newusers" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 useradd.8.xml.out:222 useradd.8.xml.out:481 -#: useradd.8.xml.out:785 userdel.8.xml.out:215 usermod.8.xml.out:587 +#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 +#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subgid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 useradd.8.xml.out:787 userdel.8.xml.out:217 +#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 useradd.8.xml.out:222 useradd.8.xml.out:480 -#: useradd.8.xml.out:791 userdel.8.xml.out:221 usermod.8.xml.out:593 +#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 +#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subuid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 useradd.8.xml.out:793 userdel.8.xml.out:223 +#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 useradd.8.xml.out:906 userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 +#: usermod.8.xml.out:650 #, fuzzy #| msgid "/etc/suauth" msgid "subgid" @@ -7763,16 +7998,16 @@ msgstr "/etc/suauth" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 useradd.8.xml.out:909 userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 +#: usermod.8.xml.out:653 #, fuzzy #| msgid "/etc/suauth" msgid "subuid" msgstr "/etc/suauth" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 useradd.8.xml.out:904 userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "" @@ -7831,13 +8066,13 @@ msgstr "Программа <command>nologin</command> впервые появи # type: Content of: <refentry><refnamediv><refpurpose> #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "изменяет пароль пользователя" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 #, fuzzy #| msgid "" #| "The <command>passwd</command> command changes passwords for user " @@ -7859,13 +8094,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "Изменение пароля" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 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 " @@ -7879,7 +8114,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 #, fuzzy #| msgid "" #| "After the password has been entered, password aging information is " @@ -7898,7 +8133,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "" "The user is then prompted twice for a replacement password. The second entry " "is compared against the first and both are required to match in order for " @@ -7908,67 +8143,28 @@ msgstr "" "ввода сравнивается с первым и для изменения пароли из обеих попыток должны " "совпасть." -# type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 -msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" -msgstr "" -"Затем пароль тестируется на сложность подбора. Согласно общим принципам, " -"пароли должны быть длиной от 6 до 8 символов и включать один или более " -"символов каждого типа:" - -# type: Content of: <refentry><refsect1><refsect2><itemizedlist><listitem><para> -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "строчные буквы" - -# type: Content of: <refentry><refsect1><refsect2><itemizedlist><listitem><para> -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "цифры от 0 до 9" - -# type: Content of: <refentry><refsect1><refsect2><itemizedlist><listitem><para> -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "знаки пунктуации" - -# type: Content of: <refentry><refsect1><refsect2><para> -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 -#, fuzzy -#| msgid "" -#| "Care must be taken not to include the system default erase or kill " -#| "characters. <command>passwd</command> will reject any password which is " -#| "not suitably complex." +#: passwd.1.xml.out:98 msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. <_:command-1/> will reject any password which is not suitably " -"complex." +"Then, the password is tested for complexity. <_:command-1/> will reject any " +"password which is not suitably complex. Care must be taken not to include " +"the system default erase or kill characters." msgstr "" -"Не включайте системные символы стирания и удаления. Программа " -"<command>passwd</command> не примет пароль, который не имеет достаточной " -"сложности." # type: Content of: <refentry><refsect1><refsect2><title> #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "Выбор пароля" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 #, fuzzy #| msgid "" #| "The security of a password depends upon the strength of the encryption " @@ -7992,7 +8188,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "" "Compromises in password security normally result from careless password " "selection or handling. For this reason, you should not select a password " @@ -8008,7 +8204,19 @@ msgstr "" "этом легко догадаться, что приведёт к нарушению безопасности системы." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "" +"As a general guideline, passwords should be long and random. It's fine to " +"use simple character sets, such as passwords consisting only of lowercase " +"letters, if that helps memorizing longer passwords. For a password " +"consisting only of lowercase English letters randomly chosen, and a length " +"of 32, there are 26^32 (approximately 2^150) different possible " +"combinations. Being an exponential equation, it's apparent that the exponent " +"(the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 #, fuzzy #| msgid "" #| "You can find advices on how to choose a strong password on http://en." @@ -8021,7 +8229,7 @@ msgstr "" "Сложность_пароля." #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 #, fuzzy #| msgid "" #| "This option can be used only with <option>-S</option> and causes show " @@ -8035,7 +8243,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "" "Delete a user's password (make it empty). This is a quick way to disable a " "password for an account. It will set the named account passwordless." @@ -8046,7 +8254,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><command> #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 #, fuzzy #| msgid "expiry" msgid "--expire" @@ -8054,7 +8262,7 @@ msgstr "expiry" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 msgid "" "Immediately expire an account's password. This in effect can force a user to " "change their password at the user's next login." @@ -8064,7 +8272,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 #, fuzzy #| msgid "" #| "This option is used to disable an account after the password has been " @@ -8085,20 +8293,20 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 useradd.8.xml.out:278 useradd.8.xml.out:356 +#: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 #, fuzzy #| msgid "-" msgid "-k" msgstr "-" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 msgid "" "Indicate password change should be performed only for expired authentication " "tokens (passwords). The user wishes to keep their non-expired tokens as " @@ -8109,13 +8317,13 @@ msgstr "" "ключи нетронутыми." #. (itstool) path: term/option -#: passwd.1.xml.out:222 usermod.8.xml.out:231 +#: passwd.1.xml.out:218 usermod.8.xml.out:231 msgid "--lock" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 msgid "" "Lock the password of the named account. This option disables a password by " "changing it to a value which matches no possible encrypted value (it adds a " @@ -8126,12 +8334,12 @@ msgstr "" "паролем (добавляется символ «!» в начало пароля)." #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 #, fuzzy #| msgid "" #| "Note that this does not disable the account. The user may still be able " @@ -8151,56 +8359,56 @@ msgstr "" "установит дату устаревания учётной запись равной 2 января 1970 года)." #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "Посетитель с заблокированным паролем не может изменить свой пароль." # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><option> #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "-q" msgstr "-q" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "--quiet" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 vipw.8.xml.out:110 +#: passwd.1.xml.out:257 vipw.8.xml.out:110 msgid "Quiet mode." msgstr "Не выводить сообщений при работе." #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: passwd.1.xml.out:268 passwd.1.xml.out:272 +#: passwd.1.xml.out:264 passwd.1.xml.out:268 #, fuzzy #| msgid "EDITOR" msgid "REPOSITORY" msgstr "EDITOR" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 #, fuzzy #| msgid "change password in <replaceable>REPOSITORY</replaceable> repository" msgid "change password in <_:replaceable-1/> repository" msgstr "Изменить пароль в <replaceable>РЕПОЗИТОРИИ</replaceable>." #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 msgid "" "Display account status information. The status information consists of 7 " "fields. The first field is the user's login name. The second field indicates " @@ -8218,13 +8426,13 @@ msgstr "" "предупреждения и период неактивности пароля. Эти сроки измеряются в днях." #. (itstool) path: term/option -#: passwd.1.xml.out:309 usermod.8.xml.out:405 +#: passwd.1.xml.out:320 usermod.8.xml.out:405 msgid "--unlock" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 #, fuzzy #| msgid "" #| "Unlock the password of the named account. This option re-enables a " @@ -8241,7 +8449,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 #, fuzzy #| msgid "" #| "Set the number of days of warning before a password change is required. " @@ -8260,7 +8468,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 #, fuzzy #| msgid "-" msgid "-x" @@ -8268,7 +8476,7 @@ msgstr "-" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 #, fuzzy #| msgid "" #| "Set the maximum number of days a password remains valid. After " @@ -8281,9 +8489,21 @@ msgstr "" "Установить максимальное количество дней, в течении которых пароль остаётся " "рабочим. После <replaceable>МАКС_ДНЕЙ</replaceable> пароль нужно изменить." +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "" +"This option is used to indicate that passwd should read the new password " +"from standard input, which can be a pipe." +msgstr "" + # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 msgid "" "Password complexity checking may vary from site to site. The user is urged " "to select a password as complex as he or she feels comfortable with." @@ -8293,7 +8513,7 @@ msgstr "" "нормально работалось." #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "" "Users may not be able to change their password on a system if NIS is enabled " "and they are not logged into the NIS server." @@ -8302,7 +8522,7 @@ msgstr "" "не вошли на сервер NIS." #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 #, fuzzy #| msgid "" #| "<command>passwd</command> uses PAM to authenticate users and to change " @@ -8315,25 +8535,25 @@ msgstr "" # type: Content of: <refentry><refsect1><para><filename> #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 msgid "/etc/pam.d/passwd" msgstr "/etc/pam.d/passwd" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "недопустимая комбинация параметров" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "неожиданная ошибка при работе, ничего не сделано" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 #, fuzzy #| msgid "unexpected failure, <filename>passwd</filename> file missing" msgid "unexpected failure, <_:filename-1/> file missing" @@ -8342,18 +8562,33 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 #, fuzzy #| msgid "<filename>passwd</filename> file busy, try again" msgid "<_:filename-1/> file busy, try again" msgstr "" "файл <filename>passwd</filename> занят другой программой, попробуйте ещё раз" +# type: Content of: <refentry><refsect1><para><emphasis> +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +#, fuzzy +#| msgid "passwd" +msgid "makepasswd" +msgstr "passwd" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 +#: passwd.1.xml.out:494 msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:517 +msgid "" +"The following web page comically (yet correctly) compares the strength of " +"two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" # type: Content of: <refentry><refnamediv><refpurpose> @@ -10584,6 +10819,11 @@ msgstr "" msgid "$HZ" msgstr "" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -11070,7 +11310,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:583 useradd.8.xml.out:585 +#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 msgid "-D" msgstr "-D" @@ -11115,7 +11355,7 @@ msgstr "" "<option>USERGROUPS_ENAB</option>)." #. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:592 +#: useradd.8.xml.out:118 useradd.8.xml.out:612 msgid "--base-dir" msgstr "" @@ -11123,7 +11363,7 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:592 useradd.8.xml.out:598 +#: useradd.8.xml.out:612 useradd.8.xml.out:618 #, fuzzy #| msgid "MAIL_DIR" msgid "BASE_DIR" @@ -11161,7 +11401,7 @@ msgstr "" "существовать." #. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:603 +#: useradd.8.xml.out:131 useradd.8.xml.out:623 msgid "HOME" msgstr "" @@ -11169,11 +11409,11 @@ msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename #: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:293 useradd.8.xml.out:343 -#: useradd.8.xml.out:393 useradd.8.xml.out:523 useradd.8.xml.out:604 -#: useradd.8.xml.out:616 useradd.8.xml.out:633 useradd.8.xml.out:649 -#: useradd.8.xml.out:663 useradd.8.xml.out:677 useradd.8.xml.out:767 -#: usermod.8.xml.out:419 +#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 +#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 +#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 +#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 +#: useradd.8.xml.out:787 usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "/etc/default/useradd" @@ -11288,7 +11528,7 @@ msgstr "" "формате <emphasis remap=\"I\">ГГГГ-ММ-ДД</emphasis>." #. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:615 usermod.8.xml.out:418 +#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 msgid "EXPIRE" msgstr "" @@ -11339,7 +11579,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option #. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:482 +#: useradd.8.xml.out:218 useradd.8.xml.out:484 #, fuzzy #| msgid "-" msgid "-F" @@ -11463,6 +11703,13 @@ msgid "" "emphasis-5/>]]]" msgstr "" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +#, fuzzy +#| msgid "GROUP" +msgid "GROUPS" +msgstr "ГРУППА" + # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para #: useradd.8.xml.out:260 @@ -11478,7 +11725,9 @@ msgid "" "group is separated from the next by a comma, with no intervening whitespace. " "The groups are subject to the same restrictions as the group given with the " "<_:option-1/> option. The default is for the user to belong only to the " -"initial group." +"initial group. In addition to passing in the -G flag, you can add the option " +"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " +"to those supplementary groups." msgstr "" "Список дополнительных групп, в которых числится пользователь. Перечисление " "групп осуществляется через запятую, без промежуточных пробелов. На указанные " @@ -11487,20 +11736,20 @@ msgstr "" "группу." #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><emphasis> #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 #, fuzzy #| msgid "MAIL_DIR" msgid "SKEL_DIR" msgstr "MAIL_DIR" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 #, fuzzy #| msgid "" #| "The skeleton directory, which contains files and directories to be copied " @@ -11517,12 +11766,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 useradd.8.xml.out:350 +#: useradd.8.xml.out:290 useradd.8.xml.out:352 msgid "--create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 #, fuzzy #| msgid "" #| "This option is only valid if the <option>-m</option> (or <option>--create-" @@ -11535,20 +11784,20 @@ msgstr "" "(или <option>--create-home</option>)." #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 #, fuzzy #| msgid "/etc/skel/" msgid "/etc/skel" msgstr "/etc/skel/" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 #, fuzzy #| msgid "" #| "If this option is not set, the skeleton directory is defined by the " @@ -11563,24 +11812,24 @@ msgstr "" "или равен <filename>/etc/skel</filename> (по умолчанию)." #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "Если возможно, выполняется копирование ACL и расширенных атрибутов." #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "" "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" "option-4/>, <_:option-5/> and others)." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "" "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " "when creating an account to turn off password aging. Multiple <_:option-4/> " @@ -11589,17 +11838,17 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "Не добавлять пользователя в базы данных lastlog и faillog." #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 #, fuzzy #| msgid "" #| "By default, the user's entries in the lastlog and faillog databases are " @@ -11613,12 +11862,12 @@ msgstr "" "ранее удалённого пользователя." #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "" "If this option is not specified, <_:command-1/> will also consult the " "variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " @@ -11626,7 +11875,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 #, fuzzy #| msgid "" #| "Create the user's home directory if it does not exist. The files and " @@ -11643,12 +11892,12 @@ msgstr "" "каталог." #. (itstool) path: para/option -#: useradd.8.xml.out:361 useradd.8.xml.out:379 useradd.8.xml.out:475 +#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 #, fuzzy #| msgid "" #| "By default, if this option is not specified and <option>CREATE_HOME</" @@ -11661,7 +11910,7 @@ msgstr "" "<option>CREATE_HOME</option>, домашний каталог не создаётся." #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "" "The directory where the user's home directory is created must exist and have " "proper SELinux context and permissions. Otherwise the user's home directory " @@ -11669,12 +11918,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 #, fuzzy #| msgid "" #| "Do no create the user's home directory, even if the system wide setting " @@ -11689,12 +11938,12 @@ msgstr "" "(<option>CREATE_HOME</option>) равно <replaceable>yes</replaceable>." #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 #, fuzzy #| msgid "" #| "Do not create a group with the same name as the user, but add the user to " @@ -11713,7 +11962,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 #, fuzzy #| msgid "" #| "Allow the creation of a user account with a duplicate (non-unique) UID." @@ -11721,7 +11970,7 @@ msgid "allows the creation of an account with an already existing UID." msgstr "Разрешить создание учётной записи с уже имеющимся (не уникальным) UID." #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 usermod.8.xml.out:277 +#: useradd.8.xml.out:414 usermod.8.xml.out:277 msgid "" "This option is only valid in combination with the <_:option-1/> option. As a " "user identity serves as key to map between users on one hand and " @@ -11731,7 +11980,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "" "defines an initial password for the account. PASSWORD is expected to be " "encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " @@ -11739,7 +11988,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "" "Without this option, the new account will be locked and with no password " "defined, i.e. a single exclamation mark in the respective field of <_:" @@ -11748,7 +11997,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 #, fuzzy #| msgid "" #| "<emphasis role=\"bold\">Note:</emphasis> This option is not recommended " @@ -11763,7 +12012,7 @@ msgstr "" "другими пользователям в списке процессов." #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 #, fuzzy #| msgid "" #| "Note that <command>useradd</command> will not create a home directory for " @@ -11784,7 +12033,7 @@ msgstr "" "option>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 #, fuzzy #| msgid "" #| "Note that <command>useradd</command> will not create a home directory for " @@ -11804,7 +12053,7 @@ msgstr "" "option>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 msgid "" "sets the path to the user's login shell. Without this option, the system " "will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " @@ -11813,13 +12062,13 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "--uid" msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><replaceable> #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 #, fuzzy #| msgid "GID" msgid "UID" @@ -11827,7 +12076,7 @@ msgstr "GID" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 #, fuzzy #| msgid "" #| "The numerical value of the user's ID. This value must be unique, unless " @@ -11847,12 +12096,12 @@ msgstr "" "пользователей." #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "" "Create a group with the same name as the user, and add the user to this " "group." @@ -11862,44 +12111,66 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para><option> #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:525 #, fuzzy #| msgid "-" msgid "-Z" msgstr "-" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:594 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:526 msgid "--selinux-user" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 usermod.8.xml.out:501 +#: useradd.8.xml.out:568 usermod.8.xml.out:501 msgid "SEUSER" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 useradd.8.xml.out:589 usermod.8.xml.out:521 msgid "semanage" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 +#: useradd.8.xml.out:571 msgid "" -"defines the SELinux user for the new account. Without this option, a SELinux " +"defines the SELinux user for the new account. Without this option, SELinux " "uses the default user. Note that the shadow system doesn't store the selinux-" "user, it uses <_:citerefentry-1/> for that." msgstr "" +#. (itstool) path: term/option +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "--selinux-range" +msgstr "" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "SERANGE" +msgstr "" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +msgid "" +"defines the SELinux MLS range for the new account. Without this option, " +"SELinux uses the default range. Note that the shadow system doesn't store " +"the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + # type: Content of: <refentry><refsect1><refsect2><title> #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "Изменение значений по умолчанию" # type: Content of: <refentry><refsect1><refsect2><para> #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 #, fuzzy #| msgid "" #| "When invoked with only the <option>-D</option> option, <command>useradd</" @@ -11920,7 +12191,7 @@ msgstr "" "этих указанных параметров. Изменяемые параметры:" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 #, fuzzy #| msgid "" #| "The path prefix for a new user's home directory. The user's name will be " @@ -11939,8 +12210,8 @@ msgstr "" "учётной записи не указан параметр <option>-d</option>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 #, fuzzy #| msgid "" #| "This option sets the <option>HOME</option> variable in <filename>/etc/" @@ -11952,14 +12223,14 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 #, fuzzy #| msgid "The date on which the user account is disabled." msgid "sets the date on which newly created user accounts are disabled." msgstr "Дата, когда учётная запись пользователя заблокирована." #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -11968,7 +12239,7 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 #, fuzzy #| msgid "" #| "The group name or ID for a new user's initial group. The named group must " @@ -11983,26 +12254,26 @@ msgstr "" "запись." #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "ЗАМЕЧАНИЯ" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 #, fuzzy #| msgid "" #| "The system administrator is responsible for placing the default user " @@ -12021,7 +12292,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " "corresponding server." @@ -12031,7 +12302,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 #, fuzzy #| msgid "" #| "Similarly, if the username already exists in an external user database " @@ -12046,12 +12317,12 @@ msgstr "" "запись пользователя." #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -12063,50 +12334,50 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." -msgstr "Имена пользователей могут быть длиной не более 32 знаков." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." +msgstr "Имена пользователей могут быть длиной не более 256 знаков." # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "значения по умолчанию для создаваемой учётной записи" # type: Content of: <refentry><refsect1><variablelist><varlistentry><term><filename> #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #, fuzzy #| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/default/useradd" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" # type: Content of: <refentry><refsect1><title> #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 #, fuzzy #| msgid "OPTIONS" msgid "ACTION" msgstr "ПАРАМЕТРЫ" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" # type: Content of: <refentry><refsect1><para><citerefentry><refentrytitle> #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-pre.d" @@ -12114,14 +12385,14 @@ msgstr "useradd" # type: Content of: <refentry><refsect1><para><citerefentry><refentrytitle> #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-post.d" msgstr "useradd" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -12132,19 +12403,19 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "каталог, содержащий файлы по умолчанию" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "не удалось изменить файл паролей" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 #, fuzzy #| msgid "UID already in use (and no <option>-o</option>)" msgid "UID already in use (and no <_:option-1/>)" @@ -12152,7 +12423,7 @@ msgstr "такой UID уже существует (и не задан пара # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "group name already in use" msgid "username or group name already in use" @@ -12160,25 +12431,25 @@ msgstr "такое имя группы уже используется" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "не удалось создать домашний каталог" # type: Content of: <refentry><refmeta><manvolnum> #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 #, fuzzy #| msgid "1" msgid "14" msgstr "1" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -13080,8 +13351,15 @@ msgid "" "shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 +msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 #, fuzzy #| msgid "" #| "You must make certain that the named user is not executing any processes " @@ -13104,17 +13382,17 @@ msgstr "" "согласно данным utmp." #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 #, fuzzy #| msgid "" #| "You must change the owner of any <command>crontab</command> files or " @@ -13127,13 +13405,13 @@ msgstr "" "или заданий <command>at</command>." #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "Вы должны сделать все изменения NIS на сервере NIS самостоятельно." # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 #, fuzzy #| msgid "Group account information." msgid "Group account information" @@ -13141,15 +13419,15 @@ msgstr "содержит информацию о группах" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 +#: usermod.8.xml.out:582 #, fuzzy #| msgid "Secure group account information." -msgid "Secure group account informatio." +msgid "Secure group account information" msgstr "содержит защищаемую информацию о группах" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 #, fuzzy #| msgid "Shadow password suite configuration." msgid "Shadow password suite configuration" @@ -13157,7 +13435,7 @@ msgstr "содержит конфигурацию подсистемы тене # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 #, fuzzy #| msgid "User account information." msgid "User account information" @@ -13165,19 +13443,19 @@ msgstr "содержит информацию о пользователях" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 #, fuzzy #| msgid "Secure user account information." msgid "Secure user account information" msgstr "содержит защищаемую информацию о пользователях" #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -13235,7 +13513,7 @@ msgstr "vipw" #| "envar>, and finally the default editor, <citerefentry><refentrytitle>vi</" #| "refentrytitle><manvolnum>1</manvolnum></citerefentry>." msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -15181,6 +15459,38 @@ msgstr "" #~ "<citerefentry><refentrytitle>sulogin</refentrytitle><manvolnum>8</" #~ "manvolnum></citerefentry>." +# type: Content of: <refentry><refsect1><refsect2><para> +#~ msgid "" +#~ "Then, the password is tested for complexity. As a general guideline, " +#~ "passwords should consist of 6 to 8 characters including one or more " +#~ "characters from each of the following sets:" +#~ msgstr "" +#~ "Затем пароль тестируется на сложность подбора. Согласно общим принципам, " +#~ "пароли должны быть длиной от 6 до 8 символов и включать один или более " +#~ "символов каждого типа:" + +# type: Content of: <refentry><refsect1><refsect2><itemizedlist><listitem><para> +#~ msgid "lower case alphabetics" +#~ msgstr "строчные буквы" + +# type: Content of: <refentry><refsect1><refsect2><itemizedlist><listitem><para> +#~ msgid "digits 0 thru 9" +#~ msgstr "цифры от 0 до 9" + +# type: Content of: <refentry><refsect1><refsect2><itemizedlist><listitem><para> +#~ msgid "punctuation marks" +#~ msgstr "знаки пунктуации" + +# type: Content of: <refentry><refsect1><refsect2><para> +#~ msgid "" +#~ "Care must be taken not to include the system default erase or kill " +#~ "characters. <command>passwd</command> will reject any password which is " +#~ "not suitably complex." +#~ msgstr "" +#~ "Не включайте системные символы стирания и удаления. Программа " +#~ "<command>passwd</command> не примет пароль, который не имеет достаточной " +#~ "сложности." + #~ msgid "<option>-d</option>, <option>--delete</option>" #~ msgstr "<option>-d</option>, <option>--delete</option>" @@ -15472,6 +15782,18 @@ msgstr "" #~ msgid "<option>-s</option>, <option>--sha-rounds</option>" #~ msgstr "<option>-s</option>, <option>--sha-rounds</option>" +#~ msgid "" +#~ "The value 0 means that the system will choose the default number of " +#~ "rounds for the crypt method (5000)." +#~ msgstr "" +#~ "Значение 0 означает, что система выберет количество раундов по умолчанию " +#~ "для выбранного метода шифрования (5000)." + +#~ msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#~ msgstr "" +#~ "Вы можете использовать этот параметр только при методе шифрования SHA256 " +#~ "или SHA512." + #~ msgid "PAM configuration for <command>newusers</command>." #~ msgstr "настройки PAM для <command>newusers</command>" @@ -16629,6 +16951,9 @@ msgstr "" #~ "<option>-c</option>, <option>--crypt-method</option> " #~ "<replaceable>МЕТОД</replaceable>" +#~ msgid "The available methods are DES, MD5, and NONE." +#~ msgstr "Возможные методы: DES, MD5 и NONE." + #~ msgid "<option>-e</option>, <option>--encrypted</option>" #~ msgstr "<option>-e</option>, <option>--encrypted</option>" @@ -16642,6 +16967,15 @@ msgstr "" #~ "<option>-s</option>, <option>--sha-rounds</option> " #~ "<replaceable>РАУНДОВ</replaceable>" +#~ msgid "" +#~ "By default, the number of rounds is defined by the " +#~ "<option>SHA_CRYPT_MIN_ROUNDS</option> and <option>SHA_CRYPT_MAX_ROUNDS</" +#~ "option> variables in <filename>/etc/login.defs</filename>." +#~ msgstr "" +#~ "По умолчанию, количество раундов определяется переменными " +#~ "<option>SHA_CRYPT_MIN_ROUNDS</option> и <option>SHA_CRYPT_MAX_ROUNDS</" +#~ "option> в <filename>/etc/login.defs</filename>." + #~ msgid "PAM configuration for <command>chpasswd</command>." #~ msgstr "настройки PAM для <command>chpasswd</command>" @@ -17315,9 +17649,6 @@ msgstr "" #~ "<citerefentry><refentrytitle>newgrp</refentrytitle><manvolnum>5</" #~ "manvolnum></citerefentry>." -#~ msgid "-K <placeholder-1/>=<placeholder-2/>" -#~ msgstr "-K <placeholder-1/>=<placeholder-2/>" - #, fuzzy #~ msgid "<option>-M</option> <replaceable>user</replaceable>,..." #~ msgstr "" diff --git a/man/po/shadow-man-pages.pot b/man/po/shadow-man-pages.pot index b2ab03c..e4634bc 100644 --- a/man/po/shadow-man-pages.pot +++ b/man/po/shadow-man-pages.pot @@ -1,7 +1,8 @@ +# To re-generate, run "cd man/po; make update-po" msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-03-14 18:23-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" @@ -12,7 +13,7 @@ msgstr "" #. (itstool) path: author/firstname #: chage.1.xml.out:16 #: chfn.1.xml.out:18 -#: chpasswd.8.xml.out:19 +#: chpasswd.8.xml.out:21 #: chsh.1.xml.out:18 #: expiry.1.xml.out:19 #: faillog.5.xml.out:15 @@ -24,11 +25,11 @@ msgstr "" #: grpck.8.xml.out:15 #: lastlog.8.xml.out:17 #: login.1.xml.out:48 -#: login.defs.5.xml.out:84 +#: login.defs.5.xml.out:86 #: logoutd.8.xml.out:15 #: newgrp.1.xml.out:16 -#: newusers.8.xml.out:31 -#: passwd.1.xml.out:22 +#: newusers.8.xml.out:33 +#: passwd.1.xml.out:24 #: passwd.5.xml.out:15 #: porttime.5.xml.out:15 #: pwck.8.xml.out:22 @@ -45,7 +46,7 @@ msgstr "" #. (itstool) path: author/surname #: chage.1.xml.out:17 #: chfn.1.xml.out:19 -#: chpasswd.8.xml.out:20 +#: chpasswd.8.xml.out:22 #: chsh.1.xml.out:19 #: expiry.1.xml.out:20 #: faillog.5.xml.out:16 @@ -57,11 +58,11 @@ msgstr "" #: grpck.8.xml.out:16 #: lastlog.8.xml.out:18 #: login.1.xml.out:49 -#: login.defs.5.xml.out:85 +#: login.defs.5.xml.out:87 #: logoutd.8.xml.out:16 #: newgrp.1.xml.out:17 -#: newusers.8.xml.out:32 -#: passwd.1.xml.out:23 +#: newusers.8.xml.out:34 +#: passwd.1.xml.out:25 #: passwd.5.xml.out:16 #: porttime.5.xml.out:16 #: pwck.8.xml.out:23 @@ -86,13 +87,13 @@ msgstr "" #. (itstool) path: author/firstname #: chage.1.xml.out:21 #: chfn.1.xml.out:23 -#: chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 +#: chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 #: chsh.1.xml.out:23 #: expiry.1.xml.out:24 #: faillog.5.xml.out:20 #: faillog.8.xml.out:20 -#: gpasswd.1.xml.out:25 +#: gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 #: groupdel.8.xml.out:21 #: groupmems.8.xml.out:24 @@ -103,11 +104,11 @@ msgstr "" #: limits.5.xml.out:22 #: login.1.xml.out:53 #: login.access.5.xml.out:21 -#: login.defs.5.xml.out:89 +#: login.defs.5.xml.out:91 #: logoutd.8.xml.out:20 #: newgrp.1.xml.out:21 -#: newusers.8.xml.out:36 -#: passwd.1.xml.out:27 +#: newusers.8.xml.out:38 +#: passwd.1.xml.out:29 #: passwd.5.xml.out:20 #: porttime.5.xml.out:20 #: pwck.8.xml.out:27 @@ -127,13 +128,13 @@ msgstr "" #. (itstool) path: author/surname #: chage.1.xml.out:22 #: chfn.1.xml.out:24 -#: chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 +#: chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 #: chsh.1.xml.out:24 #: expiry.1.xml.out:25 #: faillog.5.xml.out:21 #: faillog.8.xml.out:21 -#: gpasswd.1.xml.out:26 +#: gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 #: groupdel.8.xml.out:22 #: groupmems.8.xml.out:25 @@ -144,11 +145,11 @@ msgstr "" #: limits.5.xml.out:23 #: login.1.xml.out:54 #: login.access.5.xml.out:22 -#: login.defs.5.xml.out:90 +#: login.defs.5.xml.out:92 #: logoutd.8.xml.out:21 #: newgrp.1.xml.out:22 -#: newusers.8.xml.out:37 -#: passwd.1.xml.out:28 +#: newusers.8.xml.out:39 +#: passwd.1.xml.out:30 #: passwd.5.xml.out:21 #: porttime.5.xml.out:21 #: pwck.8.xml.out:28 @@ -168,13 +169,13 @@ msgstr "" #. (itstool) path: author/email #: chage.1.xml.out:23 #: chfn.1.xml.out:25 -#: chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 +#: chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 #: chsh.1.xml.out:25 #: expiry.1.xml.out:26 #: faillog.5.xml.out:22 #: faillog.8.xml.out:22 -#: gpasswd.1.xml.out:27 +#: gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 #: groupdel.8.xml.out:23 #: groupmems.8.xml.out:26 @@ -185,11 +186,11 @@ msgstr "" #: limits.5.xml.out:24 #: login.1.xml.out:55 #: login.access.5.xml.out:23 -#: login.defs.5.xml.out:91 +#: login.defs.5.xml.out:93 #: logoutd.8.xml.out:22 #: newgrp.1.xml.out:23 -#: newusers.8.xml.out:38 -#: passwd.1.xml.out:29 +#: newusers.8.xml.out:40 +#: passwd.1.xml.out:31 #: passwd.5.xml.out:22 #: porttime.5.xml.out:22 #: pwck.8.xml.out:29 @@ -209,12 +210,12 @@ msgstr "" #. (itstool) path: author/contrib #: chage.1.xml.out:24 #: chfn.1.xml.out:26 -#: chpasswd.8.xml.out:27 +#: chpasswd.8.xml.out:29 #: chsh.1.xml.out:26 #: expiry.1.xml.out:27 #: faillog.5.xml.out:23 #: faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 +#: gpasswd.1.xml.out:30 #: groupadd.8.xml.out:26 #: groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 @@ -225,11 +226,11 @@ msgstr "" #: limits.5.xml.out:25 #: login.1.xml.out:56 #: login.access.5.xml.out:24 -#: login.defs.5.xml.out:92 +#: login.defs.5.xml.out:94 #: logoutd.8.xml.out:23 #: newgrp.1.xml.out:24 -#: newusers.8.xml.out:39 -#: passwd.1.xml.out:30 +#: newusers.8.xml.out:41 +#: passwd.1.xml.out:32 #: passwd.5.xml.out:23 #: porttime.5.xml.out:23 #: pwck.8.xml.out:30 @@ -249,13 +250,13 @@ msgstr "" #. (itstool) path: author/firstname #: chage.1.xml.out:27 #: chfn.1.xml.out:29 -#: chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 +#: chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 #: chsh.1.xml.out:29 #: expiry.1.xml.out:30 #: faillog.5.xml.out:26 #: faillog.8.xml.out:26 -#: gpasswd.1.xml.out:31 +#: gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 #: groupdel.8.xml.out:27 #: groupmems.8.xml.out:30 @@ -267,12 +268,12 @@ msgstr "" #: limits.5.xml.out:28 #: login.1.xml.out:59 #: login.access.5.xml.out:27 -#: login.defs.5.xml.out:95 +#: login.defs.5.xml.out:97 #: logoutd.8.xml.out:26 #: newgrp.1.xml.out:27 -#: newusers.8.xml.out:42 +#: newusers.8.xml.out:44 #: nologin.8.xml.out:15 -#: passwd.1.xml.out:33 +#: passwd.1.xml.out:35 #: passwd.5.xml.out:26 #: porttime.5.xml.out:26 #: pwck.8.xml.out:33 @@ -292,13 +293,13 @@ msgstr "" #. (itstool) path: author/surname #: chage.1.xml.out:28 #: chfn.1.xml.out:30 -#: chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 +#: chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 #: chsh.1.xml.out:30 #: expiry.1.xml.out:31 #: faillog.5.xml.out:27 #: faillog.8.xml.out:27 -#: gpasswd.1.xml.out:32 +#: gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 #: groupdel.8.xml.out:28 #: groupmems.8.xml.out:31 @@ -310,12 +311,12 @@ msgstr "" #: limits.5.xml.out:29 #: login.1.xml.out:60 #: login.access.5.xml.out:28 -#: login.defs.5.xml.out:96 +#: login.defs.5.xml.out:98 #: logoutd.8.xml.out:27 #: newgrp.1.xml.out:28 -#: newusers.8.xml.out:43 +#: newusers.8.xml.out:45 #: nologin.8.xml.out:16 -#: passwd.1.xml.out:34 +#: passwd.1.xml.out:36 #: passwd.5.xml.out:27 #: porttime.5.xml.out:27 #: pwck.8.xml.out:34 @@ -335,13 +336,13 @@ msgstr "" #. (itstool) path: author/email #: chage.1.xml.out:29 #: chfn.1.xml.out:31 -#: chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 +#: chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 #: chsh.1.xml.out:31 #: expiry.1.xml.out:32 #: faillog.5.xml.out:28 #: faillog.8.xml.out:28 -#: gpasswd.1.xml.out:33 +#: gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 #: groupdel.8.xml.out:29 #: groupmems.8.xml.out:32 @@ -353,12 +354,12 @@ msgstr "" #: limits.5.xml.out:30 #: login.1.xml.out:61 #: login.access.5.xml.out:29 -#: login.defs.5.xml.out:97 +#: login.defs.5.xml.out:99 #: logoutd.8.xml.out:28 #: newgrp.1.xml.out:29 -#: newusers.8.xml.out:44 +#: newusers.8.xml.out:46 #: nologin.8.xml.out:17 -#: passwd.1.xml.out:35 +#: passwd.1.xml.out:37 #: passwd.5.xml.out:28 #: porttime.5.xml.out:28 #: pwck.8.xml.out:35 @@ -378,13 +379,13 @@ msgstr "" #. (itstool) path: author/contrib #: chage.1.xml.out:30 #: chfn.1.xml.out:32 -#: chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 +#: chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 #: chsh.1.xml.out:32 #: expiry.1.xml.out:33 #: faillog.5.xml.out:29 #: faillog.8.xml.out:29 -#: gpasswd.1.xml.out:34 +#: gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 #: groupdel.8.xml.out:30 #: groupmems.8.xml.out:33 @@ -396,12 +397,12 @@ msgstr "" #: limits.5.xml.out:31 #: login.1.xml.out:62 #: login.access.5.xml.out:30 -#: login.defs.5.xml.out:98 +#: login.defs.5.xml.out:100 #: logoutd.8.xml.out:29 #: newgrp.1.xml.out:30 -#: newusers.8.xml.out:45 +#: newusers.8.xml.out:47 #: nologin.8.xml.out:18 -#: passwd.1.xml.out:36 +#: passwd.1.xml.out:38 #: passwd.5.xml.out:29 #: porttime.5.xml.out:29 #: pwck.8.xml.out:36 @@ -429,12 +430,12 @@ msgstr "" #: chage.1.xml.out:46 #: chage.1.xml.out:59 #: chage.1.xml.out:69 -#: chage.1.xml.out:216 -#: chage.1.xml.out:226 -#: chage.1.xml.out:236 +#: chage.1.xml.out:231 #: chage.1.xml.out:241 -#: chage.1.xml.out:285 -#: login.defs.5.xml.out:233 +#: chage.1.xml.out:251 +#: chage.1.xml.out:256 +#: chage.1.xml.out:300 +#: login.defs.5.xml.out:237 #: shadow.5.xml.out:262 msgid "chage" msgstr "" @@ -444,19 +445,19 @@ msgstr "" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable #: chage.1.xml.out:35 -#: chage.1.xml.out:294 +#: chage.1.xml.out:309 #: chfn.1.xml.out:37 #: chfn.1.xml.out:65 #: chfn.1.xml.out:205 -#: chgpasswd.8.xml.out:217 -#: chpasswd.8.xml.out:265 +#: chgpasswd.8.xml.out:245 +#: chpasswd.8.xml.out:307 #: chsh.1.xml.out:37 -#: chsh.1.xml.out:171 +#: chsh.1.xml.out:212 #: expiry.1.xml.out:38 #: faillog.8.xml.out:235 -#: gpasswd.1.xml.out:39 -#: gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 +#: gpasswd.1.xml.out:41 +#: gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 #: groupadd.8.xml.out:345 #: groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 @@ -482,22 +483,23 @@ msgstr "" #: login.1.xml.out:383 #: login.1.xml.out:386 #: login.access.5.xml.out:112 -#: login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 -#: login.defs.5.xml.out:520 -#: login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 -#: login.defs.5.xml.out:536 +#: login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 +#: login.defs.5.xml.out:539 +#: login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 +#: login.defs.5.xml.out:555 #: newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 #: newgrp.1.xml.out:133 #: newgrp.1.xml.out:136 #: newgrp.1.xml.out:139 #: newgrp.1.xml.out:142 -#: newusers.8.xml.out:456 +#: newusers.8.xml.out:477 #: nologin.8.xml.out:60 -#: passwd.1.xml.out:41 -#: passwd.1.xml.out:431 +#: passwd.1.xml.out:43 +#: passwd.1.xml.out:453 +#: passwd.1.xml.out:499 #: passwd.5.xml.out:118 #: passwd.5.xml.out:173 #: passwd.5.xml.out:179 @@ -521,19 +523,19 @@ msgstr "" #: su.1.xml.out:421 #: su.1.xml.out:424 #: suauth.5.xml.out:201 -#: useradd.8.xml.out:817 -#: useradd.8.xml.out:878 -#: useradd.8.xml.out:881 -#: useradd.8.xml.out:884 +#: useradd.8.xml.out:837 +#: useradd.8.xml.out:898 +#: useradd.8.xml.out:901 +#: useradd.8.xml.out:904 #: userdel.8.xml.out:241 #: userdel.8.xml.out:310 #: userdel.8.xml.out:313 #: userdel.8.xml.out:316 #: usermod.8.xml.out:105 #: usermod.8.xml.out:244 -#: usermod.8.xml.out:605 -#: usermod.8.xml.out:608 -#: usermod.8.xml.out:611 +#: usermod.8.xml.out:622 +#: usermod.8.xml.out:625 +#: usermod.8.xml.out:628 #: vipw.8.xml.out:78 #: vipw.8.xml.out:205 msgid "1" @@ -544,11 +546,11 @@ msgstr "" #: chfn.1.xml.out:38 #: chsh.1.xml.out:38 #: expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 +#: gpasswd.1.xml.out:42 #: groups.1.xml.out:35 #: login.1.xml.out:68 #: newgrp.1.xml.out:36 -#: passwd.1.xml.out:42 +#: passwd.1.xml.out:44 #: sg.1.xml.out:36 #: su.1.xml.out:52 msgid "User Commands" @@ -557,13 +559,13 @@ msgstr "" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:37 #: chfn.1.xml.out:39 -#: chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 +#: chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 #: chsh.1.xml.out:39 #: expiry.1.xml.out:40 #: faillog.5.xml.out:36 #: faillog.8.xml.out:36 -#: gpasswd.1.xml.out:41 +#: gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 #: groupdel.8.xml.out:37 #: groupmems.8.xml.out:40 @@ -575,12 +577,12 @@ msgstr "" #: limits.5.xml.out:38 #: login.1.xml.out:69 #: login.access.5.xml.out:37 -#: login.defs.5.xml.out:105 +#: login.defs.5.xml.out:107 #: logoutd.8.xml.out:36 #: newgrp.1.xml.out:37 -#: newusers.8.xml.out:52 +#: newusers.8.xml.out:54 #: nologin.8.xml.out:25 -#: passwd.1.xml.out:43 +#: passwd.1.xml.out:45 #: passwd.5.xml.out:36 #: porttime.5.xml.out:36 #: pwck.8.xml.out:43 @@ -600,13 +602,13 @@ msgstr "" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:38 #: chfn.1.xml.out:40 -#: chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 #: chsh.1.xml.out:40 #: expiry.1.xml.out:41 #: faillog.5.xml.out:37 #: faillog.8.xml.out:37 -#: gpasswd.1.xml.out:42 +#: gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 #: groupdel.8.xml.out:38 #: groupmems.8.xml.out:41 @@ -618,12 +620,12 @@ msgstr "" #: limits.5.xml.out:39 #: login.1.xml.out:70 #: login.access.5.xml.out:38 -#: login.defs.5.xml.out:106 +#: login.defs.5.xml.out:108 #: logoutd.8.xml.out:37 #: newgrp.1.xml.out:38 -#: newusers.8.xml.out:53 +#: newusers.8.xml.out:55 #: nologin.8.xml.out:26 -#: passwd.1.xml.out:44 +#: passwd.1.xml.out:46 #: passwd.5.xml.out:37 #: porttime.5.xml.out:37 #: pwck.8.xml.out:44 @@ -637,7 +639,7 @@ msgstr "" #: userdel.8.xml.out:43 #: usermod.8.xml.out:44 #: vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -649,16 +651,16 @@ msgstr "" #. (itstool) path: cmdsynopsis/arg #: chage.1.xml.out:48 #: chfn.1.xml.out:51 -#: chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 +#: chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 #: chsh.1.xml.out:51 #: faillog.8.xml.out:48 #: groupdel.8.xml.out:49 #: groupmod.8.xml.out:49 #: grpck.8.xml.out:47 #: lastlog.8.xml.out:50 -#: newusers.8.xml.out:64 -#: passwd.1.xml.out:55 +#: newusers.8.xml.out:66 +#: passwd.1.xml.out:57 #: pwck.8.xml.out:54 #: pwconv.8.xml.out:57 #: pwconv.8.xml.out:63 @@ -683,7 +685,7 @@ msgstr "" #: chsh.1.xml.out:54 #: faillog.8.xml.out:180 #: lastlog.8.xml.out:139 -#: passwd.1.xml.out:58 +#: passwd.1.xml.out:60 #: useradd.8.xml.out:68 #: useradd.8.xml.out:158 #: userdel.8.xml.out:54 @@ -697,13 +699,13 @@ msgstr "" #. (itstool) path: refsect1/title #: chage.1.xml.out:57 #: chfn.1.xml.out:60 -#: chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 +#: chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 #: chsh.1.xml.out:60 #: expiry.1.xml.out:58 #: faillog.5.xml.out:45 #: faillog.8.xml.out:54 -#: gpasswd.1.xml.out:70 +#: gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 #: groupdel.8.xml.out:56 #: groupmems.8.xml.out:61 @@ -715,12 +717,12 @@ msgstr "" #: limits.5.xml.out:48 #: login.1.xml.out:101 #: login.access.5.xml.out:46 -#: login.defs.5.xml.out:114 +#: login.defs.5.xml.out:116 #: logoutd.8.xml.out:51 #: newgrp.1.xml.out:53 -#: newusers.8.xml.out:73 +#: newusers.8.xml.out:75 #: nologin.8.xml.out:40 -#: passwd.1.xml.out:64 +#: passwd.1.xml.out:66 #: passwd.5.xml.out:45 #: porttime.5.xml.out:45 #: pwck.8.xml.out:69 @@ -747,12 +749,12 @@ msgstr "" #. (itstool) path: arg/replaceable #: chage.1.xml.out:67 #: chfn.1.xml.out:87 -#: chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 +#: chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 #: chsh.1.xml.out:71 #: expiry.1.xml.out:67 #: faillog.8.xml.out:65 -#: gpasswd.1.xml.out:110 +#: gpasswd.1.xml.out:112 #: groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 #: groupdel.8.xml.out:64 @@ -761,8 +763,8 @@ msgstr "" #: grpck.8.xml.out:122 #: lastlog.8.xml.out:68 #: login.1.xml.out:186 -#: newusers.8.xml.out:250 -#: passwd.1.xml.out:150 +#: newusers.8.xml.out:252 +#: passwd.1.xml.out:146 #: pwck.8.xml.out:153 #: pwconv.8.xml.out:163 #: su.1.xml.out:120 @@ -776,20 +778,20 @@ msgstr "" #. (itstool) path: refsect1/para #: chage.1.xml.out:68 #: chfn.1.xml.out:88 -#: chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 #: chsh.1.xml.out:72 #: expiry.1.xml.out:68 #: faillog.8.xml.out:66 -#: gpasswd.1.xml.out:118 +#: gpasswd.1.xml.out:120 #: groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 #: groupmems.8.xml.out:77 #: groupmod.8.xml.out:66 #: grpck.8.xml.out:127 #: lastlog.8.xml.out:69 -#: newusers.8.xml.out:251 -#: passwd.1.xml.out:151 +#: newusers.8.xml.out:253 +#: passwd.1.xml.out:147 #: pwck.8.xml.out:158 #: su.1.xml.out:121 #: useradd.8.xml.out:103 @@ -801,12 +803,12 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chage.1.xml.out:74 -#: gpasswd.1.xml.out:137 +#: gpasswd.1.xml.out:139 #: groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 +#: passwd.1.xml.out:164 #: useradd.8.xml.out:123 #: useradd.8.xml.out:151 -#: useradd.8.xml.out:599 +#: useradd.8.xml.out:619 #: usermod.8.xml.out:112 #: usermod.8.xml.out:260 msgid "-d" @@ -833,25 +835,27 @@ msgstr "" #: chage.1.xml.out:168 #: chage.1.xml.out:189 #: chage.1.xml.out:202 +#: chage.1.xml.out:217 #: chfn.1.xml.out:93 #: chfn.1.xml.out:101 #: chfn.1.xml.out:109 #: chfn.1.xml.out:121 #: chfn.1.xml.out:129 #: chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 -#: chpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 +#: chgpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 +#: chpasswd.8.xml.out:198 #: chsh.1.xml.out:83 #: chsh.1.xml.out:96 #: faillog.8.xml.out:104 #: faillog.8.xml.out:119 #: faillog.8.xml.out:156 #: faillog.8.xml.out:169 -#: gpasswd.1.xml.out:123 -#: gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 +#: gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 +#: gpasswd.1.xml.out:159 #: groupadd.8.xml.out:101 #: groupadd.8.xml.out:157 #: groupadd.8.xml.out:200 @@ -872,13 +876,14 @@ msgstr "" #: lastlog.8.xml.out:74 #: lastlog.8.xml.out:103 #: lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 -#: passwd.1.xml.out:196 -#: passwd.1.xml.out:245 -#: passwd.1.xml.out:267 -#: passwd.1.xml.out:277 -#: passwd.1.xml.out:321 -#: passwd.1.xml.out:334 +#: newusers.8.xml.out:307 +#: passwd.1.xml.out:192 +#: passwd.1.xml.out:241 +#: passwd.1.xml.out:263 +#: passwd.1.xml.out:273 +#: passwd.1.xml.out:286 +#: passwd.1.xml.out:332 +#: passwd.1.xml.out:345 #: pwck.8.xml.out:196 #: pwconv.8.xml.out:177 #: su.1.xml.out:125 @@ -889,18 +894,18 @@ msgstr "" #: useradd.8.xml.out:178 #: useradd.8.xml.out:195 #: useradd.8.xml.out:229 -#: useradd.8.xml.out:277 -#: useradd.8.xml.out:424 -#: useradd.8.xml.out:488 -#: useradd.8.xml.out:501 -#: useradd.8.xml.out:516 -#: useradd.8.xml.out:530 -#: useradd.8.xml.out:565 -#: useradd.8.xml.out:591 -#: useradd.8.xml.out:609 -#: useradd.8.xml.out:621 -#: useradd.8.xml.out:638 -#: useradd.8.xml.out:654 +#: useradd.8.xml.out:279 +#: useradd.8.xml.out:426 +#: useradd.8.xml.out:490 +#: useradd.8.xml.out:503 +#: useradd.8.xml.out:518 +#: useradd.8.xml.out:532 +#: useradd.8.xml.out:567 +#: useradd.8.xml.out:611 +#: useradd.8.xml.out:629 +#: useradd.8.xml.out:641 +#: useradd.8.xml.out:658 +#: useradd.8.xml.out:674 #: userdel.8.xml.out:122 #: userdel.8.xml.out:135 #: usermod.8.xml.out:98 @@ -923,16 +928,16 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:82 -#: chage.1.xml.out:288 +#: chage.1.xml.out:303 #: groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 #: groupmod.8.xml.out:259 #: grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 -#: passwd.1.xml.out:425 +#: login.defs.5.xml.out:140 +#: passwd.1.xml.out:447 #: pwck.8.xml.out:287 #: su.1.xml.out:385 -#: useradd.8.xml.out:811 +#: useradd.8.xml.out:831 #: userdel.8.xml.out:235 msgid "0" msgstr "" @@ -950,7 +955,7 @@ msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:89 #: useradd.8.xml.out:179 -#: useradd.8.xml.out:610 +#: useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "" @@ -960,7 +965,7 @@ msgstr "" #: chage.1.xml.out:89 #: chage.1.xml.out:109 #: useradd.8.xml.out:179 -#: useradd.8.xml.out:610 +#: useradd.8.xml.out:630 #: usermod.8.xml.out:129 #: usermod.8.xml.out:243 #: usermod.8.xml.out:416 @@ -987,8 +992,8 @@ msgstr "" #: chage.1.xml.out:108 #: chage.1.xml.out:139 #: chage.1.xml.out:182 -#: passwd.1.xml.out:344 -#: useradd.8.xml.out:315 +#: passwd.1.xml.out:355 +#: useradd.8.xml.out:317 msgid "-1" msgstr "" @@ -1001,12 +1006,12 @@ msgstr "" #. (itstool) path: para/option #: chage.1.xml.out:115 #: chfn.1.xml.out:102 -#: chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 +#: chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 #: chsh.1.xml.out:77 #: expiry.1.xml.out:88 #: faillog.8.xml.out:98 -#: gpasswd.1.xml.out:149 +#: gpasswd.1.xml.out:151 #: groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 #: groupmems.8.xml.out:118 @@ -1015,11 +1020,11 @@ msgstr "" #: lastlog.8.xml.out:96 #: login.1.xml.out:204 #: login.1.xml.out:229 -#: newusers.8.xml.out:280 -#: passwd.1.xml.out:190 +#: newusers.8.xml.out:282 +#: passwd.1.xml.out:186 #: pwck.8.xml.out:173 #: pwconv.8.xml.out:171 -#: useradd.8.xml.out:271 +#: useradd.8.xml.out:273 #: userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "-h" @@ -1029,24 +1034,24 @@ msgstr "" #. (itstool) path: para/option #: chage.1.xml.out:115 #: chfn.1.xml.out:143 -#: chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 +#: chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 #: chsh.1.xml.out:77 #: expiry.1.xml.out:88 #: faillog.8.xml.out:98 -#: gpasswd.1.xml.out:149 +#: gpasswd.1.xml.out:151 #: groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 #: groupmems.8.xml.out:118 #: groupmod.8.xml.out:114 #: grpck.8.xml.out:132 #: lastlog.8.xml.out:96 -#: newusers.8.xml.out:280 -#: passwd.1.xml.out:190 +#: newusers.8.xml.out:282 +#: passwd.1.xml.out:186 #: pwck.8.xml.out:173 #: pwconv.8.xml.out:171 #: su.1.xml.out:387 -#: useradd.8.xml.out:271 +#: useradd.8.xml.out:273 #: userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" @@ -1057,14 +1062,14 @@ msgstr "" #: chage.1.xml.out:121 #: chage.1.xml.out:146 #: chfn.1.xml.out:142 -#: chgpasswd.8.xml.out:88 -#: chgpasswd.8.xml.out:101 +#: chgpasswd.8.xml.out:90 #: chgpasswd.8.xml.out:107 #: chgpasswd.8.xml.out:113 -#: chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 -#: chpasswd.8.xml.out:147 -#: chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 +#: chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 +#: chpasswd.8.xml.out:153 +#: chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 #: expiry.1.xml.out:73 #: expiry.1.xml.out:79 @@ -1072,9 +1077,9 @@ msgstr "" #: faillog.8.xml.out:72 #: faillog.8.xml.out:98 #: faillog.8.xml.out:144 -#: gpasswd.1.xml.out:149 -#: gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 +#: gpasswd.1.xml.out:151 +#: gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 #: groupadd.8.xml.out:87 #: groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 @@ -1095,19 +1100,20 @@ msgstr "" #: lastlog.8.xml.out:84 #: lastlog.8.xml.out:95 #: lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 -#: newusers.8.xml.out:280 -#: newusers.8.xml.out:286 -#: newusers.8.xml.out:320 -#: passwd.1.xml.out:156 -#: passwd.1.xml.out:167 -#: passwd.1.xml.out:179 -#: passwd.1.xml.out:190 -#: passwd.1.xml.out:209 -#: passwd.1.xml.out:221 -#: passwd.1.xml.out:257 -#: passwd.1.xml.out:290 -#: passwd.1.xml.out:308 +#: newusers.8.xml.out:270 +#: newusers.8.xml.out:282 +#: newusers.8.xml.out:288 +#: newusers.8.xml.out:322 +#: passwd.1.xml.out:152 +#: passwd.1.xml.out:163 +#: passwd.1.xml.out:175 +#: passwd.1.xml.out:186 +#: passwd.1.xml.out:205 +#: passwd.1.xml.out:217 +#: passwd.1.xml.out:253 +#: passwd.1.xml.out:301 +#: passwd.1.xml.out:319 +#: passwd.1.xml.out:362 #: pwck.8.xml.out:173 #: pwck.8.xml.out:179 #: pwck.8.xml.out:188 @@ -1115,14 +1121,14 @@ msgstr "" #: pwconv.8.xml.out:171 #: useradd.8.xml.out:168 #: useradd.8.xml.out:217 -#: useradd.8.xml.out:271 -#: useradd.8.xml.out:330 -#: useradd.8.xml.out:349 -#: useradd.8.xml.out:372 -#: useradd.8.xml.out:385 -#: useradd.8.xml.out:404 -#: useradd.8.xml.out:455 -#: useradd.8.xml.out:548 +#: useradd.8.xml.out:273 +#: useradd.8.xml.out:332 +#: useradd.8.xml.out:351 +#: useradd.8.xml.out:374 +#: useradd.8.xml.out:387 +#: useradd.8.xml.out:406 +#: useradd.8.xml.out:457 +#: useradd.8.xml.out:550 #: userdel.8.xml.out:75 #: userdel.8.xml.out:99 #: userdel.8.xml.out:105 @@ -1146,23 +1152,23 @@ msgstr "" #. (itstool) path: listitem/para #: chage.1.xml.out:117 #: chfn.1.xml.out:146 -#: chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 +#: chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 #: chsh.1.xml.out:79 #: expiry.1.xml.out:90 #: faillog.8.xml.out:100 -#: gpasswd.1.xml.out:151 +#: gpasswd.1.xml.out:153 #: groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 #: groupmems.8.xml.out:120 #: groupmod.8.xml.out:116 #: grpck.8.xml.out:134 #: lastlog.8.xml.out:99 -#: newusers.8.xml.out:282 -#: passwd.1.xml.out:192 +#: newusers.8.xml.out:284 +#: passwd.1.xml.out:188 #: pwck.8.xml.out:175 #: pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 +#: useradd.8.xml.out:275 #: userdel.8.xml.out:101 #: vipw.8.xml.out:98 msgid "Display help message and exit." @@ -1170,7 +1176,7 @@ msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:121 -#: passwd.1.xml.out:197 +#: passwd.1.xml.out:193 msgid "-i" msgstr "" @@ -1191,9 +1197,9 @@ msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:128 -#: passwd.1.xml.out:197 +#: passwd.1.xml.out:193 #: useradd.8.xml.out:196 -#: useradd.8.xml.out:622 +#: useradd.8.xml.out:642 #: usermod.8.xml.out:152 msgid "--inactive" msgstr "" @@ -1204,12 +1210,12 @@ msgstr "" #: chage.1.xml.out:128 #: chage.1.xml.out:134 #: chage.1.xml.out:140 -#: passwd.1.xml.out:197 -#: passwd.1.xml.out:203 +#: passwd.1.xml.out:193 +#: passwd.1.xml.out:199 #: useradd.8.xml.out:196 #: useradd.8.xml.out:211 -#: useradd.8.xml.out:622 -#: useradd.8.xml.out:632 +#: useradd.8.xml.out:642 +#: useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "" @@ -1228,18 +1234,18 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: group/arg #: chage.1.xml.out:147 -#: chage.1.xml.out:242 +#: chage.1.xml.out:257 #: faillog.8.xml.out:88 #: faillog.8.xml.out:105 #: faillog.8.xml.out:185 #: faillog.8.xml.out:202 #: groupmems.8.xml.out:55 #: groupmems.8.xml.out:124 -#: passwd.1.xml.out:222 -#: passwd.1.xml.out:316 +#: passwd.1.xml.out:218 +#: passwd.1.xml.out:327 #: su.1.xml.out:144 #: su.1.xml.out:156 -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "" @@ -1258,20 +1264,20 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chage.1.xml.out:157 -#: chgpasswd.8.xml.out:72 -#: chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 -#: chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:74 +#: chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 +#: chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 #: faillog.8.xml.out:88 #: faillog.8.xml.out:120 #: faillog.8.xml.out:185 #: faillog.8.xml.out:202 #: su.1.xml.out:207 -#: useradd.8.xml.out:287 -#: useradd.8.xml.out:350 -#: useradd.8.xml.out:476 +#: useradd.8.xml.out:289 +#: useradd.8.xml.out:352 +#: useradd.8.xml.out:478 #: usermod.8.xml.out:119 #: usermod.8.xml.out:250 msgid "-m" @@ -1279,7 +1285,7 @@ msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:157 -#: passwd.1.xml.out:246 +#: passwd.1.xml.out:242 msgid "--mindays" msgstr "" @@ -1287,31 +1293,31 @@ msgstr "" #. (itstool) path: para/replaceable #: chage.1.xml.out:157 #: chage.1.xml.out:162 -#: passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "" #. (itstool) path: listitem/para #: chage.1.xml.out:160 -#: passwd.1.xml.out:249 +#: passwd.1.xml.out:245 msgid "Set the minimum number of days between password changes to <_:replaceable-1/>. A value of zero for this field indicates that the user may change their password at any time." msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chage.1.xml.out:169 -#: gpasswd.1.xml.out:81 -#: gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:83 +#: gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 #: useradd.8.xml.out:162 -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "-M" msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:169 -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 msgid "--maxdays" msgstr "" @@ -1320,16 +1326,16 @@ msgstr "" #: chage.1.xml.out:169 #: chage.1.xml.out:174 #: chage.1.xml.out:183 -#: passwd.1.xml.out:335 -#: passwd.1.xml.out:340 -#: passwd.1.xml.out:345 +#: passwd.1.xml.out:346 +#: passwd.1.xml.out:351 +#: passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: chage.1.xml.out:178 -#: chage.1.xml.out:203 +#: chage.1.xml.out:218 #: usermod.8.xml.out:481 msgid "-W" msgstr "" @@ -1341,29 +1347,29 @@ msgstr "" #. (itstool) path: listitem/para #: chage.1.xml.out:181 -#: passwd.1.xml.out:343 +#: passwd.1.xml.out:354 msgid "Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove checking a password's validity." msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:190 #: chfn.1.xml.out:130 -#: chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 +#: chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 #: chsh.1.xml.out:84 #: faillog.8.xml.out:157 -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 #: groupadd.8.xml.out:201 #: groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 #: groupmod.8.xml.out:164 #: grpck.8.xml.out:149 #: lastlog.8.xml.out:104 -#: newusers.8.xml.out:306 -#: passwd.1.xml.out:278 +#: newusers.8.xml.out:308 +#: passwd.1.xml.out:274 #: pwck.8.xml.out:197 #: pwconv.8.xml.out:178 -#: useradd.8.xml.out:489 +#: useradd.8.xml.out:491 #: userdel.8.xml.out:123 #: usermod.8.xml.out:328 #: vipw.8.xml.out:115 @@ -1373,22 +1379,22 @@ msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:190 #: chfn.1.xml.out:130 -#: chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 +#: chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 #: chsh.1.xml.out:84 #: faillog.8.xml.out:157 -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 #: groupadd.8.xml.out:201 #: groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 #: groupmod.8.xml.out:164 #: grpck.8.xml.out:149 #: lastlog.8.xml.out:104 -#: newusers.8.xml.out:306 -#: passwd.1.xml.out:278 +#: newusers.8.xml.out:308 +#: passwd.1.xml.out:274 #: pwck.8.xml.out:197 #: pwconv.8.xml.out:178 -#: useradd.8.xml.out:489 +#: useradd.8.xml.out:491 #: userdel.8.xml.out:123 #: usermod.8.xml.out:328 #: vipw.8.xml.out:115 @@ -1403,21 +1409,21 @@ msgstr "" #: chfn.1.xml.out:130 #: chfn.1.xml.out:134 #: chfn.1.xml.out:136 -#: chgpasswd.8.xml.out:123 -#: chgpasswd.8.xml.out:127 #: chgpasswd.8.xml.out:129 -#: chpasswd.8.xml.out:165 -#: chpasswd.8.xml.out:169 +#: chgpasswd.8.xml.out:133 +#: chgpasswd.8.xml.out:135 #: chpasswd.8.xml.out:171 +#: chpasswd.8.xml.out:175 +#: chpasswd.8.xml.out:177 #: chsh.1.xml.out:84 #: chsh.1.xml.out:88 #: chsh.1.xml.out:90 #: faillog.8.xml.out:157 #: faillog.8.xml.out:161 #: faillog.8.xml.out:163 -#: gpasswd.1.xml.out:158 -#: gpasswd.1.xml.out:162 +#: gpasswd.1.xml.out:160 #: gpasswd.1.xml.out:164 +#: gpasswd.1.xml.out:166 #: groupadd.8.xml.out:201 #: groupadd.8.xml.out:205 #: groupadd.8.xml.out:207 @@ -1436,21 +1442,21 @@ msgstr "" #: lastlog.8.xml.out:104 #: lastlog.8.xml.out:108 #: lastlog.8.xml.out:110 -#: newusers.8.xml.out:306 -#: newusers.8.xml.out:310 +#: newusers.8.xml.out:308 #: newusers.8.xml.out:312 +#: newusers.8.xml.out:314 +#: passwd.1.xml.out:274 #: passwd.1.xml.out:278 -#: passwd.1.xml.out:282 -#: passwd.1.xml.out:284 +#: passwd.1.xml.out:280 #: pwck.8.xml.out:197 #: pwck.8.xml.out:201 #: pwck.8.xml.out:203 #: pwconv.8.xml.out:178 #: pwconv.8.xml.out:182 #: pwconv.8.xml.out:184 -#: useradd.8.xml.out:489 -#: useradd.8.xml.out:493 +#: useradd.8.xml.out:491 #: useradd.8.xml.out:495 +#: useradd.8.xml.out:497 #: userdel.8.xml.out:123 #: userdel.8.xml.out:127 #: userdel.8.xml.out:129 @@ -1466,22 +1472,22 @@ msgstr "" #. (itstool) path: listitem/para #: chage.1.xml.out:193 #: chfn.1.xml.out:133 -#: chgpasswd.8.xml.out:126 -#: chpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:132 +#: chpasswd.8.xml.out:174 #: chsh.1.xml.out:87 #: faillog.8.xml.out:160 -#: gpasswd.1.xml.out:161 +#: gpasswd.1.xml.out:163 #: groupadd.8.xml.out:204 #: groupdel.8.xml.out:92 #: groupmems.8.xml.out:145 #: groupmod.8.xml.out:167 #: grpck.8.xml.out:152 #: lastlog.8.xml.out:107 -#: newusers.8.xml.out:309 -#: passwd.1.xml.out:281 +#: newusers.8.xml.out:311 +#: passwd.1.xml.out:277 #: pwck.8.xml.out:200 #: pwconv.8.xml.out:181 -#: useradd.8.xml.out:492 +#: useradd.8.xml.out:494 #: userdel.8.xml.out:126 #: usermod.8.xml.out:331 #: vipw.8.xml.out:118 @@ -1490,38 +1496,99 @@ msgstr "" #. (itstool) path: term/option #: chage.1.xml.out:203 -#: passwd.1.xml.out:322 -msgid "--warndays" +#: chpasswd.8.xml.out:184 +#: groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 +#: groupmod.8.xml.out:177 +#: passwd.1.xml.out:287 +#: useradd.8.xml.out:504 +#: userdel.8.xml.out:136 +#: usermod.8.xml.out:341 +msgid "-P" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:203 +#: chpasswd.8.xml.out:184 +#: groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 +#: groupmod.8.xml.out:177 +#: passwd.1.xml.out:287 +#: useradd.8.xml.out:504 +#: userdel.8.xml.out:136 +#: usermod.8.xml.out:341 +msgid "--prefix" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:203 #: chage.1.xml.out:208 -#: passwd.1.xml.out:322 -#: passwd.1.xml.out:327 -msgid "WARN_DAYS" +#: chpasswd.8.xml.out:184 +#: chpasswd.8.xml.out:189 +#: groupadd.8.xml.out:214 +#: groupadd.8.xml.out:219 +#: groupdel.8.xml.out:102 +#: groupdel.8.xml.out:106 +#: groupdel.8.xml.out:108 +#: groupmod.8.xml.out:177 +#: groupmod.8.xml.out:181 +#: groupmod.8.xml.out:183 +#: passwd.1.xml.out:287 +#: passwd.1.xml.out:292 +#: useradd.8.xml.out:504 +#: useradd.8.xml.out:509 +#: userdel.8.xml.out:136 +#: userdel.8.xml.out:140 +#: userdel.8.xml.out:142 +#: usermod.8.xml.out:341 +#: usermod.8.xml.out:346 +msgid "PREFIX_DIR" msgstr "" #. (itstool) path: listitem/para #: chage.1.xml.out:206 +#: chpasswd.8.xml.out:187 +#: groupadd.8.xml.out:217 +#: passwd.1.xml.out:290 +#: useradd.8.xml.out:507 +msgid "Apply changes to configuration files under the root filesystem found under the directory <_:replaceable-1/>. 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." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:218 +#: passwd.1.xml.out:333 +msgid "--warndays" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:218 +#: chage.1.xml.out:223 +#: passwd.1.xml.out:333 +#: passwd.1.xml.out:338 +msgid "WARN_DAYS" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:221 msgid "Set the number of days of warning before a password change is required. The <_:replaceable-1/> option is the number of days prior to the password expiring that a user will be warned their password is about to expire." msgstr "" #. (itstool) path: para/emphasis -#: chage.1.xml.out:220 +#: chage.1.xml.out:235 #: chfn.1.xml.out:163 #: chsh.1.xml.out:112 msgid "[ ]" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:215 +#: chage.1.xml.out:230 msgid "If none of the options are selected, <_:command-1/> operates in an interactive fashion, prompting the user with the current values for all of the fields. Enter the new value to change the field, or leave the line blank to use the current value. The current value is displayed between a pair of <_:emphasis-2/> marks." msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:224 +#: chage.1.xml.out:239 #: chsh.1.xml.out:117 #: groups.1.xml.out:65 #: lastlog.8.xml.out:170 @@ -1529,12 +1596,12 @@ msgid "NOTE" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:225 +#: chage.1.xml.out:240 msgid "The <_:command-1/> program requires a shadow password file to be available." msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:229 +#: chage.1.xml.out:244 msgid "The chage program will report only the information from the shadow password file. This implies that configuration from other sources (e.g. LDAP or empty password hash field from the passwd file) that affect the user's login will not be shown in the chage output." msgstr "" @@ -1544,9 +1611,9 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: chage.1.xml.out:238 +#: chage.1.xml.out:253 #: grpck.8.xml.out:294 -#: login.defs.5.xml.out:410 +#: login.defs.5.xml.out:429 #: passwd.5.xml.out:185 #: pwck.8.xml.out:40 #: pwck.8.xml.out:47 @@ -1564,22 +1631,22 @@ msgid "pwck" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:235 +#: chage.1.xml.out:250 msgid "The <_:command-1/> program will also not report any inconsistency between the shadow and passwd files (e.g. missing x in the passwd file). The <_:command-2/> can be used to check for this kind of inconsistencies." msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:241 +#: chage.1.xml.out:256 msgid "The <_:command-1/> command is restricted to the root user, except for the <_:option-2/> option, which may be used by an unprivileged user to determine when their password or account is due to expire." msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:249 +#: chage.1.xml.out:264 #: chfn.1.xml.out:170 -#: chgpasswd.8.xml.out:175 -#: chpasswd.8.xml.out:216 -#: chsh.1.xml.out:131 -#: gpasswd.1.xml.out:241 +#: chgpasswd.8.xml.out:201 +#: chpasswd.8.xml.out:256 +#: chsh.1.xml.out:150 +#: gpasswd.1.xml.out:243 #: groupadd.8.xml.out:247 #: groupdel.8.xml.out:133 #: groupmems.8.xml.out:176 @@ -1588,37 +1655,41 @@ msgstr "" #: lastlog.8.xml.out:182 #: login.1.xml.out:270 #: newgrp.1.xml.out:85 -#: newusers.8.xml.out:360 -#: passwd.1.xml.out:372 +#: newusers.8.xml.out:381 +#: passwd.1.xml.out:394 #: pwck.8.xml.out:240 #: pwconv.8.xml.out:204 #: sg.1.xml.out:74 #: su.1.xml.out:314 -#: useradd.8.xml.out:710 +#: useradd.8.xml.out:730 #: userdel.8.xml.out:165 -#: usermod.8.xml.out:536 +#: usermod.8.xml.out:553 #: vipw.8.xml.out:142 msgid "CONFIGURATION" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chage.1.xml.out:252 +#: chage.1.xml.out:267 #: chfn.1.xml.out:68 #: chfn.1.xml.out:173 #: chfn.1.xml.out:187 -#: chgpasswd.8.xml.out:70 -#: chgpasswd.8.xml.out:155 -#: chgpasswd.8.xml.out:178 -#: chgpasswd.8.xml.out:205 -#: chpasswd.8.xml.out:77 -#: chpasswd.8.xml.out:134 -#: chpasswd.8.xml.out:200 -#: chpasswd.8.xml.out:219 -#: chpasswd.8.xml.out:247 -#: chsh.1.xml.out:134 -#: chsh.1.xml.out:159 -#: gpasswd.1.xml.out:244 +#: chgpasswd.8.xml.out:72 +#: chgpasswd.8.xml.out:159 +#: chgpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:177 +#: chgpasswd.8.xml.out:204 +#: chgpasswd.8.xml.out:233 +#: chpasswd.8.xml.out:79 +#: chpasswd.8.xml.out:140 +#: chpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:227 +#: chpasswd.8.xml.out:236 +#: chpasswd.8.xml.out:259 +#: chpasswd.8.xml.out:289 +#: chsh.1.xml.out:153 +#: chsh.1.xml.out:200 +#: gpasswd.1.xml.out:246 #: groupadd.8.xml.out:129 #: groupadd.8.xml.out:239 #: groupadd.8.xml.out:250 @@ -1634,14 +1705,16 @@ msgstr "" #: login.1.xml.out:273 #: login.1.xml.out:365 #: login.access.5.xml.out:100 -#: login.defs.5.xml.out:116 -#: login.defs.5.xml.out:515 +#: login.defs.5.xml.out:118 +#: login.defs.5.xml.out:534 #: newgrp.1.xml.out:88 #: newusers.8.xml.out:340 -#: newusers.8.xml.out:363 -#: newusers.8.xml.out:423 -#: passwd.1.xml.out:375 -#: passwd.1.xml.out:405 +#: newusers.8.xml.out:349 +#: newusers.8.xml.out:357 +#: newusers.8.xml.out:384 +#: newusers.8.xml.out:444 +#: passwd.1.xml.out:397 +#: passwd.1.xml.out:427 #: pwck.8.xml.out:243 #: pwconv.8.xml.out:148 #: pwconv.8.xml.out:207 @@ -1654,32 +1727,32 @@ msgstr "" #: su.1.xml.out:317 #: su.1.xml.out:357 #: useradd.8.xml.out:241 -#: useradd.8.xml.out:307 -#: useradd.8.xml.out:378 -#: useradd.8.xml.out:399 -#: useradd.8.xml.out:467 -#: useradd.8.xml.out:474 -#: useradd.8.xml.out:560 -#: useradd.8.xml.out:713 -#: useradd.8.xml.out:797 +#: useradd.8.xml.out:309 +#: useradd.8.xml.out:380 +#: useradd.8.xml.out:401 +#: useradd.8.xml.out:469 +#: useradd.8.xml.out:476 +#: useradd.8.xml.out:562 +#: useradd.8.xml.out:733 +#: useradd.8.xml.out:817 #: userdel.8.xml.out:87 #: userdel.8.xml.out:168 #: userdel.8.xml.out:191 #: userdel.8.xml.out:297 #: usermod.8.xml.out:399 -#: usermod.8.xml.out:539 -#: usermod.8.xml.out:569 +#: usermod.8.xml.out:556 +#: usermod.8.xml.out:586 #: vipw.8.xml.out:145 msgid "/etc/login.defs" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:250 +#: chage.1.xml.out:265 #: chfn.1.xml.out:171 -#: chgpasswd.8.xml.out:176 -#: chpasswd.8.xml.out:217 -#: chsh.1.xml.out:132 -#: gpasswd.1.xml.out:242 +#: chgpasswd.8.xml.out:202 +#: chpasswd.8.xml.out:257 +#: chsh.1.xml.out:151 +#: gpasswd.1.xml.out:244 #: groupadd.8.xml.out:248 #: groupdel.8.xml.out:134 #: groupmems.8.xml.out:177 @@ -1688,28 +1761,28 @@ msgstr "" #: lastlog.8.xml.out:183 #: login.1.xml.out:271 #: newgrp.1.xml.out:86 -#: newusers.8.xml.out:361 -#: passwd.1.xml.out:373 +#: newusers.8.xml.out:382 +#: passwd.1.xml.out:395 #: pwck.8.xml.out:241 #: sg.1.xml.out:75 #: su.1.xml.out:315 -#: useradd.8.xml.out:711 +#: useradd.8.xml.out:731 #: userdel.8.xml.out:166 -#: usermod.8.xml.out:537 +#: usermod.8.xml.out:554 #: vipw.8.xml.out:143 msgid "The following configuration variables in <_:filename-1/> change the behavior of this tool:" msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:261 +#: chage.1.xml.out:276 #: chfn.1.xml.out:184 -#: chgpasswd.8.xml.out:190 -#: chpasswd.8.xml.out:232 -#: chsh.1.xml.out:144 +#: chgpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:274 +#: chsh.1.xml.out:163 #: expiry.1.xml.out:97 #: faillog.5.xml.out:72 #: faillog.8.xml.out:220 -#: gpasswd.1.xml.out:256 +#: gpasswd.1.xml.out:258 #: groupadd.8.xml.out:261 #: groupdel.8.xml.out:145 #: groupmems.8.xml.out:188 @@ -1723,8 +1796,8 @@ msgstr "" #: login.access.5.xml.out:97 #: logoutd.8.xml.out:65 #: newgrp.1.xml.out:97 -#: newusers.8.xml.out:396 -#: passwd.1.xml.out:390 +#: newusers.8.xml.out:417 +#: passwd.1.xml.out:412 #: passwd.5.xml.out:139 #: porttime.5.xml.out:106 #: pwck.8.xml.out:258 @@ -1734,19 +1807,19 @@ msgstr "" #: sg.1.xml.out:86 #: su.1.xml.out:342 #: suauth.5.xml.out:169 -#: useradd.8.xml.out:740 +#: useradd.8.xml.out:760 #: userdel.8.xml.out:182 -#: usermod.8.xml.out:554 +#: usermod.8.xml.out:571 #: vipw.8.xml.out:172 msgid "FILES" msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:265 +#: chage.1.xml.out:280 #: chfn.1.xml.out:193 -#: chpasswd.8.xml.out:235 -#: chsh.1.xml.out:147 +#: chpasswd.8.xml.out:277 +#: chsh.1.xml.out:166 #: expiry.1.xml.out:100 #: groupmod.8.xml.out:245 #: grpck.8.xml.out:223 @@ -1756,8 +1829,8 @@ msgstr "" #: newgrp.1.xml.out:65 #: newgrp.1.xml.out:70 #: newgrp.1.xml.out:100 -#: newusers.8.xml.out:399 -#: passwd.1.xml.out:393 +#: newusers.8.xml.out:420 +#: passwd.1.xml.out:415 #: passwd.5.xml.out:47 #: passwd.5.xml.out:89 #: passwd.5.xml.out:142 @@ -1772,36 +1845,36 @@ msgstr "" #: su.1.xml.out:185 #: su.1.xml.out:197 #: su.1.xml.out:345 -#: useradd.8.xml.out:524 -#: useradd.8.xml.out:743 +#: useradd.8.xml.out:526 +#: useradd.8.xml.out:763 #: userdel.8.xml.out:197 #: usermod.8.xml.out:103 #: usermod.8.xml.out:305 #: usermod.8.xml.out:362 -#: usermod.8.xml.out:575 +#: usermod.8.xml.out:592 #: vipw.8.xml.out:68 #: vipw.8.xml.out:187 msgid "/etc/passwd" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:268 +#: chage.1.xml.out:283 #: chfn.1.xml.out:195 -#: chpasswd.8.xml.out:237 -#: chsh.1.xml.out:149 +#: chpasswd.8.xml.out:279 +#: chsh.1.xml.out:168 #: expiry.1.xml.out:102 #: groupmod.8.xml.out:247 #: grpck.8.xml.out:225 #: login.1.xml.out:331 #: newgrp.1.xml.out:102 -#: newusers.8.xml.out:401 -#: passwd.1.xml.out:395 +#: newusers.8.xml.out:422 +#: passwd.1.xml.out:417 #: passwd.5.xml.out:144 #: pwck.8.xml.out:269 #: shadow.5.xml.out:236 #: sg.1.xml.out:91 #: su.1.xml.out:347 -#: useradd.8.xml.out:745 +#: useradd.8.xml.out:765 #: userdel.8.xml.out:199 #: vipw.8.xml.out:189 msgid "User account information." @@ -1809,15 +1882,15 @@ msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:273 -#: chpasswd.8.xml.out:241 +#: chage.1.xml.out:288 +#: chpasswd.8.xml.out:283 #: expiry.1.xml.out:106 #: login.1.xml.out:335 #: newgrp.1.xml.out:68 #: newgrp.1.xml.out:106 -#: newusers.8.xml.out:295 -#: newusers.8.xml.out:405 -#: passwd.1.xml.out:399 +#: newusers.8.xml.out:297 +#: newusers.8.xml.out:426 +#: passwd.1.xml.out:421 #: passwd.5.xml.out:82 #: passwd.5.xml.out:148 #: pwck.8.xml.out:73 @@ -1834,75 +1907,75 @@ msgstr "" #: shadow.5.xml.out:240 #: sg.1.xml.out:95 #: su.1.xml.out:351 -#: useradd.8.xml.out:439 -#: useradd.8.xml.out:464 -#: useradd.8.xml.out:749 +#: useradd.8.xml.out:441 +#: useradd.8.xml.out:466 +#: useradd.8.xml.out:769 #: userdel.8.xml.out:203 #: usermod.8.xml.out:144 #: usermod.8.xml.out:145 #: usermod.8.xml.out:166 #: usermod.8.xml.out:167 #: usermod.8.xml.out:306 -#: usermod.8.xml.out:581 +#: usermod.8.xml.out:598 #: vipw.8.xml.out:71 #: vipw.8.xml.out:193 msgid "/etc/shadow" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:276 -#: chpasswd.8.xml.out:243 +#: chage.1.xml.out:291 +#: chpasswd.8.xml.out:285 #: expiry.1.xml.out:108 #: login.1.xml.out:337 #: newgrp.1.xml.out:108 -#: newusers.8.xml.out:407 -#: passwd.1.xml.out:401 +#: newusers.8.xml.out:428 +#: passwd.1.xml.out:423 #: pwck.8.xml.out:275 #: shadow.3.xml.out:207 #: shadow.5.xml.out:242 #: sg.1.xml.out:97 #: su.1.xml.out:353 -#: useradd.8.xml.out:751 +#: useradd.8.xml.out:771 #: userdel.8.xml.out:205 #: vipw.8.xml.out:195 msgid "Secure user account information." msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:283 +#: chage.1.xml.out:298 #: groupadd.8.xml.out:298 #: groupdel.8.xml.out:163 #: groupmod.8.xml.out:254 #: grpck.8.xml.out:232 -#: passwd.1.xml.out:420 +#: passwd.1.xml.out:442 #: pwck.8.xml.out:282 #: su.1.xml.out:366 -#: useradd.8.xml.out:806 +#: useradd.8.xml.out:826 #: userdel.8.xml.out:230 msgid "EXIT VALUES" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:290 +#: chage.1.xml.out:305 #: groupadd.8.xml.out:305 #: groupdel.8.xml.out:170 #: grpck.8.xml.out:239 -#: passwd.1.xml.out:427 +#: passwd.1.xml.out:449 #: pwck.8.xml.out:289 -#: useradd.8.xml.out:813 +#: useradd.8.xml.out:833 #: userdel.8.xml.out:237 msgid "success" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:296 -#: passwd.1.xml.out:433 +#: chage.1.xml.out:311 +#: passwd.1.xml.out:455 msgid "permission denied" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum -#: chage.1.xml.out:300 +#: chage.1.xml.out:315 #: groupadd.8.xml.out:309 #: groupdel.8.xml.out:174 #: groupmod.8.xml.out:265 @@ -1914,57 +1987,57 @@ msgstr "" #: limits.5.xml.out:101 #: limits.5.xml.out:188 #: limits.5.xml.out:191 -#: passwd.1.xml.out:437 +#: passwd.1.xml.out:459 #: pwck.8.xml.out:299 -#: useradd.8.xml.out:823 +#: useradd.8.xml.out:843 #: userdel.8.xml.out:247 msgid "2" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:302 +#: chage.1.xml.out:317 #: groupadd.8.xml.out:311 #: groupdel.8.xml.out:176 #: grpck.8.xml.out:245 #: pwck.8.xml.out:295 -#: useradd.8.xml.out:825 +#: useradd.8.xml.out:845 #: userdel.8.xml.out:249 msgid "invalid command syntax" msgstr "" #. (itstool) path: term/replaceable -#: chage.1.xml.out:306 +#: chage.1.xml.out:321 msgid "15" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:308 +#: chage.1.xml.out:323 msgid "can't find the shadow password file" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:284 +#: chage.1.xml.out:299 #: groupadd.8.xml.out:299 #: groupdel.8.xml.out:164 #: groupmod.8.xml.out:255 #: grpck.8.xml.out:233 -#: passwd.1.xml.out:421 +#: passwd.1.xml.out:443 #: pwck.8.xml.out:283 -#: useradd.8.xml.out:807 +#: useradd.8.xml.out:827 #: userdel.8.xml.out:231 msgid "The <_:command-1/> command exits with the following values: <_:variablelist-2/>" msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:316 +#: chage.1.xml.out:331 #: chfn.1.xml.out:202 -#: chgpasswd.8.xml.out:214 -#: chpasswd.8.xml.out:262 -#: chsh.1.xml.out:168 +#: chgpasswd.8.xml.out:242 +#: chpasswd.8.xml.out:304 +#: chsh.1.xml.out:209 #: expiry.1.xml.out:115 #: faillog.5.xml.out:84 #: faillog.8.xml.out:232 -#: gpasswd.1.xml.out:274 +#: gpasswd.1.xml.out:276 #: groupadd.8.xml.out:343 #: groupdel.8.xml.out:202 #: groupmems.8.xml.out:206 @@ -1975,11 +2048,11 @@ msgstr "" #: limits.5.xml.out:182 #: login.1.xml.out:374 #: login.access.5.xml.out:109 -#: login.defs.5.xml.out:527 +#: login.defs.5.xml.out:546 #: newgrp.1.xml.out:127 -#: newusers.8.xml.out:450 +#: newusers.8.xml.out:471 #: nologin.8.xml.out:57 -#: passwd.1.xml.out:471 +#: passwd.1.xml.out:493 #: passwd.5.xml.out:167 #: porttime.5.xml.out:118 #: pwck.8.xml.out:333 @@ -1989,9 +2062,9 @@ msgstr "" #: sg.1.xml.out:116 #: su.1.xml.out:413 #: suauth.5.xml.out:198 -#: useradd.8.xml.out:875 +#: useradd.8.xml.out:895 #: userdel.8.xml.out:308 -#: usermod.8.xml.out:602 +#: usermod.8.xml.out:619 #: vipw.8.xml.out:202 msgid "SEE ALSO" msgstr "" @@ -2005,10 +2078,10 @@ msgstr "" #. (itstool) path: para/command #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: chage.1.xml.out:319 +#: chage.1.xml.out:334 #: chfn.1.xml.out:211 -#: chpasswd.8.xml.out:265 -#: chsh.1.xml.out:177 +#: chpasswd.8.xml.out:307 +#: chsh.1.xml.out:218 #: expiry.1.xml.out:118 #: groupadd.8.xml.out:351 #: groupdel.8.xml.out:211 @@ -2019,26 +2092,26 @@ msgstr "" #: login.1.xml.out:128 #: login.1.xml.out:380 #: login.1.xml.out:395 -#: login.defs.5.xml.out:399 -#: login.defs.5.xml.out:516 -#: login.defs.5.xml.out:533 -#: login.defs.5.xml.out:539 -#: newusers.8.xml.out:79 -#: newusers.8.xml.out:456 -#: passwd.1.xml.out:40 -#: passwd.1.xml.out:47 -#: passwd.1.xml.out:53 -#: passwd.1.xml.out:66 -#: passwd.1.xml.out:69 -#: passwd.1.xml.out:86 -#: passwd.1.xml.out:116 -#: passwd.1.xml.out:152 -#: passwd.1.xml.out:366 -#: passwd.1.xml.out:413 -#: passwd.1.xml.out:422 -#: passwd.1.xml.out:451 -#: passwd.1.xml.out:457 -#: passwd.1.xml.out:477 +#: login.defs.5.xml.out:415 +#: login.defs.5.xml.out:535 +#: login.defs.5.xml.out:552 +#: login.defs.5.xml.out:558 +#: newusers.8.xml.out:81 +#: newusers.8.xml.out:477 +#: passwd.1.xml.out:42 +#: passwd.1.xml.out:49 +#: passwd.1.xml.out:55 +#: passwd.1.xml.out:68 +#: passwd.1.xml.out:71 +#: passwd.1.xml.out:88 +#: passwd.1.xml.out:100 +#: passwd.1.xml.out:148 +#: passwd.1.xml.out:388 +#: passwd.1.xml.out:435 +#: passwd.1.xml.out:444 +#: passwd.1.xml.out:473 +#: passwd.1.xml.out:479 +#: passwd.1.xml.out:502 #: passwd.5.xml.out:33 #: passwd.5.xml.out:40 #: passwd.5.xml.out:182 @@ -2049,9 +2122,9 @@ msgstr "" #: pwconv.8.xml.out:99 #: shadow.5.xml.out:268 #: shadow.5.xml.out:271 -#: useradd.8.xml.out:884 +#: useradd.8.xml.out:904 #: userdel.8.xml.out:316 -#: usermod.8.xml.out:611 +#: usermod.8.xml.out:628 #: vipw.8.xml.out:217 msgid "passwd" msgstr "" @@ -2059,20 +2132,20 @@ msgstr "" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: refmeta/manvolnum #. (itstool) path: term/replaceable -#: chage.1.xml.out:319 -#: chage.1.xml.out:322 +#: chage.1.xml.out:334 +#: chage.1.xml.out:337 #: chfn.1.xml.out:208 #: chfn.1.xml.out:211 -#: chgpasswd.8.xml.out:223 -#: chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 -#: chsh.1.xml.out:177 +#: chgpasswd.8.xml.out:251 +#: chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 +#: chsh.1.xml.out:218 #: expiry.1.xml.out:118 #: expiry.1.xml.out:121 #: faillog.5.xml.out:34 #: faillog.8.xml.out:238 -#: gpasswd.1.xml.out:292 -#: gpasswd.1.xml.out:295 +#: gpasswd.1.xml.out:294 +#: gpasswd.1.xml.out:297 #: groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 #: grpck.8.xml.out:267 @@ -2089,21 +2162,21 @@ msgstr "" #: login.1.xml.out:395 #: login.1.xml.out:398 #: login.access.5.xml.out:35 -#: login.defs.5.xml.out:103 -#: login.defs.5.xml.out:539 -#: login.defs.5.xml.out:542 +#: login.defs.5.xml.out:105 +#: login.defs.5.xml.out:558 +#: login.defs.5.xml.out:561 #: newgrp.1.xml.out:145 #: newgrp.1.xml.out:148 -#: newusers.8.xml.out:79 -#: newusers.8.xml.out:453 -#: newusers.8.xml.out:460 -#: newusers.8.xml.out:463 +#: newusers.8.xml.out:81 +#: newusers.8.xml.out:474 +#: newusers.8.xml.out:481 +#: newusers.8.xml.out:484 #: nologin.8.xml.out:48 #: nologin.8.xml.out:63 -#: passwd.1.xml.out:455 #: passwd.1.xml.out:477 -#: passwd.1.xml.out:480 -#: passwd.1.xml.out:484 +#: passwd.1.xml.out:502 +#: passwd.1.xml.out:505 +#: passwd.1.xml.out:509 #: passwd.5.xml.out:34 #: passwd.5.xml.out:80 #: passwd.5.xml.out:194 @@ -2122,17 +2195,17 @@ msgstr "" #: suauth.5.xml.out:34 #: suauth.5.xml.out:91 #: useradd.8.xml.out:205 -#: useradd.8.xml.out:628 -#: useradd.8.xml.out:899 -#: useradd.8.xml.out:906 -#: useradd.8.xml.out:909 +#: useradd.8.xml.out:648 +#: useradd.8.xml.out:919 +#: useradd.8.xml.out:926 +#: useradd.8.xml.out:929 #: userdel.8.xml.out:319 #: userdel.8.xml.out:335 #: userdel.8.xml.out:338 #: usermod.8.xml.out:162 -#: usermod.8.xml.out:629 -#: usermod.8.xml.out:633 -#: usermod.8.xml.out:636 +#: usermod.8.xml.out:646 +#: usermod.8.xml.out:650 +#: usermod.8.xml.out:653 #: vipw.8.xml.out:208 #: vipw.8.xml.out:211 #: vipw.8.xml.out:214 @@ -2150,13 +2223,13 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/filename -#: chage.1.xml.out:322 +#: chage.1.xml.out:337 #: expiry.1.xml.out:121 #: grpck.8.xml.out:51 #: grpck.8.xml.out:190 #: grpck.8.xml.out:297 -#: login.defs.5.xml.out:542 -#: passwd.1.xml.out:480 +#: login.defs.5.xml.out:561 +#: passwd.1.xml.out:505 #: passwd.5.xml.out:79 #: passwd.5.xml.out:194 #: pwck.8.xml.out:229 @@ -2174,14 +2247,14 @@ msgstr "" #: shadow.5.xml.out:40 #: shadow.5.xml.out:47 #: useradd.8.xml.out:205 -#: useradd.8.xml.out:628 +#: useradd.8.xml.out:648 #: usermod.8.xml.out:162 #: vipw.8.xml.out:223 msgid "shadow" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:317 +#: chage.1.xml.out:332 #: expiry.1.xml.out:116 #: faillog.8.xml.out:233 #: nologin.8.xml.out:58 @@ -2202,16 +2275,16 @@ msgstr "" #: chfn.1.xml.out:89 #: chfn.1.xml.out:159 #: chfn.1.xml.out:164 -#: chsh.1.xml.out:171 +#: chsh.1.xml.out:212 #: groupadd.8.xml.out:345 #: groupdel.8.xml.out:205 #: groupmems.8.xml.out:209 #: groupmod.8.xml.out:326 -#: login.defs.5.xml.out:239 -#: useradd.8.xml.out:878 +#: login.defs.5.xml.out:243 +#: useradd.8.xml.out:898 #: userdel.8.xml.out:310 #: usermod.8.xml.out:105 -#: usermod.8.xml.out:605 +#: usermod.8.xml.out:622 msgid "chfn" msgstr "" @@ -2235,9 +2308,9 @@ msgstr "" #: groupadd.8.xml.out:323 #: groupmod.8.xml.out:93 #: groupmod.8.xml.out:132 -#: useradd.8.xml.out:405 -#: useradd.8.xml.out:536 -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:407 +#: useradd.8.xml.out:538 +#: useradd.8.xml.out:857 #: usermod.8.xml.out:271 #: usermod.8.xml.out:377 msgid "-o" @@ -2271,7 +2344,7 @@ msgstr "" #: login.1.xml.out:190 #: login.1.xml.out:229 #: useradd.8.xml.out:196 -#: useradd.8.xml.out:622 +#: useradd.8.xml.out:642 #: userdel.8.xml.out:76 #: userdel.8.xml.out:287 #: userdel.8.xml.out:302 @@ -2331,20 +2404,20 @@ msgstr "" #: faillog.8.xml.out:144 #: faillog.8.xml.out:186 #: faillog.8.xml.out:203 -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 #: groupadd.8.xml.out:112 #: groupadd.8.xml.out:185 #: grpck.8.xml.out:124 #: grpck.8.xml.out:138 #: login.1.xml.out:220 #: login.1.xml.out:229 -#: newusers.8.xml.out:287 -#: passwd.1.xml.out:268 +#: newusers.8.xml.out:289 +#: passwd.1.xml.out:264 #: pwck.8.xml.out:155 #: pwck.8.xml.out:188 #: useradd.8.xml.out:224 -#: useradd.8.xml.out:456 -#: useradd.8.xml.out:542 +#: useradd.8.xml.out:458 +#: useradd.8.xml.out:544 #: userdel.8.xml.out:106 #: usermod.8.xml.out:317 msgid "-r" @@ -2374,9 +2447,9 @@ msgstr "" #: lastlog.8.xml.out:90 #: lastlog.8.xml.out:122 #: lastlog.8.xml.out:139 -#: passwd.1.xml.out:309 -#: useradd.8.xml.out:414 -#: useradd.8.xml.out:531 +#: passwd.1.xml.out:320 +#: useradd.8.xml.out:416 +#: useradd.8.xml.out:533 #: usermod.8.xml.out:279 #: usermod.8.xml.out:369 #: vipw.8.xml.out:133 @@ -2385,7 +2458,7 @@ msgstr "" #. (itstool) path: term/option #: chfn.1.xml.out:151 -#: passwd.1.xml.out:322 +#: passwd.1.xml.out:333 #: usermod.8.xml.out:463 msgid "-w" msgstr "" @@ -2412,18 +2485,18 @@ msgstr "" #. (itstool) path: listitem/para #: chfn.1.xml.out:189 -#: chgpasswd.8.xml.out:207 -#: chpasswd.8.xml.out:249 -#: chsh.1.xml.out:161 +#: chgpasswd.8.xml.out:235 +#: chpasswd.8.xml.out:291 +#: chsh.1.xml.out:202 #: groupadd.8.xml.out:278 #: groupmod.8.xml.out:241 #: login.1.xml.out:367 #: login.access.5.xml.out:102 -#: newusers.8.xml.out:425 -#: passwd.1.xml.out:407 +#: newusers.8.xml.out:446 +#: passwd.1.xml.out:429 #: pwconv.8.xml.out:232 #: su.1.xml.out:359 -#: useradd.8.xml.out:799 +#: useradd.8.xml.out:819 #: userdel.8.xml.out:193 msgid "Shadow password suite configuration." msgstr "" @@ -2445,10 +2518,10 @@ msgstr "" #: groupdel.8.xml.out:208 #: groupmems.8.xml.out:212 #: groupmod.8.xml.out:329 -#: login.defs.5.xml.out:270 -#: useradd.8.xml.out:881 +#: login.defs.5.xml.out:280 +#: useradd.8.xml.out:901 #: userdel.8.xml.out:313 -#: usermod.8.xml.out:608 +#: usermod.8.xml.out:625 msgid "chsh" msgstr "" @@ -2457,41 +2530,41 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #: chfn.1.xml.out:208 -#: chgpasswd.8.xml.out:223 -#: chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 +#: chgpasswd.8.xml.out:251 +#: chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 #: groupadd.8.xml.out:194 #: groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 #: login.1.xml.out:389 -#: login.defs.5.xml.out:102 -#: login.defs.5.xml.out:109 -#: newusers.8.xml.out:298 -#: newusers.8.xml.out:453 -#: passwd.1.xml.out:484 +#: login.defs.5.xml.out:104 +#: login.defs.5.xml.out:111 +#: newusers.8.xml.out:300 +#: newusers.8.xml.out:474 +#: passwd.1.xml.out:509 #: pwconv.8.xml.out:92 #: pwconv.8.xml.out:94 #: pwconv.8.xml.out:108 #: pwconv.8.xml.out:245 #: su.1.xml.out:418 -#: useradd.8.xml.out:899 +#: useradd.8.xml.out:919 #: userdel.8.xml.out:117 #: userdel.8.xml.out:319 -#: usermod.8.xml.out:629 +#: usermod.8.xml.out:646 #: vipw.8.xml.out:214 msgid "login.defs" msgstr "" #. (itstool) path: refsect1/para #: chfn.1.xml.out:203 -#: chgpasswd.8.xml.out:215 -#: chsh.1.xml.out:169 +#: chgpasswd.8.xml.out:243 +#: chsh.1.xml.out:210 #: limits.5.xml.out:183 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." msgstr "" #. (itstool) path: author/contrib -#: chgpasswd.8.xml.out:23 +#: chgpasswd.8.xml.out:25 msgid "Creation, 2006" msgstr "" @@ -2500,30 +2573,30 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:33 -#: chgpasswd.8.xml.out:40 -#: chgpasswd.8.xml.out:46 -#: chgpasswd.8.xml.out:56 -#: chgpasswd.8.xml.out:66 -#: chgpasswd.8.xml.out:83 -#: login.defs.5.xml.out:249 +#: chgpasswd.8.xml.out:35 +#: chgpasswd.8.xml.out:42 +#: chgpasswd.8.xml.out:48 +#: chgpasswd.8.xml.out:58 +#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:85 +#: login.defs.5.xml.out:253 msgid "chgpasswd" msgstr "" #. (itstool) path: refmeta/manvolnum #. (itstool) path: citerefentry/manvolnum #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:34 -#: chgpasswd.8.xml.out:220 -#: chpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:268 -#: chpasswd.8.xml.out:276 +#: chgpasswd.8.xml.out:36 +#: chgpasswd.8.xml.out:248 +#: chpasswd.8.xml.out:40 +#: chpasswd.8.xml.out:310 +#: chpasswd.8.xml.out:318 #: faillog.5.xml.out:87 #: faillog.8.xml.out:34 -#: gpasswd.1.xml.out:280 -#: gpasswd.1.xml.out:283 -#: gpasswd.1.xml.out:286 -#: gpasswd.1.xml.out:289 +#: gpasswd.1.xml.out:282 +#: gpasswd.1.xml.out:285 +#: gpasswd.1.xml.out:288 +#: gpasswd.1.xml.out:291 #: groupadd.8.xml.out:37 #: groupadd.8.xml.out:354 #: groupadd.8.xml.out:357 @@ -2563,13 +2636,13 @@ msgstr "" #: login.1.xml.out:249 #: login.1.xml.out:251 #: login.1.xml.out:401 -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 #: logoutd.8.xml.out:34 -#: newusers.8.xml.out:50 -#: newusers.8.xml.out:467 +#: newusers.8.xml.out:52 +#: newusers.8.xml.out:488 #: nologin.8.xml.out:23 -#: passwd.1.xml.out:474 -#: passwd.1.xml.out:488 +#: passwd.1.xml.out:496 +#: passwd.1.xml.out:513 #: passwd.5.xml.out:185 #: passwd.5.xml.out:188 #: passwd.5.xml.out:191 @@ -2588,13 +2661,14 @@ msgstr "" #: shadow.5.xml.out:286 #: suauth.5.xml.out:192 #: useradd.8.xml.out:53 -#: useradd.8.xml.out:574 -#: useradd.8.xml.out:890 -#: useradd.8.xml.out:893 -#: useradd.8.xml.out:896 -#: useradd.8.xml.out:902 +#: useradd.8.xml.out:576 +#: useradd.8.xml.out:590 +#: useradd.8.xml.out:910 #: useradd.8.xml.out:913 #: useradd.8.xml.out:916 +#: useradd.8.xml.out:922 +#: useradd.8.xml.out:933 +#: useradd.8.xml.out:936 #: userdel.8.xml.out:40 #: userdel.8.xml.out:259 #: userdel.8.xml.out:322 @@ -2604,19 +2678,20 @@ msgstr "" #: userdel.8.xml.out:342 #: userdel.8.xml.out:345 #: usermod.8.xml.out:41 -#: usermod.8.xml.out:617 -#: usermod.8.xml.out:620 -#: usermod.8.xml.out:623 -#: usermod.8.xml.out:626 +#: usermod.8.xml.out:522 +#: usermod.8.xml.out:634 +#: usermod.8.xml.out:637 #: usermod.8.xml.out:640 #: usermod.8.xml.out:643 +#: usermod.8.xml.out:657 +#: usermod.8.xml.out:660 #: vipw.8.xml.out:36 msgid "8" msgstr "" #. (itstool) path: refmeta/refmiscinfo -#: chgpasswd.8.xml.out:35 -#: chpasswd.8.xml.out:39 +#: chgpasswd.8.xml.out:37 +#: chpasswd.8.xml.out:41 #: faillog.8.xml.out:35 #: groupadd.8.xml.out:38 #: groupdel.8.xml.out:36 @@ -2625,7 +2700,7 @@ msgstr "" #: grpck.8.xml.out:35 #: lastlog.8.xml.out:37 #: logoutd.8.xml.out:35 -#: newusers.8.xml.out:51 +#: newusers.8.xml.out:53 #: nologin.8.xml.out:24 #: pwck.8.xml.out:42 #: pwconv.8.xml.out:41 @@ -2637,27 +2712,27 @@ msgid "System Management Commands" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: chgpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:43 msgid "update group passwords in batch mode" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:55 +#: chgpasswd.8.xml.out:57 msgid "The <_:command-1/> command reads a list of group name and password pairs from standard input and uses this information to update a set of existing groups. Each line is of the format:" msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:61 +#: chgpasswd.8.xml.out:63 #: groupmems.8.xml.out:54 #: groupmems.8.xml.out:110 msgid "group_name" msgstr "" #. (itstool) path: para/emphasis -#: chgpasswd.8.xml.out:62 -#: chpasswd.8.xml.out:66 +#: chgpasswd.8.xml.out:64 +#: chpasswd.8.xml.out:68 #: passwd.5.xml.out:77 #: passwd.5.xml.out:86 #: passwd.5.xml.out:91 @@ -2667,35 +2742,35 @@ msgid "password" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:60 -#: chpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:62 +#: chpasswd.8.xml.out:66 msgid "<_:emphasis-1/>:<_:emphasis-2/>" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:66 msgid "By default the supplied password must be in clear-text, and is encrypted by <_:command-1/>." msgstr "" #. (itstool) path: para/option -#: chgpasswd.8.xml.out:70 -#: chpasswd.8.xml.out:75 -#: chpasswd.8.xml.out:132 -#: passwd.1.xml.out:129 +#: chgpasswd.8.xml.out:72 +#: chpasswd.8.xml.out:77 +#: chpasswd.8.xml.out:138 +#: passwd.1.xml.out:114 msgid "ENCRYPT_METHOD" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chgpasswd.8.xml.out:71 -#: chgpasswd.8.xml.out:101 -#: chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 -#: chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:139 -#: passwd.1.xml.out:180 +#: chgpasswd.8.xml.out:73 +#: chgpasswd.8.xml.out:107 +#: chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 +#: chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:145 +#: passwd.1.xml.out:176 #: useradd.8.xml.out:179 -#: useradd.8.xml.out:610 +#: useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "-e" msgstr "" @@ -2703,15 +2778,15 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #. (itstool) path: arg/arg -#: chgpasswd.8.xml.out:72 -#: chgpasswd.8.xml.out:88 -#: chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 -#: chpasswd.8.xml.out:114 -#: chpasswd.8.xml.out:129 +#: chgpasswd.8.xml.out:74 +#: chgpasswd.8.xml.out:90 +#: chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 +#: chpasswd.8.xml.out:116 +#: chpasswd.8.xml.out:135 #: expiry.1.xml.out:60 #: expiry.1.xml.out:73 -#: newusers.8.xml.out:268 +#: newusers.8.xml.out:270 #: sg.1.xml.out:50 #: su.1.xml.out:86 #: su.1.xml.out:126 @@ -2722,81 +2797,147 @@ msgid "-c" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:70 msgid "The default encryption algorithm can be defined for the system with the <_:option-1/> variable of <_:filename-2/>, and can be overwritten with the <_:option-3/>, <_:option-4/>, or <_:option-5/> options." msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:74 -#: chpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:76 +#: chpasswd.8.xml.out:101 msgid "This command is intended to be used in a large system environment where many accounts are created at a single time." msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:88 -#: chpasswd.8.xml.out:114 -#: newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:90 +#: chpasswd.8.xml.out:116 +#: newusers.8.xml.out:270 msgid "--crypt-method" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:90 -#: chpasswd.8.xml.out:117 -#: newusers.8.xml.out:270 +#: chgpasswd.8.xml.out:92 +#: chpasswd.8.xml.out:119 +#: newusers.8.xml.out:272 msgid "Use the specified method to encrypt the passwords." msgstr "" -#. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:91 -#: chpasswd.8.xml.out:118 -msgid "The available methods are DES, MD5, and NONE." +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:95 +#: chgpasswd.8.xml.out:149 +#: chpasswd.8.xml.out:122 +#: chpasswd.8.xml.out:208 +#: newusers.8.xml.out:330 +msgid "BCRYPT" msgstr "" -#. (itstool) path: listitem/para +#. (itstool) path: para/phrase #: chgpasswd.8.xml.out:94 #: chpasswd.8.xml.out:121 -#: newusers.8.xml.out:271 -msgid "The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc support these methods." +msgid "<_:replaceable-1/>," msgstr "" -#. (itstool) path: term/option +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:96 +#: chpasswd.8.xml.out:123 +msgid "DES" +msgstr "" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:97 +#: chpasswd.8.xml.out:124 +msgid "MD5" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:98 +#: chgpasswd.8.xml.out:151 +#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:210 +#: newusers.8.xml.out:332 +msgid "SHA256" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:152 +#: chpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:211 +#: newusers.8.xml.out:333 +msgid "SHA512" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:97 +#: chpasswd.8.xml.out:124 +msgid ", <_:replaceable-1/>, <_:replaceable-2/>" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:100 +#: chgpasswd.8.xml.out:154 +#: chpasswd.8.xml.out:127 +#: chpasswd.8.xml.out:213 +#: newusers.8.xml.out:335 +msgid "YESCRYPT" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:99 +#: chpasswd.8.xml.out:126 +msgid ", <_:replaceable-1/>" +msgstr "" + +#. (itstool) path: para/replaceable #: chgpasswd.8.xml.out:101 -#: chpasswd.8.xml.out:139 +#: chpasswd.8.xml.out:128 +msgid "NONE" +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:120 +msgid "The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports these methods." +msgstr "" + +#. (itstool) path: term/option +#: chgpasswd.8.xml.out:107 +#: chpasswd.8.xml.out:145 msgid "--encrypted" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:103 -#: chpasswd.8.xml.out:141 +#: chgpasswd.8.xml.out:109 +#: chpasswd.8.xml.out:147 msgid "Supplied passwords are in encrypted form." msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:161 msgid "--md5" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:115 -#: chpasswd.8.xml.out:157 +#: chgpasswd.8.xml.out:121 +#: chpasswd.8.xml.out:163 msgid "Use MD5 encryption instead of DES when the supplied passwords are not encrypted." msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:178 +#: chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:199 #: chsh.1.xml.out:97 #: chsh.1.xml.out:108 #: grpck.8.xml.out:124 #: grpck.8.xml.out:161 -#: newusers.8.xml.out:320 +#: newusers.8.xml.out:322 +#: passwd.1.xml.out:363 #: pwck.8.xml.out:155 #: pwck.8.xml.out:209 #: su.1.xml.out:163 -#: useradd.8.xml.out:517 -#: useradd.8.xml.out:655 +#: useradd.8.xml.out:519 +#: useradd.8.xml.out:675 #: usermod.8.xml.out:357 #: vipw.8.xml.out:70 #: vipw.8.xml.out:127 @@ -2804,74 +2945,93 @@ msgid "-s" msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:178 -#: newusers.8.xml.out:320 +#: chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:199 +#: newusers.8.xml.out:322 msgid "--sha-rounds" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:137 -#: chpasswd.8.xml.out:181 -#: newusers.8.xml.out:322 +#: chgpasswd.8.xml.out:143 +#: chpasswd.8.xml.out:202 +#: newusers.8.xml.out:324 msgid "Use the specified number of rounds to encrypt the passwords." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:140 -#: chpasswd.8.xml.out:184 -#: newusers.8.xml.out:325 -msgid "The value 0 means that the system will choose the default number of rounds for the crypt method (5000)." +#: chgpasswd.8.xml.out:146 +#: chpasswd.8.xml.out:205 +#: newusers.8.xml.out:327 +msgid "You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> <_:phrase-3/>" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:144 -#: chpasswd.8.xml.out:188 -#: newusers.8.xml.out:329 -msgid "A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +#: chgpasswd.8.xml.out:156 +#: chpasswd.8.xml.out:215 +#: newusers.8.xml.out:337 +msgid "By default, the number of rounds for BCRYPT is defined by the BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:148 -#: chpasswd.8.xml.out:192 -#: newusers.8.xml.out:333 -msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#: chgpasswd.8.xml.out:161 +#: chpasswd.8.xml.out:220 +msgid "A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. The default number of rounds is 13." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:152 -#: newusers.8.xml.out:337 -msgid "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +#: chgpasswd.8.xml.out:165 +#: chpasswd.8.xml.out:224 +#: newusers.8.xml.out:346 +msgid "By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:229 +msgid "A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512. The default number of rounds is 5000." +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:175 +#: chpasswd.8.xml.out:234 +#: newusers.8.xml.out:355 +msgid "By default, the number of rounds for YESCRYPT is defined by the YESCRYPT_COST_FACTOR in <_:filename-1/>." +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:179 +#: chpasswd.8.xml.out:238 +msgid "A minimal value of 1 and a maximal value of 11 will be enforced for YESCRYPT. The default number of rounds is 5." msgstr "" #. (itstool) path: refsect1/title -#: chgpasswd.8.xml.out:163 -#: chpasswd.8.xml.out:208 +#: chgpasswd.8.xml.out:189 +#: chpasswd.8.xml.out:248 #: faillog.8.xml.out:209 -#: gpasswd.1.xml.out:229 +#: gpasswd.1.xml.out:231 #: groupadd.8.xml.out:285 #: groupdel.8.xml.out:121 #: lastlog.8.xml.out:206 #: login.1.xml.out:236 -#: newusers.8.xml.out:348 -#: passwd.1.xml.out:354 +#: newusers.8.xml.out:369 +#: passwd.1.xml.out:376 #: shadow.3.xml.out:194 #: su.1.xml.out:306 -#: useradd.8.xml.out:682 +#: useradd.8.xml.out:702 #: userdel.8.xml.out:281 -#: usermod.8.xml.out:517 +#: usermod.8.xml.out:534 msgid "CAVEATS" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:209 +#: chgpasswd.8.xml.out:190 +#: chpasswd.8.xml.out:249 msgid "Remember to set permissions or umask to prevent readability of unencrypted files by other users." msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:168 -#: newusers.8.xml.out:353 +#: chgpasswd.8.xml.out:194 +#: newusers.8.xml.out:374 msgid "You should make sure the passwords and the encryption method respect the system's password policy." msgstr "" @@ -2879,12 +3039,12 @@ msgstr "" #. (itstool) path: phrase/filename #. (itstool) path: para/filename #. (itstool) path: citerefentry/refentrytitle -#: chgpasswd.8.xml.out:193 -#: gpasswd.1.xml.out:48 -#: gpasswd.1.xml.out:51 -#: gpasswd.1.xml.out:73 -#: gpasswd.1.xml.out:231 -#: gpasswd.1.xml.out:259 +#: chgpasswd.8.xml.out:221 +#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:53 +#: gpasswd.1.xml.out:75 +#: gpasswd.1.xml.out:233 +#: gpasswd.1.xml.out:261 #: groupadd.8.xml.out:170 #: groupadd.8.xml.out:264 #: groupdel.8.xml.out:148 @@ -2906,22 +3066,22 @@ msgstr "" #: gshadow.5.xml.out:135 #: newgrp.1.xml.out:80 #: newgrp.1.xml.out:112 -#: newusers.8.xml.out:411 +#: newusers.8.xml.out:432 #: pwck.8.xml.out:261 #: pwconv.8.xml.out:128 #: sg.1.xml.out:101 #: suauth.5.xml.out:90 -#: useradd.8.xml.out:755 +#: useradd.8.xml.out:775 #: userdel.8.xml.out:185 -#: usermod.8.xml.out:557 +#: usermod.8.xml.out:574 #: vipw.8.xml.out:69 #: vipw.8.xml.out:175 msgid "/etc/group" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:195 -#: gpasswd.1.xml.out:261 +#: chgpasswd.8.xml.out:223 +#: gpasswd.1.xml.out:263 #: groupadd.8.xml.out:266 #: groupdel.8.xml.out:150 #: groupmems.8.xml.out:193 @@ -2930,10 +3090,10 @@ msgstr "" #: grpck.8.xml.out:213 #: gshadow.5.xml.out:137 #: newgrp.1.xml.out:114 -#: newusers.8.xml.out:413 +#: newusers.8.xml.out:434 #: pwck.8.xml.out:263 #: sg.1.xml.out:103 -#: useradd.8.xml.out:757 +#: useradd.8.xml.out:777 #: userdel.8.xml.out:187 #: vipw.8.xml.out:177 msgid "Group account information." @@ -2942,11 +3102,11 @@ msgstr "" #. (itstool) path: term/filename #. (itstool) path: phrase/filename #. (itstool) path: para/filename -#: chgpasswd.8.xml.out:199 -#: gpasswd.1.xml.out:52 -#: gpasswd.1.xml.out:74 -#: gpasswd.1.xml.out:232 -#: gpasswd.1.xml.out:265 +#: chgpasswd.8.xml.out:227 +#: gpasswd.1.xml.out:54 +#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:267 #: groupadd.8.xml.out:170 #: groupadd.8.xml.out:270 #: groupdel.8.xml.out:154 @@ -2969,28 +3129,28 @@ msgstr "" #: gshadow.5.xml.out:141 #: newgrp.1.xml.out:78 #: newgrp.1.xml.out:118 -#: newusers.8.xml.out:417 +#: newusers.8.xml.out:438 #: pwconv.8.xml.out:129 #: sg.1.xml.out:107 -#: useradd.8.xml.out:761 -#: usermod.8.xml.out:563 +#: useradd.8.xml.out:781 +#: usermod.8.xml.out:580 #: vipw.8.xml.out:72 #: vipw.8.xml.out:181 msgid "/etc/gshadow" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:201 -#: gpasswd.1.xml.out:267 +#: chgpasswd.8.xml.out:229 +#: gpasswd.1.xml.out:269 #: groupadd.8.xml.out:272 #: groupdel.8.xml.out:156 #: groupmod.8.xml.out:235 #: grpck.8.xml.out:219 #: gshadow.5.xml.out:143 #: newgrp.1.xml.out:120 -#: newusers.8.xml.out:419 +#: newusers.8.xml.out:440 #: sg.1.xml.out:109 -#: useradd.8.xml.out:763 +#: useradd.8.xml.out:783 #: vipw.8.xml.out:183 msgid "Secure group account information." msgstr "" @@ -3001,22 +3161,22 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:217 -#: gpasswd.1.xml.out:38 -#: gpasswd.1.xml.out:45 -#: gpasswd.1.xml.out:59 -#: gpasswd.1.xml.out:72 -#: gpasswd.1.xml.out:85 -#: gpasswd.1.xml.out:119 +#: chgpasswd.8.xml.out:245 +#: gpasswd.1.xml.out:40 +#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:61 +#: gpasswd.1.xml.out:74 +#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:121 #: groupadd.8.xml.out:354 #: groupdel.8.xml.out:214 #: groupmod.8.xml.out:335 #: gshadow.5.xml.out:153 -#: login.defs.5.xml.out:280 +#: login.defs.5.xml.out:290 #: newgrp.1.xml.out:142 #: sg.1.xml.out:131 #: userdel.8.xml.out:322 -#: usermod.8.xml.out:617 +#: usermod.8.xml.out:634 msgid "gpasswd" msgstr "" @@ -3026,8 +3186,8 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:220 -#: gpasswd.1.xml.out:280 +#: chgpasswd.8.xml.out:248 +#: gpasswd.1.xml.out:282 #: groupadd.8.xml.out:36 #: groupadd.8.xml.out:43 #: groupadd.8.xml.out:49 @@ -3038,23 +3198,23 @@ msgstr "" #: groupdel.8.xml.out:217 #: groupmems.8.xml.out:218 #: groupmod.8.xml.out:338 -#: login.defs.5.xml.out:290 -#: useradd.8.xml.out:890 +#: login.defs.5.xml.out:303 +#: useradd.8.xml.out:910 #: userdel.8.xml.out:325 -#: usermod.8.xml.out:620 +#: usermod.8.xml.out:637 msgid "groupadd" msgstr "" #. (itstool) path: author/contrib -#: chpasswd.8.xml.out:21 +#: chpasswd.8.xml.out:23 #: groupadd.8.xml.out:20 #: groupdel.8.xml.out:18 #: groupmod.8.xml.out:18 #: groups.1.xml.out:17 -#: login.defs.5.xml.out:86 +#: login.defs.5.xml.out:88 #: logoutd.8.xml.out:17 #: newgrp.1.xml.out:18 -#: newusers.8.xml.out:33 +#: newusers.8.xml.out:35 #: sg.1.xml.out:18 #: useradd.8.xml.out:36 #: userdel.8.xml.out:23 @@ -3068,34 +3228,34 @@ msgstr "" #. (itstool) path: para/command #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:44 -#: chpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:60 -#: chpasswd.8.xml.out:70 -#: chpasswd.8.xml.out:89 -#: chpasswd.8.xml.out:96 -#: chpasswd.8.xml.out:108 -#: chpasswd.8.xml.out:255 -#: login.defs.5.xml.out:259 -#: passwd.1.xml.out:474 +#: chpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:46 +#: chpasswd.8.xml.out:52 +#: chpasswd.8.xml.out:62 +#: chpasswd.8.xml.out:72 +#: chpasswd.8.xml.out:91 +#: chpasswd.8.xml.out:98 +#: chpasswd.8.xml.out:110 +#: chpasswd.8.xml.out:297 +#: login.defs.5.xml.out:266 +#: passwd.1.xml.out:496 msgid "chpasswd" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:45 +#: chpasswd.8.xml.out:47 msgid "update passwords in batch mode" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:59 +#: chpasswd.8.xml.out:61 msgid "The <_:command-1/> command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users. Each line is of the format:" msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:65 +#: chpasswd.8.xml.out:67 #: groupmems.8.xml.out:52 #: groupmems.8.xml.out:53 #: groupmems.8.xml.out:83 @@ -3104,85 +3264,70 @@ msgid "user_name" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:68 +#: chpasswd.8.xml.out:70 msgid "By default the passwords must be supplied in clear-text, and are encrypted by <_:command-1/>. Also the password age will be updated, if present." msgstr "" #. (itstool) path: para/option -#: chpasswd.8.xml.out:76 -#: chpasswd.8.xml.out:133 +#: chpasswd.8.xml.out:78 +#: chpasswd.8.xml.out:139 msgid "MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:73 +#: chpasswd.8.xml.out:75 msgid "The default encryption algorithm can be defined for the system with the <_:option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be overwritten with the <_:option-4/>, <_:option-5/>, or <_:option-6/> options." msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:83 msgid "By default, passwords are encrypted by PAM, but (even if not recommended) you can select a different encryption method with the <_:option-1/>, <_:option-2/>, or <_:option-3/> options." msgstr "" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:88 +#: chpasswd.8.xml.out:90 msgid "Except when PAM is used to encrypt the passwords," msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:87 +#: chpasswd.8.xml.out:89 msgid "<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and then commits all the changes to disk if no errors occurred for any user." msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:95 msgid "When PAM is used to encrypt the passwords (and update the passwords in the system database) then if a password cannot be updated <_:command-1/> continues updating the passwords of the next users, and will return an error code on exit." msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:114 +#: chpasswd.8.xml.out:116 msgid "METHOD" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:131 msgid "By default, PAM is used to encrypt the passwords." msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:134 msgid "By default (if none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> options are specified), the encryption method is defined by the <_:option-4/> or <_:option-5/> variables of <_:filename-6/>." msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:178 -msgid "ROUNDS" -msgstr "" - -#. (itstool) path: para/option -#: chpasswd.8.xml.out:198 -msgid "SHA_CRYPT_MIN_ROUNDS" -msgstr "" - -#. (itstool) path: para/option #: chpasswd.8.xml.out:199 -msgid "SHA_CRYPT_MAX_ROUNDS" -msgstr "" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:196 -msgid "By default, the number of rounds is defined by the <_:option-1/> and <_:option-2/> variables in <_:filename-3/>." +msgid "ROUNDS" msgstr "" #. (itstool) path: term/filename -#: chpasswd.8.xml.out:253 +#: chpasswd.8.xml.out:295 msgid "/etc/pam.d/chpasswd" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:255 -#: newusers.8.xml.out:431 -#: passwd.1.xml.out:413 +#: chpasswd.8.xml.out:297 +#: newusers.8.xml.out:452 +#: passwd.1.xml.out:435 msgid "PAM configuration for <_:command-1/>." msgstr "" @@ -3192,31 +3337,31 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:268 -#: login.defs.5.xml.out:380 -#: newusers.8.xml.out:49 -#: newusers.8.xml.out:56 -#: newusers.8.xml.out:62 -#: newusers.8.xml.out:75 -#: newusers.8.xml.out:96 -#: newusers.8.xml.out:123 -#: newusers.8.xml.out:132 -#: newusers.8.xml.out:151 -#: newusers.8.xml.out:164 -#: newusers.8.xml.out:170 +#: chpasswd.8.xml.out:310 +#: login.defs.5.xml.out:393 +#: newusers.8.xml.out:51 +#: newusers.8.xml.out:58 +#: newusers.8.xml.out:64 +#: newusers.8.xml.out:77 +#: newusers.8.xml.out:98 +#: newusers.8.xml.out:125 +#: newusers.8.xml.out:134 +#: newusers.8.xml.out:153 +#: newusers.8.xml.out:166 #: newusers.8.xml.out:172 -#: newusers.8.xml.out:210 -#: newusers.8.xml.out:230 -#: newusers.8.xml.out:252 -#: newusers.8.xml.out:431 -#: useradd.8.xml.out:902 +#: newusers.8.xml.out:174 +#: newusers.8.xml.out:212 +#: newusers.8.xml.out:232 +#: newusers.8.xml.out:254 +#: newusers.8.xml.out:452 +#: useradd.8.xml.out:922 msgid "newusers" msgstr "" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:270 +#: chpasswd.8.xml.out:312 #: grpck.8.xml.out:285 -#: passwd.1.xml.out:482 +#: passwd.1.xml.out:507 msgid "<_:citerefentry-1/>," msgstr "" @@ -3226,13 +3371,13 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:276 +#: chpasswd.8.xml.out:318 #: groupadd.8.xml.out:366 #: groupdel.8.xml.out:223 #: groupmems.8.xml.out:224 #: groupmod.8.xml.out:347 -#: login.defs.5.xml.out:462 -#: newusers.8.xml.out:467 +#: login.defs.5.xml.out:481 +#: newusers.8.xml.out:488 #: useradd.8.xml.out:52 #: useradd.8.xml.out:59 #: useradd.8.xml.out:64 @@ -3245,21 +3390,21 @@ msgstr "" #: useradd.8.xml.out:187 #: useradd.8.xml.out:209 #: useradd.8.xml.out:239 -#: useradd.8.xml.out:284 -#: useradd.8.xml.out:341 -#: useradd.8.xml.out:472 -#: useradd.8.xml.out:584 -#: useradd.8.xml.out:586 -#: useradd.8.xml.out:690 -#: useradd.8.xml.out:808 +#: useradd.8.xml.out:286 +#: useradd.8.xml.out:343 +#: useradd.8.xml.out:474 +#: useradd.8.xml.out:604 +#: useradd.8.xml.out:606 +#: useradd.8.xml.out:710 +#: useradd.8.xml.out:828 #: userdel.8.xml.out:342 -#: usermod.8.xml.out:640 +#: usermod.8.xml.out:657 msgid "useradd" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:263 -#: newusers.8.xml.out:451 +#: chpasswd.8.xml.out:305 +#: newusers.8.xml.out:472 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." msgstr "" @@ -3278,8 +3423,8 @@ msgstr "" #: chsh.1.xml.out:97 #: su.1.xml.out:163 #: su.1.xml.out:199 -#: useradd.8.xml.out:517 -#: useradd.8.xml.out:655 +#: useradd.8.xml.out:519 +#: useradd.8.xml.out:675 #: usermod.8.xml.out:357 msgid "--shell" msgstr "" @@ -3288,10 +3433,10 @@ msgstr "" #. (itstool) path: para/option #: chsh.1.xml.out:97 #: su.1.xml.out:163 -#: useradd.8.xml.out:517 -#: useradd.8.xml.out:522 -#: useradd.8.xml.out:655 -#: useradd.8.xml.out:662 +#: useradd.8.xml.out:519 +#: useradd.8.xml.out:524 +#: useradd.8.xml.out:675 +#: useradd.8.xml.out:682 #: usermod.8.xml.out:357 msgid "SHELL" msgstr "" @@ -3310,13 +3455,17 @@ msgstr "" #. (itstool) path: term/filename #: chsh.1.xml.out:120 #: chsh.1.xml.out:124 -#: chsh.1.xml.out:153 +#: chsh.1.xml.out:130 +#: chsh.1.xml.out:143 +#: chsh.1.xml.out:172 +#: chsh.1.xml.out:184 #: su.1.xml.out:198 msgid "/etc/shells" msgstr "" #. (itstool) path: para/filename #: chsh.1.xml.out:123 +#: chsh.1.xml.out:142 msgid "/bin/rsh" msgstr "" @@ -3325,11 +3474,78 @@ msgstr "" msgid "The only restriction placed on the login shell is that the command name must be listed in <_:filename-1/>, unless the invoker is the superuser, and then any value may be added. An account with a restricted login shell may not change her login shell. For this reason, placing <_:filename-2/> in <_:filename-3/> is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value." msgstr "" +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chsh.1.xml.out:132 +#: chsh.1.xml.out:181 +msgid "%vendordir%/shells" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:133 +msgid "%vendordir%/shells.d/*" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:134 +msgid "/etc/shells.d/*" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:135 +msgid "/etc/shells.d/@filename@" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:136 +msgid "%vendordir%/shells.d/@filename@" +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:128 +msgid "The only restriction placed on the login shell is that the command name must be listed in <_:filename-1/>. If this file does not exist, the definitions are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be used. If the invoker is the superuser any value may be added regardless what is defined in the configuration files. An account with a restricted login shell may not change her login shell." +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:141 +msgid "For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value." +msgstr "" + #. (itstool) path: listitem/para -#: chsh.1.xml.out:155 +#: chsh.1.xml.out:174 msgid "List of valid login shells." msgstr "" +#. (itstool) path: listitem/para +#: chsh.1.xml.out:177 +msgid "User defined list of valid login shells." +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:183 +msgid "Default configuration file if <_:filename-1/> does not exist." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:188 +msgid "%vendordir%/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:190 +msgid "Directory for additional vendor specific configuration files." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:194 +msgid "/etc/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:196 +msgid "Directory for additional user defined configuration files." +msgstr "" + #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command @@ -3349,7 +3565,7 @@ msgstr "" #. (itstool) path: arg/replaceable #: expiry.1.xml.out:52 -#: gpasswd.1.xml.out:61 +#: gpasswd.1.xml.out:63 msgid "option" msgstr "" @@ -3385,7 +3601,7 @@ msgstr "" #: faillog.5.xml.out:17 #: faillog.8.xml.out:17 #: login.1.xml.out:50 -#: passwd.1.xml.out:24 +#: passwd.1.xml.out:26 #: passwd.5.xml.out:17 #: porttime.5.xml.out:17 #: shadow.3.xml.out:17 @@ -3421,7 +3637,7 @@ msgstr "" #: gshadow.5.xml.out:24 #: limits.5.xml.out:37 #: login.access.5.xml.out:36 -#: login.defs.5.xml.out:104 +#: login.defs.5.xml.out:106 #: passwd.5.xml.out:35 #: porttime.5.xml.out:35 #: shadow.5.xml.out:35 @@ -3486,10 +3702,10 @@ msgstr "" #. (itstool) path: para/option #: faillog.8.xml.out:72 #: faillog.8.xml.out:215 -#: gpasswd.1.xml.out:124 +#: gpasswd.1.xml.out:126 #: groupmems.8.xml.out:83 #: groupmod.8.xml.out:73 -#: passwd.1.xml.out:157 +#: passwd.1.xml.out:153 #: usermod.8.xml.out:78 #: usermod.8.xml.out:210 msgid "-a" @@ -3497,7 +3713,7 @@ msgstr "" #. (itstool) path: term/option #: faillog.8.xml.out:72 -#: passwd.1.xml.out:157 +#: passwd.1.xml.out:153 msgid "--all" msgstr "" @@ -3713,9 +3929,9 @@ msgstr "" #: login.1.xml.out:253 #: login.1.xml.out:259 #: login.access.5.xml.out:112 -#: login.defs.5.xml.out:343 -#: login.defs.5.xml.out:518 -#: login.defs.5.xml.out:530 +#: login.defs.5.xml.out:356 +#: login.defs.5.xml.out:537 +#: login.defs.5.xml.out:549 #: newgrp.1.xml.out:133 #: nologin.8.xml.out:60 #: passwd.5.xml.out:125 @@ -3729,17 +3945,17 @@ msgid "login" msgstr "" #. (itstool) path: author/firstname -#: gpasswd.1.xml.out:20 +#: gpasswd.1.xml.out:22 msgid "Rafal" msgstr "" #. (itstool) path: author/surname -#: gpasswd.1.xml.out:21 +#: gpasswd.1.xml.out:23 msgid "Maszkowski" msgstr "" #. (itstool) path: author/contrib -#: gpasswd.1.xml.out:22 +#: gpasswd.1.xml.out:24 #: login.access.5.xml.out:18 #: pwconv.8.xml.out:23 #: suauth.5.xml.out:17 @@ -3747,12 +3963,12 @@ msgid "Creation, 1996" msgstr "" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:49 msgid "administer <_:filename-1/>" msgstr "" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:52 msgid "administer <_:filename-1/> and <_:filename-2/>" msgstr "" @@ -3760,15 +3976,15 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:64 -#: gpasswd.1.xml.out:89 -#: gpasswd.1.xml.out:129 -#: gpasswd.1.xml.out:142 -#: gpasswd.1.xml.out:177 -#: gpasswd.1.xml.out:181 -#: gpasswd.1.xml.out:193 -#: gpasswd.1.xml.out:197 -#: gpasswd.1.xml.out:292 +#: gpasswd.1.xml.out:66 +#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:131 +#: gpasswd.1.xml.out:144 +#: gpasswd.1.xml.out:179 +#: gpasswd.1.xml.out:183 +#: gpasswd.1.xml.out:195 +#: gpasswd.1.xml.out:199 +#: gpasswd.1.xml.out:294 #: grpck.8.xml.out:49 #: grpck.8.xml.out:188 #: grpck.8.xml.out:280 @@ -3786,45 +4002,45 @@ msgid "group" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:73 +#: gpasswd.1.xml.out:75 msgid ", and <_:filename-1/>" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:78 msgid "administrators," msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:71 +#: gpasswd.1.xml.out:73 msgid "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/>. Every group can have <_:phrase-4/> members and a password." msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: gpasswd.1.xml.out:80 -#: gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:82 +#: gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:207 msgid "-A" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:79 +#: gpasswd.1.xml.out:81 msgid "System administrators can use the <_:option-1/> option to define group administrator(s) and the <_:option-2/> option to define members. They have all rights of group administrators and members." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:86 +#: gpasswd.1.xml.out:88 msgid "a group administrator" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:89 msgid "a system administrator" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:84 +#: gpasswd.1.xml.out:86 msgid "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only prompts for the new password of the <_:replaceable-4/>." msgstr "" @@ -3833,10 +4049,10 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:180 -#: gpasswd.1.xml.out:196 -#: gpasswd.1.xml.out:277 +#: gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:182 +#: gpasswd.1.xml.out:198 +#: gpasswd.1.xml.out:279 #: groups.1.xml.out:71 #: groups.1.xml.out:92 #: gshadow.5.xml.out:76 @@ -3856,32 +4072,32 @@ msgid "newgrp" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:93 msgid "If a password is set the members can still use <_:citerefentry-1/> without a password, and non-members must supply the password." msgstr "" #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "" #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "Group passwords are an inherent security problem since more than one person is permitted to know the password. However, groups are a useful tool for permitting co-operation between different users." msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 msgid "Except for the <_:option-1/> and <_:option-2/> options, the options cannot be combined." msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 +#: gpasswd.1.xml.out:126 #: groupmems.8.xml.out:83 msgid "--add" msgstr "" @@ -3889,97 +4105,97 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 -#: gpasswd.1.xml.out:128 -#: gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 -#: gpasswd.1.xml.out:205 -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 +#: gpasswd.1.xml.out:130 +#: gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 +#: gpasswd.1.xml.out:207 +#: gpasswd.1.xml.out:219 #: groups.1.xml.out:48 #: groups.1.xml.out:59 msgid "user" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 msgid "Add the <_:replaceable-1/> to the named <_:replaceable-2/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 +#: gpasswd.1.xml.out:139 #: groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 +#: passwd.1.xml.out:164 msgid "--delete" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 msgid "Remove the <_:replaceable-1/> from the named <_:replaceable-2/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 msgid "-Q" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 msgid "Remove the password from the named <_:replaceable-1/>. The group password will be empty. Only group members will be allowed to use <_:command-2/> to join the named <_:replaceable-3/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 msgid "Restrict the access to the named <_:replaceable-1/>. The group password is set to \"!\". Only group members with a password will be allowed to use <_:command-2/> to join the named <_:replaceable-3/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 msgid "--administrators" msgstr "" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 -#: gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 +#: gpasswd.1.xml.out:218 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 msgid "Set the list of administrative users." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 msgid "--members" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 msgid "Set the list of group members." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 msgid "and <_:filename-1/> files." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 msgid "file." msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 msgid "This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> Thus you cannot change any NIS or LDAP group. This must be performed on the corresponding server." msgstr "" @@ -3989,7 +4205,7 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 +#: gpasswd.1.xml.out:285 #: groupadd.8.xml.out:357 #: groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 @@ -3999,10 +4215,10 @@ msgstr "" #: groupdel.8.xml.out:165 #: groupmems.8.xml.out:221 #: groupmod.8.xml.out:341 -#: login.defs.5.xml.out:299 -#: useradd.8.xml.out:893 +#: login.defs.5.xml.out:312 +#: useradd.8.xml.out:913 #: userdel.8.xml.out:328 -#: usermod.8.xml.out:623 +#: usermod.8.xml.out:640 msgid "groupdel" msgstr "" @@ -4012,7 +4228,7 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 +#: gpasswd.1.xml.out:288 #: groupadd.8.xml.out:360 #: groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 @@ -4023,10 +4239,10 @@ msgstr "" #: groupmod.8.xml.out:256 #: grpck.8.xml.out:107 #: grpck.8.xml.out:283 -#: login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 +#: login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 #: userdel.8.xml.out:331 -#: usermod.8.xml.out:626 +#: usermod.8.xml.out:643 msgid "groupmod" msgstr "" @@ -4036,7 +4252,7 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 +#: gpasswd.1.xml.out:291 #: grpck.8.xml.out:33 #: grpck.8.xml.out:40 #: grpck.8.xml.out:46 @@ -4047,7 +4263,7 @@ msgstr "" #: grpck.8.xml.out:184 #: grpck.8.xml.out:234 #: gshadow.5.xml.out:159 -#: login.defs.5.xml.out:318 +#: login.defs.5.xml.out:331 #: pwck.8.xml.out:339 #: pwconv.8.xml.out:198 #: pwconv.8.xml.out:242 @@ -4059,7 +4275,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 +#: gpasswd.1.xml.out:297 #: grpck.8.xml.out:95 #: grpck.8.xml.out:287 #: gshadow.5.xml.out:22 @@ -4075,14 +4291,14 @@ msgid "gshadow" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 +#: gpasswd.1.xml.out:295 #: newgrp.1.xml.out:146 #: sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 +#: gpasswd.1.xml.out:277 #: newgrp.1.xml.out:128 #: sg.1.xml.out:117 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -4128,10 +4344,10 @@ msgstr "" #: useradd.8.xml.out:96 #: useradd.8.xml.out:230 #: useradd.8.xml.out:264 -#: useradd.8.xml.out:391 -#: useradd.8.xml.out:396 -#: useradd.8.xml.out:557 -#: useradd.8.xml.out:639 +#: useradd.8.xml.out:393 +#: useradd.8.xml.out:398 +#: useradd.8.xml.out:559 +#: useradd.8.xml.out:659 #: usermod.8.xml.out:174 #: vipw.8.xml.out:90 msgid "-g" @@ -4146,7 +4362,7 @@ msgstr "" #: groupadd.8.xml.out:102 #: groupmod.8.xml.out:82 #: useradd.8.xml.out:230 -#: useradd.8.xml.out:639 +#: useradd.8.xml.out:659 #: usermod.8.xml.out:174 msgid "--gid" msgstr "" @@ -4162,8 +4378,8 @@ msgstr "" #: groupmod.8.xml.out:87 #: groupmod.8.xml.out:91 #: groupmod.8.xml.out:137 -#: newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "" @@ -4194,7 +4410,7 @@ msgstr "" #. (itstool) path: listitem/para #: groupadd.8.xml.out:111 -#: useradd.8.xml.out:541 +#: useradd.8.xml.out:543 msgid "See also the <_:option-1/> option and the <_:option-2/> description." msgstr "" @@ -4205,35 +4421,35 @@ msgstr "" #: groupadd.8.xml.out:134 #: groupadd.8.xml.out:135 #: groupadd.8.xml.out:138 -#: useradd.8.xml.out:303 -#: useradd.8.xml.out:314 -#: useradd.8.xml.out:317 +#: useradd.8.xml.out:305 +#: useradd.8.xml.out:316 #: useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: useradd.8.xml.out:321 +#: useradd.8.xml.out:322 msgid "-K" msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:125 -#: useradd.8.xml.out:303 +#: useradd.8.xml.out:305 msgid "--key" msgstr "" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:125 -#: useradd.8.xml.out:303 +#: useradd.8.xml.out:305 msgid "KEY" msgstr "" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:125 -#: useradd.8.xml.out:303 +#: useradd.8.xml.out:305 msgid "VALUE" msgstr "" #. (itstool) path: varlistentry/term #: groupadd.8.xml.out:124 -#: useradd.8.xml.out:302 +#: useradd.8.xml.out:304 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" msgstr "" @@ -4244,14 +4460,14 @@ msgstr "" #. (itstool) path: para/replaceable #: groupadd.8.xml.out:134 -#: useradd.8.xml.out:320 +#: useradd.8.xml.out:322 msgid "100" msgstr "" #. (itstool) path: para/replaceable #: groupadd.8.xml.out:135 #: groupadd.8.xml.out:138 -#: useradd.8.xml.out:321 +#: useradd.8.xml.out:323 msgid "499" msgstr "" @@ -4266,7 +4482,7 @@ msgstr "" #: groupadd.8.xml.out:333 #: groupdel.8.xml.out:192 #: groupmod.8.xml.out:295 -#: useradd.8.xml.out:853 +#: useradd.8.xml.out:873 #: userdel.8.xml.out:265 msgid "10" msgstr "" @@ -4279,7 +4495,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:145 #: groupmod.8.xml.out:132 -#: useradd.8.xml.out:405 +#: useradd.8.xml.out:407 #: usermod.8.xml.out:271 msgid "--non-unique" msgstr "" @@ -4302,7 +4518,7 @@ msgstr "" #: login.1.xml.out:95 #: login.1.xml.out:212 #: su.1.xml.out:207 -#: useradd.8.xml.out:425 +#: useradd.8.xml.out:427 #: usermod.8.xml.out:237 #: usermod.8.xml.out:290 #: usermod.8.xml.out:411 @@ -4313,7 +4529,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:158 #: groupmod.8.xml.out:143 -#: useradd.8.xml.out:425 +#: useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "--password" msgstr "" @@ -4321,7 +4537,7 @@ msgstr "" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:158 #: groupmod.8.xml.out:143 -#: useradd.8.xml.out:425 +#: useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "PASSWORD" msgstr "" @@ -4336,10 +4552,10 @@ msgstr "" #: passwd.5.xml.out:170 #: shadow.5.xml.out:88 #: shadow.5.xml.out:94 -#: useradd.8.xml.out:430 -#: useradd.8.xml.out:887 +#: useradd.8.xml.out:432 +#: useradd.8.xml.out:907 #: usermod.8.xml.out:295 -#: usermod.8.xml.out:614 +#: usermod.8.xml.out:631 msgid "crypt" msgstr "" @@ -4355,7 +4571,7 @@ msgstr "" #: grpck.8.xml.out:255 #: gshadow.5.xml.out:63 #: gshadow.5.xml.out:69 -#: passwd.1.xml.out:443 +#: passwd.1.xml.out:465 #: passwd.5.xml.out:104 #: passwd.5.xml.out:110 #: passwd.5.xml.out:170 @@ -4365,11 +4581,11 @@ msgstr "" #: shadow.3.xml.out:217 #: shadow.5.xml.out:89 #: shadow.5.xml.out:95 -#: useradd.8.xml.out:431 -#: useradd.8.xml.out:829 -#: useradd.8.xml.out:887 +#: useradd.8.xml.out:433 +#: useradd.8.xml.out:849 +#: useradd.8.xml.out:907 #: usermod.8.xml.out:296 -#: usermod.8.xml.out:614 +#: usermod.8.xml.out:631 msgid "3" msgstr "" @@ -4386,7 +4602,7 @@ msgstr "" #. (itstool) path: para/emphasis #: groupadd.8.xml.out:173 #: groupmod.8.xml.out:152 -#: useradd.8.xml.out:444 +#: useradd.8.xml.out:446 #: userdel.8.xml.out:93 #: usermod.8.xml.out:299 msgid "Note:" @@ -4401,15 +4617,15 @@ msgstr "" #. (itstool) path: listitem/para #: groupadd.8.xml.out:177 #: groupmod.8.xml.out:156 -#: useradd.8.xml.out:448 +#: useradd.8.xml.out:450 #: usermod.8.xml.out:309 msgid "You should make sure the password respects the system's password policy." msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:185 -#: newusers.8.xml.out:287 -#: useradd.8.xml.out:456 +#: newusers.8.xml.out:289 +#: useradd.8.xml.out:458 msgid "--system" msgstr "" @@ -4435,52 +4651,6 @@ msgstr "" msgid "The numeric identifiers of new system groups are chosen in the <_:option-1/>-<_:option-2/> range, defined in <_:filename-3/>, instead of <_:option-4/>-<_:option-5/>." msgstr "" -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 -#: groupdel.8.xml.out:102 -#: groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 -#: userdel.8.xml.out:136 -#: usermod.8.xml.out:341 -msgid "-P" -msgstr "" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 -#: groupdel.8.xml.out:102 -#: groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 -#: userdel.8.xml.out:136 -#: usermod.8.xml.out:341 -msgid "--prefix" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 -#: groupadd.8.xml.out:219 -#: groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 -#: groupdel.8.xml.out:108 -#: groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 -#: groupmod.8.xml.out:183 -#: useradd.8.xml.out:502 -#: useradd.8.xml.out:507 -#: userdel.8.xml.out:136 -#: userdel.8.xml.out:140 -#: userdel.8.xml.out:142 -#: usermod.8.xml.out:341 -#: usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 -#: useradd.8.xml.out:505 -msgid "Apply changes to configuration files under the root filesystem found under the directory <_:replaceable-1/>. 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." -msgstr "" - #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 @@ -4488,9 +4658,9 @@ msgstr "" #: groupmod.8.xml.out:194 #: groupmod.8.xml.out:202 #: useradd.8.xml.out:96 -#: useradd.8.xml.out:397 -#: useradd.8.xml.out:549 -#: useradd.8.xml.out:558 +#: useradd.8.xml.out:399 +#: useradd.8.xml.out:551 +#: useradd.8.xml.out:560 #: usermod.8.xml.out:238 #: usermod.8.xml.out:405 msgid "-U" @@ -4513,9 +4683,9 @@ msgstr "" #: groupadd.8.xml.out:237 #: groupmod.8.xml.out:202 #: useradd.8.xml.out:96 -#: useradd.8.xml.out:386 -#: useradd.8.xml.out:397 -#: useradd.8.xml.out:558 +#: useradd.8.xml.out:388 +#: useradd.8.xml.out:399 +#: useradd.8.xml.out:560 msgid "-N" msgstr "" @@ -4523,11 +4693,11 @@ msgstr "" #. (itstool) path: para/phrase #: groupadd.8.xml.out:238 #: groupmod.8.xml.out:203 -#: login.defs.5.xml.out:448 +#: login.defs.5.xml.out:467 #: useradd.8.xml.out:97 #: useradd.8.xml.out:240 -#: useradd.8.xml.out:398 -#: useradd.8.xml.out:559 +#: useradd.8.xml.out:400 +#: useradd.8.xml.out:561 #: userdel.8.xml.out:86 #: userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" @@ -4536,8 +4706,8 @@ msgstr "" #. (itstool) path: listitem/para #: groupadd.8.xml.out:235 #: groupmod.8.xml.out:200 -#: useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: useradd.8.xml.out:397 +#: useradd.8.xml.out:558 msgid "The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> options are not specified) is defined by the <_:option-4/> variable in <_:filename-5/>." msgstr "" @@ -4553,8 +4723,8 @@ msgstr "" #. (itstool) path: listitem/para #: groupadd.8.xml.out:317 -#: passwd.1.xml.out:463 -#: useradd.8.xml.out:831 +#: passwd.1.xml.out:485 +#: useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "" @@ -4562,9 +4732,9 @@ msgstr "" #: groupadd.8.xml.out:321 #: groupmod.8.xml.out:277 #: grpck.8.xml.out:261 -#: passwd.1.xml.out:449 +#: passwd.1.xml.out:471 #: pwck.8.xml.out:311 -#: useradd.8.xml.out:835 +#: useradd.8.xml.out:855 msgid "4" msgstr "" @@ -4576,7 +4746,7 @@ msgstr "" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:327 #: groupmod.8.xml.out:289 -#: useradd.8.xml.out:847 +#: useradd.8.xml.out:867 msgid "9" msgstr "" @@ -4588,7 +4758,7 @@ msgstr "" #. (itstool) path: listitem/para #: groupadd.8.xml.out:335 #: groupdel.8.xml.out:194 -#: useradd.8.xml.out:855 +#: useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "" @@ -4603,8 +4773,8 @@ msgstr "" #: groupdel.8.xml.out:226 #: groupmems.8.xml.out:227 #: groupmod.8.xml.out:350 -#: login.defs.5.xml.out:480 -#: useradd.8.xml.out:913 +#: login.defs.5.xml.out:499 +#: useradd.8.xml.out:933 #: userdel.8.xml.out:39 #: userdel.8.xml.out:46 #: userdel.8.xml.out:51 @@ -4616,7 +4786,7 @@ msgstr "" #: userdel.8.xml.out:283 #: userdel.8.xml.out:298 #: userdel.8.xml.out:300 -#: usermod.8.xml.out:643 +#: usermod.8.xml.out:660 msgid "userdel" msgstr "" @@ -4630,11 +4800,11 @@ msgstr "" #: groupdel.8.xml.out:229 #: groupmems.8.xml.out:230 #: groupmod.8.xml.out:353 -#: login.defs.5.xml.out:490 -#: passwd.1.xml.out:488 +#: login.defs.5.xml.out:509 +#: passwd.1.xml.out:513 #: pwck.8.xml.out:140 #: pwck.8.xml.out:348 -#: useradd.8.xml.out:916 +#: useradd.8.xml.out:936 #: userdel.8.xml.out:345 #: usermod.8.xml.out:40 #: usermod.8.xml.out:47 @@ -4642,7 +4812,7 @@ msgstr "" #: usermod.8.xml.out:64 #: usermod.8.xml.out:72 #: usermod.8.xml.out:263 -#: usermod.8.xml.out:522 +#: usermod.8.xml.out:539 msgid "usermod" msgstr "" @@ -4673,9 +4843,9 @@ msgstr "" #: suauth.5.xml.out:87 #: useradd.8.xml.out:230 #: useradd.8.xml.out:249 -#: useradd.8.xml.out:392 -#: useradd.8.xml.out:639 -#: useradd.8.xml.out:648 +#: useradd.8.xml.out:394 +#: useradd.8.xml.out:659 +#: useradd.8.xml.out:668 #: usermod.8.xml.out:174 msgid "GROUP" msgstr "" @@ -4710,16 +4880,16 @@ msgstr "" #. (itstool) path: term/replaceable #: groupdel.8.xml.out:180 #: groupmod.8.xml.out:283 -#: passwd.1.xml.out:461 +#: passwd.1.xml.out:483 #: pwck.8.xml.out:323 -#: useradd.8.xml.out:841 +#: useradd.8.xml.out:861 #: userdel.8.xml.out:253 msgid "6" msgstr "" #. (itstool) path: listitem/para #: groupdel.8.xml.out:182 -#: useradd.8.xml.out:843 +#: useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "" @@ -4769,7 +4939,7 @@ msgstr "" #: groupmems.8.xml.out:78 #: groupmems.8.xml.out:159 #: groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "" @@ -4882,7 +5052,7 @@ msgstr "" #. (itstool) path: refsect1/programlisting #: groupmems.8.xml.out:167 -msgid "$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ groupmems -g groups -a gk4" +msgid "$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ groupmems -g groups -a gk4" msgstr "" #. (itstool) path: listitem/para @@ -4944,7 +5114,7 @@ msgstr "" #. (itstool) path: term/option #: groupmod.8.xml.out:121 -#: passwd.1.xml.out:246 +#: passwd.1.xml.out:242 msgid "-n" msgstr "" @@ -5022,7 +5192,7 @@ msgstr "" #. (itstool) path: term/replaceable #: groupmod.8.xml.out:307 -#: useradd.8.xml.out:859 +#: useradd.8.xml.out:879 #: userdel.8.xml.out:271 msgid "12" msgstr "" @@ -5179,8 +5349,8 @@ msgstr "" #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable #: grpck.8.xml.out:113 -#: newusers.8.xml.out:67 -#: newusers.8.xml.out:75 +#: newusers.8.xml.out:69 +#: newusers.8.xml.out:77 msgid "file" msgstr "" @@ -5209,8 +5379,8 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: grpck.8.xml.out:143 -#: login.defs.5.xml.out:134 #: login.defs.5.xml.out:136 +#: login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "" @@ -5235,8 +5405,8 @@ msgstr "" #. (itstool) path: para/option #: grpck.8.xml.out:172 #: lastlog.8.xml.out:117 -#: passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:157 +#: passwd.1.xml.out:302 msgid "-S" msgstr "" @@ -5418,7 +5588,7 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: gshadow.5.xml.out:162 -#: login.defs.5.xml.out:324 +#: login.defs.5.xml.out:337 #: pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 #: pwconv.8.xml.out:113 @@ -5440,7 +5610,7 @@ msgstr "" #: lastlog.8.xml.out:58 #: lastlog.8.xml.out:70 #: lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "" @@ -5480,7 +5650,7 @@ msgstr "" #. (itstool) path: term/option #: lastlog.8.xml.out:75 #: useradd.8.xml.out:118 -#: useradd.8.xml.out:592 +#: useradd.8.xml.out:612 #: usermod.8.xml.out:89 msgid "-b" msgstr "" @@ -5778,7 +5948,7 @@ msgstr "" #: su.1.xml.out:95 #: su.1.xml.out:153 #: su.1.xml.out:155 -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "username" msgstr "" @@ -6167,9 +6337,9 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: login.1.xml.out:386 -#: login.defs.5.xml.out:436 -#: login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 +#: login.defs.5.xml.out:455 +#: login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 #: newgrp.1.xml.out:136 #: passwd.5.xml.out:197 #: shadow.5.xml.out:283 @@ -6330,81 +6500,81 @@ msgid "<_:citerefentry-1/>." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 msgid "The <_:filename-1/> file defines the site-specific configuration for the shadow password suite. This file is required. Absence of this file will not prevent system operation, but will probably result in undesirable operation." msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "This file is a readable text file, each line of the file describing one configuration parameter. The lines consist of a configuration name and value, separated by whitespace. Blank lines and comment lines are ignored. Comments are introduced with a \"#\" pound sign and the pound sign must be the first non-white character of the line." msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 +#: login.defs.5.xml.out:135 #: useradd.8.xml.out:242 -#: useradd.8.xml.out:380 +#: useradd.8.xml.out:382 #: userdel.8.xml.out:87 #: userdel.8.xml.out:297 msgid "yes" msgstr "" #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 msgid "0x" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 msgid "Parameter values may be of four types: strings, booleans, numbers, and long numbers. A string is comprised of any printable characters. A boolean should be either the value <_:replaceable-1/> or <_:replaceable-2/>. An undefined boolean parameter or one with a value other than these will be given a <_:replaceable-3/> value. Numbers (both regular and long) may be either decimal values, octal values (precede the value with <_:replaceable-4/>) or hexadecimal values (precede the value with <_:replaceable-5/>). The maximum value of the regular and long numeric parameters is machine-dependent." msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 +#: login.defs.5.xml.out:196 #: pwconv.8.xml.out:146 -#: useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 +#: login.defs.5.xml.out:196 #: pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 +#: login.defs.5.xml.out:197 #: pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "" #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 msgid "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of account creation. Any changes to these settings won't affect existing accounts." msgstr "" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "The following cross references show which programs in the shadow password suite use which parameters." msgstr "" @@ -6412,10 +6582,10 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 -#: login.defs.5.xml.out:423 -#: login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 +#: login.defs.5.xml.out:239 +#: login.defs.5.xml.out:442 +#: login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 #: pwck.8.xml.out:75 #: pwck.8.xml.out:216 #: pwck.8.xml.out:232 @@ -6428,58 +6598,76 @@ msgid "USE_TCB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 -#: login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 +#: login.defs.5.xml.out:372 msgid "LOGIN_STRING" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 -#: login.defs.5.xml.out:264 -#: login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 -#: login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 +#: login.defs.5.xml.out:269 +#: login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 +#: login.defs.5.xml.out:418 +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 +#: login.defs.5.xml.out:273 +#: login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 +#: login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 +#: login.defs.5.xml.out:275 +#: login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 +#: login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 -#: login.defs.5.xml.out:282 -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +#: login.defs.5.xml.out:255 +#: login.defs.5.xml.out:292 +msgid "<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-2/> <_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 msgid "CHSH_AUTH LOGIN_STRING" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 -#: login.defs.5.xml.out:307 -#: login.defs.5.xml.out:313 +#: login.defs.5.xml.out:314 #: login.defs.5.xml.out:320 #: login.defs.5.xml.out:326 -#: login.defs.5.xml.out:332 +#: login.defs.5.xml.out:333 +#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "" @@ -6487,7 +6675,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 +#: login.defs.5.xml.out:343 #: pwconv.8.xml.out:49 #: pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 @@ -6498,84 +6686,84 @@ msgid "grpunconv" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 -#: login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 +#: login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 msgid "FAILLOG_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 msgid "FTMP_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY <_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR <_:phrase-6/> LOGIN_RETRIES <_:phrase-7/> LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB <_:phrase-8/> TTYGROUP TTYPERM TTYTYPE_FILE <_:phrase-9/> USERGROUPS_ENAB" msgstr "" #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 msgid "newgrp / sg" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 -msgid "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +#: login.defs.5.xml.out:395 +msgid "<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:phrase-3/>" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 -msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +#: login.defs.5.xml.out:417 +msgid "<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> <_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 -#: login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 +#: login.defs.5.xml.out:440 msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" msgstr "" @@ -6585,7 +6773,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 +#: login.defs.5.xml.out:438 #: passwd.5.xml.out:188 #: pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 @@ -6606,7 +6794,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 +#: login.defs.5.xml.out:447 #: passwd.5.xml.out:191 #: pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 @@ -6621,68 +6809,61 @@ msgid "pwunconv" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH <_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 +#: login.defs.5.xml.out:472 #: passwd.5.xml.out:200 #: shadow.5.xml.out:286 msgid "sulogin" msgstr "" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 -#: su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +msgid "ENV_HZ ENV_TZ" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 msgid "CREATE_HOME GID_MAX GID_MIN HOME_MODE 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 SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:phrase-1/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 -#: login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 +#: login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 msgid "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:phrase-1/>" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 msgid "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" msgstr "" @@ -6691,7 +6872,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 +#: login.defs.5.xml.out:519 #: vipw.8.xml.out:35 #: vipw.8.xml.out:42 #: vipw.8.xml.out:51 @@ -6701,24 +6882,24 @@ msgid "vipw" msgstr "" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 +#: login.defs.5.xml.out:530 #: pwconv.8.xml.out:193 #: suauth.5.xml.out:179 msgid "BUGS" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 msgid "Much of the functionality that used to be provided by the shadow password suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:citerefentry-2/>, or less used by <_:citerefentry-3/>, and <_:citerefentry-4/>. Please refer to the corresponding PAM configuration files instead." msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 msgid "pam" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." msgstr "" @@ -6792,167 +6973,167 @@ msgid "id" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 msgid "The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input by default) and uses this information to update a set of existing users or to create new users. Each line is in the same format as the standard password file (see <_:citerefentry-3/>) with the exceptions explained below:" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 msgid "pw_name" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 msgid "It can be the name of a new user or the name of an existing user (or a user created before by <_:command-1/>). In case of an existing user, the user's information will be changed, otherwise a new user will be created." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "This field will be encrypted and used as the new value of the encrypted password." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 msgid "pw_uid" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 msgid "If the field is empty, a new (unused) UID will be defined automatically by <_:command-1/>." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 msgid "If this field contains the name of an existing user (or the name of a user created before by <_:command-1/>), the UID of the specified user will be used." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "If the UID of an existing user is changed, the files ownership of the user's file should be fixed manually." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 msgid "If this field contains the name of an existing group (or a group created before by <_:command-1/>), the GID of this group will be used as the primary group ID for the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "If this field is a number, this number will be used as the primary group ID of the user. If no groups exist with this GID, a new group will be created with this GID, and the name of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 msgid "If this field is empty, a new group will be created with the name of the user and a GID will be automatically defined by <_:command-1/> to be used as the primary group ID for the user and as the GID for the new group." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 msgid "If this field contains the name of a group which does not exist (and was not created before by <_:command-1/>), a new group will be created with the specified name and a GID will be automatically defined by <_:command-2/> to be used as the primary group ID for the user and GID for the new group." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "" #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group. Note that <_:emphasis-1/> of the new user's home directory. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 msgid "If the home directory of an existing user is changed, <_:command-1/> does not move or copy the content of the old directory to the new location. This should be done manually." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:218 +#: newusers.8.xml.out:220 msgid "pw_shell" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:221 +#: newusers.8.xml.out:223 msgid "This field defines the shell of the user. No checks are performed on this field." msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:229 +#: newusers.8.xml.out:231 msgid "<_:command-1/> first tries to create or change all the specified users, and then write these changes to the user or group databases. If an error occurs (except in the final writes to the databases), no changes are committed to the databases." msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "During this first pass, users are created with a locked password (and passwords are not changed for the users which are not created). A second pass is used to update the passwords using PAM. Failures to update a password are reported, but will not stop the other password updates." msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "This command is intended to be used in a large system environment where many accounts are updated at a single time." msgstr "" #. (itstool) path: term/option -#: newusers.8.xml.out:257 +#: newusers.8.xml.out:259 #: pwck.8.xml.out:164 #: useradd.8.xml.out:108 #: usermod.8.xml.out:89 @@ -6960,7 +7141,7 @@ msgid "--badname" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 +#: newusers.8.xml.out:262 #: pwck.8.xml.out:167 #: useradd.8.xml.out:111 #: usermod.8.xml.out:92 @@ -6968,120 +7149,140 @@ msgid "Allow names that do not conform to standards." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 -#: useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc support these methods." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 +#: useradd.8.xml.out:461 msgid "Create a system account." msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 -#: useradd.8.xml.out:466 +#: newusers.8.xml.out:299 +#: useradd.8.xml.out:468 #: usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 -#: useradd.8.xml.out:466 +#: newusers.8.xml.out:299 +#: useradd.8.xml.out:468 #: usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 -#: useradd.8.xml.out:308 -#: useradd.8.xml.out:319 -#: useradd.8.xml.out:468 -#: useradd.8.xml.out:538 +#: newusers.8.xml.out:301 +#: useradd.8.xml.out:310 +#: useradd.8.xml.out:321 +#: useradd.8.xml.out:470 +#: useradd.8.xml.out:540 #: usermod.8.xml.out:397 msgid "UID_MIN" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 -#: useradd.8.xml.out:308 -#: useradd.8.xml.out:321 -#: useradd.8.xml.out:468 -#: useradd.8.xml.out:543 +#: newusers.8.xml.out:301 +#: useradd.8.xml.out:310 +#: useradd.8.xml.out:323 +#: useradd.8.xml.out:470 +#: useradd.8.xml.out:545 #: usermod.8.xml.out:397 msgid "UID_MAX" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 -#: useradd.8.xml.out:462 +#: newusers.8.xml.out:295 +#: useradd.8.xml.out:464 msgid "System users will be created with no aging information in <_:filename-1/>, and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> range, defined in <_:filename-4/>, instead of <_:option-5/>-<_:option-6/> (and their <_:option-7/> counterparts for the creation of groups)." msgstr "" +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +msgid "A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. The default is 13." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +msgid "A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512. The default is 5000." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +msgid "A minimal value of 1 and a maximal value of 11 will be enforced for YESCRYPT. The default is 5." +msgstr "" + #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "The input file must be protected since it contains unencrypted passwords." msgstr "" #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 msgid "/etc/pam.d/newusers" msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 +#: newusers.8.xml.out:456 #: useradd.8.xml.out:222 -#: useradd.8.xml.out:481 -#: useradd.8.xml.out:785 +#: useradd.8.xml.out:483 +#: useradd.8.xml.out:805 #: userdel.8.xml.out:215 -#: usermod.8.xml.out:587 +#: usermod.8.xml.out:604 msgid "/etc/subgid" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 -#: useradd.8.xml.out:787 +#: newusers.8.xml.out:458 +#: useradd.8.xml.out:807 #: userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 +#: newusers.8.xml.out:462 #: useradd.8.xml.out:222 -#: useradd.8.xml.out:480 -#: useradd.8.xml.out:791 +#: useradd.8.xml.out:482 +#: useradd.8.xml.out:811 #: userdel.8.xml.out:221 -#: usermod.8.xml.out:593 +#: usermod.8.xml.out:610 msgid "/etc/subuid" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 -#: useradd.8.xml.out:793 +#: newusers.8.xml.out:464 +#: useradd.8.xml.out:813 #: userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 -#: useradd.8.xml.out:906 +#: newusers.8.xml.out:481 +#: useradd.8.xml.out:926 #: userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: usermod.8.xml.out:650 msgid "subgid" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 -#: useradd.8.xml.out:909 +#: newusers.8.xml.out:484 +#: useradd.8.xml.out:929 #: userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: usermod.8.xml.out:653 msgid "subuid" msgstr "" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 -#: useradd.8.xml.out:904 +#: newusers.8.xml.out:479 +#: useradd.8.xml.out:924 #: userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "" @@ -7121,270 +7322,275 @@ msgid "The <_:command-1/> command appeared in BSD 4.4." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 msgid "The <_:command-1/> 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-2/> also changes the account or associated password validity period." msgstr "" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 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 "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 msgid "After the password has been entered, password aging information is checked to see if the user is permitted to change the password at this time. If not, <_:command-1/> refuses to change the password and exits." msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "The user is then prompted twice for a replacement password. The second entry is compared against the first and both are required to match in order for the password to be changed." msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 -msgid "Then, the password is tested for complexity. As a general guideline, passwords should consist of 6 to 8 characters including one or more characters from each of the following sets:" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 -msgid "Care must be taken not to include the system default erase or kill characters. <_:command-1/> will reject any password which is not suitably complex." +#: passwd.1.xml.out:98 +msgid "Then, the password is tested for complexity. <_:command-1/> will reject any password which is not suitably complex. Care must be taken not to include the system default erase or kill characters." msgstr "" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 msgid "The security of a password depends upon the strength of the encryption algorithm and the size of the key space. The legacy <_:emphasis-1/> System encryption method is based on the NBS DES algorithm. More recent methods are now recommended (see <_:option-2/>). The size of the key space depends upon the randomness of the password which is selected." msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "Compromises in password security normally result from careless password selection or handling. For this reason, you should not select a password which appears in a dictionary or which must be written down. The password should also not be a proper name, your license number, birth date, or street address. Any of these may be used as guesses to violate system security." msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "As a general guideline, passwords should be long and random. It's fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations. Being an exponential equation, it's apparent that the exponent (the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 msgid "You can find advice on how to choose a strong password on http://en.wikipedia.org/wiki/Password_strength" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 msgid "This option can be used only with <_:option-1/> and causes show status for all users." msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "Delete a user's password (make it empty). This is a quick way to disable a password for an account. It will set the named account passwordless." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 msgid "--expire" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 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 "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 msgid "This option is used to disable an account after the password has been expired for a number of days. After a user account has had an expired password for <_:replaceable-1/> days, the user may no longer sign on to the account." msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 -#: useradd.8.xml.out:278 -#: useradd.8.xml.out:356 +#: passwd.1.xml.out:206 +#: useradd.8.xml.out:280 +#: useradd.8.xml.out:358 msgid "-k" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 msgid "Indicate password change should be performed only for expired authentication tokens (passwords). The user wishes to keep their non-expired tokens as before." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:222 +#: passwd.1.xml.out:218 #: usermod.8.xml.out:231 msgid "--lock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 msgid "Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password)." msgstr "" #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 msgid "Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use <_:command-1/> (this set the account's expire date to Jan 2, 1970)." msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:258 +#: passwd.1.xml.out:254 #: pwck.8.xml.out:179 #: vipw.8.xml.out:108 msgid "-q" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:258 +#: passwd.1.xml.out:254 #: pwck.8.xml.out:179 #: vipw.8.xml.out:108 msgid "--quiet" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 +#: passwd.1.xml.out:257 #: vipw.8.xml.out:110 msgid "Quiet mode." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable +#: passwd.1.xml.out:264 #: passwd.1.xml.out:268 -#: passwd.1.xml.out:272 msgid "REPOSITORY" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 msgid "change password in <_:replaceable-1/> repository" msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 msgid "Display account status information. The status information consists of 7 fields. The first field is the user's login name. The second field indicates if the user account has a locked password (L), has no password (NP), or has a usable password (P). The third field gives the date of the last password change. The next four fields are the minimum age, maximum age, warning period, and inactivity period for the password. These ages are expressed in days." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:309 +#: passwd.1.xml.out:320 #: usermod.8.xml.out:405 msgid "--unlock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 msgid "Unlock the password of the named account. This option re-enables a password by changing the password back to its previous value (to the value before using the <_:option-1/> option)." msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 msgid "Set the number of days of warning before a password change is required. The <_:replaceable-1/> 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 "" #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 msgid "-x" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 msgid "Set the maximum number of days a password remains valid. After <_:replaceable-1/>, the password is required to be changed." msgstr "" +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "This option is used to indicate that passwd should read the new password from standard input, which can be a pipe." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 msgid "Password complexity checking may vary from site to site. The user is urged to select a password as complex as he or she feels comfortable with." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "Users may not be able to change their password on a system if NIS is enabled and they are not logged into the NIS server." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 msgid "<_:command-1/> uses PAM to authenticate users and to change their passwords." msgstr "" #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 msgid "/etc/pam.d/passwd" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 msgid "unexpected failure, <_:filename-1/> file missing" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 msgid "<_:filename-1/> file busy, try again" msgstr "" +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +msgid "makepasswd" +msgstr "" + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:494 +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 -msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> <_:citerefentry-5/>." +#: passwd.1.xml.out:517 +msgid "The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -8602,6 +8808,11 @@ msgstr "" msgid "$HZ" msgstr "" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -8841,8 +9052,8 @@ msgstr "" #: useradd.8.xml.out:76 #: useradd.8.xml.out:86 #: useradd.8.xml.out:169 -#: useradd.8.xml.out:583 -#: useradd.8.xml.out:585 +#: useradd.8.xml.out:603 +#: useradd.8.xml.out:605 msgid "-D" msgstr "" @@ -8858,7 +9069,7 @@ msgstr "" #. (itstool) path: term/option #: useradd.8.xml.out:118 -#: useradd.8.xml.out:592 +#: useradd.8.xml.out:612 msgid "--base-dir" msgstr "" @@ -8867,8 +9078,8 @@ msgstr "" #: useradd.8.xml.out:118 #: useradd.8.xml.out:124 #: useradd.8.xml.out:159 -#: useradd.8.xml.out:592 -#: useradd.8.xml.out:598 +#: useradd.8.xml.out:612 +#: useradd.8.xml.out:618 msgid "BASE_DIR" msgstr "" @@ -8889,7 +9100,7 @@ msgstr "" #. (itstool) path: para/option #: useradd.8.xml.out:131 -#: useradd.8.xml.out:603 +#: useradd.8.xml.out:623 msgid "HOME" msgstr "" @@ -8899,17 +9110,18 @@ msgstr "" #: useradd.8.xml.out:189 #: useradd.8.xml.out:212 #: useradd.8.xml.out:250 -#: useradd.8.xml.out:293 -#: useradd.8.xml.out:343 -#: useradd.8.xml.out:393 -#: useradd.8.xml.out:523 -#: useradd.8.xml.out:604 -#: useradd.8.xml.out:616 -#: useradd.8.xml.out:633 -#: useradd.8.xml.out:649 -#: useradd.8.xml.out:663 -#: useradd.8.xml.out:677 -#: useradd.8.xml.out:767 +#: useradd.8.xml.out:267 +#: useradd.8.xml.out:295 +#: useradd.8.xml.out:345 +#: useradd.8.xml.out:395 +#: useradd.8.xml.out:525 +#: useradd.8.xml.out:624 +#: useradd.8.xml.out:636 +#: useradd.8.xml.out:653 +#: useradd.8.xml.out:669 +#: useradd.8.xml.out:683 +#: useradd.8.xml.out:697 +#: useradd.8.xml.out:787 #: usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "" @@ -8974,7 +9186,7 @@ msgstr "" #. (itstool) path: para/option #: useradd.8.xml.out:188 -#: useradd.8.xml.out:615 +#: useradd.8.xml.out:635 #: usermod.8.xml.out:418 msgid "EXPIRE" msgstr "" @@ -8997,7 +9209,7 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: useradd.8.xml.out:218 -#: useradd.8.xml.out:482 +#: useradd.8.xml.out:484 msgid "-F" msgstr "" @@ -9070,411 +9282,443 @@ msgstr "" msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>[<_:emphasis-4/>[<_:emphasis-5/>]]]" msgstr "" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +msgid "GROUPS" +msgstr "" + #. (itstool) path: listitem/para #: useradd.8.xml.out:260 -msgid "A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the <_:option-1/> option. The default is for the user to belong only to the initial group." +msgid "A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the <_:option-1/> option. The default is for the user to belong only to the initial group. In addition to passing in the -G flag, you can add the option <_:option-2/> to the file <_:filename-3/> which in turn will add all users to those supplementary groups." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "SKEL_DIR" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 msgid "The skeleton directory, which contains files and directories to be copied in the user's home directory, when the home directory is created by <_:command-1/>." msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 -#: useradd.8.xml.out:350 +#: useradd.8.xml.out:290 +#: useradd.8.xml.out:352 msgid "--create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 +#: useradd.8.xml.out:592 +#: usermod.8.xml.out:524 msgid "This option is only valid if the <_:option-1/> (or <_:option-2/>) option is specified." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 msgid "/etc/skel" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 msgid "If this option is not set, the skeleton directory is defined by the <_:option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:option-4/>, <_:option-5/> and others)." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used when creating an account to turn off password aging. Multiple <_:option-4/> options can be specified, e.g.: <_:option-5/> <_:replaceable-6/> =<_:replaceable-7/> <_:option-8/> <_:replaceable-9/>=<_:replaceable-10/>" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 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 "" #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "If this option is not specified, <_:command-1/> will also consult the variable <_:option-2/> in the <_:filename-3/> if set to no the user will not be added to the lastlog and faillog databases." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 msgid "Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the <_:option-1/> option) will be copied to the home directory." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:361 -#: useradd.8.xml.out:379 -#: useradd.8.xml.out:475 +#: useradd.8.xml.out:363 +#: useradd.8.xml.out:381 +#: useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 msgid "By default, if this option is not specified and <_:option-1/> is not enabled, no home directories are created." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "The directory where the user's home directory is created must exist and have proper SELinux context and permissions. Otherwise the user's home directory cannot be created or accessed." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 msgid "Do not create the user's home directory, even if the system wide setting from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 msgid "Do not create a group with the same name as the user, but add the user to the group specified by the <_:option-1/> option or by the <_:option-2/> variable in <_:filename-3/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 msgid "allows the creation of an account with an already existing UID." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 +#: useradd.8.xml.out:414 #: usermod.8.xml.out:277 msgid "This option is only valid in combination with the <_:option-1/> option. As a user identity serves as key to map between users on one hand and permissions, file ownerships and other aspects that determine the system's behavior on the other hand, more than one login name will access the account of the given UID." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "defines an initial password for the account. PASSWORD is expected to be encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this option allows to create efficiently batches of users." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "Without this option, the new account will be locked and with no password defined, i.e. a single exclamation mark in the respective field of <_:filename-1/>. This is a state where the user won't be able to access the account or to define a password himself." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 msgid "<_:emphasis-1/>Avoid this option on the command line because the password (or encrypted password) will be visible by users listing the processes." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 msgid "Note that <_:command-1/> will not create a home directory for such a user, regardless of the default setting in <_:filename-2/> (<_:option-3/>). You have to specify the <_:option-4/> options if you want a home directory for a system account to be created." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 msgid "Note that this option will not update <_:filename-1/> and <_:filename-2/>. You have to specify the <_:option-3/> options if you want to update the files for a system account to be created." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 msgid "sets the path to the user's login shell. Without this option, the system will use the <_:option-1/> variable specified in <_:filename-2/>, or, if that is as well not set, the field for the login shell in <_:filename-3/> remains empty." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:531 +#: useradd.8.xml.out:533 #: usermod.8.xml.out:369 msgid "--uid" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 +#: useradd.8.xml.out:533 #: usermod.8.xml.out:369 msgid "UID" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 msgid "The numerical value of the user's ID. This value must be unique, unless the <_:option-1/> option is used. The value must be non-negative. The default is to use the smallest ID value greater than or equal to <_:option-2/> and greater than every other user." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "Create a group with the same name as the user, and add the user to this group." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:566 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 +#: useradd.8.xml.out:593 #: userdel.8.xml.out:153 #: usermod.8.xml.out:501 +#: usermod.8.xml.out:525 msgid "-Z" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:566 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 +#: useradd.8.xml.out:594 #: userdel.8.xml.out:153 #: usermod.8.xml.out:501 +#: usermod.8.xml.out:526 msgid "--selinux-user" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 +#: useradd.8.xml.out:568 #: usermod.8.xml.out:501 msgid "SEUSER" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 +#: useradd.8.xml.out:589 +#: usermod.8.xml.out:521 msgid "semanage" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 -msgid "defines the SELinux user for the new account. Without this option, a SELinux uses the default user. Note that the shadow system doesn't store the selinux-user, it uses <_:citerefentry-1/> for that." +#: useradd.8.xml.out:571 +msgid "defines the SELinux user for the new account. Without this option, SELinux uses the default user. Note that the shadow system doesn't store the selinux-user, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: term/option +#: useradd.8.xml.out:582 +#: usermod.8.xml.out:515 +msgid "--selinux-range" +msgstr "" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 +#: usermod.8.xml.out:515 +msgid "SERANGE" +msgstr "" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +msgid "defines the SELinux MLS range for the new account. Without this option, SELinux uses the default range. Note that the shadow system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." msgstr "" #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "" #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 msgid "When invoked with only the <_:option-1/> option, <_:command-2/> will display the current default values. When invoked with <_:option-3/> plus other options, <_:command-4/> will update the default values for the specified options. Valid default-changing options are:" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 msgid "sets the path prefix for a new user's home directory. The user's name will be affixed to the end of <_:replaceable-1/> to form the new user's home directory name, if the <_:option-2/> option is not used when creating a new account." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 -#: useradd.8.xml.out:614 -#: useradd.8.xml.out:631 -#: useradd.8.xml.out:647 -#: useradd.8.xml.out:661 +#: useradd.8.xml.out:622 +#: useradd.8.xml.out:634 +#: useradd.8.xml.out:651 +#: useradd.8.xml.out:667 +#: useradd.8.xml.out:681 msgid "This option sets the <_:option-1/> variable in <_:filename-2/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 msgid "sets the date on which newly created user accounts are disabled." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "defines the number of days after the password exceeded its maximum age where the user is expected to replace this password. See <_:citerefentry-1/>for more information." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "sets the default primary group for newly created users, accepting group names or a numerical group ID. The named group must exist, and the GID must have an existing entry." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 -#: useradd.8.xml.out:779 +#: useradd.8.xml.out:695 +#: useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 msgid "The system administrator is responsible for placing the default user files in the <_:filename-1/> directory (or any other skeleton directory specified in <_:filename-2/> or on the command line)." msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "You may not add a user to a NIS or LDAP group. This must be performed on the corresponding server." msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 msgid "Similarly, if the username already exists in an external user database such as NIS or LDAP, <_:command-1/> will deny the user account creation request." msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "Usernames may contain only lower and upper case letters, digits, underscores, or dashes. They can end with a dollar sign. Dashes are not allowed at the beginning of the username. Fully numeric usernames and usernames . or .. are also disallowed. It is not recommended to use usernames beginning with . character as their home directories will be hidden in the <_:command-1/> output." msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #: userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #: userdel.8.xml.out:211 msgid "ACTION" msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #: userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "useradd-pre.d" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "useradd-post.d" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "Run-part files to execute during user addition. The environment variable <_:command-1/> will be populated with useradd and <_:command-2/> with the <_:command-3/>. <_:filename-4/> will be executed prior to any user addition. <_:filename-5/> will execute after user addition. If a script exits non-zero then execution will terminate." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 +#: useradd.8.xml.out:839 #: userdel.8.xml.out:243 msgid "can't update password file" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 msgid "UID already in use (and no <_:option-1/>)" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 msgid "username or group name already in use" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 msgid "14" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 -#: usermod.8.xml.out:603 +#: useradd.8.xml.out:896 +#: usermod.8.xml.out:620 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:phrase-10/> <_:citerefentry-11/>, <_:citerefentry-12/>." msgstr "" @@ -9949,63 +10193,68 @@ msgstr "" msgid "defines the SELinux user to be mapped with <_:replaceable-1/>. An empty string (\"\") will remove the respective entry (if any). Note that the shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 +msgid "defines the SELinux MLS range for the new account. Note that the shadow system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 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-1/> checks this on Linux. On other operating systems it only uses utmp to check if the user is logged in." msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 msgid "You must change the owner of any <_:command-1/> files or <_:command-2/> jobs manually." msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 msgid "Group account information" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 -msgid "Secure group account informatio." +#: usermod.8.xml.out:582 +msgid "Secure group account information" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 msgid "Shadow password suite configuration" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 msgid "User account information" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 msgid "Secure user account information" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -10042,7 +10291,7 @@ msgstr "" #. (itstool) path: refsect1/para #: vipw.8.xml.out:66 -msgid "The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/>, respectively. The programs will set the appropriate locks to prevent file corruption. When looking for an editor, the programs will first try the environment variable <_:envar-8/>, then the environment variable <_:envar-9/>, and finally the default editor, <_:citerefentry-10/>." +msgid "The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/>, respectively. The programs will set the appropriate locks to prevent file corruption. When looking for an editor, the programs will first try the environment variable <_:envar-8/>, then the environment variable <_:envar-9/>, and finally the default editor, <_:citerefentry-10/>." msgstr "" #. (itstool) path: refsect1/para diff --git a/man/po/sv.po b/man/po/sv.po index 8fdf1c1..818a296 100644 --- a/man/po/sv.po +++ b/man/po/sv.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: man pages for shadow 4.0.18\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-03-14 18:23-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" @@ -11,12 +11,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 #: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 #: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 #: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 #: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 #: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 #: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 @@ -24,12 +24,12 @@ msgid "Julianne Frances" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 #: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 #: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 #: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 #: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 #: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 #: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 @@ -42,14 +42,14 @@ msgid "Creation, 1990" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 #: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 #: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 #: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 #: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 #: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 @@ -58,14 +58,14 @@ msgid "Thomas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 #: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 #: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 #: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 #: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 #: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 @@ -74,14 +74,14 @@ msgid "Kłoczko" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 #: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 #: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 #: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 #: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 #: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 @@ -90,14 +90,14 @@ msgid "kloczek@pld.org.pl" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 #: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 #: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 -#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 +#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 #: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 #: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 #: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 @@ -106,15 +106,15 @@ msgid "shadow-utils maintainer, 2000 - 2007" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 #: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 #: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 -#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 +#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 #: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 #: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 #: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 @@ -123,15 +123,15 @@ msgid "Nicolas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 #: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 #: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 -#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 +#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 #: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 #: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 #: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 @@ -140,15 +140,15 @@ msgid "François" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 #: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 #: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 -#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 +#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 #: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 #: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 #: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 @@ -157,15 +157,15 @@ msgid "nicolas.francois@centraliens.net" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 #: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 #: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 -#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 +#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 #: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 #: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 #: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 @@ -180,9 +180,9 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle #: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:216 chage.1.xml.out:226 -#: chage.1.xml.out:236 chage.1.xml.out:241 chage.1.xml.out:285 -#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 +#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 +#: login.defs.5.xml.out:237 shadow.5.xml.out:262 msgid "chage" msgstr "chage" @@ -190,11 +190,11 @@ msgstr "chage" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:294 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:217 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:37 chsh.1.xml.out:171 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 groupadd.8.xml.out:345 groupadd.8.xml.out:348 +#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 +#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 #: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 #: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 @@ -202,44 +202,44 @@ msgstr "chage" #: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 #: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 #: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:456 -#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:431 -#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 -#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 -#: pwck.8.xml.out:293 shadow.5.xml.out:262 shadow.5.xml.out:265 -#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 -#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 -#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 -#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:817 -#: useradd.8.xml.out:878 useradd.8.xml.out:881 useradd.8.xml.out:884 -#: userdel.8.xml.out:241 userdel.8.xml.out:310 userdel.8.xml.out:313 -#: userdel.8.xml.out:316 usermod.8.xml.out:105 usermod.8.xml.out:244 -#: usermod.8.xml.out:605 usermod.8.xml.out:608 usermod.8.xml.out:611 -#: vipw.8.xml.out:78 vipw.8.xml.out:205 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 +#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 +#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 +#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 +#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 +#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 +#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 +#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 +#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 +#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 +#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 +#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 +#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 +#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 msgid "1" msgstr "1" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 msgid "User Commands" msgstr "Användarkommandon" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 #: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 #: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 -#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 +#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 #: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 #: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 #: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 @@ -250,20 +250,20 @@ msgid "shadow-utils" msgstr "shadow" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 #: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 #: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 -#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 +#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 #: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 #: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 #: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 #: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -273,10 +273,10 @@ msgstr "ändra åldringsinformation för användarlösenord" #. (itstool) path: arg/replaceable #. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 #: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:64 passwd.1.xml.out:55 +#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 #: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 #: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 #: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 @@ -289,22 +289,22 @@ msgstr "flaggor" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis #: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 #: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 #: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 msgid "LOGIN" msgstr "INLOGGNINGSNAMN" #. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 #: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 #: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 -#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 +#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 #: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 #: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 #: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 @@ -322,12 +322,12 @@ msgstr "" #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:51 +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 #: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:250 passwd.1.xml.out:150 +#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 #: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 #: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 #: vipw.8.xml.out:83 @@ -335,12 +335,12 @@ msgid "OPTIONS" msgstr "FLAGGOR" #. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:81 +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 -#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 +#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 #: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 #, fuzzy #| msgid "The options which apply to the <command>su</command> command are:" @@ -349,9 +349,9 @@ msgstr "Flaggorna som gäller för kommandot <command>su</command> är:" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:599 usermod.8.xml.out:112 usermod.8.xml.out:260 +#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 +#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 +#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 msgid "-d" msgstr "-d" @@ -369,44 +369,44 @@ msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 #: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 -#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 chsh.1.xml.out:83 chsh.1.xml.out:96 -#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 -#: faillog.8.xml.out:169 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 groupadd.8.xml.out:101 groupadd.8.xml.out:157 -#: groupadd.8.xml.out:200 groupadd.8.xml.out:213 groupdel.8.xml.out:88 -#: groupdel.8.xml.out:101 groupmems.8.xml.out:83 groupmems.8.xml.out:94 -#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 -#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 -#: groupmod.8.xml.out:163 groupmod.8.xml.out:176 grpck.8.xml.out:148 -#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 -#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:321 -#: passwd.1.xml.out:334 pwck.8.xml.out:196 pwconv.8.xml.out:177 -#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 -#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 -#: useradd.8.xml.out:195 useradd.8.xml.out:229 useradd.8.xml.out:277 -#: useradd.8.xml.out:424 useradd.8.xml.out:488 useradd.8.xml.out:501 -#: useradd.8.xml.out:516 useradd.8.xml.out:530 useradd.8.xml.out:565 -#: useradd.8.xml.out:591 useradd.8.xml.out:609 useradd.8.xml.out:621 -#: useradd.8.xml.out:638 useradd.8.xml.out:654 userdel.8.xml.out:122 -#: userdel.8.xml.out:135 usermod.8.xml.out:98 usermod.8.xml.out:111 -#: usermod.8.xml.out:128 usermod.8.xml.out:151 usermod.8.xml.out:173 -#: usermod.8.xml.out:216 usermod.8.xml.out:289 usermod.8.xml.out:327 -#: usermod.8.xml.out:340 usermod.8.xml.out:356 usermod.8.xml.out:368 -#: usermod.8.xml.out:500 vipw.8.xml.out:114 +#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 +#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 +#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 +#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 +#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 +#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 +#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 +#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 +#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 +#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 +#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 +#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 +#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 +#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 +#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 +#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 +#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 +#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 +#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 +#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 +#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 +#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 +#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 +#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 +#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 +#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:288 groupadd.8.xml.out:303 +#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 passwd.1.xml.out:425 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:811 userdel.8.xml.out:235 +#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 +#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 msgid "0" msgstr "0" @@ -427,7 +427,7 @@ msgid "-E" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "" @@ -435,7 +435,7 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:610 usermod.8.xml.out:129 usermod.8.xml.out:243 +#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 #: usermod.8.xml.out:416 msgid "EXPIRE_DATE" msgstr "" @@ -465,7 +465,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:344 useradd.8.xml.out:315 +#: passwd.1.xml.out:355 useradd.8.xml.out:317 #, fuzzy #| msgid "1" msgid "-1" @@ -480,78 +480,78 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 #: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:271 +#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 #: userdel.8.xml.out:99 vipw.8.xml.out:96 msgid "-h" msgstr "-h" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 -#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:271 userdel.8.xml.out:99 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 +#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 -#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 #: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 groupadd.8.xml.out:87 groupadd.8.xml.out:118 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 #: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 #: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 #: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 #: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 #: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 -#: newusers.8.xml.out:320 passwd.1.xml.out:156 passwd.1.xml.out:167 -#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 -#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:290 -#: passwd.1.xml.out:308 pwck.8.xml.out:173 pwck.8.xml.out:179 -#: pwck.8.xml.out:188 pwck.8.xml.out:209 pwconv.8.xml.out:171 -#: useradd.8.xml.out:168 useradd.8.xml.out:217 useradd.8.xml.out:271 -#: useradd.8.xml.out:330 useradd.8.xml.out:349 useradd.8.xml.out:372 -#: useradd.8.xml.out:385 useradd.8.xml.out:404 useradd.8.xml.out:455 -#: useradd.8.xml.out:548 userdel.8.xml.out:75 userdel.8.xml.out:99 -#: userdel.8.xml.out:105 userdel.8.xml.out:152 usermod.8.xml.out:77 -#: usermod.8.xml.out:88 usermod.8.xml.out:230 usermod.8.xml.out:249 -#: usermod.8.xml.out:270 usermod.8.xml.out:316 usermod.8.xml.out:404 -#: vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 -#: vipw.8.xml.out:127 vipw.8.xml.out:133 +#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 +#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 +#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 +#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 +#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 +#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 +#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 +#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 +#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 +#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 +#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 +#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 +#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 +#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 +#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 #, fuzzy #| msgid "<option>-a</option>, <option>--all</option>" msgid "<_:option-1/>, <_:option-2/>" msgstr "<option>-a</option>, <option>--all</option>" #. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:120 +#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 -#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 +#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." msgstr "Visa hjälpmeddelande och avsluta." #. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:197 +#: chage.1.xml.out:121 passwd.1.xml.out:193 #, fuzzy #| msgid "-" msgid "-i" @@ -575,8 +575,8 @@ msgid "-I" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 usermod.8.xml.out:152 +#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 +#: useradd.8.xml.out:642 usermod.8.xml.out:152 msgid "--inactive" msgstr "" @@ -584,8 +584,8 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/option #: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:622 useradd.8.xml.out:632 +#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 +#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "" @@ -609,10 +609,10 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:242 faillog.8.xml.out:88 +#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 #: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 -#: passwd.1.xml.out:316 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:330 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 +#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "-l" @@ -629,11 +629,11 @@ msgstr "Visa kontots åldringsinformation" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:287 useradd.8.xml.out:350 useradd.8.xml.out:476 +#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 #, fuzzy #| msgid "-" @@ -641,19 +641,19 @@ msgid "-m" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:246 +#: chage.1.xml.out:157 passwd.1.xml.out:242 msgid "--mindays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:249 +#: chage.1.xml.out:160 passwd.1.xml.out:245 #, fuzzy #| msgid "" #| "Set the minimum number of days between password changes to " @@ -670,28 +670,28 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 useradd.8.xml.out:162 useradd.8.xml.out:373 +#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 #, fuzzy #| msgid "-" msgid "-M" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:335 +#: chage.1.xml.out:169 passwd.1.xml.out:346 msgid "--maxdays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:335 passwd.1.xml.out:340 passwd.1.xml.out:345 +#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:203 usermod.8.xml.out:481 +#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 #, fuzzy #| msgid "-" msgid "-W" @@ -708,31 +708,31 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:181 passwd.1.xml.out:343 +#: chage.1.xml.out:181 passwd.1.xml.out:354 msgid "" "Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove " "checking a password's validity." msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:189 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:191 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 #, fuzzy msgid "-R" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:158 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:160 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "--root" msgstr "" @@ -741,22 +741,22 @@ msgstr "" #. (itstool) path: para/replaceable #: chage.1.xml.out:190 chage.1.xml.out:194 chage.1.xml.out:196 #: chfn.1.xml.out:130 chfn.1.xml.out:134 chfn.1.xml.out:136 -#: chgpasswd.8.xml.out:123 chgpasswd.8.xml.out:127 chgpasswd.8.xml.out:129 -#: chpasswd.8.xml.out:165 chpasswd.8.xml.out:169 chpasswd.8.xml.out:171 +#: chgpasswd.8.xml.out:129 chgpasswd.8.xml.out:133 chgpasswd.8.xml.out:135 +#: chpasswd.8.xml.out:171 chpasswd.8.xml.out:175 chpasswd.8.xml.out:177 #: chsh.1.xml.out:84 chsh.1.xml.out:88 chsh.1.xml.out:90 faillog.8.xml.out:157 -#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:158 -#: gpasswd.1.xml.out:162 gpasswd.1.xml.out:164 groupadd.8.xml.out:201 +#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:160 +#: gpasswd.1.xml.out:164 gpasswd.1.xml.out:166 groupadd.8.xml.out:201 #: groupadd.8.xml.out:205 groupadd.8.xml.out:207 groupdel.8.xml.out:89 #: groupdel.8.xml.out:93 groupdel.8.xml.out:95 groupmems.8.xml.out:142 #: groupmems.8.xml.out:146 groupmems.8.xml.out:148 groupmod.8.xml.out:164 #: groupmod.8.xml.out:168 groupmod.8.xml.out:170 grpck.8.xml.out:149 #: grpck.8.xml.out:153 grpck.8.xml.out:155 lastlog.8.xml.out:104 -#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:306 -#: newusers.8.xml.out:310 newusers.8.xml.out:312 passwd.1.xml.out:278 -#: passwd.1.xml.out:282 passwd.1.xml.out:284 pwck.8.xml.out:197 +#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:308 +#: newusers.8.xml.out:312 newusers.8.xml.out:314 passwd.1.xml.out:274 +#: passwd.1.xml.out:278 passwd.1.xml.out:280 pwck.8.xml.out:197 #: pwck.8.xml.out:201 pwck.8.xml.out:203 pwconv.8.xml.out:178 -#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:489 -#: useradd.8.xml.out:493 useradd.8.xml.out:495 userdel.8.xml.out:123 +#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:491 +#: useradd.8.xml.out:495 useradd.8.xml.out:497 userdel.8.xml.out:123 #: userdel.8.xml.out:127 userdel.8.xml.out:129 usermod.8.xml.out:328 #: usermod.8.xml.out:332 usermod.8.xml.out:334 vipw.8.xml.out:115 #: vipw.8.xml.out:119 vipw.8.xml.out:121 @@ -764,12 +764,12 @@ msgid "CHROOT_DIR" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:126 -#: chpasswd.8.xml.out:168 chsh.1.xml.out:87 faillog.8.xml.out:160 -#: gpasswd.1.xml.out:161 groupadd.8.xml.out:204 groupdel.8.xml.out:92 +#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:132 +#: chpasswd.8.xml.out:174 chsh.1.xml.out:87 faillog.8.xml.out:160 +#: gpasswd.1.xml.out:163 groupadd.8.xml.out:204 groupdel.8.xml.out:92 #: groupmems.8.xml.out:145 groupmod.8.xml.out:167 grpck.8.xml.out:152 -#: lastlog.8.xml.out:107 newusers.8.xml.out:309 passwd.1.xml.out:281 -#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:492 +#: lastlog.8.xml.out:107 newusers.8.xml.out:311 passwd.1.xml.out:277 +#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:494 #: userdel.8.xml.out:126 usermod.8.xml.out:331 vipw.8.xml.out:118 msgid "" "Apply changes in the <_:replaceable-1/> directory and use the configuration " @@ -778,19 +778,58 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: chage.1.xml.out:203 passwd.1.xml.out:322 +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +#, fuzzy +#| msgid "-" +msgid "-P" +msgstr "-" + +#. (itstool) path: term/option +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "--prefix" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:203 chage.1.xml.out:208 chpasswd.8.xml.out:184 +#: chpasswd.8.xml.out:189 groupadd.8.xml.out:214 groupadd.8.xml.out:219 +#: groupdel.8.xml.out:102 groupdel.8.xml.out:106 groupdel.8.xml.out:108 +#: groupmod.8.xml.out:177 groupmod.8.xml.out:181 groupmod.8.xml.out:183 +#: passwd.1.xml.out:287 passwd.1.xml.out:292 useradd.8.xml.out:504 +#: useradd.8.xml.out:509 userdel.8.xml.out:136 userdel.8.xml.out:140 +#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 +msgid "PREFIX_DIR" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:206 chpasswd.8.xml.out:187 groupadd.8.xml.out:217 +#: passwd.1.xml.out:290 useradd.8.xml.out:507 +msgid "" +"Apply changes to configuration files under the root filesystem found under " +"the directory <_:replaceable-1/>. 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." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:218 passwd.1.xml.out:333 msgid "--warndays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:203 chage.1.xml.out:208 passwd.1.xml.out:322 -#: passwd.1.xml.out:327 +#: chage.1.xml.out:218 chage.1.xml.out:223 passwd.1.xml.out:333 +#: passwd.1.xml.out:338 msgid "WARN_DAYS" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:206 +#: chage.1.xml.out:221 #, fuzzy #| msgid "" #| "Set the number of days of warning before a password change is required. " @@ -807,12 +846,12 @@ msgstr "" "varnas om att lösenordet är på väg att bli utgånget." #. (itstool) path: para/emphasis -#: chage.1.xml.out:220 chfn.1.xml.out:163 chsh.1.xml.out:112 +#: chage.1.xml.out:235 chfn.1.xml.out:163 chsh.1.xml.out:112 msgid "[ ]" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:215 +#: chage.1.xml.out:230 msgid "" "If none of the options are selected, <_:command-1/> operates in an " "interactive fashion, prompting the user with the current values for all of " @@ -822,13 +861,13 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:224 chsh.1.xml.out:117 groups.1.xml.out:65 +#: chage.1.xml.out:239 chsh.1.xml.out:117 groups.1.xml.out:65 #: lastlog.8.xml.out:170 msgid "NOTE" msgstr "NOTERA" #. (itstool) path: refsect1/para -#: chage.1.xml.out:225 +#: chage.1.xml.out:240 #, fuzzy #| msgid "" #| "The <command>chage</command> program requires a shadow password file to " @@ -840,7 +879,7 @@ msgstr "" "tillgänglig." #. (itstool) path: refsect1/para -#: chage.1.xml.out:229 +#: chage.1.xml.out:244 msgid "" "The chage program will report only the information from the shadow password " "file. This implies that configuration from other sources (e.g. LDAP or empty " @@ -854,7 +893,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: chage.1.xml.out:238 grpck.8.xml.out:294 login.defs.5.xml.out:410 +#: chage.1.xml.out:253 grpck.8.xml.out:294 login.defs.5.xml.out:429 #: passwd.5.xml.out:185 pwck.8.xml.out:40 pwck.8.xml.out:47 pwck.8.xml.out:53 #: pwck.8.xml.out:71 pwck.8.xml.out:147 pwck.8.xml.out:159 pwck.8.xml.out:191 #: pwck.8.xml.out:223 pwck.8.xml.out:284 pwconv.8.xml.out:197 @@ -863,7 +902,7 @@ msgid "pwck" msgstr "pwck" #. (itstool) path: refsect1/para -#: chage.1.xml.out:235 +#: chage.1.xml.out:250 msgid "" "The <_:command-1/> program will also not report any inconsistency between " "the shadow and passwd files (e.g. missing x in the passwd file). The <_:" @@ -871,7 +910,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:241 +#: chage.1.xml.out:256 msgid "" "The <_:command-1/> command is restricted to the root user, except for the <_:" "option-2/> option, which may be used by an unprivileged user to determine " @@ -879,52 +918,54 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:249 chfn.1.xml.out:170 chgpasswd.8.xml.out:175 -#: chpasswd.8.xml.out:216 chsh.1.xml.out:131 gpasswd.1.xml.out:241 +#: chage.1.xml.out:264 chfn.1.xml.out:170 chgpasswd.8.xml.out:201 +#: chpasswd.8.xml.out:256 chsh.1.xml.out:150 gpasswd.1.xml.out:243 #: groupadd.8.xml.out:247 groupdel.8.xml.out:133 groupmems.8.xml.out:176 #: groupmod.8.xml.out:212 grpck.8.xml.out:196 lastlog.8.xml.out:182 -#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:360 -#: passwd.1.xml.out:372 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 -#: su.1.xml.out:314 useradd.8.xml.out:710 userdel.8.xml.out:165 -#: usermod.8.xml.out:536 vipw.8.xml.out:142 +#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:381 +#: passwd.1.xml.out:394 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 +#: su.1.xml.out:314 useradd.8.xml.out:730 userdel.8.xml.out:165 +#: usermod.8.xml.out:553 vipw.8.xml.out:142 msgid "CONFIGURATION" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chage.1.xml.out:252 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 -#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:155 chgpasswd.8.xml.out:178 -#: chgpasswd.8.xml.out:205 chpasswd.8.xml.out:77 chpasswd.8.xml.out:134 -#: chpasswd.8.xml.out:200 chpasswd.8.xml.out:219 chpasswd.8.xml.out:247 -#: chsh.1.xml.out:134 chsh.1.xml.out:159 gpasswd.1.xml.out:244 -#: groupadd.8.xml.out:129 groupadd.8.xml.out:239 groupadd.8.xml.out:250 -#: groupadd.8.xml.out:276 groupdel.8.xml.out:136 groupmems.8.xml.out:179 -#: groupmod.8.xml.out:109 groupmod.8.xml.out:204 groupmod.8.xml.out:215 -#: groupmod.8.xml.out:239 grpck.8.xml.out:199 lastlog.8.xml.out:185 -#: login.1.xml.out:273 login.1.xml.out:365 login.access.5.xml.out:100 -#: login.defs.5.xml.out:116 login.defs.5.xml.out:515 newgrp.1.xml.out:88 -#: newusers.8.xml.out:340 newusers.8.xml.out:363 newusers.8.xml.out:423 -#: passwd.1.xml.out:375 passwd.1.xml.out:405 pwck.8.xml.out:243 +#: chage.1.xml.out:267 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 +#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:159 chgpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:177 chgpasswd.8.xml.out:204 chgpasswd.8.xml.out:233 +#: chpasswd.8.xml.out:79 chpasswd.8.xml.out:140 chpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:227 chpasswd.8.xml.out:236 chpasswd.8.xml.out:259 +#: chpasswd.8.xml.out:289 chsh.1.xml.out:153 chsh.1.xml.out:200 +#: gpasswd.1.xml.out:246 groupadd.8.xml.out:129 groupadd.8.xml.out:239 +#: groupadd.8.xml.out:250 groupadd.8.xml.out:276 groupdel.8.xml.out:136 +#: groupmems.8.xml.out:179 groupmod.8.xml.out:109 groupmod.8.xml.out:204 +#: groupmod.8.xml.out:215 groupmod.8.xml.out:239 grpck.8.xml.out:199 +#: lastlog.8.xml.out:185 login.1.xml.out:273 login.1.xml.out:365 +#: login.access.5.xml.out:100 login.defs.5.xml.out:118 login.defs.5.xml.out:534 +#: newgrp.1.xml.out:88 newusers.8.xml.out:340 newusers.8.xml.out:349 +#: newusers.8.xml.out:357 newusers.8.xml.out:384 newusers.8.xml.out:444 +#: passwd.1.xml.out:397 passwd.1.xml.out:427 pwck.8.xml.out:243 #: pwconv.8.xml.out:148 pwconv.8.xml.out:207 pwconv.8.xml.out:215 #: pwconv.8.xml.out:230 sg.1.xml.out:77 su.1.xml.out:109 su.1.xml.out:219 #: su.1.xml.out:277 su.1.xml.out:317 su.1.xml.out:357 useradd.8.xml.out:241 -#: useradd.8.xml.out:307 useradd.8.xml.out:378 useradd.8.xml.out:399 -#: useradd.8.xml.out:467 useradd.8.xml.out:474 useradd.8.xml.out:560 -#: useradd.8.xml.out:713 useradd.8.xml.out:797 userdel.8.xml.out:87 +#: useradd.8.xml.out:309 useradd.8.xml.out:380 useradd.8.xml.out:401 +#: useradd.8.xml.out:469 useradd.8.xml.out:476 useradd.8.xml.out:562 +#: useradd.8.xml.out:733 useradd.8.xml.out:817 userdel.8.xml.out:87 #: userdel.8.xml.out:168 userdel.8.xml.out:191 userdel.8.xml.out:297 -#: usermod.8.xml.out:399 usermod.8.xml.out:539 usermod.8.xml.out:569 +#: usermod.8.xml.out:399 usermod.8.xml.out:556 usermod.8.xml.out:586 #: vipw.8.xml.out:145 msgid "/etc/login.defs" msgstr "/etc/login.defs" #. (itstool) path: refsect1/para -#: chage.1.xml.out:250 chfn.1.xml.out:171 chgpasswd.8.xml.out:176 -#: chpasswd.8.xml.out:217 chsh.1.xml.out:132 gpasswd.1.xml.out:242 +#: chage.1.xml.out:265 chfn.1.xml.out:171 chgpasswd.8.xml.out:202 +#: chpasswd.8.xml.out:257 chsh.1.xml.out:151 gpasswd.1.xml.out:244 #: groupadd.8.xml.out:248 groupdel.8.xml.out:134 groupmems.8.xml.out:177 #: groupmod.8.xml.out:213 grpck.8.xml.out:197 lastlog.8.xml.out:183 -#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:361 -#: passwd.1.xml.out:373 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 -#: useradd.8.xml.out:711 userdel.8.xml.out:166 usermod.8.xml.out:537 +#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:382 +#: passwd.1.xml.out:395 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 +#: useradd.8.xml.out:731 userdel.8.xml.out:166 usermod.8.xml.out:554 #: vipw.8.xml.out:143 msgid "" "The following configuration variables in <_:filename-1/> change the behavior " @@ -932,126 +973,126 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: chage.1.xml.out:261 chfn.1.xml.out:184 chgpasswd.8.xml.out:190 -#: chpasswd.8.xml.out:232 chsh.1.xml.out:144 expiry.1.xml.out:97 -#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:256 +#: chage.1.xml.out:276 chfn.1.xml.out:184 chgpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:274 chsh.1.xml.out:163 expiry.1.xml.out:97 +#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:258 #: groupadd.8.xml.out:261 groupdel.8.xml.out:145 groupmems.8.xml.out:188 #: groupmod.8.xml.out:224 groups.1.xml.out:77 grpck.8.xml.out:208 #: gshadow.5.xml.out:132 lastlog.8.xml.out:194 limits.5.xml.out:172 #: login.1.xml.out:314 login.access.5.xml.out:97 logoutd.8.xml.out:65 -#: newgrp.1.xml.out:97 newusers.8.xml.out:396 passwd.1.xml.out:390 +#: newgrp.1.xml.out:97 newusers.8.xml.out:417 passwd.1.xml.out:412 #: passwd.5.xml.out:139 porttime.5.xml.out:106 pwck.8.xml.out:258 #: pwconv.8.xml.out:227 shadow.3.xml.out:202 shadow.5.xml.out:231 -#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:740 -#: userdel.8.xml.out:182 usermod.8.xml.out:554 vipw.8.xml.out:172 +#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:760 +#: userdel.8.xml.out:182 usermod.8.xml.out:571 vipw.8.xml.out:172 msgid "FILES" msgstr "FILER" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:265 chfn.1.xml.out:193 chpasswd.8.xml.out:235 -#: chsh.1.xml.out:147 expiry.1.xml.out:100 groupmod.8.xml.out:245 +#: chage.1.xml.out:280 chfn.1.xml.out:193 chpasswd.8.xml.out:277 +#: chsh.1.xml.out:166 expiry.1.xml.out:100 groupmod.8.xml.out:245 #: grpck.8.xml.out:223 lastlog.8.xml.out:63 login.1.xml.out:145 #: login.1.xml.out:329 newgrp.1.xml.out:65 newgrp.1.xml.out:70 -#: newgrp.1.xml.out:100 newusers.8.xml.out:399 passwd.1.xml.out:393 +#: newgrp.1.xml.out:100 newusers.8.xml.out:420 passwd.1.xml.out:415 #: passwd.5.xml.out:47 passwd.5.xml.out:89 passwd.5.xml.out:142 #: pwck.8.xml.out:73 pwck.8.xml.out:145 pwck.8.xml.out:212 pwck.8.xml.out:224 #: pwck.8.xml.out:267 pwconv.8.xml.out:127 shadow.5.xml.out:234 sg.1.xml.out:89 -#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:524 -#: useradd.8.xml.out:743 userdel.8.xml.out:197 usermod.8.xml.out:103 -#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:575 +#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:526 +#: useradd.8.xml.out:763 userdel.8.xml.out:197 usermod.8.xml.out:103 +#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:592 #: vipw.8.xml.out:68 vipw.8.xml.out:187 msgid "/etc/passwd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: chage.1.xml.out:268 chfn.1.xml.out:195 chpasswd.8.xml.out:237 -#: chsh.1.xml.out:149 expiry.1.xml.out:102 groupmod.8.xml.out:247 +#: chage.1.xml.out:283 chfn.1.xml.out:195 chpasswd.8.xml.out:279 +#: chsh.1.xml.out:168 expiry.1.xml.out:102 groupmod.8.xml.out:247 #: grpck.8.xml.out:225 login.1.xml.out:331 newgrp.1.xml.out:102 -#: newusers.8.xml.out:401 passwd.1.xml.out:395 passwd.5.xml.out:144 +#: newusers.8.xml.out:422 passwd.1.xml.out:417 passwd.5.xml.out:144 #: pwck.8.xml.out:269 shadow.5.xml.out:236 sg.1.xml.out:91 su.1.xml.out:347 -#: useradd.8.xml.out:745 userdel.8.xml.out:199 vipw.8.xml.out:189 +#: useradd.8.xml.out:765 userdel.8.xml.out:199 vipw.8.xml.out:189 msgid "User account information." msgstr "Användarkontoinformation." #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:273 chpasswd.8.xml.out:241 expiry.1.xml.out:106 +#: chage.1.xml.out:288 chpasswd.8.xml.out:283 expiry.1.xml.out:106 #: login.1.xml.out:335 newgrp.1.xml.out:68 newgrp.1.xml.out:106 -#: newusers.8.xml.out:295 newusers.8.xml.out:405 passwd.1.xml.out:399 +#: newusers.8.xml.out:297 newusers.8.xml.out:426 passwd.1.xml.out:421 #: passwd.5.xml.out:82 passwd.5.xml.out:148 pwck.8.xml.out:73 #: pwck.8.xml.out:107 pwck.8.xml.out:213 pwck.8.xml.out:225 pwck.8.xml.out:273 #: pwconv.8.xml.out:128 pwconv.8.xml.out:149 shadow.3.xml.out:97 #: shadow.3.xml.out:173 shadow.3.xml.out:205 shadow.5.xml.out:78 -#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:439 -#: useradd.8.xml.out:464 useradd.8.xml.out:749 userdel.8.xml.out:203 +#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:441 +#: useradd.8.xml.out:466 useradd.8.xml.out:769 userdel.8.xml.out:203 #: usermod.8.xml.out:144 usermod.8.xml.out:145 usermod.8.xml.out:166 -#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:581 +#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:598 #: vipw.8.xml.out:71 vipw.8.xml.out:193 msgid "/etc/shadow" msgstr "/etc/shadow" #. (itstool) path: listitem/para -#: chage.1.xml.out:276 chpasswd.8.xml.out:243 expiry.1.xml.out:108 -#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:407 -#: passwd.1.xml.out:401 pwck.8.xml.out:275 shadow.3.xml.out:207 -#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:751 +#: chage.1.xml.out:291 chpasswd.8.xml.out:285 expiry.1.xml.out:108 +#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:428 +#: passwd.1.xml.out:423 pwck.8.xml.out:275 shadow.3.xml.out:207 +#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:771 #: userdel.8.xml.out:205 vipw.8.xml.out:195 msgid "Secure user account information." msgstr "Säker användarkontoinformation." #. (itstool) path: refsect1/title -#: chage.1.xml.out:283 groupadd.8.xml.out:298 groupdel.8.xml.out:163 -#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:420 -#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:806 +#: chage.1.xml.out:298 groupadd.8.xml.out:298 groupdel.8.xml.out:163 +#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:442 +#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:826 #: userdel.8.xml.out:230 msgid "EXIT VALUES" msgstr "AVSLUTNINGSVÄRDEN" #. (itstool) path: listitem/para -#: chage.1.xml.out:290 groupadd.8.xml.out:305 groupdel.8.xml.out:170 -#: grpck.8.xml.out:239 passwd.1.xml.out:427 pwck.8.xml.out:289 -#: useradd.8.xml.out:813 userdel.8.xml.out:237 +#: chage.1.xml.out:305 groupadd.8.xml.out:305 groupdel.8.xml.out:170 +#: grpck.8.xml.out:239 passwd.1.xml.out:449 pwck.8.xml.out:289 +#: useradd.8.xml.out:833 userdel.8.xml.out:237 msgid "success" msgstr "lyckad" #. (itstool) path: listitem/para -#: chage.1.xml.out:296 passwd.1.xml.out:433 +#: chage.1.xml.out:311 passwd.1.xml.out:455 msgid "permission denied" msgstr "åtkomst nekad" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum -#: chage.1.xml.out:300 groupadd.8.xml.out:309 groupdel.8.xml.out:174 +#: chage.1.xml.out:315 groupadd.8.xml.out:309 groupdel.8.xml.out:174 #: groupmod.8.xml.out:265 groups.1.xml.out:95 groups.1.xml.out:98 #: groups.1.xml.out:101 grpck.8.xml.out:249 limits.5.xml.out:90 #: limits.5.xml.out:101 limits.5.xml.out:188 limits.5.xml.out:191 -#: passwd.1.xml.out:437 pwck.8.xml.out:299 useradd.8.xml.out:823 +#: passwd.1.xml.out:459 pwck.8.xml.out:299 useradd.8.xml.out:843 #: userdel.8.xml.out:247 msgid "2" msgstr "2" #. (itstool) path: listitem/para -#: chage.1.xml.out:302 groupadd.8.xml.out:311 groupdel.8.xml.out:176 -#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:825 +#: chage.1.xml.out:317 groupadd.8.xml.out:311 groupdel.8.xml.out:176 +#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:845 #: userdel.8.xml.out:249 msgid "invalid command syntax" msgstr "ogiltig kommandosyntax" #. (itstool) path: term/replaceable -#: chage.1.xml.out:306 +#: chage.1.xml.out:321 msgid "15" msgstr "15" #. (itstool) path: listitem/para -#: chage.1.xml.out:308 +#: chage.1.xml.out:323 msgid "can't find the shadow password file" msgstr "kan inte hitta skugglösenordsfilen" #. (itstool) path: refsect1/para -#: chage.1.xml.out:284 groupadd.8.xml.out:299 groupdel.8.xml.out:164 -#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:421 -#: pwck.8.xml.out:283 useradd.8.xml.out:807 userdel.8.xml.out:231 +#: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:164 +#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:443 +#: pwck.8.xml.out:283 useradd.8.xml.out:827 userdel.8.xml.out:231 #, fuzzy #| msgid "" #| "The <command>pwck</command> command exits with the following values: " @@ -1064,18 +1105,18 @@ msgstr "" "<placeholder-1/>" #. (itstool) path: refsect1/title -#: chage.1.xml.out:316 chfn.1.xml.out:202 chgpasswd.8.xml.out:214 -#: chpasswd.8.xml.out:262 chsh.1.xml.out:168 expiry.1.xml.out:115 -#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:274 +#: chage.1.xml.out:331 chfn.1.xml.out:202 chgpasswd.8.xml.out:242 +#: chpasswd.8.xml.out:304 chsh.1.xml.out:209 expiry.1.xml.out:115 +#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:276 #: groupadd.8.xml.out:343 groupdel.8.xml.out:202 groupmems.8.xml.out:206 #: groupmod.8.xml.out:323 groups.1.xml.out:89 grpck.8.xml.out:277 #: gshadow.5.xml.out:150 limits.5.xml.out:182 login.1.xml.out:374 -#: login.access.5.xml.out:109 login.defs.5.xml.out:527 newgrp.1.xml.out:127 -#: newusers.8.xml.out:450 nologin.8.xml.out:57 passwd.1.xml.out:471 +#: login.access.5.xml.out:109 login.defs.5.xml.out:546 newgrp.1.xml.out:127 +#: newusers.8.xml.out:471 nologin.8.xml.out:57 passwd.1.xml.out:493 #: passwd.5.xml.out:167 porttime.5.xml.out:118 pwck.8.xml.out:333 #: pwconv.8.xml.out:239 shadow.3.xml.out:214 shadow.5.xml.out:259 -#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:875 -#: userdel.8.xml.out:308 usermod.8.xml.out:602 vipw.8.xml.out:202 +#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:895 +#: userdel.8.xml.out:308 usermod.8.xml.out:619 vipw.8.xml.out:202 msgid "SEE ALSO" msgstr "SE OCKSÅ" @@ -1088,53 +1129,53 @@ msgstr "SE OCKSÅ" #. (itstool) path: para/command #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: chage.1.xml.out:319 chfn.1.xml.out:211 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:177 expiry.1.xml.out:118 groupadd.8.xml.out:351 +#: chage.1.xml.out:334 chfn.1.xml.out:211 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:218 expiry.1.xml.out:118 groupadd.8.xml.out:351 #: groupdel.8.xml.out:211 groupmems.8.xml.out:215 groupmod.8.xml.out:332 #: grpck.8.xml.out:291 lastlog.8.xml.out:176 login.1.xml.out:128 -#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:399 -#: login.defs.5.xml.out:516 login.defs.5.xml.out:533 login.defs.5.xml.out:539 -#: newusers.8.xml.out:79 newusers.8.xml.out:456 passwd.1.xml.out:40 -#: passwd.1.xml.out:47 passwd.1.xml.out:53 passwd.1.xml.out:66 -#: passwd.1.xml.out:69 passwd.1.xml.out:86 passwd.1.xml.out:116 -#: passwd.1.xml.out:152 passwd.1.xml.out:366 passwd.1.xml.out:413 -#: passwd.1.xml.out:422 passwd.1.xml.out:451 passwd.1.xml.out:457 -#: passwd.1.xml.out:477 passwd.5.xml.out:33 passwd.5.xml.out:40 +#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:415 +#: login.defs.5.xml.out:535 login.defs.5.xml.out:552 login.defs.5.xml.out:558 +#: newusers.8.xml.out:81 newusers.8.xml.out:477 passwd.1.xml.out:42 +#: passwd.1.xml.out:49 passwd.1.xml.out:55 passwd.1.xml.out:68 +#: passwd.1.xml.out:71 passwd.1.xml.out:88 passwd.1.xml.out:100 +#: passwd.1.xml.out:148 passwd.1.xml.out:388 passwd.1.xml.out:435 +#: passwd.1.xml.out:444 passwd.1.xml.out:473 passwd.1.xml.out:479 +#: passwd.1.xml.out:502 passwd.5.xml.out:33 passwd.5.xml.out:40 #: passwd.5.xml.out:182 pwck.8.xml.out:228 pwck.8.xml.out:342 #: pwconv.8.xml.out:84 pwconv.8.xml.out:99 shadow.5.xml.out:268 -#: shadow.5.xml.out:271 useradd.8.xml.out:884 userdel.8.xml.out:316 -#: usermod.8.xml.out:611 vipw.8.xml.out:217 +#: shadow.5.xml.out:271 useradd.8.xml.out:904 userdel.8.xml.out:316 +#: usermod.8.xml.out:628 vipw.8.xml.out:217 msgid "passwd" msgstr "passwd" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: refmeta/manvolnum #. (itstool) path: term/replaceable -#: chage.1.xml.out:319 chage.1.xml.out:322 chfn.1.xml.out:208 -#: chfn.1.xml.out:211 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 chsh.1.xml.out:177 expiry.1.xml.out:118 +#: chage.1.xml.out:334 chage.1.xml.out:337 chfn.1.xml.out:208 +#: chfn.1.xml.out:211 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 chsh.1.xml.out:218 expiry.1.xml.out:118 #: expiry.1.xml.out:121 faillog.5.xml.out:34 faillog.8.xml.out:238 -#: gpasswd.1.xml.out:292 gpasswd.1.xml.out:295 groupadd.8.xml.out:363 +#: gpasswd.1.xml.out:294 gpasswd.1.xml.out:297 groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 grpck.8.xml.out:267 grpck.8.xml.out:280 #: grpck.8.xml.out:287 grpck.8.xml.out:291 grpck.8.xml.out:297 #: gshadow.5.xml.out:23 gshadow.5.xml.out:153 gshadow.5.xml.out:156 #: limits.5.xml.out:36 login.1.xml.out:389 login.1.xml.out:392 #: login.1.xml.out:395 login.1.xml.out:398 login.access.5.xml.out:35 -#: login.defs.5.xml.out:103 login.defs.5.xml.out:539 login.defs.5.xml.out:542 -#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:79 -#: newusers.8.xml.out:453 newusers.8.xml.out:460 newusers.8.xml.out:463 -#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:455 -#: passwd.1.xml.out:477 passwd.1.xml.out:480 passwd.1.xml.out:484 +#: login.defs.5.xml.out:105 login.defs.5.xml.out:558 login.defs.5.xml.out:561 +#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:81 +#: newusers.8.xml.out:474 newusers.8.xml.out:481 newusers.8.xml.out:484 +#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:477 +#: passwd.1.xml.out:502 passwd.1.xml.out:505 passwd.1.xml.out:509 #: passwd.5.xml.out:34 passwd.5.xml.out:80 passwd.5.xml.out:194 #: porttime.5.xml.out:34 pwck.8.xml.out:317 pwck.8.xml.out:336 #: pwck.8.xml.out:342 pwck.8.xml.out:345 pwconv.8.xml.out:245 #: shadow.3.xml.out:220 shadow.5.xml.out:34 shadow.5.xml.out:271 #: sg.1.xml.out:134 sg.1.xml.out:137 su.1.xml.out:418 suauth.5.xml.out:34 -#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:628 -#: useradd.8.xml.out:899 useradd.8.xml.out:906 useradd.8.xml.out:909 +#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:648 +#: useradd.8.xml.out:919 useradd.8.xml.out:926 useradd.8.xml.out:929 #: userdel.8.xml.out:319 userdel.8.xml.out:335 userdel.8.xml.out:338 -#: usermod.8.xml.out:162 usermod.8.xml.out:629 usermod.8.xml.out:633 -#: usermod.8.xml.out:636 vipw.8.xml.out:208 vipw.8.xml.out:211 +#: usermod.8.xml.out:162 usermod.8.xml.out:646 usermod.8.xml.out:650 +#: usermod.8.xml.out:653 vipw.8.xml.out:208 vipw.8.xml.out:211 #: vipw.8.xml.out:214 vipw.8.xml.out:217 vipw.8.xml.out:220 vipw.8.xml.out:223 msgid "5" msgstr "5" @@ -1147,20 +1188,20 @@ msgstr "5" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/filename -#: chage.1.xml.out:322 expiry.1.xml.out:121 grpck.8.xml.out:51 -#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:542 -#: passwd.1.xml.out:480 passwd.5.xml.out:79 passwd.5.xml.out:194 +#: chage.1.xml.out:337 expiry.1.xml.out:121 grpck.8.xml.out:51 +#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:561 +#: passwd.1.xml.out:505 passwd.5.xml.out:79 passwd.5.xml.out:194 #: pwck.8.xml.out:229 pwck.8.xml.out:233 pwck.8.xml.out:345 pwconv.8.xml.out:84 #: pwconv.8.xml.out:85 pwconv.8.xml.out:100 pwconv.8.xml.out:101 #: shadow.3.xml.out:33 shadow.3.xml.out:40 shadow.3.xml.out:96 #: shadow.3.xml.out:220 shadow.5.xml.out:33 shadow.5.xml.out:40 -#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:628 +#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:648 #: usermod.8.xml.out:162 vipw.8.xml.out:223 msgid "shadow" msgstr "shadow" #. (itstool) path: refsect1/para -#: chage.1.xml.out:317 expiry.1.xml.out:116 faillog.8.xml.out:233 +#: chage.1.xml.out:332 expiry.1.xml.out:116 faillog.8.xml.out:233 #: nologin.8.xml.out:58 shadow.3.xml.out:215 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>." msgstr "" @@ -1172,10 +1213,10 @@ msgstr "" #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: varlistentry/term #: chfn.1.xml.out:36 chfn.1.xml.out:43 chfn.1.xml.out:49 chfn.1.xml.out:62 -#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:171 +#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:212 #: groupadd.8.xml.out:345 groupdel.8.xml.out:205 groupmems.8.xml.out:209 -#: groupmod.8.xml.out:326 login.defs.5.xml.out:239 useradd.8.xml.out:878 -#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:605 +#: groupmod.8.xml.out:326 login.defs.5.xml.out:243 useradd.8.xml.out:898 +#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:622 msgid "chfn" msgstr "chfn" @@ -1193,8 +1234,8 @@ msgstr "" #. (itstool) path: term/option #: chfn.1.xml.out:71 chfn.1.xml.out:110 groupadd.8.xml.out:106 #: groupadd.8.xml.out:145 groupadd.8.xml.out:323 groupmod.8.xml.out:93 -#: groupmod.8.xml.out:132 useradd.8.xml.out:405 useradd.8.xml.out:536 -#: useradd.8.xml.out:837 usermod.8.xml.out:271 usermod.8.xml.out:377 +#: groupmod.8.xml.out:132 useradd.8.xml.out:407 useradd.8.xml.out:538 +#: useradd.8.xml.out:857 usermod.8.xml.out:271 usermod.8.xml.out:377 msgid "-o" msgstr "-o" @@ -1232,7 +1273,7 @@ msgstr "" #: chfn.1.xml.out:94 expiry.1.xml.out:61 expiry.1.xml.out:79 #: groupadd.8.xml.out:88 groupdel.8.xml.out:72 login.1.xml.out:90 #: login.1.xml.out:190 login.1.xml.out:229 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 userdel.8.xml.out:76 userdel.8.xml.out:287 +#: useradd.8.xml.out:642 userdel.8.xml.out:76 userdel.8.xml.out:287 #: userdel.8.xml.out:302 usermod.8.xml.out:152 msgid "-f" msgstr "-f" @@ -1296,12 +1337,12 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chfn.1.xml.out:122 faillog.8.xml.out:89 faillog.8.xml.out:144 -#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:173 +#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:175 #: groupadd.8.xml.out:112 groupadd.8.xml.out:185 grpck.8.xml.out:124 #: grpck.8.xml.out:138 login.1.xml.out:220 login.1.xml.out:229 -#: newusers.8.xml.out:287 passwd.1.xml.out:268 pwck.8.xml.out:155 -#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:456 -#: useradd.8.xml.out:542 userdel.8.xml.out:106 usermod.8.xml.out:317 +#: newusers.8.xml.out:289 passwd.1.xml.out:264 pwck.8.xml.out:155 +#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:458 +#: useradd.8.xml.out:544 userdel.8.xml.out:106 usermod.8.xml.out:317 msgid "-r" msgstr "-r" @@ -1326,8 +1367,8 @@ msgstr "" #. (itstool) path: para/option #: chfn.1.xml.out:143 faillog.8.xml.out:80 faillog.8.xml.out:180 #: faillog.8.xml.out:214 lastlog.8.xml.out:90 lastlog.8.xml.out:122 -#: lastlog.8.xml.out:139 passwd.1.xml.out:309 useradd.8.xml.out:414 -#: useradd.8.xml.out:531 usermod.8.xml.out:279 usermod.8.xml.out:369 +#: lastlog.8.xml.out:139 passwd.1.xml.out:320 useradd.8.xml.out:416 +#: useradd.8.xml.out:533 usermod.8.xml.out:279 usermod.8.xml.out:369 #: vipw.8.xml.out:133 #, fuzzy #| msgid "-" @@ -1335,7 +1376,7 @@ msgid "-u" msgstr "-" #. (itstool) path: term/option -#: chfn.1.xml.out:151 passwd.1.xml.out:322 usermod.8.xml.out:463 +#: chfn.1.xml.out:151 passwd.1.xml.out:333 usermod.8.xml.out:463 #, fuzzy #| msgid "-" msgid "-w" @@ -1370,11 +1411,11 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: chfn.1.xml.out:189 chgpasswd.8.xml.out:207 chpasswd.8.xml.out:249 -#: chsh.1.xml.out:161 groupadd.8.xml.out:278 groupmod.8.xml.out:241 -#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:425 -#: passwd.1.xml.out:407 pwconv.8.xml.out:232 su.1.xml.out:359 -#: useradd.8.xml.out:799 userdel.8.xml.out:193 +#: chfn.1.xml.out:189 chgpasswd.8.xml.out:235 chpasswd.8.xml.out:291 +#: chsh.1.xml.out:202 groupadd.8.xml.out:278 groupmod.8.xml.out:241 +#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:446 +#: passwd.1.xml.out:429 pwconv.8.xml.out:232 su.1.xml.out:359 +#: useradd.8.xml.out:819 userdel.8.xml.out:193 msgid "Shadow password suite configuration." msgstr "" @@ -1387,8 +1428,8 @@ msgstr "" #: chfn.1.xml.out:205 chsh.1.xml.out:36 chsh.1.xml.out:43 chsh.1.xml.out:49 #: chsh.1.xml.out:62 chsh.1.xml.out:73 chsh.1.xml.out:109 #: groupadd.8.xml.out:348 groupdel.8.xml.out:208 groupmems.8.xml.out:212 -#: groupmod.8.xml.out:329 login.defs.5.xml.out:270 useradd.8.xml.out:881 -#: userdel.8.xml.out:313 usermod.8.xml.out:608 +#: groupmod.8.xml.out:329 login.defs.5.xml.out:280 useradd.8.xml.out:901 +#: userdel.8.xml.out:313 usermod.8.xml.out:625 msgid "chsh" msgstr "chsh" @@ -1396,25 +1437,25 @@ msgstr "chsh" #. (itstool) path: para/filename #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname -#: chfn.1.xml.out:208 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 groupadd.8.xml.out:194 groupadd.8.xml.out:363 -#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:102 -#: login.defs.5.xml.out:109 newusers.8.xml.out:298 newusers.8.xml.out:453 -#: passwd.1.xml.out:484 pwconv.8.xml.out:92 pwconv.8.xml.out:94 +#: chfn.1.xml.out:208 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 groupadd.8.xml.out:194 groupadd.8.xml.out:363 +#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:104 +#: login.defs.5.xml.out:111 newusers.8.xml.out:300 newusers.8.xml.out:474 +#: passwd.1.xml.out:509 pwconv.8.xml.out:92 pwconv.8.xml.out:94 #: pwconv.8.xml.out:108 pwconv.8.xml.out:245 su.1.xml.out:418 -#: useradd.8.xml.out:899 userdel.8.xml.out:117 userdel.8.xml.out:319 -#: usermod.8.xml.out:629 vipw.8.xml.out:214 +#: useradd.8.xml.out:919 userdel.8.xml.out:117 userdel.8.xml.out:319 +#: usermod.8.xml.out:646 vipw.8.xml.out:214 msgid "login.defs" msgstr "login.defs" #. (itstool) path: refsect1/para -#: chfn.1.xml.out:203 chgpasswd.8.xml.out:215 chsh.1.xml.out:169 +#: chfn.1.xml.out:203 chgpasswd.8.xml.out:243 chsh.1.xml.out:210 #: limits.5.xml.out:183 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." msgstr "" #. (itstool) path: author/contrib -#: chgpasswd.8.xml.out:23 +#: chgpasswd.8.xml.out:25 msgid "Creation, 2006" msgstr "" @@ -1423,19 +1464,19 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:33 chgpasswd.8.xml.out:40 chgpasswd.8.xml.out:46 -#: chgpasswd.8.xml.out:56 chgpasswd.8.xml.out:66 chgpasswd.8.xml.out:83 -#: login.defs.5.xml.out:249 +#: chgpasswd.8.xml.out:35 chgpasswd.8.xml.out:42 chgpasswd.8.xml.out:48 +#: chgpasswd.8.xml.out:58 chgpasswd.8.xml.out:68 chgpasswd.8.xml.out:85 +#: login.defs.5.xml.out:253 msgid "chgpasswd" msgstr "chgpasswd" #. (itstool) path: refmeta/manvolnum #. (itstool) path: citerefentry/manvolnum #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:34 chgpasswd.8.xml.out:220 chpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:268 chpasswd.8.xml.out:276 faillog.5.xml.out:87 -#: faillog.8.xml.out:34 gpasswd.1.xml.out:280 gpasswd.1.xml.out:283 -#: gpasswd.1.xml.out:286 gpasswd.1.xml.out:289 groupadd.8.xml.out:37 +#: chgpasswd.8.xml.out:36 chgpasswd.8.xml.out:248 chpasswd.8.xml.out:40 +#: chpasswd.8.xml.out:310 chpasswd.8.xml.out:318 faillog.5.xml.out:87 +#: faillog.8.xml.out:34 gpasswd.1.xml.out:282 gpasswd.1.xml.out:285 +#: gpasswd.1.xml.out:288 gpasswd.1.xml.out:291 groupadd.8.xml.out:37 #: groupadd.8.xml.out:354 groupadd.8.xml.out:357 groupadd.8.xml.out:360 #: groupadd.8.xml.out:366 groupadd.8.xml.out:369 groupadd.8.xml.out:372 #: groupdel.8.xml.out:35 groupdel.8.xml.out:186 groupdel.8.xml.out:214 @@ -1448,43 +1489,43 @@ msgstr "chgpasswd" #: grpck.8.xml.out:34 grpck.8.xml.out:283 grpck.8.xml.out:294 #: gshadow.5.xml.out:159 gshadow.5.xml.out:162 lastlog.8.xml.out:36 #: login.1.xml.out:174 login.1.xml.out:176 login.1.xml.out:249 -#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:545 -#: logoutd.8.xml.out:34 newusers.8.xml.out:50 newusers.8.xml.out:467 -#: nologin.8.xml.out:23 passwd.1.xml.out:474 passwd.1.xml.out:488 +#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:564 +#: logoutd.8.xml.out:34 newusers.8.xml.out:52 newusers.8.xml.out:488 +#: nologin.8.xml.out:23 passwd.1.xml.out:496 passwd.1.xml.out:513 #: passwd.5.xml.out:185 passwd.5.xml.out:188 passwd.5.xml.out:191 #: passwd.5.xml.out:200 pwck.8.xml.out:41 pwck.8.xml.out:339 pwck.8.xml.out:348 #: pwconv.8.xml.out:40 pwconv.8.xml.out:242 pwconv.8.xml.out:248 #: pwconv.8.xml.out:251 pwconv.8.xml.out:254 shadow.5.xml.out:274 #: shadow.5.xml.out:277 shadow.5.xml.out:280 shadow.5.xml.out:286 -#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:574 -#: useradd.8.xml.out:890 useradd.8.xml.out:893 useradd.8.xml.out:896 -#: useradd.8.xml.out:902 useradd.8.xml.out:913 useradd.8.xml.out:916 -#: userdel.8.xml.out:40 userdel.8.xml.out:259 userdel.8.xml.out:322 -#: userdel.8.xml.out:325 userdel.8.xml.out:328 userdel.8.xml.out:331 -#: userdel.8.xml.out:342 userdel.8.xml.out:345 usermod.8.xml.out:41 -#: usermod.8.xml.out:617 usermod.8.xml.out:620 usermod.8.xml.out:623 -#: usermod.8.xml.out:626 usermod.8.xml.out:640 usermod.8.xml.out:643 -#: vipw.8.xml.out:36 +#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:576 +#: useradd.8.xml.out:590 useradd.8.xml.out:910 useradd.8.xml.out:913 +#: useradd.8.xml.out:916 useradd.8.xml.out:922 useradd.8.xml.out:933 +#: useradd.8.xml.out:936 userdel.8.xml.out:40 userdel.8.xml.out:259 +#: userdel.8.xml.out:322 userdel.8.xml.out:325 userdel.8.xml.out:328 +#: userdel.8.xml.out:331 userdel.8.xml.out:342 userdel.8.xml.out:345 +#: usermod.8.xml.out:41 usermod.8.xml.out:522 usermod.8.xml.out:634 +#: usermod.8.xml.out:637 usermod.8.xml.out:640 usermod.8.xml.out:643 +#: usermod.8.xml.out:657 usermod.8.xml.out:660 vipw.8.xml.out:36 msgid "8" msgstr "8" #. (itstool) path: refmeta/refmiscinfo -#: chgpasswd.8.xml.out:35 chpasswd.8.xml.out:39 faillog.8.xml.out:35 +#: chgpasswd.8.xml.out:37 chpasswd.8.xml.out:41 faillog.8.xml.out:35 #: groupadd.8.xml.out:38 groupdel.8.xml.out:36 groupmems.8.xml.out:39 #: groupmod.8.xml.out:36 grpck.8.xml.out:35 lastlog.8.xml.out:37 -#: logoutd.8.xml.out:35 newusers.8.xml.out:51 nologin.8.xml.out:24 +#: logoutd.8.xml.out:35 newusers.8.xml.out:53 nologin.8.xml.out:24 #: pwck.8.xml.out:42 pwconv.8.xml.out:41 useradd.8.xml.out:54 #: userdel.8.xml.out:41 usermod.8.xml.out:42 vipw.8.xml.out:37 msgid "System Management Commands" msgstr "Systemhanteringskommandon" #. (itstool) path: refnamediv/refpurpose -#: chgpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:43 msgid "update group passwords in batch mode" msgstr "uppdatera grupplösenord i satsläge" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:55 +#: chgpasswd.8.xml.out:57 #, fuzzy msgid "" "The <_:command-1/> command reads a list of group name and password pairs " @@ -1498,12 +1539,12 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:61 groupmems.8.xml.out:54 groupmems.8.xml.out:110 +#: chgpasswd.8.xml.out:63 groupmems.8.xml.out:54 groupmems.8.xml.out:110 msgid "group_name" msgstr "gruppnamn" #. (itstool) path: para/emphasis -#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 passwd.5.xml.out:77 +#: chgpasswd.8.xml.out:64 chpasswd.8.xml.out:68 passwd.5.xml.out:77 #: passwd.5.xml.out:86 passwd.5.xml.out:91 passwd.5.xml.out:95 #: passwd.5.xml.out:98 #, fuzzy @@ -1512,12 +1553,12 @@ msgid "password" msgstr "passwd" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:60 chpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 msgid "<_:emphasis-1/>:<_:emphasis-2/>" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:66 #, fuzzy msgid "" "By default the supplied password must be in clear-text, and is encrypted by " @@ -1527,16 +1568,16 @@ msgstr "" "Standardkrypteringsalgoritmen är DES." #. (itstool) path: para/option -#: chgpasswd.8.xml.out:70 chpasswd.8.xml.out:75 chpasswd.8.xml.out:132 -#: passwd.1.xml.out:129 +#: chgpasswd.8.xml.out:72 chpasswd.8.xml.out:77 chpasswd.8.xml.out:138 +#: passwd.1.xml.out:114 msgid "ENCRYPT_METHOD" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chgpasswd.8.xml.out:71 chgpasswd.8.xml.out:101 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 chpasswd.8.xml.out:139 -#: passwd.1.xml.out:180 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chgpasswd.8.xml.out:73 chgpasswd.8.xml.out:107 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 chpasswd.8.xml.out:145 +#: passwd.1.xml.out:176 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 #, fuzzy #| msgid "-" @@ -1546,16 +1587,16 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: term/option #. (itstool) path: arg/arg -#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:88 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:114 chpasswd.8.xml.out:129 -#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:90 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:116 chpasswd.8.xml.out:135 +#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:270 #: sg.1.xml.out:50 su.1.xml.out:86 su.1.xml.out:126 su.1.xml.out:131 #: useradd.8.xml.out:139 usermod.8.xml.out:99 msgid "-c" msgstr "-c" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:70 msgid "" "The default encryption algorithm can be defined for the system with the <_:" "option-1/> variable of <_:filename-2/>, and can be overwritten with the <_:" @@ -1563,53 +1604,111 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:74 chpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:76 chpasswd.8.xml.out:101 msgid "" "This command is intended to be used in a large system environment where many " "accounts are created at a single time." msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:88 chpasswd.8.xml.out:114 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:116 newusers.8.xml.out:270 msgid "--crypt-method" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:117 newusers.8.xml.out:270 +#: chgpasswd.8.xml.out:92 chpasswd.8.xml.out:119 newusers.8.xml.out:272 msgid "Use the specified method to encrypt the passwords." msgstr "" -#. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:91 chpasswd.8.xml.out:118 -msgid "The available methods are DES, MD5, and NONE." +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:95 chgpasswd.8.xml.out:149 chpasswd.8.xml.out:122 +#: chpasswd.8.xml.out:208 newusers.8.xml.out:330 +msgid "BCRYPT" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 +#, fuzzy +#| msgid "-h <placeholder-1/>" +msgid "<_:replaceable-1/>," +msgstr "-h <placeholder-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:96 chpasswd.8.xml.out:123 +msgid "DES" +msgstr "" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid "MD5" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:98 chgpasswd.8.xml.out:151 chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:210 newusers.8.xml.out:332 +msgid "SHA256" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:99 chgpasswd.8.xml.out:152 chpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:211 newusers.8.xml.out:333 +msgid "SHA512" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +#, fuzzy +#| msgid "-K <placeholder-1/>=<placeholder-2/>" +msgid ", <_:replaceable-1/>, <_:replaceable-2/>" +msgstr "-K <placeholder-1/>=<placeholder-2/>" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:100 chgpasswd.8.xml.out:154 chpasswd.8.xml.out:127 +#: chpasswd.8.xml.out:213 newusers.8.xml.out:335 +#, fuzzy +#| msgid "DESCRIPTION" +msgid "YESCRYPT" +msgstr "BESKRIVNING" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:99 chpasswd.8.xml.out:126 +#, fuzzy +#| msgid "-h <placeholder-1/>" +msgid ", <_:replaceable-1/>" +msgstr "-h <placeholder-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:128 +msgid "NONE" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 newusers.8.xml.out:271 +#: chgpasswd.8.xml.out:93 chpasswd.8.xml.out:120 msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." +"The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" +"><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports " +"these methods." msgstr "" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:139 +#: chgpasswd.8.xml.out:107 chpasswd.8.xml.out:145 #, fuzzy #| msgid "encrypted password" msgid "--encrypted" msgstr "krypterat lösenord" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:103 chpasswd.8.xml.out:141 +#: chgpasswd.8.xml.out:109 chpasswd.8.xml.out:147 msgid "Supplied passwords are in encrypted form." msgstr "Insända lösenord är i ett krypterat format." #. (itstool) path: term/option -#: chgpasswd.8.xml.out:113 chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 chpasswd.8.xml.out:161 msgid "--md5" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:115 chpasswd.8.xml.out:157 +#: chgpasswd.8.xml.out:121 chpasswd.8.xml.out:163 msgid "" "Use MD5 encryption instead of DES when the supplied passwords are not " "encrypted." @@ -1619,60 +1718,85 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 chsh.1.xml.out:97 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 chsh.1.xml.out:97 #: chsh.1.xml.out:108 grpck.8.xml.out:124 grpck.8.xml.out:161 -#: newusers.8.xml.out:320 pwck.8.xml.out:155 pwck.8.xml.out:209 -#: su.1.xml.out:163 useradd.8.xml.out:517 useradd.8.xml.out:655 -#: usermod.8.xml.out:357 vipw.8.xml.out:70 vipw.8.xml.out:127 +#: newusers.8.xml.out:322 passwd.1.xml.out:363 pwck.8.xml.out:155 +#: pwck.8.xml.out:209 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 vipw.8.xml.out:70 +#: vipw.8.xml.out:127 msgid "-s" msgstr "-s" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 newusers.8.xml.out:320 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 newusers.8.xml.out:322 msgid "--sha-rounds" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:137 chpasswd.8.xml.out:181 newusers.8.xml.out:322 +#: chgpasswd.8.xml.out:143 chpasswd.8.xml.out:202 newusers.8.xml.out:324 msgid "Use the specified number of rounds to encrypt the passwords." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:140 chpasswd.8.xml.out:184 newusers.8.xml.out:325 +#: chgpasswd.8.xml.out:146 chpasswd.8.xml.out:205 newusers.8.xml.out:327 +msgid "" +"You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> " +"<_:phrase-3/>" +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:156 chpasswd.8.xml.out:215 newusers.8.xml.out:337 +msgid "" +"By default, the number of rounds for BCRYPT is defined by the " +"BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:161 chpasswd.8.xml.out:220 msgid "" -"The value 0 means that the system will choose the default number of rounds " -"for the crypt method (5000)." +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default number of rounds is 13." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:144 chpasswd.8.xml.out:188 newusers.8.xml.out:329 +#: chgpasswd.8.xml.out:165 chpasswd.8.xml.out:224 newusers.8.xml.out:346 msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +"By default, the number of rounds for SHA256 or SHA512 is defined by the " +"SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:148 chpasswd.8.xml.out:192 newusers.8.xml.out:333 -msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#: chgpasswd.8.xml.out:170 chpasswd.8.xml.out:229 +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default number of rounds is 5000." msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:152 newusers.8.xml.out:337 +#: chgpasswd.8.xml.out:175 chpasswd.8.xml.out:234 newusers.8.xml.out:355 msgid "" -"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and " -"SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +"By default, the number of rounds for YESCRYPT is defined by the " +"YESCRYPT_COST_FACTOR in <_:filename-1/>." +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:179 chpasswd.8.xml.out:238 +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default number of rounds is 5." msgstr "" #. (itstool) path: refsect1/title -#: chgpasswd.8.xml.out:163 chpasswd.8.xml.out:208 faillog.8.xml.out:209 -#: gpasswd.1.xml.out:229 groupadd.8.xml.out:285 groupdel.8.xml.out:121 -#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:348 -#: passwd.1.xml.out:354 shadow.3.xml.out:194 su.1.xml.out:306 -#: useradd.8.xml.out:682 userdel.8.xml.out:281 usermod.8.xml.out:517 +#: chgpasswd.8.xml.out:189 chpasswd.8.xml.out:248 faillog.8.xml.out:209 +#: gpasswd.1.xml.out:231 groupadd.8.xml.out:285 groupdel.8.xml.out:121 +#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:369 +#: passwd.1.xml.out:376 shadow.3.xml.out:194 su.1.xml.out:306 +#: useradd.8.xml.out:702 userdel.8.xml.out:281 usermod.8.xml.out:534 msgid "CAVEATS" msgstr "TÄNK PÅ" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:164 chpasswd.8.xml.out:209 +#: chgpasswd.8.xml.out:190 chpasswd.8.xml.out:249 msgid "" "Remember to set permissions or umask to prevent readability of unencrypted " "files by other users." @@ -1681,7 +1805,7 @@ msgstr "" "okrypterade filer för andra användare." #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:168 newusers.8.xml.out:353 +#: chgpasswd.8.xml.out:194 newusers.8.xml.out:374 msgid "" "You should make sure the passwords and the encryption method respect the " "system's password policy." @@ -1691,8 +1815,8 @@ msgstr "" #. (itstool) path: phrase/filename #. (itstool) path: para/filename #. (itstool) path: citerefentry/refentrytitle -#: chgpasswd.8.xml.out:193 gpasswd.1.xml.out:48 gpasswd.1.xml.out:51 -#: gpasswd.1.xml.out:73 gpasswd.1.xml.out:231 gpasswd.1.xml.out:259 +#: chgpasswd.8.xml.out:221 gpasswd.1.xml.out:50 gpasswd.1.xml.out:53 +#: gpasswd.1.xml.out:75 gpasswd.1.xml.out:233 gpasswd.1.xml.out:261 #: groupadd.8.xml.out:170 groupadd.8.xml.out:264 groupdel.8.xml.out:148 #: groupmems.8.xml.out:191 groupmod.8.xml.out:227 groups.1.xml.out:58 #: groups.1.xml.out:70 groups.1.xml.out:80 grpck.8.xml.out:62 @@ -1700,19 +1824,19 @@ msgstr "" #: grpck.8.xml.out:164 grpck.8.xml.out:177 grpck.8.xml.out:185 #: grpck.8.xml.out:211 gshadow.5.xml.out:91 gshadow.5.xml.out:124 #: gshadow.5.xml.out:135 newgrp.1.xml.out:80 newgrp.1.xml.out:112 -#: newusers.8.xml.out:411 pwck.8.xml.out:261 pwconv.8.xml.out:128 -#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:755 -#: userdel.8.xml.out:185 usermod.8.xml.out:557 vipw.8.xml.out:69 +#: newusers.8.xml.out:432 pwck.8.xml.out:261 pwconv.8.xml.out:128 +#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:775 +#: userdel.8.xml.out:185 usermod.8.xml.out:574 vipw.8.xml.out:69 #: vipw.8.xml.out:175 msgid "/etc/group" msgstr "/etc/group" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:195 gpasswd.1.xml.out:261 groupadd.8.xml.out:266 +#: chgpasswd.8.xml.out:223 gpasswd.1.xml.out:263 groupadd.8.xml.out:266 #: groupdel.8.xml.out:150 groupmems.8.xml.out:193 groupmod.8.xml.out:229 #: groups.1.xml.out:82 grpck.8.xml.out:213 gshadow.5.xml.out:137 -#: newgrp.1.xml.out:114 newusers.8.xml.out:413 pwck.8.xml.out:263 -#: sg.1.xml.out:103 useradd.8.xml.out:757 userdel.8.xml.out:187 +#: newgrp.1.xml.out:114 newusers.8.xml.out:434 pwck.8.xml.out:263 +#: sg.1.xml.out:103 useradd.8.xml.out:777 userdel.8.xml.out:187 #: vipw.8.xml.out:177 msgid "Group account information." msgstr "Gruppkontoinformation." @@ -1720,8 +1844,8 @@ msgstr "Gruppkontoinformation." #. (itstool) path: term/filename #. (itstool) path: phrase/filename #. (itstool) path: para/filename -#: chgpasswd.8.xml.out:199 gpasswd.1.xml.out:52 gpasswd.1.xml.out:74 -#: gpasswd.1.xml.out:232 gpasswd.1.xml.out:265 groupadd.8.xml.out:170 +#: chgpasswd.8.xml.out:227 gpasswd.1.xml.out:54 gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:234 gpasswd.1.xml.out:267 groupadd.8.xml.out:170 #: groupadd.8.xml.out:270 groupdel.8.xml.out:154 groupmems.8.xml.out:87 #: groupmems.8.xml.out:88 groupmems.8.xml.out:98 groupmems.8.xml.out:103 #: groupmems.8.xml.out:104 groupmems.8.xml.out:134 groupmems.8.xml.out:135 @@ -1729,17 +1853,17 @@ msgstr "Gruppkontoinformation." #: grpck.8.xml.out:93 grpck.8.xml.out:114 grpck.8.xml.out:166 #: grpck.8.xml.out:186 grpck.8.xml.out:217 gshadow.5.xml.out:36 #: gshadow.5.xml.out:141 newgrp.1.xml.out:78 newgrp.1.xml.out:118 -#: newusers.8.xml.out:417 pwconv.8.xml.out:129 sg.1.xml.out:107 -#: useradd.8.xml.out:761 usermod.8.xml.out:563 vipw.8.xml.out:72 +#: newusers.8.xml.out:438 pwconv.8.xml.out:129 sg.1.xml.out:107 +#: useradd.8.xml.out:781 usermod.8.xml.out:580 vipw.8.xml.out:72 #: vipw.8.xml.out:181 msgid "/etc/gshadow" msgstr "/etc/gshadow" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:201 gpasswd.1.xml.out:267 groupadd.8.xml.out:272 +#: chgpasswd.8.xml.out:229 gpasswd.1.xml.out:269 groupadd.8.xml.out:272 #: groupdel.8.xml.out:156 groupmod.8.xml.out:235 grpck.8.xml.out:219 -#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:419 -#: sg.1.xml.out:109 useradd.8.xml.out:763 vipw.8.xml.out:183 +#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:440 +#: sg.1.xml.out:109 useradd.8.xml.out:783 vipw.8.xml.out:183 msgid "Secure group account information." msgstr "Säker gruppkontoinformation." @@ -1749,12 +1873,12 @@ msgstr "Säker gruppkontoinformation." #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:217 gpasswd.1.xml.out:38 gpasswd.1.xml.out:45 -#: gpasswd.1.xml.out:59 gpasswd.1.xml.out:72 gpasswd.1.xml.out:85 -#: gpasswd.1.xml.out:119 groupadd.8.xml.out:354 groupdel.8.xml.out:214 -#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:280 +#: chgpasswd.8.xml.out:245 gpasswd.1.xml.out:40 gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:61 gpasswd.1.xml.out:74 gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:121 groupadd.8.xml.out:354 groupdel.8.xml.out:214 +#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:290 #: newgrp.1.xml.out:142 sg.1.xml.out:131 userdel.8.xml.out:322 -#: usermod.8.xml.out:617 +#: usermod.8.xml.out:634 msgid "gpasswd" msgstr "gpasswd" @@ -1764,19 +1888,19 @@ msgstr "gpasswd" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:220 gpasswd.1.xml.out:280 groupadd.8.xml.out:36 +#: chgpasswd.8.xml.out:248 gpasswd.1.xml.out:282 groupadd.8.xml.out:36 #: groupadd.8.xml.out:43 groupadd.8.xml.out:49 groupadd.8.xml.out:61 #: groupadd.8.xml.out:82 groupadd.8.xml.out:292 groupadd.8.xml.out:300 #: groupdel.8.xml.out:217 groupmems.8.xml.out:218 groupmod.8.xml.out:338 -#: login.defs.5.xml.out:290 useradd.8.xml.out:890 userdel.8.xml.out:325 -#: usermod.8.xml.out:620 +#: login.defs.5.xml.out:303 useradd.8.xml.out:910 userdel.8.xml.out:325 +#: usermod.8.xml.out:637 msgid "groupadd" msgstr "groupadd" #. (itstool) path: author/contrib -#: chpasswd.8.xml.out:21 groupadd.8.xml.out:20 groupdel.8.xml.out:18 -#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:86 -#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:33 +#: chpasswd.8.xml.out:23 groupadd.8.xml.out:20 groupdel.8.xml.out:18 +#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:88 +#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:35 #: sg.1.xml.out:18 useradd.8.xml.out:36 userdel.8.xml.out:23 #: usermod.8.xml.out:24 msgid "Creation, 1991" @@ -1788,20 +1912,20 @@ msgstr "" #. (itstool) path: para/command #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:37 chpasswd.8.xml.out:44 chpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:60 chpasswd.8.xml.out:70 chpasswd.8.xml.out:89 -#: chpasswd.8.xml.out:96 chpasswd.8.xml.out:108 chpasswd.8.xml.out:255 -#: login.defs.5.xml.out:259 passwd.1.xml.out:474 +#: chpasswd.8.xml.out:39 chpasswd.8.xml.out:46 chpasswd.8.xml.out:52 +#: chpasswd.8.xml.out:62 chpasswd.8.xml.out:72 chpasswd.8.xml.out:91 +#: chpasswd.8.xml.out:98 chpasswd.8.xml.out:110 chpasswd.8.xml.out:297 +#: login.defs.5.xml.out:266 passwd.1.xml.out:496 msgid "chpasswd" msgstr "chpasswd" #. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:45 +#: chpasswd.8.xml.out:47 msgid "update passwords in batch mode" msgstr "uppdatera lösenord i satsläge" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:59 +#: chpasswd.8.xml.out:61 #, fuzzy msgid "" "The <_:command-1/> command reads a list of user name and password pairs from " @@ -1815,13 +1939,13 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:65 groupmems.8.xml.out:52 groupmems.8.xml.out:53 +#: chpasswd.8.xml.out:67 groupmems.8.xml.out:52 groupmems.8.xml.out:53 #: groupmems.8.xml.out:83 groupmems.8.xml.out:94 msgid "user_name" msgstr "användarnamn" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:68 +#: chpasswd.8.xml.out:70 #, fuzzy msgid "" "By default the passwords must be supplied in clear-text, and are encrypted " @@ -1831,12 +1955,12 @@ msgstr "" "Standardkrypteringsalgoritmen är DES." #. (itstool) path: para/option -#: chpasswd.8.xml.out:76 chpasswd.8.xml.out:133 +#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 msgid "MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:73 +#: chpasswd.8.xml.out:75 msgid "" "The default encryption algorithm can be defined for the system with the <_:" "option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be " @@ -1844,7 +1968,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:83 msgid "" "By default, passwords are encrypted by PAM, but (even if not recommended) " "you can select a different encryption method with the <_:option-1/>, <_:" @@ -1852,19 +1976,19 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:88 +#: chpasswd.8.xml.out:90 msgid "Except when PAM is used to encrypt the passwords," msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:87 +#: chpasswd.8.xml.out:89 msgid "" "<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and " "then commits all the changes to disk if no errors occurred for any user." msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:95 msgid "" "When PAM is used to encrypt the passwords (and update the passwords in the " "system database) then if a password cannot be updated <_:command-1/> " @@ -1873,17 +1997,17 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:114 +#: chpasswd.8.xml.out:116 msgid "METHOD" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:131 msgid "By default, PAM is used to encrypt the passwords." msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:134 msgid "" "By default (if none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> " "options are specified), the encryption method is defined by the <_:option-4/" @@ -1891,36 +2015,19 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:178 -msgid "ROUNDS" -msgstr "" - -#. (itstool) path: para/option -#: chpasswd.8.xml.out:198 -msgid "SHA_CRYPT_MIN_ROUNDS" -msgstr "" - -#. (itstool) path: para/option #: chpasswd.8.xml.out:199 -msgid "SHA_CRYPT_MAX_ROUNDS" -msgstr "" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:196 -msgid "" -"By default, the number of rounds is defined by the <_:option-1/> and <_:" -"option-2/> variables in <_:filename-3/>." +msgid "ROUNDS" msgstr "" #. (itstool) path: term/filename -#: chpasswd.8.xml.out:253 +#: chpasswd.8.xml.out:295 #, fuzzy #| msgid "/etc/passwd" msgid "/etc/pam.d/chpasswd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:255 newusers.8.xml.out:431 passwd.1.xml.out:413 +#: chpasswd.8.xml.out:297 newusers.8.xml.out:452 passwd.1.xml.out:435 msgid "PAM configuration for <_:command-1/>." msgstr "" @@ -1930,17 +2037,17 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:268 login.defs.5.xml.out:380 newusers.8.xml.out:49 -#: newusers.8.xml.out:56 newusers.8.xml.out:62 newusers.8.xml.out:75 -#: newusers.8.xml.out:96 newusers.8.xml.out:123 newusers.8.xml.out:132 -#: newusers.8.xml.out:151 newusers.8.xml.out:164 newusers.8.xml.out:170 -#: newusers.8.xml.out:172 newusers.8.xml.out:210 newusers.8.xml.out:230 -#: newusers.8.xml.out:252 newusers.8.xml.out:431 useradd.8.xml.out:902 +#: chpasswd.8.xml.out:310 login.defs.5.xml.out:393 newusers.8.xml.out:51 +#: newusers.8.xml.out:58 newusers.8.xml.out:64 newusers.8.xml.out:77 +#: newusers.8.xml.out:98 newusers.8.xml.out:125 newusers.8.xml.out:134 +#: newusers.8.xml.out:153 newusers.8.xml.out:166 newusers.8.xml.out:172 +#: newusers.8.xml.out:174 newusers.8.xml.out:212 newusers.8.xml.out:232 +#: newusers.8.xml.out:254 newusers.8.xml.out:452 useradd.8.xml.out:922 msgid "newusers" msgstr "newusers" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:270 grpck.8.xml.out:285 passwd.1.xml.out:482 +#: chpasswd.8.xml.out:312 grpck.8.xml.out:285 passwd.1.xml.out:507 msgid "<_:citerefentry-1/>," msgstr "" @@ -1950,21 +2057,21 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:276 groupadd.8.xml.out:366 groupdel.8.xml.out:223 -#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:462 -#: newusers.8.xml.out:467 useradd.8.xml.out:52 useradd.8.xml.out:59 +#: chpasswd.8.xml.out:318 groupadd.8.xml.out:366 groupdel.8.xml.out:223 +#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:481 +#: newusers.8.xml.out:488 useradd.8.xml.out:52 useradd.8.xml.out:59 #: useradd.8.xml.out:64 useradd.8.xml.out:71 useradd.8.xml.out:75 #: useradd.8.xml.out:87 useradd.8.xml.out:90 useradd.8.xml.out:103 #: useradd.8.xml.out:129 useradd.8.xml.out:187 useradd.8.xml.out:209 -#: useradd.8.xml.out:239 useradd.8.xml.out:284 useradd.8.xml.out:341 -#: useradd.8.xml.out:472 useradd.8.xml.out:584 useradd.8.xml.out:586 -#: useradd.8.xml.out:690 useradd.8.xml.out:808 userdel.8.xml.out:342 -#: usermod.8.xml.out:640 +#: useradd.8.xml.out:239 useradd.8.xml.out:286 useradd.8.xml.out:343 +#: useradd.8.xml.out:474 useradd.8.xml.out:604 useradd.8.xml.out:606 +#: useradd.8.xml.out:710 useradd.8.xml.out:828 userdel.8.xml.out:342 +#: usermod.8.xml.out:657 msgid "useradd" msgstr "useradd" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:263 newusers.8.xml.out:451 +#: chpasswd.8.xml.out:305 newusers.8.xml.out:472 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." msgstr "" @@ -1985,15 +2092,15 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:517 -#: useradd.8.xml.out:655 usermod.8.xml.out:357 +#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 msgid "--shell" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:517 -#: useradd.8.xml.out:522 useradd.8.xml.out:655 useradd.8.xml.out:662 +#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:524 useradd.8.xml.out:675 useradd.8.xml.out:682 #: usermod.8.xml.out:357 msgid "SHELL" msgstr "" @@ -2017,12 +2124,13 @@ msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:153 su.1.xml.out:198 +#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:130 chsh.1.xml.out:143 +#: chsh.1.xml.out:172 chsh.1.xml.out:184 su.1.xml.out:198 msgid "/etc/shells" msgstr "/etc/shells" #. (itstool) path: para/filename -#: chsh.1.xml.out:123 +#: chsh.1.xml.out:123 chsh.1.xml.out:142 msgid "/bin/rsh" msgstr "" @@ -2038,11 +2146,97 @@ msgid "" "original value." msgstr "" +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chsh.1.xml.out:132 chsh.1.xml.out:181 +msgid "%vendordir%/shells" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:133 +msgid "%vendordir%/shells.d/*" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:134 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/*" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:135 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/@filename@" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:136 +msgid "%vendordir%/shells.d/@filename@" +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:128 +msgid "" +"The only restriction placed on the login shell is that the command name must " +"be listed in <_:filename-1/>. If this file does not exist, the definitions " +"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" +"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " +"used. If the invoker is the superuser any value may be added regardless what " +"is defined in the configuration files. An account with a restricted login " +"shell may not change her login shell." +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:141 +msgid "" +"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " +"since accidentally changing to a restricted shell would prevent the user " +"from ever changing her login shell back to its original value." +msgstr "" + #. (itstool) path: listitem/para -#: chsh.1.xml.out:155 +#: chsh.1.xml.out:174 msgid "List of valid login shells." msgstr "Lista på giltiga inloggningsskal." +#. (itstool) path: listitem/para +#: chsh.1.xml.out:177 +#, fuzzy +#| msgid "List of valid login shells." +msgid "User defined list of valid login shells." +msgstr "Lista på giltiga inloggningsskal." + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:183 +msgid "Default configuration file if <_:filename-1/> does not exist." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:188 +msgid "%vendordir%/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:190 +msgid "Directory for additional vendor specific configuration files." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:194 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d" +msgstr "/etc/shells" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:196 +#, fuzzy +#| msgid "Directory containing default files." +msgid "Directory for additional user defined configuration files." +msgstr "Katalog som innehåller standardfiler." + #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command @@ -2058,7 +2252,7 @@ msgid "check and enforce password expiration policy" msgstr "kontrollera och upprätthåll policy för lösenordsutgång" #. (itstool) path: arg/replaceable -#: expiry.1.xml.out:52 gpasswd.1.xml.out:61 +#: expiry.1.xml.out:52 gpasswd.1.xml.out:63 #, fuzzy msgid "option" msgstr "flaggor" @@ -2096,7 +2290,7 @@ msgstr "" #. (itstool) path: author/contrib #: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 -#: passwd.1.xml.out:24 passwd.5.xml.out:17 porttime.5.xml.out:17 +#: passwd.1.xml.out:26 passwd.5.xml.out:17 porttime.5.xml.out:17 #: shadow.3.xml.out:17 shadow.5.xml.out:17 su.1.xml.out:34 msgid "Creation, 1989" msgstr "" @@ -2117,7 +2311,7 @@ msgstr "faillog" #. (itstool) path: refmeta/refmiscinfo #: faillog.5.xml.out:35 gshadow.5.xml.out:24 limits.5.xml.out:37 -#: login.access.5.xml.out:36 login.defs.5.xml.out:104 passwd.5.xml.out:35 +#: login.access.5.xml.out:36 login.defs.5.xml.out:106 passwd.5.xml.out:35 #: porttime.5.xml.out:35 shadow.5.xml.out:35 suauth.5.xml.out:35 #, fuzzy #| msgid "File Formats and Conversions" @@ -2206,14 +2400,14 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:124 -#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 +#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 #: usermod.8.xml.out:78 usermod.8.xml.out:210 msgid "-a" msgstr "-a" #. (itstool) path: term/option -#: faillog.8.xml.out:72 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 passwd.1.xml.out:153 msgid "--all" msgstr "" @@ -2442,8 +2636,8 @@ msgstr "" #: login.1.xml.out:108 login.1.xml.out:112 login.1.xml.out:119 #: login.1.xml.out:171 login.1.xml.out:177 login.1.xml.out:230 #: login.1.xml.out:238 login.1.xml.out:247 login.1.xml.out:253 -#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:343 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:530 newgrp.1.xml.out:133 +#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:356 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:549 newgrp.1.xml.out:133 #: nologin.8.xml.out:60 passwd.5.xml.out:125 passwd.5.xml.out:132 #: passwd.5.xml.out:179 porttime.5.xml.out:121 shadow.5.xml.out:265 #: sg.1.xml.out:122 su.1.xml.out:415 @@ -2451,30 +2645,30 @@ msgid "login" msgstr "login" #. (itstool) path: author/firstname -#: gpasswd.1.xml.out:20 +#: gpasswd.1.xml.out:22 msgid "Rafal" msgstr "" #. (itstool) path: author/surname -#: gpasswd.1.xml.out:21 +#: gpasswd.1.xml.out:23 msgid "Maszkowski" msgstr "" #. (itstool) path: author/contrib -#: gpasswd.1.xml.out:22 login.access.5.xml.out:18 pwconv.8.xml.out:23 +#: gpasswd.1.xml.out:24 login.access.5.xml.out:18 pwconv.8.xml.out:23 #: suauth.5.xml.out:17 msgid "Creation, 1996" msgstr "" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:49 #, fuzzy #| msgid "-r <placeholder-1/>" msgid "administer <_:filename-1/>" msgstr "-r <placeholder-1/>" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:52 #, fuzzy msgid "administer <_:filename-1/> and <_:filename-2/>" msgstr "-K <placeholder-1/>=<placeholder-2/>" @@ -2483,9 +2677,9 @@ msgstr "-K <placeholder-1/>=<placeholder-2/>" #. (itstool) path: para/replaceable #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:64 gpasswd.1.xml.out:89 gpasswd.1.xml.out:129 -#: gpasswd.1.xml.out:142 gpasswd.1.xml.out:177 gpasswd.1.xml.out:181 -#: gpasswd.1.xml.out:193 gpasswd.1.xml.out:197 gpasswd.1.xml.out:292 +#: gpasswd.1.xml.out:66 gpasswd.1.xml.out:91 gpasswd.1.xml.out:131 +#: gpasswd.1.xml.out:144 gpasswd.1.xml.out:179 gpasswd.1.xml.out:183 +#: gpasswd.1.xml.out:195 gpasswd.1.xml.out:199 gpasswd.1.xml.out:294 #: grpck.8.xml.out:49 grpck.8.xml.out:188 grpck.8.xml.out:280 #: gshadow.5.xml.out:156 limits.5.xml.out:138 newgrp.1.xml.out:48 #: newgrp.1.xml.out:145 pwck.8.xml.out:336 pwconv.8.xml.out:114 @@ -2494,17 +2688,17 @@ msgid "group" msgstr "grupp" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:73 +#: gpasswd.1.xml.out:75 msgid ", and <_:filename-1/>" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:78 msgid "administrators," msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:71 +#: gpasswd.1.xml.out:73 msgid "" "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" ">. Every group can have <_:phrase-4/> members and a password." @@ -2512,14 +2706,14 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: gpasswd.1.xml.out:80 gpasswd.1.xml.out:112 gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 #, fuzzy #| msgid "-" msgid "-A" msgstr "-" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:79 +#: gpasswd.1.xml.out:81 msgid "" "System administrators can use the <_:option-1/> option to define group " "administrator(s) and the <_:option-2/> option to define members. They have " @@ -2527,19 +2721,19 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:86 +#: gpasswd.1.xml.out:88 #, fuzzy #| msgid "comma-separated list of group administrators" msgid "a group administrator" msgstr "kommaseparerad lista med gruppadministratörer" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:89 msgid "a system administrator" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:84 +#: gpasswd.1.xml.out:86 msgid "" "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " "prompts for the new password of the <_:replaceable-4/>." @@ -2550,8 +2744,8 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:93 gpasswd.1.xml.out:180 gpasswd.1.xml.out:196 -#: gpasswd.1.xml.out:277 groups.1.xml.out:71 groups.1.xml.out:92 +#: gpasswd.1.xml.out:95 gpasswd.1.xml.out:182 gpasswd.1.xml.out:198 +#: gpasswd.1.xml.out:279 groups.1.xml.out:71 groups.1.xml.out:92 #: gshadow.5.xml.out:76 gshadow.5.xml.out:165 newgrp.1.xml.out:34 #: newgrp.1.xml.out:41 newgrp.1.xml.out:47 newgrp.1.xml.out:55 #: newgrp.1.xml.out:63 newgrp.1.xml.out:66 sg.1.xml.out:60 sg.1.xml.out:64 @@ -2560,7 +2754,7 @@ msgid "newgrp" msgstr "newgrp" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:93 #, fuzzy msgid "" "If a password is set the members can still use <_:citerefentry-1/> without a " @@ -2571,12 +2765,12 @@ msgstr "" "denna sträng tolkas." #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "Noteringar angående grupplösenord" #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "" "Group passwords are an inherent security problem since more than one person " "is permitted to know the password. However, groups are a useful tool for " @@ -2584,7 +2778,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 #, fuzzy msgid "" "Except for the <_:option-1/> and <_:option-2/> options, the options cannot " @@ -2594,53 +2788,53 @@ msgstr "" "används endast när <command>login</command> har startats av root." #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 groupmems.8.xml.out:83 +#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 msgid "--add" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 gpasswd.1.xml.out:128 gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 gpasswd.1.xml.out:205 gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 #: groups.1.xml.out:48 groups.1.xml.out:59 msgid "user" msgstr "användare" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 msgid "Add the <_:replaceable-1/> to the named <_:replaceable-2/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 groupmems.8.xml.out:94 passwd.1.xml.out:168 +#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 msgid "--delete" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 msgid "Remove the <_:replaceable-1/> from the named <_:replaceable-2/>." msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 #, fuzzy #| msgid "-" msgid "-Q" msgstr "-" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 msgid "" "Remove the password from the named <_:replaceable-1/>. The group password " "will be empty. Only group members will be allowed to use <_:command-2/> to " @@ -2648,12 +2842,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 msgid "" "Restrict the access to the named <_:replaceable-1/>. The group password is " "set to \"!\". Only group members with a password will be allowed to use <_:" @@ -2661,12 +2855,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 msgid "--administrators" msgstr "" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 #, fuzzy msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "" @@ -2674,35 +2868,35 @@ msgstr "" "replaceable>" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 #, fuzzy msgid "Set the list of administrative users." msgstr "kommaseparerad lista med gruppadministratörer" #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 msgid "--members" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 #, fuzzy msgid "Set the list of group members." msgstr "kommaseparerad lista med gruppmedlemmar" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 #, fuzzy msgid "and <_:filename-1/> files." msgstr "-a <placeholder-1/>" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 msgid "file." msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 #, fuzzy msgid "" "This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> " @@ -2718,11 +2912,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 groupadd.8.xml.out:357 groupdel.8.xml.out:34 +#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 #: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:299 useradd.8.xml.out:893 -#: userdel.8.xml.out:328 usermod.8.xml.out:623 +#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 +#: userdel.8.xml.out:328 usermod.8.xml.out:640 msgid "groupdel" msgstr "groupdel" @@ -2732,11 +2926,11 @@ msgstr "groupdel" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 groupadd.8.xml.out:360 groupdel.8.xml.out:220 +#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 #: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 userdel.8.xml.out:331 usermod.8.xml.out:626 +#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 msgid "groupmod" msgstr "groupmod" @@ -2746,10 +2940,10 @@ msgstr "groupmod" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 grpck.8.xml.out:33 grpck.8.xml.out:40 +#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 #: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 #: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:318 +#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 #: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 msgid "grpck" msgstr "grpck" @@ -2759,7 +2953,7 @@ msgstr "grpck" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 grpck.8.xml.out:95 grpck.8.xml.out:287 +#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 #: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 #: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 #: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 @@ -2767,12 +2961,12 @@ msgid "gshadow" msgstr "gshadow" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 newgrp.1.xml.out:146 sg.1.xml.out:135 +#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 newgrp.1.xml.out:128 sg.1.xml.out:117 +#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -2818,8 +3012,8 @@ msgstr "" #: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 #: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 #: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:391 -#: useradd.8.xml.out:396 useradd.8.xml.out:557 useradd.8.xml.out:639 +#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 +#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 msgid "-g" msgstr "-g" @@ -2835,7 +3029,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:639 usermod.8.xml.out:174 +#: useradd.8.xml.out:659 usermod.8.xml.out:174 msgid "--gid" msgstr "" @@ -2844,8 +3038,8 @@ msgstr "" #. (itstool) path: para/option #: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 #: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "GID" @@ -2877,7 +3071,7 @@ msgid "GID_MAX" msgstr "GID_MAX GID_MIN" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:111 useradd.8.xml.out:541 +#: groupadd.8.xml.out:111 useradd.8.xml.out:543 #, fuzzy msgid "See also the <_:option-1/> option and the <_:option-2/> description." msgstr "" @@ -2887,31 +3081,31 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:125 groupadd.8.xml.out:131 groupadd.8.xml.out:134 -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:303 -#: useradd.8.xml.out:314 useradd.8.xml.out:317 useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 +#: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 +#: useradd.8.xml.out:322 #, fuzzy #| msgid "-" msgid "-K" msgstr "-" #. (itstool) path: term/option -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "--key" msgstr "" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "KEY" msgstr "NYCKEL" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "VALUE" msgstr "VÄRDE" #. (itstool) path: varlistentry/term -#: groupadd.8.xml.out:124 useradd.8.xml.out:302 +#: groupadd.8.xml.out:124 useradd.8.xml.out:304 #, fuzzy msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" msgstr "" @@ -2932,14 +3126,14 @@ msgstr "" "GID_MAX och andra). Flera flaggor av <option>-K</option> kan anges." #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:134 useradd.8.xml.out:320 +#: groupadd.8.xml.out:134 useradd.8.xml.out:322 #, fuzzy #| msgid "10" msgid "100" msgstr "10" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:321 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:323 msgid "499" msgstr "" @@ -2953,7 +3147,7 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: term/replaceable #: groupadd.8.xml.out:138 groupadd.8.xml.out:333 groupdel.8.xml.out:192 -#: groupmod.8.xml.out:295 useradd.8.xml.out:853 userdel.8.xml.out:265 +#: groupmod.8.xml.out:295 useradd.8.xml.out:873 userdel.8.xml.out:265 msgid "10" msgstr "10" @@ -2973,7 +3167,7 @@ msgstr "" "replaceable>=<replaceable>499</replaceable> fungerar ännu inte." #. (itstool) path: term/option -#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:405 +#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 #: usermod.8.xml.out:271 msgid "--non-unique" msgstr "" @@ -2993,13 +3187,13 @@ msgstr "" #: groupadd.8.xml.out:158 groupmems.8.xml.out:55 groupmems.8.xml.out:130 #: groupmod.8.xml.out:143 login.1.xml.out:80 login.1.xml.out:88 #: login.1.xml.out:95 login.1.xml.out:212 su.1.xml.out:207 -#: useradd.8.xml.out:425 usermod.8.xml.out:237 usermod.8.xml.out:290 +#: useradd.8.xml.out:427 usermod.8.xml.out:237 usermod.8.xml.out:290 #: usermod.8.xml.out:411 vipw.8.xml.out:102 msgid "-p" msgstr "-p" #. (itstool) path: term/option -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 #, fuzzy #| msgid "passwd" @@ -3007,7 +3201,7 @@ msgid "--password" msgstr "passwd" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "PASSWORD" msgstr "" @@ -3016,8 +3210,8 @@ msgstr "" #: groupadd.8.xml.out:163 groupmod.8.xml.out:148 gshadow.5.xml.out:62 #: gshadow.5.xml.out:68 passwd.5.xml.out:103 passwd.5.xml.out:109 #: passwd.5.xml.out:170 shadow.5.xml.out:88 shadow.5.xml.out:94 -#: useradd.8.xml.out:430 useradd.8.xml.out:887 usermod.8.xml.out:295 -#: usermod.8.xml.out:614 +#: useradd.8.xml.out:432 useradd.8.xml.out:907 usermod.8.xml.out:295 +#: usermod.8.xml.out:631 msgid "crypt" msgstr "" @@ -3027,11 +3221,11 @@ msgstr "" #: groupadd.8.xml.out:164 groupadd.8.xml.out:315 groupmod.8.xml.out:148 #: groupmod.8.xml.out:271 groups.1.xml.out:68 groups.1.xml.out:104 #: grpck.8.xml.out:255 gshadow.5.xml.out:63 gshadow.5.xml.out:69 -#: passwd.1.xml.out:443 passwd.5.xml.out:104 passwd.5.xml.out:110 +#: passwd.1.xml.out:465 passwd.5.xml.out:104 passwd.5.xml.out:110 #: passwd.5.xml.out:170 passwd.5.xml.out:176 pwck.8.xml.out:305 #: shadow.3.xml.out:34 shadow.3.xml.out:217 shadow.5.xml.out:89 -#: shadow.5.xml.out:95 useradd.8.xml.out:431 useradd.8.xml.out:829 -#: useradd.8.xml.out:887 usermod.8.xml.out:296 usermod.8.xml.out:614 +#: shadow.5.xml.out:95 useradd.8.xml.out:433 useradd.8.xml.out:849 +#: useradd.8.xml.out:907 usermod.8.xml.out:296 usermod.8.xml.out:631 msgid "3" msgstr "3" @@ -3051,7 +3245,7 @@ msgid "" msgstr "" #. (itstool) path: para/emphasis -#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:444 +#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 #: userdel.8.xml.out:93 usermod.8.xml.out:299 msgid "Note:" msgstr "" @@ -3064,14 +3258,14 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:448 +#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 #: usermod.8.xml.out:309 msgid "" "You should make sure the password respects the system's password policy." msgstr "" #. (itstool) path: term/option -#: groupadd.8.xml.out:185 newusers.8.xml.out:287 useradd.8.xml.out:456 +#: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 msgid "--system" msgstr "" @@ -3102,45 +3296,11 @@ msgid "" "option-5/>." msgstr "" -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -#, fuzzy -#| msgid "-" -msgid "-P" -msgstr "-" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "--prefix" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 groupadd.8.xml.out:219 groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 groupdel.8.xml.out:108 groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 groupmod.8.xml.out:183 useradd.8.xml.out:502 -#: useradd.8.xml.out:507 userdel.8.xml.out:136 userdel.8.xml.out:140 -#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 useradd.8.xml.out:505 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. 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." -msgstr "" - #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:397 -#: useradd.8.xml.out:549 useradd.8.xml.out:558 usermod.8.xml.out:238 +#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 +#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 #, fuzzy #| msgid "-" @@ -3162,7 +3322,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:386 useradd.8.xml.out:397 useradd.8.xml.out:558 +#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 #, fuzzy #| msgid "-" msgid "-N" @@ -3170,15 +3330,15 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:448 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:398 -#: useradd.8.xml.out:559 userdel.8.xml.out:86 userdel.8.xml.out:296 +#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 +#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 +#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 +#: useradd.8.xml.out:558 msgid "" "The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> " "options are not specified) is defined by the <_:option-4/> variable in <_:" @@ -3203,13 +3363,13 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:463 useradd.8.xml.out:831 +#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "ogiltigt argument till flagga" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:449 pwck.8.xml.out:311 useradd.8.xml.out:835 +#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 msgid "4" msgstr "4" @@ -3221,7 +3381,7 @@ msgid "GID is already used (when called without <_:option-1/>)" msgstr "UID används redan (och inget <option>-o</option>)" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:847 +#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 msgid "9" msgstr "9" @@ -3233,7 +3393,7 @@ msgid "group name is already used" msgstr "gruppnamnet används redan" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:855 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "kan inte uppdatera gruppfilen" @@ -3245,11 +3405,11 @@ msgstr "kan inte uppdatera gruppfilen" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:480 useradd.8.xml.out:913 +#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 #: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 #: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 #: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:643 +#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 msgid "userdel" msgstr "userdel" @@ -3260,11 +3420,11 @@ msgstr "userdel" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:490 passwd.1.xml.out:488 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:916 +#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 +#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 #: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 #: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:522 +#: usermod.8.xml.out:263 usermod.8.xml.out:539 msgid "usermod" msgstr "usermod" @@ -3290,8 +3450,8 @@ msgstr "ta bort en grupp" #: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 #: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 #: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:392 -#: useradd.8.xml.out:639 useradd.8.xml.out:648 usermod.8.xml.out:174 +#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 +#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 msgid "GROUP" msgstr "GRUPP" @@ -3340,13 +3500,13 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:461 -#: pwck.8.xml.out:323 useradd.8.xml.out:841 userdel.8.xml.out:253 +#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 +#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 msgid "6" msgstr "6" #. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:843 +#: groupdel.8.xml.out:182 useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "angiven grupp finns inte" @@ -3391,7 +3551,7 @@ msgstr "" #: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 #: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 #: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "groupmems" @@ -3534,7 +3694,7 @@ msgstr "" #| "\t$ groupmems -g groups -a gk4\n" #| " " msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " +"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " "groupmems -g groups -a gk4" msgstr "" "\n" @@ -3617,7 +3777,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:246 +#: groupmod.8.xml.out:121 passwd.1.xml.out:242 #, fuzzy #| msgid "-" msgid "-n" @@ -3718,7 +3878,7 @@ msgid "E_CLEANUP_SERVICE: can't setup cleanup service" msgstr "" #. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:859 userdel.8.xml.out:271 +#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 msgid "12" msgstr "12" @@ -3889,7 +4049,7 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:67 newusers.8.xml.out:75 +#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 msgid "file" msgstr "" @@ -3922,7 +4082,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:134 login.defs.5.xml.out:136 +#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "" @@ -3947,8 +4107,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 +#: passwd.1.xml.out:302 #, fuzzy #| msgid "-" msgid "-S" @@ -4179,7 +4339,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:324 pwconv.8.xml.out:48 +#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 #: pwconv.8.xml.out:166 pwconv.8.xml.out:208 msgid "grpconv" @@ -4193,7 +4353,7 @@ msgstr "grpconv" #. (itstool) path: varlistentry/term #: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 #: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "lastlog" @@ -4239,7 +4399,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:592 +#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 #, fuzzy #| msgid "-" @@ -4579,7 +4739,7 @@ msgstr "" #. (itstool) path: para/command #: limits.5.xml.out:122 login.1.xml.out:83 login.1.xml.out:91 #: login.1.xml.out:197 su.1.xml.out:70 su.1.xml.out:82 su.1.xml.out:95 -#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:775 +#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:795 msgid "username" msgstr "användarnamn" @@ -5033,8 +5193,8 @@ msgstr "chsh" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:436 login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 newgrp.1.xml.out:136 passwd.5.xml.out:197 +#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 #: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 #: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 #: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 @@ -5191,12 +5351,12 @@ msgid "<_:citerefentry-1/>." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 msgid "" "The <_:filename-1/> file defines the site-specific configuration for the " "shadow password suite. This file is required. Absence of this file will not " @@ -5204,7 +5364,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "" "This file is a readable text file, each line of the file describing one " "configuration parameter. The lines consist of a configuration name and " @@ -5215,20 +5375,20 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 useradd.8.xml.out:242 useradd.8.xml.out:380 +#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 #: userdel.8.xml.out:87 userdel.8.xml.out:297 msgid "yes" msgstr "" #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 #, fuzzy #| msgid "0" msgid "0x" msgstr "0" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 msgid "" "Parameter values may be of four types: strings, booleans, numbers, and long " "numbers. A string is comprised of any printable characters. A boolean should " @@ -5241,32 +5401,32 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "Följande konfigurationsposter tillhandahålls:" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 pwconv.8.xml.out:146 useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 pwconv.8.xml.out:145 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 pwconv.8.xml.out:147 +#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "" #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 #, fuzzy msgid "" "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " @@ -5278,12 +5438,12 @@ msgstr "" "konton." #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "" "The following cross references show which programs in the shadow password " "suite use which parameters." @@ -5293,53 +5453,67 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 login.defs.5.xml.out:423 login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 pwck.8.xml.out:75 pwck.8.xml.out:216 +#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 #: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 #: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 msgid "USE_TCB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "CHFN_AUTH" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 #, fuzzy msgid "LOGIN_STRING" msgstr "CHFN_AUTH CHFN_RESTRICT" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 login.defs.5.xml.out:264 login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 login.defs.5.xml.out:282 -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" +"phrase-2/> <_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 #, fuzzy msgid "CHSH_AUTH LOGIN_STRING" msgstr "CHFN_AUTH CHFN_RESTRICT" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 #, fuzzy msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "" @@ -5347,8 +5521,8 @@ msgstr "" "UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 login.defs.5.xml.out:307 login.defs.5.xml.out:313 -#: login.defs.5.xml.out:320 login.defs.5.xml.out:326 login.defs.5.xml.out:332 +#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 +#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "" @@ -5356,63 +5530,63 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 pwconv.8.xml.out:49 pwconv.8.xml.out:73 +#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 #: pwconv.8.xml.out:208 msgid "grpunconv" msgstr "grpunconv" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 msgid "FAILLOG_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 #, fuzzy #| msgid "FILE" msgid "FTMP_FILE" msgstr "FIL" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "" "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " "<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " @@ -5422,43 +5596,45 @@ msgid "" msgstr "" #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 #, fuzzy #| msgid "newgrp" msgid "newgrp / sg" msgstr "newgrp" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 +#: login.defs.5.xml.out:395 #, fuzzy msgid "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " +"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" +"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " +"UMASK <_:phrase-3/>" msgstr "" "GID_MAX GID_MIN PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE UID_MAX UID_MIN " "UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 +#: login.defs.5.xml.out:417 msgid "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " +"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 #, fuzzy #| msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" @@ -5470,7 +5646,7 @@ msgstr "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 passwd.5.xml.out:188 pwconv.8.xml.out:39 +#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 #: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 #: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 @@ -5483,7 +5659,7 @@ msgstr "pwconv" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 passwd.5.xml.out:191 pwconv.8.xml.out:47 +#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 #: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 #: pwconv.8.xml.out:166 shadow.5.xml.out:280 @@ -5491,22 +5667,22 @@ msgid "pwunconv" msgstr "pwunconv" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " "<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" @@ -5514,29 +5690,23 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 passwd.5.xml.out:200 shadow.5.xml.out:286 +#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 #, fuzzy msgid "sulogin" msgstr "login" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +msgid "ENV_HZ ENV_TZ" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 #, fuzzy msgid "" "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " @@ -5549,19 +5719,19 @@ msgstr "" "UMASK" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 msgid "" "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" "phrase-1/>" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 msgid "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" msgstr "" @@ -5575,18 +5745,18 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 vipw.8.xml.out:35 vipw.8.xml.out:42 +#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 #: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 msgid "vipw" msgstr "vipw" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 pwconv.8.xml.out:193 suauth.5.xml.out:179 +#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 msgid "BUGS" msgstr "FEL" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 #, fuzzy #| msgid "" #| "<citerefentry><refentrytitle>group</refentrytitle><manvolnum>5</" @@ -5609,14 +5779,14 @@ msgstr "" "refentrytitle><manvolnum>8</manvolnum></citerefentry>." #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 #, fuzzy #| msgid "group_name" msgid "pam" msgstr "gruppnamn" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." @@ -5710,12 +5880,12 @@ msgid "id" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "uppdatera och skapa nya användare satsvis" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 msgid "" "The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input " "by default) and uses this information to update a set of existing users or " @@ -5724,24 +5894,24 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 #, fuzzy #| msgid "group_name" msgid "pw_name" msgstr "gruppnamn" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 msgid "" "It can be the name of a new user or the name of an existing user (or a user " "created before by <_:command-1/>). In case of an existing user, the user's " @@ -5749,12 +5919,12 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "pw_passwd" #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "" "This field will be encrypted and used as the new value of the encrypted " "password." @@ -5763,31 +5933,31 @@ msgstr "" "krypterade lösenordet." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 #, fuzzy #| msgid "pw_gid" msgid "pw_uid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 msgid "" "If the field is empty, a new (unused) UID will be defined automatically by " "<_:command-1/>." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 msgid "" "If this field contains the name of an existing user (or the name of a user " "created before by <_:command-1/>), the UID of the specified user will be " @@ -5795,24 +5965,24 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "" "If the UID of an existing user is changed, the files ownership of the user's " "file should be fixed manually." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 msgid "" "If this field contains the name of an existing group (or a group created " "before by <_:command-1/>), the GID of this group will be used as the primary " @@ -5820,7 +5990,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "" "If this field is a number, this number will be used as the primary group ID " "of the user. If no groups exist with this GID, a new group will be created " @@ -5828,7 +5998,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 msgid "" "If this field is empty, a new group will be created with the name of the " "user and a GID will be automatically defined by <_:command-1/> to be used as " @@ -5836,7 +6006,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 msgid "" "If this field contains the name of a group which does not exist (and was not " "created before by <_:command-1/>), a new group will be created with the " @@ -5845,32 +6015,32 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "pw_dir" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "" #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "" "If this field does not specify an existing directory, the specified " "directory is created, with ownership set to the user being created or " @@ -5883,7 +6053,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 msgid "" "If the home directory of an existing user is changed, <_:command-1/> does " "not move or copy the content of the old directory to the new location. This " @@ -5891,19 +6061,19 @@ msgid "" msgstr "" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:218 +#: newusers.8.xml.out:220 msgid "pw_shell" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:221 +#: newusers.8.xml.out:223 msgid "" "This field defines the shell of the user. No checks are performed on this " "field." msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:229 +#: newusers.8.xml.out:231 msgid "" "<_:command-1/> first tries to create or change all the specified users, and " "then write these changes to the user or group databases. If an error occurs " @@ -5912,7 +6082,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "" "During this first pass, users are created with a locked password (and " "passwords are not changed for the users which are not created). A second " @@ -5921,7 +6091,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "" "This command is intended to be used in a large system environment where many " "accounts are updated at a single time." @@ -5930,48 +6100,55 @@ msgstr "" "uppdateras på samma gång." #. (itstool) path: term/option -#: newusers.8.xml.out:257 pwck.8.xml.out:164 useradd.8.xml.out:108 +#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 #: usermod.8.xml.out:89 msgid "--badname" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 pwck.8.xml.out:167 useradd.8.xml.out:111 +#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 #: usermod.8.xml.out:92 msgid "Allow names that do not conform to standards." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "" +"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " +"support these methods." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 useradd.8.xml.out:461 msgid "Create a system account." msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:319 -#: useradd.8.xml.out:468 useradd.8.xml.out:538 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 +#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 msgid "UID_MIN" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:321 -#: useradd.8.xml.out:468 useradd.8.xml.out:543 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 +#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 msgid "UID_MAX" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 useradd.8.xml.out:462 +#: newusers.8.xml.out:295 useradd.8.xml.out:464 msgid "" "System users will be created with no aging information in <_:filename-1/>, " "and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> " @@ -5979,15 +6156,36 @@ msgid "" "(and their <_:option-7/> counterparts for the creation of groups)." msgstr "" +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default is 13." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default is 5000." +msgstr "" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default is 5." +msgstr "" + #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "" "The input file must be protected since it contains unencrypted passwords." msgstr "" "Inmatningsfilen måste skyddas eftersom den innehåller okrypterade lösenord." #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 #, fuzzy #| msgid "/etc/passwd" msgid "/etc/pam.d/newusers" @@ -5995,51 +6193,51 @@ msgstr "/etc/passwd" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 useradd.8.xml.out:222 useradd.8.xml.out:481 -#: useradd.8.xml.out:785 userdel.8.xml.out:215 usermod.8.xml.out:587 +#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 +#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subgid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 useradd.8.xml.out:787 userdel.8.xml.out:217 +#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 useradd.8.xml.out:222 useradd.8.xml.out:480 -#: useradd.8.xml.out:791 userdel.8.xml.out:221 usermod.8.xml.out:593 +#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 +#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subuid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 useradd.8.xml.out:793 userdel.8.xml.out:223 +#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 useradd.8.xml.out:906 userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 +#: usermod.8.xml.out:650 #, fuzzy #| msgid "/etc/suauth" msgid "subgid" msgstr "/etc/suauth" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 useradd.8.xml.out:909 userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 +#: usermod.8.xml.out:653 #, fuzzy #| msgid "/etc/suauth" msgid "subuid" msgstr "/etc/suauth" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 useradd.8.xml.out:904 userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "" @@ -6090,12 +6288,12 @@ msgid "The <_:command-1/> command appeared in BSD 4.4." msgstr "Kommandot <command>nologin</command> dök upp i BSD 4.4." #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "ändra användarlösenord" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 #, fuzzy msgid "" "The <_:command-1/> command changes passwords for user accounts. A normal " @@ -6111,12 +6309,12 @@ msgstr "" "lösenordet och intervall." #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "Lösenordsändringar" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 #, fuzzy msgid "" "The user is first prompted for their old password, if one is present. This " @@ -6131,7 +6329,7 @@ msgstr "" "ändras." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 #, fuzzy #| msgid "" #| "After the password has been entered, password aging information is " @@ -6149,7 +6347,7 @@ msgstr "" "och avslutas." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "" "The user is then prompted twice for a replacement password. The second entry " "is compared against the first and both are required to match in order for " @@ -6160,59 +6358,25 @@ msgstr "" "lösenordet ska ändras." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 -msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" -msgstr "" -"Sedan testas lösenordet för sin komplexitet. Som en allmän riktlinje bör " -"lösenord innehålla 6 till 8 tecken och inkluderas ett eller flera tecken " -"från var och en av följande punkter:" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "gemena bokstäver ur alfabetet" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "siffrorna 0 till 9" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "skiljetecken" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 -#, fuzzy -#| msgid "" -#| "Care must be taken not to include the system default erase or kill " -#| "characters. <command>passwd</command> will reject any password which is " -#| "not suitably complex." +#: passwd.1.xml.out:98 msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. <_:command-1/> will reject any password which is not suitably " -"complex." +"Then, the password is tested for complexity. <_:command-1/> will reject any " +"password which is not suitably complex. Care must be taken not to include " +"the system default erase or kill characters." msgstr "" -"Tänk på att inte inkludera systemets standardtecken för radering eller döda. " -"<command>passwd</command> kommer att neka alla lösenord som inte har lämplig " -"komplexitet." #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "Tips för användarlösenord" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 #, fuzzy #| msgid "" #| "The security of a password depends upon the strength of the encryption " @@ -6233,7 +6397,7 @@ msgstr "" "beroende på slumpmässigheten för det valda lösenordet." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "" "Compromises in password security normally result from careless password " "selection or handling. For this reason, you should not select a password " @@ -6248,14 +6412,26 @@ msgstr "" "gatuadress. Dessa kan användas som gissningar för att ta sig in i systemet." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "" +"As a general guideline, passwords should be long and random. It's fine to " +"use simple character sets, such as passwords consisting only of lowercase " +"letters, if that helps memorizing longer passwords. For a password " +"consisting only of lowercase English letters randomly chosen, and a length " +"of 32, there are 26^32 (approximately 2^150) different possible " +"combinations. Being an exponential equation, it's apparent that the exponent " +"(the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 msgid "" "You can find advice on how to choose a strong password on http://en." "wikipedia.org/wiki/Password_strength" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 #, fuzzy #| msgid "" #| "This option can be used only with <option>-S</option> and causes show " @@ -6268,7 +6444,7 @@ msgstr "" "visas för alla användare." #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "" "Delete a user's password (make it empty). This is a quick way to disable a " "password for an account. It will set the named account passwordless." @@ -6278,14 +6454,14 @@ msgstr "" "angivna kontots lösenord." #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 #, fuzzy #| msgid "expiry" msgid "--expire" msgstr "expiry" #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 msgid "" "Immediately expire an account's password. This in effect can force a user to " "change their password at the user's next login." @@ -6294,7 +6470,7 @@ msgstr "" "användare att ändra sitt lösenord vid nästa inloggningsförsök." #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 #, fuzzy #| msgid "" #| "This option is used to disable an account after the password has been " @@ -6314,19 +6490,19 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 useradd.8.xml.out:278 useradd.8.xml.out:356 +#: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 #, fuzzy #| msgid "-" msgid "-k" msgstr "-" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 #, fuzzy msgid "" "Indicate password change should be performed only for expired authentication " @@ -6338,12 +6514,12 @@ msgstr "" "lösenord som tidigare." #. (itstool) path: term/option -#: passwd.1.xml.out:222 usermod.8.xml.out:231 +#: passwd.1.xml.out:218 usermod.8.xml.out:231 msgid "--lock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 #, fuzzy msgid "" "Lock the password of the named account. This option disables a password by " @@ -6354,12 +6530,12 @@ msgstr "" "lösenordet till ett värde som inte matchar något möjligt krypterat värde." #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 msgid "" "Note that this does not disable the account. The user may still be able to " "login using another authentication token (e.g. an SSH key). To disable the " @@ -6368,51 +6544,51 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "-q" msgstr "-q" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "--quiet" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 vipw.8.xml.out:110 +#: passwd.1.xml.out:257 vipw.8.xml.out:110 msgid "Quiet mode." msgstr "Tyst läge." #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: passwd.1.xml.out:268 passwd.1.xml.out:272 +#: passwd.1.xml.out:264 passwd.1.xml.out:268 #, fuzzy #| msgid "HYSTORY" msgid "REPOSITORY" msgstr "HISTORIK" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 #, fuzzy msgid "change password in <_:replaceable-1/> repository" msgstr "ändra lösenord i förrådet <replaceable>FÖRRÅD</replaceable>" #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 #, fuzzy #| msgid "" #| "Display account status information. The status information consists of 7 " @@ -6440,12 +6616,12 @@ msgstr "" "dagar." #. (itstool) path: term/option -#: passwd.1.xml.out:309 usermod.8.xml.out:405 +#: passwd.1.xml.out:320 usermod.8.xml.out:405 msgid "--unlock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 #, fuzzy msgid "" "Unlock the password of the named account. This option re-enables a password " @@ -6457,7 +6633,7 @@ msgstr "" "flaggan <option>-l</option>)." #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 #, fuzzy #| msgid "" #| "Set the number of days of warning before a password change is required. " @@ -6474,14 +6650,14 @@ msgstr "" "varnas om att lösenordet är på väg att bli utgånget." #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 #, fuzzy #| msgid "-" msgid "-x" msgstr "-" #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 #, fuzzy #| msgid "" #| "Set the maximum number of days a password remains valid. After " @@ -6494,8 +6670,20 @@ msgstr "" "Sätter maximalt antal dagar som ett lösenord ska vara giltigt. Efter " "<replaceable>MAX_DAGAR</replaceable> krävs det att lösenordet ändras." +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "" +"This option is used to indicate that passwd should read the new password " +"from standard input, which can be a pipe." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 #, fuzzy #| msgid "" #| "Not all options may be supported. Password complexity checking may vary " @@ -6514,54 +6702,68 @@ msgstr "" "inte är inloggade mot NIS-servern." #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "" "Users may not be able to change their password on a system if NIS is enabled " "and they are not logged into the NIS server." msgstr "" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 msgid "" "<_:command-1/> uses PAM to authenticate users and to change their passwords." msgstr "" #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 #, fuzzy #| msgid "/etc/passwd" msgid "/etc/pam.d/passwd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "ogiltig kombination av flaggor" #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "oväntat fel, ingenting har genomförts" #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 #, fuzzy #| msgid "unexpected failure, <filename>passwd</filename> file missing" msgid "unexpected failure, <_:filename-1/> file missing" msgstr "oväntat fel, filen <filename>passwd</filename> saknas" #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 #, fuzzy #| msgid "<filename>passwd</filename> file busy, try again" msgid "<_:filename-1/> file busy, try again" msgstr "Filen <filename>passwd</filename> är upptagen, försök igen" +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +#, fuzzy +#| msgid "passwd" +msgid "makepasswd" +msgstr "passwd" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 +#: passwd.1.xml.out:494 msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:517 +msgid "" +"The following web page comically (yet correctly) compares the strength of " +"two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -8177,6 +8379,11 @@ msgstr "" msgid "$HZ" msgstr "" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -8556,7 +8763,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:583 useradd.8.xml.out:585 +#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 msgid "-D" msgstr "-D" @@ -8578,14 +8785,14 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:592 +#: useradd.8.xml.out:118 useradd.8.xml.out:612 msgid "--base-dir" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:592 useradd.8.xml.out:598 +#: useradd.8.xml.out:612 useradd.8.xml.out:618 #, fuzzy #| msgid "MAIL_DIR" msgid "BASE_DIR" @@ -8609,18 +8816,18 @@ msgid "" msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:603 +#: useradd.8.xml.out:131 useradd.8.xml.out:623 msgid "HOME" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename #: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:293 useradd.8.xml.out:343 -#: useradd.8.xml.out:393 useradd.8.xml.out:523 useradd.8.xml.out:604 -#: useradd.8.xml.out:616 useradd.8.xml.out:633 useradd.8.xml.out:649 -#: useradd.8.xml.out:663 useradd.8.xml.out:677 useradd.8.xml.out:767 -#: usermod.8.xml.out:419 +#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 +#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 +#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 +#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 +#: useradd.8.xml.out:787 usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "/etc/default/useradd" @@ -8697,7 +8904,7 @@ msgid "" msgstr "Datumet när användarkontot blir inaktiverat." #. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:615 usermod.8.xml.out:418 +#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 msgid "EXPIRE" msgstr "" @@ -8728,7 +8935,7 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:482 +#: useradd.8.xml.out:218 useradd.8.xml.out:484 #, fuzzy #| msgid "-" msgid "-F" @@ -8820,6 +9027,13 @@ msgid "" "emphasis-5/>]]]" msgstr "" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +#, fuzzy +#| msgid "GROUP" +msgid "GROUPS" +msgstr "GRUPP" + #. (itstool) path: listitem/para #: useradd.8.xml.out:260 msgid "" @@ -8827,23 +9041,25 @@ msgid "" "group is separated from the next by a comma, with no intervening whitespace. " "The groups are subject to the same restrictions as the group given with the " "<_:option-1/> option. The default is for the user to belong only to the " -"initial group." +"initial group. In addition to passing in the -G flag, you can add the option " +"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " +"to those supplementary groups." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 #, fuzzy #| msgid "MAIL_DIR" msgid "SKEL_DIR" msgstr "MAIL_DIR" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 msgid "" "The skeleton directory, which contains files and directories to be copied in " "the user's home directory, when the home directory is created by <_:" @@ -8852,12 +9068,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 useradd.8.xml.out:350 +#: useradd.8.xml.out:290 useradd.8.xml.out:352 msgid "--create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 #, fuzzy #| msgid "<option>-m</option>, <option>--create-home</option>" msgid "" @@ -8866,43 +9082,43 @@ msgid "" msgstr "<option>-m</option>, <option>--create-home</option>" #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 #, fuzzy #| msgid "/etc/skel/" msgid "/etc/skel" msgstr "/etc/skel/" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 msgid "" "If this option is not set, the skeleton directory is defined by the <_:" "option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "" "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" "option-4/>, <_:option-5/> and others)." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "" "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " "when creating an account to turn off password aging. Multiple <_:option-4/> " @@ -8911,29 +9127,29 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 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 "" #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "" "If this option is not specified, <_:command-1/> will also consult the " "variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " @@ -8941,7 +9157,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 msgid "" "Create the user's home directory if it does not exist. The files and " "directories contained in the skeleton directory (which can be defined with " @@ -8949,19 +9165,19 @@ msgid "" msgstr "" #. (itstool) path: para/option -#: useradd.8.xml.out:361 useradd.8.xml.out:379 useradd.8.xml.out:475 +#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 msgid "" "By default, if this option is not specified and <_:option-1/> is not " "enabled, no home directories are created." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "" "The directory where the user's home directory is created must exist and have " "proper SELinux context and permissions. Otherwise the user's home directory " @@ -8969,24 +9185,24 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 msgid "" "Do not create the user's home directory, even if the system wide setting " "from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 msgid "" "Do not create a group with the same name as the user, but add the user to " "the group specified by the <_:option-1/> option or by the <_:option-2/> " @@ -8994,12 +9210,12 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 msgid "allows the creation of an account with an already existing UID." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 usermod.8.xml.out:277 +#: useradd.8.xml.out:414 usermod.8.xml.out:277 msgid "" "This option is only valid in combination with the <_:option-1/> option. As a " "user identity serves as key to map between users on one hand and " @@ -9009,7 +9225,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "" "defines an initial password for the account. PASSWORD is expected to be " "encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " @@ -9017,7 +9233,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "" "Without this option, the new account will be locked and with no password " "defined, i.e. a single exclamation mark in the respective field of <_:" @@ -9026,14 +9242,14 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 msgid "" "<_:emphasis-1/>Avoid this option on the command line because the password " "(or encrypted password) will be visible by users listing the processes." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 msgid "" "Note that <_:command-1/> will not create a home directory for such a user, " "regardless of the default setting in <_:filename-2/> (<_:option-3/>). You " @@ -9042,7 +9258,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 msgid "" "Note that this option will not update <_:filename-1/> and <_:filename-2/>. " "You have to specify the <_:option-3/> options if you want to update the " @@ -9050,7 +9266,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 msgid "" "sets the path to the user's login shell. Without this option, the system " "will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " @@ -9059,19 +9275,19 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "--uid" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 #, fuzzy #| msgid "GID" msgid "UID" msgstr "GID" #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 msgid "" "The numerical value of the user's ID. This value must be unique, unless the " "<_:option-1/> option is used. The value must be non-negative. The default is " @@ -9080,54 +9296,76 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "" "Create a group with the same name as the user, and add the user to this " "group." msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:525 #, fuzzy #| msgid "-" msgid "-Z" msgstr "-" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:594 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:526 msgid "--selinux-user" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 usermod.8.xml.out:501 +#: useradd.8.xml.out:568 usermod.8.xml.out:501 msgid "SEUSER" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 useradd.8.xml.out:589 usermod.8.xml.out:521 msgid "semanage" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 +#: useradd.8.xml.out:571 msgid "" -"defines the SELinux user for the new account. Without this option, a SELinux " +"defines the SELinux user for the new account. Without this option, SELinux " "uses the default user. Note that the shadow system doesn't store the selinux-" "user, it uses <_:citerefentry-1/> for that." msgstr "" +#. (itstool) path: term/option +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "--selinux-range" +msgstr "" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "SERANGE" +msgstr "" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +msgid "" +"defines the SELinux MLS range for the new account. Without this option, " +"SELinux uses the default range. Note that the shadow system doesn't store " +"the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "Ändrar standardvärden" #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 msgid "" "When invoked with only the <_:option-1/> option, <_:command-2/> will display " "the current default values. When invoked with <_:option-3/> plus other " @@ -9136,7 +9374,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 msgid "" "sets the path prefix for a new user's home directory. The user's name will " "be affixed to the end of <_:replaceable-1/> to form the new user's home " @@ -9145,20 +9383,20 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 msgid "This option sets the <_:option-1/> variable in <_:filename-2/>." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 #, fuzzy #| msgid "The date on which the user account is disabled." msgid "sets the date on which newly created user accounts are disabled." msgstr "Datumet när användarkontot blir inaktiverat." #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -9166,7 +9404,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "" "sets the default primary group for newly created users, accepting group " "names or a numerical group ID. The named group must exist, and the GID must " @@ -9174,23 +9412,23 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "NOTERINGAR" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 #, fuzzy #| msgid "" #| "The system administrator is responsible for placing the default user " @@ -9204,7 +9442,7 @@ msgstr "" "katalogen <filename>/etc/skel/</filename>." #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 #, fuzzy msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " @@ -9214,19 +9452,19 @@ msgstr "" "genomföras på NIS-servern." #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 msgid "" "Similarly, if the username already exists in an external user database such " "as NIS or LDAP, <_:command-1/> will deny the user account creation request." msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -9237,60 +9475,60 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "Standardvärden för skapande av konto." #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #, fuzzy #| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/default/useradd" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 #, fuzzy #| msgid "OPTIONS" msgid "ACTION" msgstr "FLAGGOR" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-pre.d" msgstr "useradd" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-post.d" msgstr "useradd" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -9300,48 +9538,48 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "Katalog som innehåller standardfiler." #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "kan inte uppdatera lösenordsfilen" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 #, fuzzy #| msgid "UID already in use (and no <option>-o</option>)" msgid "UID already in use (and no <_:option-1/>)" msgstr "UID används redan (och inget <option>-o</option>)" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "group name already in use" msgid "username or group name already in use" msgstr "gruppnamnet används redan" #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "kan inte skapa hemkatalog" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 #, fuzzy #| msgid "1" msgid "14" msgstr "1" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -10008,9 +10246,16 @@ msgid "" "shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 +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-1/> " @@ -10019,67 +10264,67 @@ msgid "" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 msgid "" "You must change the owner of any <_:command-1/> files or <_:command-2/> jobs " "manually." msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 #, fuzzy #| msgid "Group account information." msgid "Group account information" msgstr "Gruppkontoinformation." #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 +#: usermod.8.xml.out:582 #, fuzzy #| msgid "Secure group account information." -msgid "Secure group account informatio." +msgid "Secure group account information" msgstr "Säker gruppkontoinformation." #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 msgid "Shadow password suite configuration" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 #, fuzzy #| msgid "User account information." msgid "User account information" msgstr "Användarkontoinformation." #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 #, fuzzy #| msgid "Secure user account information." msgid "Secure user account information" msgstr "Säker användarkontoinformation." #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -10123,7 +10368,7 @@ msgstr "vipw" #: vipw.8.xml.out:66 #, fuzzy msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -11318,6 +11563,33 @@ msgstr "" #~ "<citerefentry><refentrytitle>userdel</refentrytitle><manvolnum>8</" #~ "manvolnum></citerefentry>." +#~ msgid "" +#~ "Then, the password is tested for complexity. As a general guideline, " +#~ "passwords should consist of 6 to 8 characters including one or more " +#~ "characters from each of the following sets:" +#~ msgstr "" +#~ "Sedan testas lösenordet för sin komplexitet. Som en allmän riktlinje bör " +#~ "lösenord innehålla 6 till 8 tecken och inkluderas ett eller flera tecken " +#~ "från var och en av följande punkter:" + +#~ msgid "lower case alphabetics" +#~ msgstr "gemena bokstäver ur alfabetet" + +#~ msgid "digits 0 thru 9" +#~ msgstr "siffrorna 0 till 9" + +#~ msgid "punctuation marks" +#~ msgstr "skiljetecken" + +#~ msgid "" +#~ "Care must be taken not to include the system default erase or kill " +#~ "characters. <command>passwd</command> will reject any password which is " +#~ "not suitably complex." +#~ msgstr "" +#~ "Tänk på att inte inkludera systemets standardtecken för radering eller " +#~ "döda. <command>passwd</command> kommer att neka alla lösenord som inte " +#~ "har lämplig komplexitet." + #~ msgid "<option>-d</option>, <option>--delete</option>" #~ msgstr "<option>-d</option>, <option>--delete</option>" @@ -12835,9 +13107,6 @@ msgstr "" #~ "<citerefentry><refentrytitle>newgrp</refentrytitle><manvolnum>5</" #~ "manvolnum></citerefentry>." -#~ msgid "-K <placeholder-1/>=<placeholder-2/>" -#~ msgstr "-K <placeholder-1/>=<placeholder-2/>" - #, fuzzy #~ msgid "<option>-M</option> <replaceable>user</replaceable>,..." #~ msgstr "" diff --git a/man/po/uk.po b/man/po/uk.po index d0fe0d8..307245f 100644 --- a/man/po/uk.po +++ b/man/po/uk.po @@ -5,7 +5,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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-03-14 18:23-0500\n" "PO-Revision-Date: 2022-05-21 20:43+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n" @@ -18,12 +18,12 @@ msgstr "" "X-Generator: Lokalize 20.12.0\n" #. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 #: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 #: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 #: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 #: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 #: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 #: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 @@ -31,12 +31,12 @@ msgid "Julianne Frances" msgstr "Julianne Frances" #. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 #: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 #: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 #: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 #: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 #: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 #: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 @@ -49,14 +49,14 @@ msgid "Creation, 1990" msgstr "Створення, 1990" #. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 #: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 #: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 #: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 #: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 #: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 @@ -65,14 +65,14 @@ msgid "Thomas" msgstr "Thomas" #. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 #: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 #: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 #: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 #: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 #: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 @@ -81,14 +81,14 @@ msgid "Kłoczko" msgstr "Kłoczko" #. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 #: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 #: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 #: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 #: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 #: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 @@ -97,14 +97,14 @@ msgid "kloczek@pld.org.pl" msgstr "kloczek@pld.org.pl" #. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 #: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 #: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 -#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 +#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 #: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 #: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 #: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 @@ -113,15 +113,15 @@ msgid "shadow-utils maintainer, 2000 - 2007" msgstr "Супровідник shadow-utils, 2000 - 2007" #. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 #: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 #: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 -#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 +#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 #: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 #: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 #: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 @@ -130,15 +130,15 @@ msgid "Nicolas" msgstr "Nicolas" #. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 #: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 #: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 -#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 +#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 #: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 #: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 #: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 @@ -147,15 +147,15 @@ msgid "François" msgstr "François" #. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 #: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 #: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 -#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 +#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 #: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 #: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 #: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 @@ -164,15 +164,15 @@ msgid "nicolas.francois@centraliens.net" msgstr "nicolas.francois@centraliens.net" #. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 #: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 #: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 -#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 +#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 #: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 #: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 #: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 @@ -187,9 +187,9 @@ msgstr "Супровідник shadow-utils, 2007 - до сьогодні" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle #: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:216 chage.1.xml.out:226 -#: chage.1.xml.out:236 chage.1.xml.out:241 chage.1.xml.out:285 -#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 +#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 +#: login.defs.5.xml.out:237 shadow.5.xml.out:262 msgid "chage" msgstr "chage" @@ -197,11 +197,11 @@ msgstr "chage" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:294 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:217 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:37 chsh.1.xml.out:171 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 groupadd.8.xml.out:345 groupadd.8.xml.out:348 +#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 +#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 #: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 #: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 @@ -209,44 +209,44 @@ msgstr "chage" #: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 #: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 #: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:456 -#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:431 -#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 -#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 -#: pwck.8.xml.out:293 shadow.5.xml.out:262 shadow.5.xml.out:265 -#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 -#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 -#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 -#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:817 -#: useradd.8.xml.out:878 useradd.8.xml.out:881 useradd.8.xml.out:884 -#: userdel.8.xml.out:241 userdel.8.xml.out:310 userdel.8.xml.out:313 -#: userdel.8.xml.out:316 usermod.8.xml.out:105 usermod.8.xml.out:244 -#: usermod.8.xml.out:605 usermod.8.xml.out:608 usermod.8.xml.out:611 -#: vipw.8.xml.out:78 vipw.8.xml.out:205 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 +#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 +#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 +#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 +#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 +#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 +#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 +#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 +#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 +#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 +#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 +#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 +#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 +#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 msgid "1" msgstr "1" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 msgid "User Commands" msgstr "Команди користувача" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 #: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 #: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 -#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 +#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 #: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 #: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 #: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 @@ -255,20 +255,20 @@ msgid "shadow-utils" msgstr "shadow-utils" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 #: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 #: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 -#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 +#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 #: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 #: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 #: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 #: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -278,10 +278,10 @@ msgstr "зміна даних щодо завершення строку дії #. (itstool) path: arg/replaceable #. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 #: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:64 passwd.1.xml.out:55 +#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 #: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 #: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 #: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 @@ -294,22 +294,22 @@ msgstr "параметри" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis #: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 #: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 #: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 msgid "LOGIN" msgstr "ЗАПИС" #. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 #: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 #: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 -#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 +#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 #: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 #: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 #: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 @@ -330,12 +330,12 @@ msgstr "" #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:51 +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 #: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:250 passwd.1.xml.out:150 +#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 #: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 #: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 #: vipw.8.xml.out:83 @@ -343,21 +343,21 @@ msgid "OPTIONS" msgstr "ПАРАМЕТРИ" #. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:81 +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 -#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 +#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 #: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 msgid "The options which apply to the <_:command-1/> command are:" msgstr "Параметри, які застосовують до команди <_:command-1/>, є такими:" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:599 usermod.8.xml.out:112 usermod.8.xml.out:260 +#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 +#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 +#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 msgid "-d" msgstr "-d" @@ -375,44 +375,44 @@ msgstr "ОСТАННІЙ_ДЕНЬ" #. (itstool) path: varlistentry/term #: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 #: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 -#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 chsh.1.xml.out:83 chsh.1.xml.out:96 -#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 -#: faillog.8.xml.out:169 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 groupadd.8.xml.out:101 groupadd.8.xml.out:157 -#: groupadd.8.xml.out:200 groupadd.8.xml.out:213 groupdel.8.xml.out:88 -#: groupdel.8.xml.out:101 groupmems.8.xml.out:83 groupmems.8.xml.out:94 -#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 -#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 -#: groupmod.8.xml.out:163 groupmod.8.xml.out:176 grpck.8.xml.out:148 -#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 -#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:321 -#: passwd.1.xml.out:334 pwck.8.xml.out:196 pwconv.8.xml.out:177 -#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 -#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 -#: useradd.8.xml.out:195 useradd.8.xml.out:229 useradd.8.xml.out:277 -#: useradd.8.xml.out:424 useradd.8.xml.out:488 useradd.8.xml.out:501 -#: useradd.8.xml.out:516 useradd.8.xml.out:530 useradd.8.xml.out:565 -#: useradd.8.xml.out:591 useradd.8.xml.out:609 useradd.8.xml.out:621 -#: useradd.8.xml.out:638 useradd.8.xml.out:654 userdel.8.xml.out:122 -#: userdel.8.xml.out:135 usermod.8.xml.out:98 usermod.8.xml.out:111 -#: usermod.8.xml.out:128 usermod.8.xml.out:151 usermod.8.xml.out:173 -#: usermod.8.xml.out:216 usermod.8.xml.out:289 usermod.8.xml.out:327 -#: usermod.8.xml.out:340 usermod.8.xml.out:356 usermod.8.xml.out:368 -#: usermod.8.xml.out:500 vipw.8.xml.out:114 +#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 +#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 +#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 +#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 +#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 +#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 +#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 +#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 +#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 +#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 +#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 +#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 +#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 +#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 +#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 +#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 +#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 +#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 +#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 +#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 +#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 +#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 +#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 +#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 +#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 +#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" msgstr "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" #. (itstool) path: para/emphasis #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:288 groupadd.8.xml.out:303 +#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 passwd.1.xml.out:425 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:811 userdel.8.xml.out:235 +#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 +#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 msgid "0" msgstr "0" @@ -436,7 +436,7 @@ msgid "-E" msgstr "-E" #. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "--expiredate" @@ -444,7 +444,7 @@ msgstr "--expiredate" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:610 usermod.8.xml.out:129 usermod.8.xml.out:243 +#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 #: usermod.8.xml.out:416 msgid "EXPIRE_DATE" msgstr "ДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ" @@ -481,7 +481,7 @@ msgstr "chage -E $(date -d +180days +%Y-%m-%d)" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:344 useradd.8.xml.out:315 +#: passwd.1.xml.out:355 useradd.8.xml.out:317 msgid "-1" msgstr "-1" @@ -496,76 +496,76 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 #: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:271 +#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 #: userdel.8.xml.out:99 vipw.8.xml.out:96 msgid "-h" msgstr "-h" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 -#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:271 userdel.8.xml.out:99 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 +#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" msgstr "--help" #. (itstool) path: varlistentry/term #: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 -#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 #: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 groupadd.8.xml.out:87 groupadd.8.xml.out:118 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 #: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 #: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 #: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 #: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 #: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 -#: newusers.8.xml.out:320 passwd.1.xml.out:156 passwd.1.xml.out:167 -#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 -#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:290 -#: passwd.1.xml.out:308 pwck.8.xml.out:173 pwck.8.xml.out:179 -#: pwck.8.xml.out:188 pwck.8.xml.out:209 pwconv.8.xml.out:171 -#: useradd.8.xml.out:168 useradd.8.xml.out:217 useradd.8.xml.out:271 -#: useradd.8.xml.out:330 useradd.8.xml.out:349 useradd.8.xml.out:372 -#: useradd.8.xml.out:385 useradd.8.xml.out:404 useradd.8.xml.out:455 -#: useradd.8.xml.out:548 userdel.8.xml.out:75 userdel.8.xml.out:99 -#: userdel.8.xml.out:105 userdel.8.xml.out:152 usermod.8.xml.out:77 -#: usermod.8.xml.out:88 usermod.8.xml.out:230 usermod.8.xml.out:249 -#: usermod.8.xml.out:270 usermod.8.xml.out:316 usermod.8.xml.out:404 -#: vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 -#: vipw.8.xml.out:127 vipw.8.xml.out:133 +#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 +#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 +#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 +#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 +#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 +#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 +#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 +#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 +#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 +#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 +#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 +#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 +#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 +#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 +#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 msgid "<_:option-1/>, <_:option-2/>" msgstr "<_:option-1/>, <_:option-2/>" #. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:120 +#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 -#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 +#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." msgstr "Показати довідкове повідомлення і завершити роботу." #. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:197 +#: chage.1.xml.out:121 passwd.1.xml.out:193 msgid "-i" msgstr "-i" @@ -585,8 +585,8 @@ msgid "-I" msgstr "-I" #. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 usermod.8.xml.out:152 +#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 +#: useradd.8.xml.out:642 usermod.8.xml.out:152 msgid "--inactive" msgstr "--inactive" @@ -594,8 +594,8 @@ msgstr "--inactive" #. (itstool) path: para/replaceable #. (itstool) path: para/option #: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:622 useradd.8.xml.out:632 +#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 +#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "НЕАКТИВНИЙ" @@ -626,10 +626,10 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:242 faillog.8.xml.out:88 +#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 #: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 -#: passwd.1.xml.out:316 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:330 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 +#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "-l" @@ -646,29 +646,29 @@ msgstr "Показати відомості щодо застарівання о #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:287 useradd.8.xml.out:350 useradd.8.xml.out:476 +#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 msgid "-m" msgstr "-m" #. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:246 +#: chage.1.xml.out:157 passwd.1.xml.out:242 msgid "--mindays" msgstr "--mindays" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "ДНІ" #. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:249 +#: chage.1.xml.out:160 passwd.1.xml.out:245 msgid "" "Set the minimum number of days between password changes to <_:replaceable-1/" ">. A value of zero for this field indicates that the user may change their " @@ -680,26 +680,26 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 useradd.8.xml.out:162 useradd.8.xml.out:373 +#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 msgid "-M" msgstr "-M" #. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:335 +#: chage.1.xml.out:169 passwd.1.xml.out:346 msgid "--maxdays" msgstr "--maxdays" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:335 passwd.1.xml.out:340 passwd.1.xml.out:345 +#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "МАКСИМАЛЬНО_ДНІВ" #. (itstool) path: para/option #. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:203 usermod.8.xml.out:481 +#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 msgid "-W" msgstr "-W" @@ -720,7 +720,7 @@ msgstr "" "система заздалегідь попереджуватиме користувача про потребу змінити пароль." #. (itstool) path: listitem/para -#: chage.1.xml.out:181 passwd.1.xml.out:343 +#: chage.1.xml.out:181 passwd.1.xml.out:354 msgid "" "Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove " "checking a password's validity." @@ -729,23 +729,23 @@ msgstr "" "вилучення перевірки чинності паролів." #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:189 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:191 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "-R" msgstr "-R" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:158 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:160 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "--root" msgstr "--root" @@ -754,22 +754,22 @@ msgstr "--root" #. (itstool) path: para/replaceable #: chage.1.xml.out:190 chage.1.xml.out:194 chage.1.xml.out:196 #: chfn.1.xml.out:130 chfn.1.xml.out:134 chfn.1.xml.out:136 -#: chgpasswd.8.xml.out:123 chgpasswd.8.xml.out:127 chgpasswd.8.xml.out:129 -#: chpasswd.8.xml.out:165 chpasswd.8.xml.out:169 chpasswd.8.xml.out:171 +#: chgpasswd.8.xml.out:129 chgpasswd.8.xml.out:133 chgpasswd.8.xml.out:135 +#: chpasswd.8.xml.out:171 chpasswd.8.xml.out:175 chpasswd.8.xml.out:177 #: chsh.1.xml.out:84 chsh.1.xml.out:88 chsh.1.xml.out:90 faillog.8.xml.out:157 -#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:158 -#: gpasswd.1.xml.out:162 gpasswd.1.xml.out:164 groupadd.8.xml.out:201 +#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:160 +#: gpasswd.1.xml.out:164 gpasswd.1.xml.out:166 groupadd.8.xml.out:201 #: groupadd.8.xml.out:205 groupadd.8.xml.out:207 groupdel.8.xml.out:89 #: groupdel.8.xml.out:93 groupdel.8.xml.out:95 groupmems.8.xml.out:142 #: groupmems.8.xml.out:146 groupmems.8.xml.out:148 groupmod.8.xml.out:164 #: groupmod.8.xml.out:168 groupmod.8.xml.out:170 grpck.8.xml.out:149 #: grpck.8.xml.out:153 grpck.8.xml.out:155 lastlog.8.xml.out:104 -#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:306 -#: newusers.8.xml.out:310 newusers.8.xml.out:312 passwd.1.xml.out:278 -#: passwd.1.xml.out:282 passwd.1.xml.out:284 pwck.8.xml.out:197 +#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:308 +#: newusers.8.xml.out:312 newusers.8.xml.out:314 passwd.1.xml.out:274 +#: passwd.1.xml.out:278 passwd.1.xml.out:280 pwck.8.xml.out:197 #: pwck.8.xml.out:201 pwck.8.xml.out:203 pwconv.8.xml.out:178 -#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:489 -#: useradd.8.xml.out:493 useradd.8.xml.out:495 userdel.8.xml.out:123 +#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:491 +#: useradd.8.xml.out:495 useradd.8.xml.out:497 userdel.8.xml.out:123 #: userdel.8.xml.out:127 userdel.8.xml.out:129 usermod.8.xml.out:328 #: usermod.8.xml.out:332 usermod.8.xml.out:334 vipw.8.xml.out:115 #: vipw.8.xml.out:119 vipw.8.xml.out:121 @@ -777,12 +777,12 @@ msgid "CHROOT_DIR" msgstr "КАТАЛОГ_CHROOT" #. (itstool) path: listitem/para -#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:126 -#: chpasswd.8.xml.out:168 chsh.1.xml.out:87 faillog.8.xml.out:160 -#: gpasswd.1.xml.out:161 groupadd.8.xml.out:204 groupdel.8.xml.out:92 +#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:132 +#: chpasswd.8.xml.out:174 chsh.1.xml.out:87 faillog.8.xml.out:160 +#: gpasswd.1.xml.out:163 groupadd.8.xml.out:204 groupdel.8.xml.out:92 #: groupmems.8.xml.out:145 groupmod.8.xml.out:167 grpck.8.xml.out:152 -#: lastlog.8.xml.out:107 newusers.8.xml.out:309 passwd.1.xml.out:281 -#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:492 +#: lastlog.8.xml.out:107 newusers.8.xml.out:311 passwd.1.xml.out:277 +#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:494 #: userdel.8.xml.out:126 usermod.8.xml.out:331 vipw.8.xml.out:118 #, fuzzy #| msgid "" @@ -797,19 +797,62 @@ msgstr "" "налаштувань з каталогу <_:replaceable-2/>." #. (itstool) path: term/option -#: chage.1.xml.out:203 passwd.1.xml.out:322 +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "-P" +msgstr "-P" + +#. (itstool) path: term/option +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "--prefix" +msgstr "--prefix" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:203 chage.1.xml.out:208 chpasswd.8.xml.out:184 +#: chpasswd.8.xml.out:189 groupadd.8.xml.out:214 groupadd.8.xml.out:219 +#: groupdel.8.xml.out:102 groupdel.8.xml.out:106 groupdel.8.xml.out:108 +#: groupmod.8.xml.out:177 groupmod.8.xml.out:181 groupmod.8.xml.out:183 +#: passwd.1.xml.out:287 passwd.1.xml.out:292 useradd.8.xml.out:504 +#: useradd.8.xml.out:509 userdel.8.xml.out:136 userdel.8.xml.out:140 +#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 +msgid "PREFIX_DIR" +msgstr "КАТАЛОГ_ПРЕФІКСА" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:206 chpasswd.8.xml.out:187 groupadd.8.xml.out:217 +#: passwd.1.xml.out:290 useradd.8.xml.out:507 +msgid "" +"Apply changes to configuration files under the root filesystem found under " +"the directory <_:replaceable-1/>. 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." +msgstr "" +"Застосувати зміни до файлів налаштувань у кореневій файловій системі з " +"каталогу <_:replaceable-1/>. Використання цього параметра не змінює " +"кореневої теки. Параметр призначено лише для приготування цілі для " +"компіляції коду для іншої операційної системи. Обмеження: не буде виконано " +"перевірку користувачів/груп NIS і LDAP. При розпізнаванні у PAM буде " +"використано файли основної системи. Підтримки SELINUX не передбачено." + +#. (itstool) path: term/option +#: chage.1.xml.out:218 passwd.1.xml.out:333 msgid "--warndays" msgstr "--warndays" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:203 chage.1.xml.out:208 passwd.1.xml.out:322 -#: passwd.1.xml.out:327 +#: chage.1.xml.out:218 chage.1.xml.out:223 passwd.1.xml.out:333 +#: passwd.1.xml.out:338 msgid "WARN_DAYS" msgstr "ДНІ" #. (itstool) path: listitem/para -#: chage.1.xml.out:206 +#: chage.1.xml.out:221 msgid "" "Set the number of days of warning before a password change is required. The " "<_:replaceable-1/> option is the number of days prior to the password " @@ -821,12 +864,12 @@ msgstr "" "користувача про те, що пароль невдовзі доведеться змінити." #. (itstool) path: para/emphasis -#: chage.1.xml.out:220 chfn.1.xml.out:163 chsh.1.xml.out:112 +#: chage.1.xml.out:235 chfn.1.xml.out:163 chsh.1.xml.out:112 msgid "[ ]" msgstr "[ ]" #. (itstool) path: refsect1/para -#: chage.1.xml.out:215 +#: chage.1.xml.out:230 msgid "" "If none of the options are selected, <_:command-1/> operates in an " "interactive fashion, prompting the user with the current values for all of " @@ -841,13 +884,13 @@ msgstr "" "(<_:emphasis-2/>)." #. (itstool) path: refsect1/title -#: chage.1.xml.out:224 chsh.1.xml.out:117 groups.1.xml.out:65 +#: chage.1.xml.out:239 chsh.1.xml.out:117 groups.1.xml.out:65 #: lastlog.8.xml.out:170 msgid "NOTE" msgstr "ЗАУВАЖЕННЯ" #. (itstool) path: refsect1/para -#: chage.1.xml.out:225 +#: chage.1.xml.out:240 msgid "" "The <_:command-1/> program requires a shadow password file to be available." msgstr "" @@ -855,7 +898,7 @@ msgstr "" "паролів." #. (itstool) path: refsect1/para -#: chage.1.xml.out:229 +#: chage.1.xml.out:244 msgid "" "The chage program will report only the information from the shadow password " "file. This implies that configuration from other sources (e.g. LDAP or empty " @@ -873,7 +916,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: chage.1.xml.out:238 grpck.8.xml.out:294 login.defs.5.xml.out:410 +#: chage.1.xml.out:253 grpck.8.xml.out:294 login.defs.5.xml.out:429 #: passwd.5.xml.out:185 pwck.8.xml.out:40 pwck.8.xml.out:47 pwck.8.xml.out:53 #: pwck.8.xml.out:71 pwck.8.xml.out:147 pwck.8.xml.out:159 pwck.8.xml.out:191 #: pwck.8.xml.out:223 pwck.8.xml.out:284 pwconv.8.xml.out:197 @@ -882,7 +925,7 @@ msgid "pwck" msgstr "pwck" #. (itstool) path: refsect1/para -#: chage.1.xml.out:235 +#: chage.1.xml.out:250 msgid "" "The <_:command-1/> program will also not report any inconsistency between " "the shadow and passwd files (e.g. missing x in the passwd file). The <_:" @@ -894,7 +937,7 @@ msgstr "" "command-2/>." #. (itstool) path: refsect1/para -#: chage.1.xml.out:241 +#: chage.1.xml.out:256 msgid "" "The <_:command-1/> command is restricted to the root user, except for the <_:" "option-2/> option, which may be used by an unprivileged user to determine " @@ -906,52 +949,54 @@ msgstr "" "облікового запису." #. (itstool) path: refsect1/title -#: chage.1.xml.out:249 chfn.1.xml.out:170 chgpasswd.8.xml.out:175 -#: chpasswd.8.xml.out:216 chsh.1.xml.out:131 gpasswd.1.xml.out:241 +#: chage.1.xml.out:264 chfn.1.xml.out:170 chgpasswd.8.xml.out:201 +#: chpasswd.8.xml.out:256 chsh.1.xml.out:150 gpasswd.1.xml.out:243 #: groupadd.8.xml.out:247 groupdel.8.xml.out:133 groupmems.8.xml.out:176 #: groupmod.8.xml.out:212 grpck.8.xml.out:196 lastlog.8.xml.out:182 -#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:360 -#: passwd.1.xml.out:372 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 -#: su.1.xml.out:314 useradd.8.xml.out:710 userdel.8.xml.out:165 -#: usermod.8.xml.out:536 vipw.8.xml.out:142 +#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:381 +#: passwd.1.xml.out:394 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 +#: su.1.xml.out:314 useradd.8.xml.out:730 userdel.8.xml.out:165 +#: usermod.8.xml.out:553 vipw.8.xml.out:142 msgid "CONFIGURATION" msgstr "НАЛАШТУВАННЯ" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chage.1.xml.out:252 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 -#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:155 chgpasswd.8.xml.out:178 -#: chgpasswd.8.xml.out:205 chpasswd.8.xml.out:77 chpasswd.8.xml.out:134 -#: chpasswd.8.xml.out:200 chpasswd.8.xml.out:219 chpasswd.8.xml.out:247 -#: chsh.1.xml.out:134 chsh.1.xml.out:159 gpasswd.1.xml.out:244 -#: groupadd.8.xml.out:129 groupadd.8.xml.out:239 groupadd.8.xml.out:250 -#: groupadd.8.xml.out:276 groupdel.8.xml.out:136 groupmems.8.xml.out:179 -#: groupmod.8.xml.out:109 groupmod.8.xml.out:204 groupmod.8.xml.out:215 -#: groupmod.8.xml.out:239 grpck.8.xml.out:199 lastlog.8.xml.out:185 -#: login.1.xml.out:273 login.1.xml.out:365 login.access.5.xml.out:100 -#: login.defs.5.xml.out:116 login.defs.5.xml.out:515 newgrp.1.xml.out:88 -#: newusers.8.xml.out:340 newusers.8.xml.out:363 newusers.8.xml.out:423 -#: passwd.1.xml.out:375 passwd.1.xml.out:405 pwck.8.xml.out:243 +#: chage.1.xml.out:267 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 +#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:159 chgpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:177 chgpasswd.8.xml.out:204 chgpasswd.8.xml.out:233 +#: chpasswd.8.xml.out:79 chpasswd.8.xml.out:140 chpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:227 chpasswd.8.xml.out:236 chpasswd.8.xml.out:259 +#: chpasswd.8.xml.out:289 chsh.1.xml.out:153 chsh.1.xml.out:200 +#: gpasswd.1.xml.out:246 groupadd.8.xml.out:129 groupadd.8.xml.out:239 +#: groupadd.8.xml.out:250 groupadd.8.xml.out:276 groupdel.8.xml.out:136 +#: groupmems.8.xml.out:179 groupmod.8.xml.out:109 groupmod.8.xml.out:204 +#: groupmod.8.xml.out:215 groupmod.8.xml.out:239 grpck.8.xml.out:199 +#: lastlog.8.xml.out:185 login.1.xml.out:273 login.1.xml.out:365 +#: login.access.5.xml.out:100 login.defs.5.xml.out:118 login.defs.5.xml.out:534 +#: newgrp.1.xml.out:88 newusers.8.xml.out:340 newusers.8.xml.out:349 +#: newusers.8.xml.out:357 newusers.8.xml.out:384 newusers.8.xml.out:444 +#: passwd.1.xml.out:397 passwd.1.xml.out:427 pwck.8.xml.out:243 #: pwconv.8.xml.out:148 pwconv.8.xml.out:207 pwconv.8.xml.out:215 #: pwconv.8.xml.out:230 sg.1.xml.out:77 su.1.xml.out:109 su.1.xml.out:219 #: su.1.xml.out:277 su.1.xml.out:317 su.1.xml.out:357 useradd.8.xml.out:241 -#: useradd.8.xml.out:307 useradd.8.xml.out:378 useradd.8.xml.out:399 -#: useradd.8.xml.out:467 useradd.8.xml.out:474 useradd.8.xml.out:560 -#: useradd.8.xml.out:713 useradd.8.xml.out:797 userdel.8.xml.out:87 +#: useradd.8.xml.out:309 useradd.8.xml.out:380 useradd.8.xml.out:401 +#: useradd.8.xml.out:469 useradd.8.xml.out:476 useradd.8.xml.out:562 +#: useradd.8.xml.out:733 useradd.8.xml.out:817 userdel.8.xml.out:87 #: userdel.8.xml.out:168 userdel.8.xml.out:191 userdel.8.xml.out:297 -#: usermod.8.xml.out:399 usermod.8.xml.out:539 usermod.8.xml.out:569 +#: usermod.8.xml.out:399 usermod.8.xml.out:556 usermod.8.xml.out:586 #: vipw.8.xml.out:145 msgid "/etc/login.defs" msgstr "/etc/login.defs" #. (itstool) path: refsect1/para -#: chage.1.xml.out:250 chfn.1.xml.out:171 chgpasswd.8.xml.out:176 -#: chpasswd.8.xml.out:217 chsh.1.xml.out:132 gpasswd.1.xml.out:242 +#: chage.1.xml.out:265 chfn.1.xml.out:171 chgpasswd.8.xml.out:202 +#: chpasswd.8.xml.out:257 chsh.1.xml.out:151 gpasswd.1.xml.out:244 #: groupadd.8.xml.out:248 groupdel.8.xml.out:134 groupmems.8.xml.out:177 #: groupmod.8.xml.out:213 grpck.8.xml.out:197 lastlog.8.xml.out:183 -#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:361 -#: passwd.1.xml.out:373 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 -#: useradd.8.xml.out:711 userdel.8.xml.out:166 usermod.8.xml.out:537 +#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:382 +#: passwd.1.xml.out:395 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 +#: useradd.8.xml.out:731 userdel.8.xml.out:166 usermod.8.xml.out:554 #: vipw.8.xml.out:143 msgid "" "The following configuration variables in <_:filename-1/> change the behavior " @@ -961,126 +1006,126 @@ msgstr "" "інструмента:" #. (itstool) path: refsect1/title -#: chage.1.xml.out:261 chfn.1.xml.out:184 chgpasswd.8.xml.out:190 -#: chpasswd.8.xml.out:232 chsh.1.xml.out:144 expiry.1.xml.out:97 -#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:256 +#: chage.1.xml.out:276 chfn.1.xml.out:184 chgpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:274 chsh.1.xml.out:163 expiry.1.xml.out:97 +#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:258 #: groupadd.8.xml.out:261 groupdel.8.xml.out:145 groupmems.8.xml.out:188 #: groupmod.8.xml.out:224 groups.1.xml.out:77 grpck.8.xml.out:208 #: gshadow.5.xml.out:132 lastlog.8.xml.out:194 limits.5.xml.out:172 #: login.1.xml.out:314 login.access.5.xml.out:97 logoutd.8.xml.out:65 -#: newgrp.1.xml.out:97 newusers.8.xml.out:396 passwd.1.xml.out:390 +#: newgrp.1.xml.out:97 newusers.8.xml.out:417 passwd.1.xml.out:412 #: passwd.5.xml.out:139 porttime.5.xml.out:106 pwck.8.xml.out:258 #: pwconv.8.xml.out:227 shadow.3.xml.out:202 shadow.5.xml.out:231 -#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:740 -#: userdel.8.xml.out:182 usermod.8.xml.out:554 vipw.8.xml.out:172 +#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:760 +#: userdel.8.xml.out:182 usermod.8.xml.out:571 vipw.8.xml.out:172 msgid "FILES" msgstr "ФАЙЛИ" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:265 chfn.1.xml.out:193 chpasswd.8.xml.out:235 -#: chsh.1.xml.out:147 expiry.1.xml.out:100 groupmod.8.xml.out:245 +#: chage.1.xml.out:280 chfn.1.xml.out:193 chpasswd.8.xml.out:277 +#: chsh.1.xml.out:166 expiry.1.xml.out:100 groupmod.8.xml.out:245 #: grpck.8.xml.out:223 lastlog.8.xml.out:63 login.1.xml.out:145 #: login.1.xml.out:329 newgrp.1.xml.out:65 newgrp.1.xml.out:70 -#: newgrp.1.xml.out:100 newusers.8.xml.out:399 passwd.1.xml.out:393 +#: newgrp.1.xml.out:100 newusers.8.xml.out:420 passwd.1.xml.out:415 #: passwd.5.xml.out:47 passwd.5.xml.out:89 passwd.5.xml.out:142 #: pwck.8.xml.out:73 pwck.8.xml.out:145 pwck.8.xml.out:212 pwck.8.xml.out:224 #: pwck.8.xml.out:267 pwconv.8.xml.out:127 shadow.5.xml.out:234 sg.1.xml.out:89 -#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:524 -#: useradd.8.xml.out:743 userdel.8.xml.out:197 usermod.8.xml.out:103 -#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:575 +#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:526 +#: useradd.8.xml.out:763 userdel.8.xml.out:197 usermod.8.xml.out:103 +#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:592 #: vipw.8.xml.out:68 vipw.8.xml.out:187 msgid "/etc/passwd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: chage.1.xml.out:268 chfn.1.xml.out:195 chpasswd.8.xml.out:237 -#: chsh.1.xml.out:149 expiry.1.xml.out:102 groupmod.8.xml.out:247 +#: chage.1.xml.out:283 chfn.1.xml.out:195 chpasswd.8.xml.out:279 +#: chsh.1.xml.out:168 expiry.1.xml.out:102 groupmod.8.xml.out:247 #: grpck.8.xml.out:225 login.1.xml.out:331 newgrp.1.xml.out:102 -#: newusers.8.xml.out:401 passwd.1.xml.out:395 passwd.5.xml.out:144 +#: newusers.8.xml.out:422 passwd.1.xml.out:417 passwd.5.xml.out:144 #: pwck.8.xml.out:269 shadow.5.xml.out:236 sg.1.xml.out:91 su.1.xml.out:347 -#: useradd.8.xml.out:745 userdel.8.xml.out:199 vipw.8.xml.out:189 +#: useradd.8.xml.out:765 userdel.8.xml.out:199 vipw.8.xml.out:189 msgid "User account information." msgstr "Відомості щодо облікових записів користувача." #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:273 chpasswd.8.xml.out:241 expiry.1.xml.out:106 +#: chage.1.xml.out:288 chpasswd.8.xml.out:283 expiry.1.xml.out:106 #: login.1.xml.out:335 newgrp.1.xml.out:68 newgrp.1.xml.out:106 -#: newusers.8.xml.out:295 newusers.8.xml.out:405 passwd.1.xml.out:399 +#: newusers.8.xml.out:297 newusers.8.xml.out:426 passwd.1.xml.out:421 #: passwd.5.xml.out:82 passwd.5.xml.out:148 pwck.8.xml.out:73 #: pwck.8.xml.out:107 pwck.8.xml.out:213 pwck.8.xml.out:225 pwck.8.xml.out:273 #: pwconv.8.xml.out:128 pwconv.8.xml.out:149 shadow.3.xml.out:97 #: shadow.3.xml.out:173 shadow.3.xml.out:205 shadow.5.xml.out:78 -#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:439 -#: useradd.8.xml.out:464 useradd.8.xml.out:749 userdel.8.xml.out:203 +#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:441 +#: useradd.8.xml.out:466 useradd.8.xml.out:769 userdel.8.xml.out:203 #: usermod.8.xml.out:144 usermod.8.xml.out:145 usermod.8.xml.out:166 -#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:581 +#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:598 #: vipw.8.xml.out:71 vipw.8.xml.out:193 msgid "/etc/shadow" msgstr "/etc/shadow" #. (itstool) path: listitem/para -#: chage.1.xml.out:276 chpasswd.8.xml.out:243 expiry.1.xml.out:108 -#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:407 -#: passwd.1.xml.out:401 pwck.8.xml.out:275 shadow.3.xml.out:207 -#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:751 +#: chage.1.xml.out:291 chpasswd.8.xml.out:285 expiry.1.xml.out:108 +#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:428 +#: passwd.1.xml.out:423 pwck.8.xml.out:275 shadow.3.xml.out:207 +#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:771 #: userdel.8.xml.out:205 vipw.8.xml.out:195 msgid "Secure user account information." msgstr "Відомості щодо захищених облікових записів користувачів." #. (itstool) path: refsect1/title -#: chage.1.xml.out:283 groupadd.8.xml.out:298 groupdel.8.xml.out:163 -#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:420 -#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:806 +#: chage.1.xml.out:298 groupadd.8.xml.out:298 groupdel.8.xml.out:163 +#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:442 +#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:826 #: userdel.8.xml.out:230 msgid "EXIT VALUES" msgstr "ЗНАЧЕННЯ ВИХОДУ" #. (itstool) path: listitem/para -#: chage.1.xml.out:290 groupadd.8.xml.out:305 groupdel.8.xml.out:170 -#: grpck.8.xml.out:239 passwd.1.xml.out:427 pwck.8.xml.out:289 -#: useradd.8.xml.out:813 userdel.8.xml.out:237 +#: chage.1.xml.out:305 groupadd.8.xml.out:305 groupdel.8.xml.out:170 +#: grpck.8.xml.out:239 passwd.1.xml.out:449 pwck.8.xml.out:289 +#: useradd.8.xml.out:833 userdel.8.xml.out:237 msgid "success" msgstr "успіх" #. (itstool) path: listitem/para -#: chage.1.xml.out:296 passwd.1.xml.out:433 +#: chage.1.xml.out:311 passwd.1.xml.out:455 msgid "permission denied" msgstr "відмовлено у доступі" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum -#: chage.1.xml.out:300 groupadd.8.xml.out:309 groupdel.8.xml.out:174 +#: chage.1.xml.out:315 groupadd.8.xml.out:309 groupdel.8.xml.out:174 #: groupmod.8.xml.out:265 groups.1.xml.out:95 groups.1.xml.out:98 #: groups.1.xml.out:101 grpck.8.xml.out:249 limits.5.xml.out:90 #: limits.5.xml.out:101 limits.5.xml.out:188 limits.5.xml.out:191 -#: passwd.1.xml.out:437 pwck.8.xml.out:299 useradd.8.xml.out:823 +#: passwd.1.xml.out:459 pwck.8.xml.out:299 useradd.8.xml.out:843 #: userdel.8.xml.out:247 msgid "2" msgstr "2" #. (itstool) path: listitem/para -#: chage.1.xml.out:302 groupadd.8.xml.out:311 groupdel.8.xml.out:176 -#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:825 +#: chage.1.xml.out:317 groupadd.8.xml.out:311 groupdel.8.xml.out:176 +#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:845 #: userdel.8.xml.out:249 msgid "invalid command syntax" msgstr "некоректний синтаксис команди" #. (itstool) path: term/replaceable -#: chage.1.xml.out:306 +#: chage.1.xml.out:321 msgid "15" msgstr "15" #. (itstool) path: listitem/para -#: chage.1.xml.out:308 +#: chage.1.xml.out:323 msgid "can't find the shadow password file" msgstr "не вдалося знайти файл прихованих паролів" #. (itstool) path: refsect1/para -#: chage.1.xml.out:284 groupadd.8.xml.out:299 groupdel.8.xml.out:164 -#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:421 -#: pwck.8.xml.out:283 useradd.8.xml.out:807 userdel.8.xml.out:231 +#: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:164 +#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:443 +#: pwck.8.xml.out:283 useradd.8.xml.out:827 userdel.8.xml.out:231 msgid "" "The <_:command-1/> command exits with the following values: <_:" "variablelist-2/>" @@ -1089,18 +1134,18 @@ msgstr "" "variablelist-2/>" #. (itstool) path: refsect1/title -#: chage.1.xml.out:316 chfn.1.xml.out:202 chgpasswd.8.xml.out:214 -#: chpasswd.8.xml.out:262 chsh.1.xml.out:168 expiry.1.xml.out:115 -#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:274 +#: chage.1.xml.out:331 chfn.1.xml.out:202 chgpasswd.8.xml.out:242 +#: chpasswd.8.xml.out:304 chsh.1.xml.out:209 expiry.1.xml.out:115 +#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:276 #: groupadd.8.xml.out:343 groupdel.8.xml.out:202 groupmems.8.xml.out:206 #: groupmod.8.xml.out:323 groups.1.xml.out:89 grpck.8.xml.out:277 #: gshadow.5.xml.out:150 limits.5.xml.out:182 login.1.xml.out:374 -#: login.access.5.xml.out:109 login.defs.5.xml.out:527 newgrp.1.xml.out:127 -#: newusers.8.xml.out:450 nologin.8.xml.out:57 passwd.1.xml.out:471 +#: login.access.5.xml.out:109 login.defs.5.xml.out:546 newgrp.1.xml.out:127 +#: newusers.8.xml.out:471 nologin.8.xml.out:57 passwd.1.xml.out:493 #: passwd.5.xml.out:167 porttime.5.xml.out:118 pwck.8.xml.out:333 #: pwconv.8.xml.out:239 shadow.3.xml.out:214 shadow.5.xml.out:259 -#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:875 -#: userdel.8.xml.out:308 usermod.8.xml.out:602 vipw.8.xml.out:202 +#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:895 +#: userdel.8.xml.out:308 usermod.8.xml.out:619 vipw.8.xml.out:202 msgid "SEE ALSO" msgstr "ДИВ. ТАКОЖ" @@ -1113,53 +1158,53 @@ msgstr "ДИВ. ТАКОЖ" #. (itstool) path: para/command #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: chage.1.xml.out:319 chfn.1.xml.out:211 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:177 expiry.1.xml.out:118 groupadd.8.xml.out:351 +#: chage.1.xml.out:334 chfn.1.xml.out:211 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:218 expiry.1.xml.out:118 groupadd.8.xml.out:351 #: groupdel.8.xml.out:211 groupmems.8.xml.out:215 groupmod.8.xml.out:332 #: grpck.8.xml.out:291 lastlog.8.xml.out:176 login.1.xml.out:128 -#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:399 -#: login.defs.5.xml.out:516 login.defs.5.xml.out:533 login.defs.5.xml.out:539 -#: newusers.8.xml.out:79 newusers.8.xml.out:456 passwd.1.xml.out:40 -#: passwd.1.xml.out:47 passwd.1.xml.out:53 passwd.1.xml.out:66 -#: passwd.1.xml.out:69 passwd.1.xml.out:86 passwd.1.xml.out:116 -#: passwd.1.xml.out:152 passwd.1.xml.out:366 passwd.1.xml.out:413 -#: passwd.1.xml.out:422 passwd.1.xml.out:451 passwd.1.xml.out:457 -#: passwd.1.xml.out:477 passwd.5.xml.out:33 passwd.5.xml.out:40 +#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:415 +#: login.defs.5.xml.out:535 login.defs.5.xml.out:552 login.defs.5.xml.out:558 +#: newusers.8.xml.out:81 newusers.8.xml.out:477 passwd.1.xml.out:42 +#: passwd.1.xml.out:49 passwd.1.xml.out:55 passwd.1.xml.out:68 +#: passwd.1.xml.out:71 passwd.1.xml.out:88 passwd.1.xml.out:100 +#: passwd.1.xml.out:148 passwd.1.xml.out:388 passwd.1.xml.out:435 +#: passwd.1.xml.out:444 passwd.1.xml.out:473 passwd.1.xml.out:479 +#: passwd.1.xml.out:502 passwd.5.xml.out:33 passwd.5.xml.out:40 #: passwd.5.xml.out:182 pwck.8.xml.out:228 pwck.8.xml.out:342 #: pwconv.8.xml.out:84 pwconv.8.xml.out:99 shadow.5.xml.out:268 -#: shadow.5.xml.out:271 useradd.8.xml.out:884 userdel.8.xml.out:316 -#: usermod.8.xml.out:611 vipw.8.xml.out:217 +#: shadow.5.xml.out:271 useradd.8.xml.out:904 userdel.8.xml.out:316 +#: usermod.8.xml.out:628 vipw.8.xml.out:217 msgid "passwd" msgstr "passwd" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: refmeta/manvolnum #. (itstool) path: term/replaceable -#: chage.1.xml.out:319 chage.1.xml.out:322 chfn.1.xml.out:208 -#: chfn.1.xml.out:211 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 chsh.1.xml.out:177 expiry.1.xml.out:118 +#: chage.1.xml.out:334 chage.1.xml.out:337 chfn.1.xml.out:208 +#: chfn.1.xml.out:211 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 chsh.1.xml.out:218 expiry.1.xml.out:118 #: expiry.1.xml.out:121 faillog.5.xml.out:34 faillog.8.xml.out:238 -#: gpasswd.1.xml.out:292 gpasswd.1.xml.out:295 groupadd.8.xml.out:363 +#: gpasswd.1.xml.out:294 gpasswd.1.xml.out:297 groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 grpck.8.xml.out:267 grpck.8.xml.out:280 #: grpck.8.xml.out:287 grpck.8.xml.out:291 grpck.8.xml.out:297 #: gshadow.5.xml.out:23 gshadow.5.xml.out:153 gshadow.5.xml.out:156 #: limits.5.xml.out:36 login.1.xml.out:389 login.1.xml.out:392 #: login.1.xml.out:395 login.1.xml.out:398 login.access.5.xml.out:35 -#: login.defs.5.xml.out:103 login.defs.5.xml.out:539 login.defs.5.xml.out:542 -#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:79 -#: newusers.8.xml.out:453 newusers.8.xml.out:460 newusers.8.xml.out:463 -#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:455 -#: passwd.1.xml.out:477 passwd.1.xml.out:480 passwd.1.xml.out:484 +#: login.defs.5.xml.out:105 login.defs.5.xml.out:558 login.defs.5.xml.out:561 +#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:81 +#: newusers.8.xml.out:474 newusers.8.xml.out:481 newusers.8.xml.out:484 +#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:477 +#: passwd.1.xml.out:502 passwd.1.xml.out:505 passwd.1.xml.out:509 #: passwd.5.xml.out:34 passwd.5.xml.out:80 passwd.5.xml.out:194 #: porttime.5.xml.out:34 pwck.8.xml.out:317 pwck.8.xml.out:336 #: pwck.8.xml.out:342 pwck.8.xml.out:345 pwconv.8.xml.out:245 #: shadow.3.xml.out:220 shadow.5.xml.out:34 shadow.5.xml.out:271 #: sg.1.xml.out:134 sg.1.xml.out:137 su.1.xml.out:418 suauth.5.xml.out:34 -#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:628 -#: useradd.8.xml.out:899 useradd.8.xml.out:906 useradd.8.xml.out:909 +#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:648 +#: useradd.8.xml.out:919 useradd.8.xml.out:926 useradd.8.xml.out:929 #: userdel.8.xml.out:319 userdel.8.xml.out:335 userdel.8.xml.out:338 -#: usermod.8.xml.out:162 usermod.8.xml.out:629 usermod.8.xml.out:633 -#: usermod.8.xml.out:636 vipw.8.xml.out:208 vipw.8.xml.out:211 +#: usermod.8.xml.out:162 usermod.8.xml.out:646 usermod.8.xml.out:650 +#: usermod.8.xml.out:653 vipw.8.xml.out:208 vipw.8.xml.out:211 #: vipw.8.xml.out:214 vipw.8.xml.out:217 vipw.8.xml.out:220 vipw.8.xml.out:223 msgid "5" msgstr "5" @@ -1172,20 +1217,20 @@ msgstr "5" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/filename -#: chage.1.xml.out:322 expiry.1.xml.out:121 grpck.8.xml.out:51 -#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:542 -#: passwd.1.xml.out:480 passwd.5.xml.out:79 passwd.5.xml.out:194 +#: chage.1.xml.out:337 expiry.1.xml.out:121 grpck.8.xml.out:51 +#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:561 +#: passwd.1.xml.out:505 passwd.5.xml.out:79 passwd.5.xml.out:194 #: pwck.8.xml.out:229 pwck.8.xml.out:233 pwck.8.xml.out:345 pwconv.8.xml.out:84 #: pwconv.8.xml.out:85 pwconv.8.xml.out:100 pwconv.8.xml.out:101 #: shadow.3.xml.out:33 shadow.3.xml.out:40 shadow.3.xml.out:96 #: shadow.3.xml.out:220 shadow.5.xml.out:33 shadow.5.xml.out:40 -#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:628 +#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:648 #: usermod.8.xml.out:162 vipw.8.xml.out:223 msgid "shadow" msgstr "shadow" #. (itstool) path: refsect1/para -#: chage.1.xml.out:317 expiry.1.xml.out:116 faillog.8.xml.out:233 +#: chage.1.xml.out:332 expiry.1.xml.out:116 faillog.8.xml.out:233 #: nologin.8.xml.out:58 shadow.3.xml.out:215 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>." msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>." @@ -1197,10 +1242,10 @@ msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>." #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: varlistentry/term #: chfn.1.xml.out:36 chfn.1.xml.out:43 chfn.1.xml.out:49 chfn.1.xml.out:62 -#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:171 +#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:212 #: groupadd.8.xml.out:345 groupdel.8.xml.out:205 groupmems.8.xml.out:209 -#: groupmod.8.xml.out:326 login.defs.5.xml.out:239 useradd.8.xml.out:878 -#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:605 +#: groupmod.8.xml.out:326 login.defs.5.xml.out:243 useradd.8.xml.out:898 +#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:622 msgid "chfn" msgstr "chfn" @@ -1218,8 +1263,8 @@ msgstr "finger" #. (itstool) path: term/option #: chfn.1.xml.out:71 chfn.1.xml.out:110 groupadd.8.xml.out:106 #: groupadd.8.xml.out:145 groupadd.8.xml.out:323 groupmod.8.xml.out:93 -#: groupmod.8.xml.out:132 useradd.8.xml.out:405 useradd.8.xml.out:536 -#: useradd.8.xml.out:837 usermod.8.xml.out:271 usermod.8.xml.out:377 +#: groupmod.8.xml.out:132 useradd.8.xml.out:407 useradd.8.xml.out:538 +#: useradd.8.xml.out:857 usermod.8.xml.out:271 usermod.8.xml.out:377 msgid "-o" msgstr "-o" @@ -1271,7 +1316,7 @@ msgstr "" #: chfn.1.xml.out:94 expiry.1.xml.out:61 expiry.1.xml.out:79 #: groupadd.8.xml.out:88 groupdel.8.xml.out:72 login.1.xml.out:90 #: login.1.xml.out:190 login.1.xml.out:229 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 userdel.8.xml.out:76 userdel.8.xml.out:287 +#: useradd.8.xml.out:642 userdel.8.xml.out:76 userdel.8.xml.out:287 #: userdel.8.xml.out:302 usermod.8.xml.out:152 msgid "-f" msgstr "-f" @@ -1330,12 +1375,12 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chfn.1.xml.out:122 faillog.8.xml.out:89 faillog.8.xml.out:144 -#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:173 +#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:175 #: groupadd.8.xml.out:112 groupadd.8.xml.out:185 grpck.8.xml.out:124 #: grpck.8.xml.out:138 login.1.xml.out:220 login.1.xml.out:229 -#: newusers.8.xml.out:287 passwd.1.xml.out:268 pwck.8.xml.out:155 -#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:456 -#: useradd.8.xml.out:542 userdel.8.xml.out:106 usermod.8.xml.out:317 +#: newusers.8.xml.out:289 passwd.1.xml.out:264 pwck.8.xml.out:155 +#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:458 +#: useradd.8.xml.out:544 userdel.8.xml.out:106 usermod.8.xml.out:317 msgid "-r" msgstr "-r" @@ -1358,14 +1403,14 @@ msgstr "Змінити номер кімнати користувача." #. (itstool) path: para/option #: chfn.1.xml.out:143 faillog.8.xml.out:80 faillog.8.xml.out:180 #: faillog.8.xml.out:214 lastlog.8.xml.out:90 lastlog.8.xml.out:122 -#: lastlog.8.xml.out:139 passwd.1.xml.out:309 useradd.8.xml.out:414 -#: useradd.8.xml.out:531 usermod.8.xml.out:279 usermod.8.xml.out:369 +#: lastlog.8.xml.out:139 passwd.1.xml.out:320 useradd.8.xml.out:416 +#: useradd.8.xml.out:533 usermod.8.xml.out:279 usermod.8.xml.out:369 #: vipw.8.xml.out:133 msgid "-u" msgstr "-u" #. (itstool) path: term/option -#: chfn.1.xml.out:151 passwd.1.xml.out:322 usermod.8.xml.out:463 +#: chfn.1.xml.out:151 passwd.1.xml.out:333 usermod.8.xml.out:463 msgid "-w" msgstr "-w" @@ -1402,11 +1447,11 @@ msgstr "" "обліковий запис користувача.." #. (itstool) path: listitem/para -#: chfn.1.xml.out:189 chgpasswd.8.xml.out:207 chpasswd.8.xml.out:249 -#: chsh.1.xml.out:161 groupadd.8.xml.out:278 groupmod.8.xml.out:241 -#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:425 -#: passwd.1.xml.out:407 pwconv.8.xml.out:232 su.1.xml.out:359 -#: useradd.8.xml.out:799 userdel.8.xml.out:193 +#: chfn.1.xml.out:189 chgpasswd.8.xml.out:235 chpasswd.8.xml.out:291 +#: chsh.1.xml.out:202 groupadd.8.xml.out:278 groupmod.8.xml.out:241 +#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:446 +#: passwd.1.xml.out:429 pwconv.8.xml.out:232 su.1.xml.out:359 +#: useradd.8.xml.out:819 userdel.8.xml.out:193 msgid "Shadow password suite configuration." msgstr "Налаштування комплексу для роботи з прихованими паролями." @@ -1419,8 +1464,8 @@ msgstr "Налаштування комплексу для роботи з пр #: chfn.1.xml.out:205 chsh.1.xml.out:36 chsh.1.xml.out:43 chsh.1.xml.out:49 #: chsh.1.xml.out:62 chsh.1.xml.out:73 chsh.1.xml.out:109 #: groupadd.8.xml.out:348 groupdel.8.xml.out:208 groupmems.8.xml.out:212 -#: groupmod.8.xml.out:329 login.defs.5.xml.out:270 useradd.8.xml.out:881 -#: userdel.8.xml.out:313 usermod.8.xml.out:608 +#: groupmod.8.xml.out:329 login.defs.5.xml.out:280 useradd.8.xml.out:901 +#: userdel.8.xml.out:313 usermod.8.xml.out:625 msgid "chsh" msgstr "chsh" @@ -1428,25 +1473,25 @@ msgstr "chsh" #. (itstool) path: para/filename #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname -#: chfn.1.xml.out:208 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 groupadd.8.xml.out:194 groupadd.8.xml.out:363 -#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:102 -#: login.defs.5.xml.out:109 newusers.8.xml.out:298 newusers.8.xml.out:453 -#: passwd.1.xml.out:484 pwconv.8.xml.out:92 pwconv.8.xml.out:94 +#: chfn.1.xml.out:208 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 groupadd.8.xml.out:194 groupadd.8.xml.out:363 +#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:104 +#: login.defs.5.xml.out:111 newusers.8.xml.out:300 newusers.8.xml.out:474 +#: passwd.1.xml.out:509 pwconv.8.xml.out:92 pwconv.8.xml.out:94 #: pwconv.8.xml.out:108 pwconv.8.xml.out:245 su.1.xml.out:418 -#: useradd.8.xml.out:899 userdel.8.xml.out:117 userdel.8.xml.out:319 -#: usermod.8.xml.out:629 vipw.8.xml.out:214 +#: useradd.8.xml.out:919 userdel.8.xml.out:117 userdel.8.xml.out:319 +#: usermod.8.xml.out:646 vipw.8.xml.out:214 msgid "login.defs" msgstr "login.defs" #. (itstool) path: refsect1/para -#: chfn.1.xml.out:203 chgpasswd.8.xml.out:215 chsh.1.xml.out:169 +#: chfn.1.xml.out:203 chgpasswd.8.xml.out:243 chsh.1.xml.out:210 #: limits.5.xml.out:183 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." #. (itstool) path: author/contrib -#: chgpasswd.8.xml.out:23 +#: chgpasswd.8.xml.out:25 msgid "Creation, 2006" msgstr "Створення, 2006" @@ -1455,19 +1500,19 @@ msgstr "Створення, 2006" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:33 chgpasswd.8.xml.out:40 chgpasswd.8.xml.out:46 -#: chgpasswd.8.xml.out:56 chgpasswd.8.xml.out:66 chgpasswd.8.xml.out:83 -#: login.defs.5.xml.out:249 +#: chgpasswd.8.xml.out:35 chgpasswd.8.xml.out:42 chgpasswd.8.xml.out:48 +#: chgpasswd.8.xml.out:58 chgpasswd.8.xml.out:68 chgpasswd.8.xml.out:85 +#: login.defs.5.xml.out:253 msgid "chgpasswd" msgstr "chgpasswd" #. (itstool) path: refmeta/manvolnum #. (itstool) path: citerefentry/manvolnum #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:34 chgpasswd.8.xml.out:220 chpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:268 chpasswd.8.xml.out:276 faillog.5.xml.out:87 -#: faillog.8.xml.out:34 gpasswd.1.xml.out:280 gpasswd.1.xml.out:283 -#: gpasswd.1.xml.out:286 gpasswd.1.xml.out:289 groupadd.8.xml.out:37 +#: chgpasswd.8.xml.out:36 chgpasswd.8.xml.out:248 chpasswd.8.xml.out:40 +#: chpasswd.8.xml.out:310 chpasswd.8.xml.out:318 faillog.5.xml.out:87 +#: faillog.8.xml.out:34 gpasswd.1.xml.out:282 gpasswd.1.xml.out:285 +#: gpasswd.1.xml.out:288 gpasswd.1.xml.out:291 groupadd.8.xml.out:37 #: groupadd.8.xml.out:354 groupadd.8.xml.out:357 groupadd.8.xml.out:360 #: groupadd.8.xml.out:366 groupadd.8.xml.out:369 groupadd.8.xml.out:372 #: groupdel.8.xml.out:35 groupdel.8.xml.out:186 groupdel.8.xml.out:214 @@ -1480,43 +1525,43 @@ msgstr "chgpasswd" #: grpck.8.xml.out:34 grpck.8.xml.out:283 grpck.8.xml.out:294 #: gshadow.5.xml.out:159 gshadow.5.xml.out:162 lastlog.8.xml.out:36 #: login.1.xml.out:174 login.1.xml.out:176 login.1.xml.out:249 -#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:545 -#: logoutd.8.xml.out:34 newusers.8.xml.out:50 newusers.8.xml.out:467 -#: nologin.8.xml.out:23 passwd.1.xml.out:474 passwd.1.xml.out:488 +#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:564 +#: logoutd.8.xml.out:34 newusers.8.xml.out:52 newusers.8.xml.out:488 +#: nologin.8.xml.out:23 passwd.1.xml.out:496 passwd.1.xml.out:513 #: passwd.5.xml.out:185 passwd.5.xml.out:188 passwd.5.xml.out:191 #: passwd.5.xml.out:200 pwck.8.xml.out:41 pwck.8.xml.out:339 pwck.8.xml.out:348 #: pwconv.8.xml.out:40 pwconv.8.xml.out:242 pwconv.8.xml.out:248 #: pwconv.8.xml.out:251 pwconv.8.xml.out:254 shadow.5.xml.out:274 #: shadow.5.xml.out:277 shadow.5.xml.out:280 shadow.5.xml.out:286 -#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:574 -#: useradd.8.xml.out:890 useradd.8.xml.out:893 useradd.8.xml.out:896 -#: useradd.8.xml.out:902 useradd.8.xml.out:913 useradd.8.xml.out:916 -#: userdel.8.xml.out:40 userdel.8.xml.out:259 userdel.8.xml.out:322 -#: userdel.8.xml.out:325 userdel.8.xml.out:328 userdel.8.xml.out:331 -#: userdel.8.xml.out:342 userdel.8.xml.out:345 usermod.8.xml.out:41 -#: usermod.8.xml.out:617 usermod.8.xml.out:620 usermod.8.xml.out:623 -#: usermod.8.xml.out:626 usermod.8.xml.out:640 usermod.8.xml.out:643 -#: vipw.8.xml.out:36 +#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:576 +#: useradd.8.xml.out:590 useradd.8.xml.out:910 useradd.8.xml.out:913 +#: useradd.8.xml.out:916 useradd.8.xml.out:922 useradd.8.xml.out:933 +#: useradd.8.xml.out:936 userdel.8.xml.out:40 userdel.8.xml.out:259 +#: userdel.8.xml.out:322 userdel.8.xml.out:325 userdel.8.xml.out:328 +#: userdel.8.xml.out:331 userdel.8.xml.out:342 userdel.8.xml.out:345 +#: usermod.8.xml.out:41 usermod.8.xml.out:522 usermod.8.xml.out:634 +#: usermod.8.xml.out:637 usermod.8.xml.out:640 usermod.8.xml.out:643 +#: usermod.8.xml.out:657 usermod.8.xml.out:660 vipw.8.xml.out:36 msgid "8" msgstr "8" #. (itstool) path: refmeta/refmiscinfo -#: chgpasswd.8.xml.out:35 chpasswd.8.xml.out:39 faillog.8.xml.out:35 +#: chgpasswd.8.xml.out:37 chpasswd.8.xml.out:41 faillog.8.xml.out:35 #: groupadd.8.xml.out:38 groupdel.8.xml.out:36 groupmems.8.xml.out:39 #: groupmod.8.xml.out:36 grpck.8.xml.out:35 lastlog.8.xml.out:37 -#: logoutd.8.xml.out:35 newusers.8.xml.out:51 nologin.8.xml.out:24 +#: logoutd.8.xml.out:35 newusers.8.xml.out:53 nologin.8.xml.out:24 #: pwck.8.xml.out:42 pwconv.8.xml.out:41 useradd.8.xml.out:54 #: userdel.8.xml.out:41 usermod.8.xml.out:42 vipw.8.xml.out:37 msgid "System Management Commands" msgstr "Команди керування системою" #. (itstool) path: refnamediv/refpurpose -#: chgpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:43 msgid "update group passwords in batch mode" msgstr "оновлення паролів груп у пакетному режимі" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:55 +#: chgpasswd.8.xml.out:57 msgid "" "The <_:command-1/> command reads a list of group name and password pairs " "from standard input and uses this information to update a set of existing " @@ -1529,24 +1574,24 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:61 groupmems.8.xml.out:54 groupmems.8.xml.out:110 +#: chgpasswd.8.xml.out:63 groupmems.8.xml.out:54 groupmems.8.xml.out:110 msgid "group_name" msgstr "назва_групи" #. (itstool) path: para/emphasis -#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 passwd.5.xml.out:77 +#: chgpasswd.8.xml.out:64 chpasswd.8.xml.out:68 passwd.5.xml.out:77 #: passwd.5.xml.out:86 passwd.5.xml.out:91 passwd.5.xml.out:95 #: passwd.5.xml.out:98 msgid "password" msgstr "пароль" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:60 chpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 msgid "<_:emphasis-1/>:<_:emphasis-2/>" msgstr "<_:emphasis-1/>:<_:emphasis-2/>" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:66 msgid "" "By default the supplied password must be in clear-text, and is encrypted by " "<_:command-1/>." @@ -1555,16 +1600,16 @@ msgstr "" "допомогою <_:command-1/>." #. (itstool) path: para/option -#: chgpasswd.8.xml.out:70 chpasswd.8.xml.out:75 chpasswd.8.xml.out:132 -#: passwd.1.xml.out:129 +#: chgpasswd.8.xml.out:72 chpasswd.8.xml.out:77 chpasswd.8.xml.out:138 +#: passwd.1.xml.out:114 msgid "ENCRYPT_METHOD" msgstr "ENCRYPT_METHOD" #. (itstool) path: para/option #. (itstool) path: term/option -#: chgpasswd.8.xml.out:71 chgpasswd.8.xml.out:101 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 chpasswd.8.xml.out:139 -#: passwd.1.xml.out:180 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chgpasswd.8.xml.out:73 chgpasswd.8.xml.out:107 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 chpasswd.8.xml.out:145 +#: passwd.1.xml.out:176 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "-e" msgstr "-e" @@ -1572,16 +1617,16 @@ msgstr "-e" #. (itstool) path: para/option #. (itstool) path: term/option #. (itstool) path: arg/arg -#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:88 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:114 chpasswd.8.xml.out:129 -#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:90 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:116 chpasswd.8.xml.out:135 +#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:270 #: sg.1.xml.out:50 su.1.xml.out:86 su.1.xml.out:126 su.1.xml.out:131 #: useradd.8.xml.out:139 usermod.8.xml.out:99 msgid "-c" msgstr "-c" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:70 msgid "" "The default encryption algorithm can be defined for the system with the <_:" "option-1/> variable of <_:filename-2/>, and can be overwritten with the <_:" @@ -1592,7 +1637,7 @@ msgstr "" "допомогою параметрів <_:option-3/>, <_:option-4/> або <_:option-5/>." #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:74 chpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:76 chpasswd.8.xml.out:101 msgid "" "This command is intended to be used in a large system environment where many " "accounts are created at a single time." @@ -1601,46 +1646,106 @@ msgstr "" "одночасно створюють багато облікових записів." #. (itstool) path: term/option -#: chgpasswd.8.xml.out:88 chpasswd.8.xml.out:114 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:116 newusers.8.xml.out:270 msgid "--crypt-method" msgstr "--crypt-method" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:117 newusers.8.xml.out:270 +#: chgpasswd.8.xml.out:92 chpasswd.8.xml.out:119 newusers.8.xml.out:272 msgid "Use the specified method to encrypt the passwords." msgstr "Скористатися для шифрування паролів вказаним методом." -#. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:91 chpasswd.8.xml.out:118 -msgid "The available methods are DES, MD5, and NONE." -msgstr "Доступними методами є DES, MD5 і NONE." +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:95 chgpasswd.8.xml.out:149 chpasswd.8.xml.out:122 +#: chpasswd.8.xml.out:208 newusers.8.xml.out:330 +msgid "BCRYPT" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 +#, fuzzy +#| msgid "-a <_:replaceable-1/>" +msgid "<_:replaceable-1/>," +msgstr "-a <_:replaceable-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:96 chpasswd.8.xml.out:123 +msgid "DES" +msgstr "DES" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid "MD5" +msgstr "MD5" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:98 chgpasswd.8.xml.out:151 chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:210 newusers.8.xml.out:332 +msgid "SHA256" +msgstr "SHA256" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:99 chgpasswd.8.xml.out:152 chpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:211 newusers.8.xml.out:333 +msgid "SHA512" +msgstr "SHA512" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid ", <_:replaceable-1/>, <_:replaceable-2/>" +msgstr ", <_:replaceable-1/>, <_:replaceable-2/>" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:100 chgpasswd.8.xml.out:154 chpasswd.8.xml.out:127 +#: chpasswd.8.xml.out:213 newusers.8.xml.out:335 +#, fuzzy +#| msgid "DESCRIPTION" +msgid "YESCRYPT" +msgstr "ОПИС" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:99 chpasswd.8.xml.out:126 +#, fuzzy +#| msgid "-a <_:replaceable-1/>" +msgid ", <_:replaceable-1/>" +msgstr "-a <_:replaceable-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:128 +msgid "NONE" +msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 newusers.8.xml.out:271 +#: chgpasswd.8.xml.out:93 chpasswd.8.xml.out:120 +#, fuzzy +#| msgid "" +#| "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> <_:option-4/" +#| "> <_:replaceable-5/>=<_:replaceable-6/>" msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." +"The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" +"><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports " +"these methods." msgstr "" -"Доступними методами є DES, MD5, NONE і SHA256 або SHA512, якщо у вашій libc " -"передбачено підтримку цих методів." +"Приклад: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> <_:option-4/> " +"<_:replaceable-5/>=<_:replaceable-6/>" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:139 +#: chgpasswd.8.xml.out:107 chpasswd.8.xml.out:145 msgid "--encrypted" msgstr "--encrypted" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:103 chpasswd.8.xml.out:141 +#: chgpasswd.8.xml.out:109 chpasswd.8.xml.out:147 msgid "Supplied passwords are in encrypted form." msgstr "Надані паролі подано у зашифрованій формі." #. (itstool) path: term/option -#: chgpasswd.8.xml.out:113 chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 chpasswd.8.xml.out:161 msgid "--md5" msgstr "--md5" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:115 chpasswd.8.xml.out:157 +#: chgpasswd.8.xml.out:121 chpasswd.8.xml.out:163 msgid "" "Use MD5 encryption instead of DES when the supplied passwords are not " "encrypted." @@ -1649,68 +1754,121 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 chsh.1.xml.out:97 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 chsh.1.xml.out:97 #: chsh.1.xml.out:108 grpck.8.xml.out:124 grpck.8.xml.out:161 -#: newusers.8.xml.out:320 pwck.8.xml.out:155 pwck.8.xml.out:209 -#: su.1.xml.out:163 useradd.8.xml.out:517 useradd.8.xml.out:655 -#: usermod.8.xml.out:357 vipw.8.xml.out:70 vipw.8.xml.out:127 +#: newusers.8.xml.out:322 passwd.1.xml.out:363 pwck.8.xml.out:155 +#: pwck.8.xml.out:209 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 vipw.8.xml.out:70 +#: vipw.8.xml.out:127 msgid "-s" msgstr "-s" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 newusers.8.xml.out:320 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 newusers.8.xml.out:322 msgid "--sha-rounds" msgstr "--sha-rounds" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:137 chpasswd.8.xml.out:181 newusers.8.xml.out:322 +#: chgpasswd.8.xml.out:143 chpasswd.8.xml.out:202 newusers.8.xml.out:324 msgid "Use the specified number of rounds to encrypt the passwords." msgstr "Використати вказану кількість циклів шифрування паролів." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:140 chpasswd.8.xml.out:184 newusers.8.xml.out:325 +#: chgpasswd.8.xml.out:146 chpasswd.8.xml.out:205 newusers.8.xml.out:327 +msgid "" +"You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> " +"<_:phrase-3/>" +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:156 chpasswd.8.xml.out:215 newusers.8.xml.out:337 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." msgid "" -"The value 0 means that the system will choose the default number of rounds " -"for the crypt method (5000)." +"By default, the number of rounds for BCRYPT is defined by the " +"BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." msgstr "" -"Значення 0 означає, що система вибере типову кількість проходів для методу " -"шифрування (5000)." +"Типово, кількість проходів визначається за допомогою змінних " +"SHA_CRYPT_MIN_ROUNDS і SHA_CRYPT_MAX_ROUNDS у <_:filename-1/>." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:144 chpasswd.8.xml.out:188 newusers.8.xml.out:329 +#: chgpasswd.8.xml.out:161 chpasswd.8.xml.out:220 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default number of rounds is 13." msgstr "" "Буде примусово встановлено мінімальне значення 1000 і максимальне значення " "999999999." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:148 chpasswd.8.xml.out:192 newusers.8.xml.out:333 -msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#: chgpasswd.8.xml.out:165 chpasswd.8.xml.out:224 newusers.8.xml.out:346 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgid "" +"By default, the number of rounds for SHA256 or SHA512 is defined by the " +"SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." msgstr "" -"Ви можете скористатися цим параметром у поєднанні із методами шифрування " -"SHA256 або SHA512." +"Типово, кількість проходів визначається за допомогою змінних " +"SHA_CRYPT_MIN_ROUNDS і SHA_CRYPT_MAX_ROUNDS у <_:filename-1/>." #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:152 newusers.8.xml.out:337 +#: chgpasswd.8.xml.out:170 chpasswd.8.xml.out:229 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." msgid "" -"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and " -"SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default number of rounds is 5000." +msgstr "" +"Буде примусово встановлено мінімальне значення 1000 і максимальне значення " +"999999999." + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:175 chpasswd.8.xml.out:234 newusers.8.xml.out:355 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgid "" +"By default, the number of rounds for YESCRYPT is defined by the " +"YESCRYPT_COST_FACTOR in <_:filename-1/>." msgstr "" "Типово, кількість проходів визначається за допомогою змінних " "SHA_CRYPT_MIN_ROUNDS і SHA_CRYPT_MAX_ROUNDS у <_:filename-1/>." +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:179 chpasswd.8.xml.out:238 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default number of rounds is 5." +msgstr "" +"Буде примусово встановлено мінімальне значення 1000 і максимальне значення " +"999999999." + #. (itstool) path: refsect1/title -#: chgpasswd.8.xml.out:163 chpasswd.8.xml.out:208 faillog.8.xml.out:209 -#: gpasswd.1.xml.out:229 groupadd.8.xml.out:285 groupdel.8.xml.out:121 -#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:348 -#: passwd.1.xml.out:354 shadow.3.xml.out:194 su.1.xml.out:306 -#: useradd.8.xml.out:682 userdel.8.xml.out:281 usermod.8.xml.out:517 +#: chgpasswd.8.xml.out:189 chpasswd.8.xml.out:248 faillog.8.xml.out:209 +#: gpasswd.1.xml.out:231 groupadd.8.xml.out:285 groupdel.8.xml.out:121 +#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:369 +#: passwd.1.xml.out:376 shadow.3.xml.out:194 su.1.xml.out:306 +#: useradd.8.xml.out:702 userdel.8.xml.out:281 usermod.8.xml.out:534 msgid "CAVEATS" msgstr "ЗАСТЕРЕЖЕННЯ" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:164 chpasswd.8.xml.out:209 +#: chgpasswd.8.xml.out:190 chpasswd.8.xml.out:249 msgid "" "Remember to set permissions or umask to prevent readability of unencrypted " "files by other users." @@ -1719,7 +1877,7 @@ msgstr "" "читання нешифрованих файлів сторонніми користувачами." #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:168 newusers.8.xml.out:353 +#: chgpasswd.8.xml.out:194 newusers.8.xml.out:374 msgid "" "You should make sure the passwords and the encryption method respect the " "system's password policy." @@ -1731,8 +1889,8 @@ msgstr "" #. (itstool) path: phrase/filename #. (itstool) path: para/filename #. (itstool) path: citerefentry/refentrytitle -#: chgpasswd.8.xml.out:193 gpasswd.1.xml.out:48 gpasswd.1.xml.out:51 -#: gpasswd.1.xml.out:73 gpasswd.1.xml.out:231 gpasswd.1.xml.out:259 +#: chgpasswd.8.xml.out:221 gpasswd.1.xml.out:50 gpasswd.1.xml.out:53 +#: gpasswd.1.xml.out:75 gpasswd.1.xml.out:233 gpasswd.1.xml.out:261 #: groupadd.8.xml.out:170 groupadd.8.xml.out:264 groupdel.8.xml.out:148 #: groupmems.8.xml.out:191 groupmod.8.xml.out:227 groups.1.xml.out:58 #: groups.1.xml.out:70 groups.1.xml.out:80 grpck.8.xml.out:62 @@ -1740,19 +1898,19 @@ msgstr "" #: grpck.8.xml.out:164 grpck.8.xml.out:177 grpck.8.xml.out:185 #: grpck.8.xml.out:211 gshadow.5.xml.out:91 gshadow.5.xml.out:124 #: gshadow.5.xml.out:135 newgrp.1.xml.out:80 newgrp.1.xml.out:112 -#: newusers.8.xml.out:411 pwck.8.xml.out:261 pwconv.8.xml.out:128 -#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:755 -#: userdel.8.xml.out:185 usermod.8.xml.out:557 vipw.8.xml.out:69 +#: newusers.8.xml.out:432 pwck.8.xml.out:261 pwconv.8.xml.out:128 +#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:775 +#: userdel.8.xml.out:185 usermod.8.xml.out:574 vipw.8.xml.out:69 #: vipw.8.xml.out:175 msgid "/etc/group" msgstr "/etc/group" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:195 gpasswd.1.xml.out:261 groupadd.8.xml.out:266 +#: chgpasswd.8.xml.out:223 gpasswd.1.xml.out:263 groupadd.8.xml.out:266 #: groupdel.8.xml.out:150 groupmems.8.xml.out:193 groupmod.8.xml.out:229 #: groups.1.xml.out:82 grpck.8.xml.out:213 gshadow.5.xml.out:137 -#: newgrp.1.xml.out:114 newusers.8.xml.out:413 pwck.8.xml.out:263 -#: sg.1.xml.out:103 useradd.8.xml.out:757 userdel.8.xml.out:187 +#: newgrp.1.xml.out:114 newusers.8.xml.out:434 pwck.8.xml.out:263 +#: sg.1.xml.out:103 useradd.8.xml.out:777 userdel.8.xml.out:187 #: vipw.8.xml.out:177 msgid "Group account information." msgstr "Відомості щодо груп облікових записів." @@ -1760,8 +1918,8 @@ msgstr "Відомості щодо груп облікових записів." #. (itstool) path: term/filename #. (itstool) path: phrase/filename #. (itstool) path: para/filename -#: chgpasswd.8.xml.out:199 gpasswd.1.xml.out:52 gpasswd.1.xml.out:74 -#: gpasswd.1.xml.out:232 gpasswd.1.xml.out:265 groupadd.8.xml.out:170 +#: chgpasswd.8.xml.out:227 gpasswd.1.xml.out:54 gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:234 gpasswd.1.xml.out:267 groupadd.8.xml.out:170 #: groupadd.8.xml.out:270 groupdel.8.xml.out:154 groupmems.8.xml.out:87 #: groupmems.8.xml.out:88 groupmems.8.xml.out:98 groupmems.8.xml.out:103 #: groupmems.8.xml.out:104 groupmems.8.xml.out:134 groupmems.8.xml.out:135 @@ -1769,17 +1927,17 @@ msgstr "Відомості щодо груп облікових записів." #: grpck.8.xml.out:93 grpck.8.xml.out:114 grpck.8.xml.out:166 #: grpck.8.xml.out:186 grpck.8.xml.out:217 gshadow.5.xml.out:36 #: gshadow.5.xml.out:141 newgrp.1.xml.out:78 newgrp.1.xml.out:118 -#: newusers.8.xml.out:417 pwconv.8.xml.out:129 sg.1.xml.out:107 -#: useradd.8.xml.out:761 usermod.8.xml.out:563 vipw.8.xml.out:72 +#: newusers.8.xml.out:438 pwconv.8.xml.out:129 sg.1.xml.out:107 +#: useradd.8.xml.out:781 usermod.8.xml.out:580 vipw.8.xml.out:72 #: vipw.8.xml.out:181 msgid "/etc/gshadow" msgstr "/etc/gshadow" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:201 gpasswd.1.xml.out:267 groupadd.8.xml.out:272 +#: chgpasswd.8.xml.out:229 gpasswd.1.xml.out:269 groupadd.8.xml.out:272 #: groupdel.8.xml.out:156 groupmod.8.xml.out:235 grpck.8.xml.out:219 -#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:419 -#: sg.1.xml.out:109 useradd.8.xml.out:763 vipw.8.xml.out:183 +#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:440 +#: sg.1.xml.out:109 useradd.8.xml.out:783 vipw.8.xml.out:183 msgid "Secure group account information." msgstr "Відомості щодо захищених груп облікових записів." @@ -1789,12 +1947,12 @@ msgstr "Відомості щодо захищених груп облікови #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:217 gpasswd.1.xml.out:38 gpasswd.1.xml.out:45 -#: gpasswd.1.xml.out:59 gpasswd.1.xml.out:72 gpasswd.1.xml.out:85 -#: gpasswd.1.xml.out:119 groupadd.8.xml.out:354 groupdel.8.xml.out:214 -#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:280 +#: chgpasswd.8.xml.out:245 gpasswd.1.xml.out:40 gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:61 gpasswd.1.xml.out:74 gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:121 groupadd.8.xml.out:354 groupdel.8.xml.out:214 +#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:290 #: newgrp.1.xml.out:142 sg.1.xml.out:131 userdel.8.xml.out:322 -#: usermod.8.xml.out:617 +#: usermod.8.xml.out:634 msgid "gpasswd" msgstr "gpasswd" @@ -1804,19 +1962,19 @@ msgstr "gpasswd" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:220 gpasswd.1.xml.out:280 groupadd.8.xml.out:36 +#: chgpasswd.8.xml.out:248 gpasswd.1.xml.out:282 groupadd.8.xml.out:36 #: groupadd.8.xml.out:43 groupadd.8.xml.out:49 groupadd.8.xml.out:61 #: groupadd.8.xml.out:82 groupadd.8.xml.out:292 groupadd.8.xml.out:300 #: groupdel.8.xml.out:217 groupmems.8.xml.out:218 groupmod.8.xml.out:338 -#: login.defs.5.xml.out:290 useradd.8.xml.out:890 userdel.8.xml.out:325 -#: usermod.8.xml.out:620 +#: login.defs.5.xml.out:303 useradd.8.xml.out:910 userdel.8.xml.out:325 +#: usermod.8.xml.out:637 msgid "groupadd" msgstr "groupadd" #. (itstool) path: author/contrib -#: chpasswd.8.xml.out:21 groupadd.8.xml.out:20 groupdel.8.xml.out:18 -#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:86 -#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:33 +#: chpasswd.8.xml.out:23 groupadd.8.xml.out:20 groupdel.8.xml.out:18 +#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:88 +#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:35 #: sg.1.xml.out:18 useradd.8.xml.out:36 userdel.8.xml.out:23 #: usermod.8.xml.out:24 msgid "Creation, 1991" @@ -1828,20 +1986,20 @@ msgstr "Створення, 1991" #. (itstool) path: para/command #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:37 chpasswd.8.xml.out:44 chpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:60 chpasswd.8.xml.out:70 chpasswd.8.xml.out:89 -#: chpasswd.8.xml.out:96 chpasswd.8.xml.out:108 chpasswd.8.xml.out:255 -#: login.defs.5.xml.out:259 passwd.1.xml.out:474 +#: chpasswd.8.xml.out:39 chpasswd.8.xml.out:46 chpasswd.8.xml.out:52 +#: chpasswd.8.xml.out:62 chpasswd.8.xml.out:72 chpasswd.8.xml.out:91 +#: chpasswd.8.xml.out:98 chpasswd.8.xml.out:110 chpasswd.8.xml.out:297 +#: login.defs.5.xml.out:266 passwd.1.xml.out:496 msgid "chpasswd" msgstr "chpasswd" #. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:45 +#: chpasswd.8.xml.out:47 msgid "update passwords in batch mode" msgstr "оновлення паролів у пакетному режимі" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:59 +#: chpasswd.8.xml.out:61 msgid "" "The <_:command-1/> command reads a list of user name and password pairs from " "standard input and uses this information to update a group of existing " @@ -1855,13 +2013,13 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:65 groupmems.8.xml.out:52 groupmems.8.xml.out:53 +#: chpasswd.8.xml.out:67 groupmems.8.xml.out:52 groupmems.8.xml.out:53 #: groupmems.8.xml.out:83 groupmems.8.xml.out:94 msgid "user_name" msgstr "ім'я_користувача" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:68 +#: chpasswd.8.xml.out:70 msgid "" "By default the passwords must be supplied in clear-text, and are encrypted " "by <_:command-1/>. Also the password age will be updated, if present." @@ -1871,12 +2029,12 @@ msgstr "" "такі збережено." #. (itstool) path: para/option -#: chpasswd.8.xml.out:76 chpasswd.8.xml.out:133 +#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 msgid "MD5_CRYPT_ENAB" msgstr "MD5_CRYPT_ENAB" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:73 +#: chpasswd.8.xml.out:75 msgid "" "The default encryption algorithm can be defined for the system with the <_:" "option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be " @@ -1888,7 +2046,7 @@ msgstr "" "option-6/>." #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:83 msgid "" "By default, passwords are encrypted by PAM, but (even if not recommended) " "you can select a different encryption method with the <_:option-1/>, <_:" @@ -1899,12 +2057,12 @@ msgstr "" "option-2/> або <_:option-3/>." #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:88 +#: chpasswd.8.xml.out:90 msgid "Except when PAM is used to encrypt the passwords," msgstr "Окрім випадків, коли для шифрування паролів використано PAM," #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:87 +#: chpasswd.8.xml.out:89 msgid "" "<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and " "then commits all the changes to disk if no errors occurred for any user." @@ -1914,7 +2072,7 @@ msgstr "" "користувачів." #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:95 msgid "" "When PAM is used to encrypt the passwords (and update the passwords in the " "system database) then if a password cannot be updated <_:command-1/> " @@ -1927,17 +2085,17 @@ msgstr "" "користувачів і поверне код помилки при виході з програми." #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:114 +#: chpasswd.8.xml.out:116 msgid "METHOD" msgstr "METHOD" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:131 msgid "By default, PAM is used to encrypt the passwords." msgstr "Типово, для шифрування паролів буде використано PAM." #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:134 msgid "" "By default (if none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> " "options are specified), the encryption method is defined by the <_:option-4/" @@ -1948,36 +2106,17 @@ msgstr "" "або <_:option-5/> у <_:filename-6/>." #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:178 +#: chpasswd.8.xml.out:199 msgid "ROUNDS" msgstr "ROUNDS" -#. (itstool) path: para/option -#: chpasswd.8.xml.out:198 -msgid "SHA_CRYPT_MIN_ROUNDS" -msgstr "SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/option -#: chpasswd.8.xml.out:199 -msgid "SHA_CRYPT_MAX_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:196 -msgid "" -"By default, the number of rounds is defined by the <_:option-1/> and <_:" -"option-2/> variables in <_:filename-3/>." -msgstr "" -"Типово, кількість проходів визначено змінними <_:option-1/> і <_:option-2/> " -"у <_:filename-3/>." - #. (itstool) path: term/filename -#: chpasswd.8.xml.out:253 +#: chpasswd.8.xml.out:295 msgid "/etc/pam.d/chpasswd" msgstr "/etc/pam.d/chpasswd" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:255 newusers.8.xml.out:431 passwd.1.xml.out:413 +#: chpasswd.8.xml.out:297 newusers.8.xml.out:452 passwd.1.xml.out:435 msgid "PAM configuration for <_:command-1/>." msgstr "Налаштування PAM для <_:command-1/>." @@ -1987,17 +2126,17 @@ msgstr "Налаштування PAM для <_:command-1/>." #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:268 login.defs.5.xml.out:380 newusers.8.xml.out:49 -#: newusers.8.xml.out:56 newusers.8.xml.out:62 newusers.8.xml.out:75 -#: newusers.8.xml.out:96 newusers.8.xml.out:123 newusers.8.xml.out:132 -#: newusers.8.xml.out:151 newusers.8.xml.out:164 newusers.8.xml.out:170 -#: newusers.8.xml.out:172 newusers.8.xml.out:210 newusers.8.xml.out:230 -#: newusers.8.xml.out:252 newusers.8.xml.out:431 useradd.8.xml.out:902 +#: chpasswd.8.xml.out:310 login.defs.5.xml.out:393 newusers.8.xml.out:51 +#: newusers.8.xml.out:58 newusers.8.xml.out:64 newusers.8.xml.out:77 +#: newusers.8.xml.out:98 newusers.8.xml.out:125 newusers.8.xml.out:134 +#: newusers.8.xml.out:153 newusers.8.xml.out:166 newusers.8.xml.out:172 +#: newusers.8.xml.out:174 newusers.8.xml.out:212 newusers.8.xml.out:232 +#: newusers.8.xml.out:254 newusers.8.xml.out:452 useradd.8.xml.out:922 msgid "newusers" msgstr "newusers" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:270 grpck.8.xml.out:285 passwd.1.xml.out:482 +#: chpasswd.8.xml.out:312 grpck.8.xml.out:285 passwd.1.xml.out:507 msgid "<_:citerefentry-1/>," msgstr "<_:citerefentry-1/>," @@ -2007,21 +2146,21 @@ msgstr "<_:citerefentry-1/>," #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:276 groupadd.8.xml.out:366 groupdel.8.xml.out:223 -#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:462 -#: newusers.8.xml.out:467 useradd.8.xml.out:52 useradd.8.xml.out:59 +#: chpasswd.8.xml.out:318 groupadd.8.xml.out:366 groupdel.8.xml.out:223 +#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:481 +#: newusers.8.xml.out:488 useradd.8.xml.out:52 useradd.8.xml.out:59 #: useradd.8.xml.out:64 useradd.8.xml.out:71 useradd.8.xml.out:75 #: useradd.8.xml.out:87 useradd.8.xml.out:90 useradd.8.xml.out:103 #: useradd.8.xml.out:129 useradd.8.xml.out:187 useradd.8.xml.out:209 -#: useradd.8.xml.out:239 useradd.8.xml.out:284 useradd.8.xml.out:341 -#: useradd.8.xml.out:472 useradd.8.xml.out:584 useradd.8.xml.out:586 -#: useradd.8.xml.out:690 useradd.8.xml.out:808 userdel.8.xml.out:342 -#: usermod.8.xml.out:640 +#: useradd.8.xml.out:239 useradd.8.xml.out:286 useradd.8.xml.out:343 +#: useradd.8.xml.out:474 useradd.8.xml.out:604 useradd.8.xml.out:606 +#: useradd.8.xml.out:710 useradd.8.xml.out:828 userdel.8.xml.out:342 +#: usermod.8.xml.out:657 msgid "useradd" msgstr "useradd" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:263 newusers.8.xml.out:451 +#: chpasswd.8.xml.out:305 newusers.8.xml.out:472 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." msgstr "" @@ -2047,15 +2186,15 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:517 -#: useradd.8.xml.out:655 usermod.8.xml.out:357 +#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 msgid "--shell" msgstr "--shell" #. (itstool) path: term/replaceable #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:517 -#: useradd.8.xml.out:522 useradd.8.xml.out:655 useradd.8.xml.out:662 +#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:524 useradd.8.xml.out:675 useradd.8.xml.out:682 #: usermod.8.xml.out:357 msgid "SHELL" msgstr "ОБОЛОНКА" @@ -2087,12 +2226,13 @@ msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:153 su.1.xml.out:198 +#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:130 chsh.1.xml.out:143 +#: chsh.1.xml.out:172 chsh.1.xml.out:184 su.1.xml.out:198 msgid "/etc/shells" msgstr "/etc/shells" #. (itstool) path: para/filename -#: chsh.1.xml.out:123 +#: chsh.1.xml.out:123 chsh.1.xml.out:142 msgid "/bin/rsh" msgstr "/bin/rsh" @@ -2116,11 +2256,120 @@ msgstr "" "призведе до повної заборони для користувача змінювати оболонку входу та " "початкову." +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chsh.1.xml.out:132 chsh.1.xml.out:181 +msgid "%vendordir%/shells" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:133 +msgid "%vendordir%/shells.d/*" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:134 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/*" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:135 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/@filename@" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:136 +msgid "%vendordir%/shells.d/@filename@" +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:128 +msgid "" +"The only restriction placed on the login shell is that the command name must " +"be listed in <_:filename-1/>. If this file does not exist, the definitions " +"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" +"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " +"used. If the invoker is the superuser any value may be added regardless what " +"is defined in the configuration files. An account with a restricted login " +"shell may not change her login shell." +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:141 +#, fuzzy +#| msgid "" +#| "The only restriction placed on the login shell is that the command name " +#| "must be listed in <_:filename-1/>, unless the invoker is the superuser, " +#| "and then any value may be added. An account with a restricted login shell " +#| "may not change her login shell. For this reason, placing <_:filename-2/> " +#| "in <_:filename-3/> is discouraged since accidentally changing to a " +#| "restricted shell would prevent the user from ever changing her login " +#| "shell back to its original value." +msgid "" +"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " +"since accidentally changing to a restricted shell would prevent the user " +"from ever changing her login shell back to its original value." +msgstr "" +"Єдиним обмеженням, яке накладають на оболонку входу є те, що назва команди " +"має бути частиною списку у <_:filename-1/>, якщо команду не викликано від " +"імені надкористувача. Надкористувач може додавати будь-яке значення. " +"Власники облікових записів із обмеженою оболонкою для входу не може " +"змінювати власну оболонку. З цієї причини не варто додавати <_:filename-2/> " +"у <_:filename-3/>, оскільки випадкова зміна обмеженої командної оболонки " +"призведе до повної заборони для користувача змінювати оболонку входу та " +"початкову." + #. (itstool) path: listitem/para -#: chsh.1.xml.out:155 +#: chsh.1.xml.out:174 msgid "List of valid login shells." msgstr "Список чинних оболонок входу." +#. (itstool) path: listitem/para +#: chsh.1.xml.out:177 +#, fuzzy +#| msgid "List of valid login shells." +msgid "User defined list of valid login shells." +msgstr "Список чинних оболонок входу." + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:183 +#, fuzzy +#| msgid "" +#| "The following configuration variables in <_:filename-1/> change the " +#| "behavior of this tool:" +msgid "Default configuration file if <_:filename-1/> does not exist." +msgstr "" +"Вказані нижче змінні налаштувань у <_:filename-1/> змінюють поведінку цього " +"інструмента:" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:188 +msgid "%vendordir%/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:190 +msgid "Directory for additional vendor specific configuration files." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:194 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d" +msgstr "/etc/shells" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:196 +#, fuzzy +#| msgid "File Formats and Configuration Files" +msgid "Directory for additional user defined configuration files." +msgstr "Формати файлів і файли налаштувань" + #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command @@ -2136,7 +2385,7 @@ msgid "check and enforce password expiration policy" msgstr "перевірка і встановлення правил застарівання паролів" #. (itstool) path: arg/replaceable -#: expiry.1.xml.out:52 gpasswd.1.xml.out:61 +#: expiry.1.xml.out:52 gpasswd.1.xml.out:63 msgid "option" msgstr "параметр" @@ -2176,7 +2425,7 @@ msgstr "" #. (itstool) path: author/contrib #: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 -#: passwd.1.xml.out:24 passwd.5.xml.out:17 porttime.5.xml.out:17 +#: passwd.1.xml.out:26 passwd.5.xml.out:17 porttime.5.xml.out:17 #: shadow.3.xml.out:17 shadow.5.xml.out:17 su.1.xml.out:34 msgid "Creation, 1989" msgstr "Створення, 1989" @@ -2197,7 +2446,7 @@ msgstr "faillog" #. (itstool) path: refmeta/refmiscinfo #: faillog.5.xml.out:35 gshadow.5.xml.out:24 limits.5.xml.out:37 -#: login.access.5.xml.out:36 login.defs.5.xml.out:104 passwd.5.xml.out:35 +#: login.access.5.xml.out:36 login.defs.5.xml.out:106 passwd.5.xml.out:35 #: porttime.5.xml.out:35 shadow.5.xml.out:35 suauth.5.xml.out:35 msgid "File Formats and Configuration Files" msgstr "Формати файлів і файли налаштувань" @@ -2283,14 +2532,14 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:124 -#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 +#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 #: usermod.8.xml.out:78 usermod.8.xml.out:210 msgid "-a" msgstr "-a" #. (itstool) path: term/option -#: faillog.8.xml.out:72 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 passwd.1.xml.out:153 msgid "--all" msgstr "--all" @@ -2528,8 +2777,8 @@ msgstr "" #: login.1.xml.out:108 login.1.xml.out:112 login.1.xml.out:119 #: login.1.xml.out:171 login.1.xml.out:177 login.1.xml.out:230 #: login.1.xml.out:238 login.1.xml.out:247 login.1.xml.out:253 -#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:343 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:530 newgrp.1.xml.out:133 +#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:356 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:549 newgrp.1.xml.out:133 #: nologin.8.xml.out:60 passwd.5.xml.out:125 passwd.5.xml.out:132 #: passwd.5.xml.out:179 porttime.5.xml.out:121 shadow.5.xml.out:265 #: sg.1.xml.out:122 su.1.xml.out:415 @@ -2537,28 +2786,28 @@ msgid "login" msgstr "login" #. (itstool) path: author/firstname -#: gpasswd.1.xml.out:20 +#: gpasswd.1.xml.out:22 msgid "Rafal" msgstr "Rafal" #. (itstool) path: author/surname -#: gpasswd.1.xml.out:21 +#: gpasswd.1.xml.out:23 msgid "Maszkowski" msgstr "Maszkowski" #. (itstool) path: author/contrib -#: gpasswd.1.xml.out:22 login.access.5.xml.out:18 pwconv.8.xml.out:23 +#: gpasswd.1.xml.out:24 login.access.5.xml.out:18 pwconv.8.xml.out:23 #: suauth.5.xml.out:17 msgid "Creation, 1996" msgstr "Створення, 1996" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:49 msgid "administer <_:filename-1/>" msgstr "адміністрування <_:filename-1/>" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:52 msgid "administer <_:filename-1/> and <_:filename-2/>" msgstr "адміністрування <_:filename-1/> і <_:filename-2/>" @@ -2566,9 +2815,9 @@ msgstr "адміністрування <_:filename-1/> і <_:filename-2/>" #. (itstool) path: para/replaceable #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:64 gpasswd.1.xml.out:89 gpasswd.1.xml.out:129 -#: gpasswd.1.xml.out:142 gpasswd.1.xml.out:177 gpasswd.1.xml.out:181 -#: gpasswd.1.xml.out:193 gpasswd.1.xml.out:197 gpasswd.1.xml.out:292 +#: gpasswd.1.xml.out:66 gpasswd.1.xml.out:91 gpasswd.1.xml.out:131 +#: gpasswd.1.xml.out:144 gpasswd.1.xml.out:179 gpasswd.1.xml.out:183 +#: gpasswd.1.xml.out:195 gpasswd.1.xml.out:199 gpasswd.1.xml.out:294 #: grpck.8.xml.out:49 grpck.8.xml.out:188 grpck.8.xml.out:280 #: gshadow.5.xml.out:156 limits.5.xml.out:138 newgrp.1.xml.out:48 #: newgrp.1.xml.out:145 pwck.8.xml.out:336 pwconv.8.xml.out:114 @@ -2577,17 +2826,17 @@ msgid "group" msgstr "група" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:73 +#: gpasswd.1.xml.out:75 msgid ", and <_:filename-1/>" msgstr " і <_:filename-1/>" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:78 msgid "administrators," msgstr "адміністраторів," #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:71 +#: gpasswd.1.xml.out:73 msgid "" "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" ">. Every group can have <_:phrase-4/> members and a password." @@ -2598,12 +2847,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: gpasswd.1.xml.out:80 gpasswd.1.xml.out:112 gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 msgid "-A" msgstr "-A" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:79 +#: gpasswd.1.xml.out:81 msgid "" "System administrators can use the <_:option-1/> option to define group " "administrator(s) and the <_:option-2/> option to define members. They have " @@ -2614,17 +2863,17 @@ msgstr "" "учасників. Вони мають усі права адміністраторів і учасників груп." #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:86 +#: gpasswd.1.xml.out:88 msgid "a group administrator" msgstr "адміністратор групи" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:89 msgid "a system administrator" msgstr "адміністратор системи" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:84 +#: gpasswd.1.xml.out:86 msgid "" "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " "prompts for the new password of the <_:replaceable-4/>." @@ -2638,8 +2887,8 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:93 gpasswd.1.xml.out:180 gpasswd.1.xml.out:196 -#: gpasswd.1.xml.out:277 groups.1.xml.out:71 groups.1.xml.out:92 +#: gpasswd.1.xml.out:95 gpasswd.1.xml.out:182 gpasswd.1.xml.out:198 +#: gpasswd.1.xml.out:279 groups.1.xml.out:71 groups.1.xml.out:92 #: gshadow.5.xml.out:76 gshadow.5.xml.out:165 newgrp.1.xml.out:34 #: newgrp.1.xml.out:41 newgrp.1.xml.out:47 newgrp.1.xml.out:55 #: newgrp.1.xml.out:63 newgrp.1.xml.out:66 sg.1.xml.out:60 sg.1.xml.out:64 @@ -2648,7 +2897,7 @@ msgid "newgrp" msgstr "newgrp" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:93 msgid "" "If a password is set the members can still use <_:citerefentry-1/> without a " "password, and non-members must supply the password." @@ -2658,12 +2907,12 @@ msgstr "" "пароль." #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "Нотатки щодо паролів груп" #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "" "Group passwords are an inherent security problem since more than one person " "is permitted to know the password. However, groups are a useful tool for " @@ -2674,7 +2923,7 @@ msgstr "" "взаємодії між різними користувачами." #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 msgid "" "Except for the <_:option-1/> and <_:option-2/> options, the options cannot " "be combined." @@ -2683,51 +2932,51 @@ msgstr "" "поєднувати." #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "Параметри не можна поєднувати." #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 groupmems.8.xml.out:83 +#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 msgid "--add" msgstr "--add" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 gpasswd.1.xml.out:128 gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 gpasswd.1.xml.out:205 gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 #: groups.1.xml.out:48 groups.1.xml.out:59 msgid "user" msgstr "користувач" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 msgid "Add the <_:replaceable-1/> to the named <_:replaceable-2/>." msgstr "Додати <_:replaceable-1/> до іменованого <_:replaceable-2/>." #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 groupmems.8.xml.out:94 passwd.1.xml.out:168 +#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 msgid "--delete" msgstr "--delete" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 msgid "Remove the <_:replaceable-1/> from the named <_:replaceable-2/>." msgstr "Вилучити <_:replaceable-1/> з іменованого <_:replaceable-2/>." #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 msgid "-Q" msgstr "-Q" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "--remove-password" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 msgid "" "Remove the password from the named <_:replaceable-1/>. The group password " "will be empty. Only group members will be allowed to use <_:command-2/> to " @@ -2738,12 +2987,12 @@ msgstr "" "групи <_:replaceable-3/> зможуть лише учасники групи." #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "--restrict" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 msgid "" "Restrict the access to the named <_:replaceable-1/>. The group password is " "set to \"!\". Only group members with a password will be allowed to use <_:" @@ -2755,42 +3004,42 @@ msgstr "" "з паролем." #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 msgid "--administrators" msgstr "--administrators" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 msgid "Set the list of administrative users." msgstr "Встановити список адміністративних користувачів." #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 msgid "--members" msgstr "--members" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 msgid "Set the list of group members." msgstr "Встановити список учасників групи." #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 msgid "and <_:filename-1/> files." msgstr "і <_:filename-1/>." #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 msgid "file." msgstr "." #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 msgid "" "This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> " "Thus you cannot change any NIS or LDAP group. This must be performed on the " @@ -2806,11 +3055,11 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 groupadd.8.xml.out:357 groupdel.8.xml.out:34 +#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 #: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:299 useradd.8.xml.out:893 -#: userdel.8.xml.out:328 usermod.8.xml.out:623 +#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 +#: userdel.8.xml.out:328 usermod.8.xml.out:640 msgid "groupdel" msgstr "groupdel" @@ -2820,11 +3069,11 @@ msgstr "groupdel" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 groupadd.8.xml.out:360 groupdel.8.xml.out:220 +#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 #: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 userdel.8.xml.out:331 usermod.8.xml.out:626 +#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 msgid "groupmod" msgstr "groupmod" @@ -2834,10 +3083,10 @@ msgstr "groupmod" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 grpck.8.xml.out:33 grpck.8.xml.out:40 +#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 #: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 #: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:318 +#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 #: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 msgid "grpck" msgstr "grpck" @@ -2847,7 +3096,7 @@ msgstr "grpck" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 grpck.8.xml.out:95 grpck.8.xml.out:287 +#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 #: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 #: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 #: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 @@ -2855,12 +3104,12 @@ msgid "gshadow" msgstr "gshadow" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 newgrp.1.xml.out:146 sg.1.xml.out:135 +#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr ", <_:citerefentry-1/>" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 newgrp.1.xml.out:128 sg.1.xml.out:117 +#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -2909,8 +3158,8 @@ msgstr "Довжина назв груп не може перевищувати #: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 #: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 #: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:391 -#: useradd.8.xml.out:396 useradd.8.xml.out:557 useradd.8.xml.out:639 +#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 +#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 msgid "-g" msgstr "-g" @@ -2930,7 +3179,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:639 usermod.8.xml.out:174 +#: useradd.8.xml.out:659 usermod.8.xml.out:174 msgid "--gid" msgstr "--gid" @@ -2939,8 +3188,8 @@ msgstr "--gid" #. (itstool) path: para/option #: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 #: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "GID" @@ -2973,36 +3222,36 @@ msgid "GID_MAX" msgstr "МАКСИМАЛЬНИЙ_GID" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:111 useradd.8.xml.out:541 +#: groupadd.8.xml.out:111 useradd.8.xml.out:543 msgid "See also the <_:option-1/> option and the <_:option-2/> description." msgstr "Див. також описи параметрів <_:option-1/> і <_:option-2/>." #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:125 groupadd.8.xml.out:131 groupadd.8.xml.out:134 -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:303 -#: useradd.8.xml.out:314 useradd.8.xml.out:317 useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 +#: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 +#: useradd.8.xml.out:322 msgid "-K" msgstr "-K" #. (itstool) path: term/option -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "--key" msgstr "--key" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "KEY" msgstr "КЛЮЧ" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "VALUE" msgstr "ЗНАЧЕННЯ" #. (itstool) path: varlistentry/term -#: groupadd.8.xml.out:124 useradd.8.xml.out:302 +#: groupadd.8.xml.out:124 useradd.8.xml.out:304 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" msgstr "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" @@ -3016,12 +3265,12 @@ msgstr "" "іншими). Може бути вказано декілька параметрів <_:option-2/>." #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:134 useradd.8.xml.out:320 +#: groupadd.8.xml.out:134 useradd.8.xml.out:322 msgid "100" msgstr "100" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:321 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:323 msgid "499" msgstr "499" @@ -3037,7 +3286,7 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: term/replaceable #: groupadd.8.xml.out:138 groupadd.8.xml.out:333 groupdel.8.xml.out:192 -#: groupmod.8.xml.out:295 useradd.8.xml.out:853 userdel.8.xml.out:265 +#: groupmod.8.xml.out:295 useradd.8.xml.out:873 userdel.8.xml.out:265 msgid "10" msgstr "10" @@ -3051,7 +3300,7 @@ msgstr "" "replaceable-4/>=<_:replaceable-5/> ще не працює." #. (itstool) path: term/option -#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:405 +#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 #: usermod.8.xml.out:271 msgid "--non-unique" msgstr "--non-unique" @@ -3074,19 +3323,19 @@ msgstr "" #: groupadd.8.xml.out:158 groupmems.8.xml.out:55 groupmems.8.xml.out:130 #: groupmod.8.xml.out:143 login.1.xml.out:80 login.1.xml.out:88 #: login.1.xml.out:95 login.1.xml.out:212 su.1.xml.out:207 -#: useradd.8.xml.out:425 usermod.8.xml.out:237 usermod.8.xml.out:290 +#: useradd.8.xml.out:427 usermod.8.xml.out:237 usermod.8.xml.out:290 #: usermod.8.xml.out:411 vipw.8.xml.out:102 msgid "-p" msgstr "-p" #. (itstool) path: term/option -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "--password" msgstr "--password" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "PASSWORD" msgstr "ПАРОЛЬ" @@ -3095,8 +3344,8 @@ msgstr "ПАРОЛЬ" #: groupadd.8.xml.out:163 groupmod.8.xml.out:148 gshadow.5.xml.out:62 #: gshadow.5.xml.out:68 passwd.5.xml.out:103 passwd.5.xml.out:109 #: passwd.5.xml.out:170 shadow.5.xml.out:88 shadow.5.xml.out:94 -#: useradd.8.xml.out:430 useradd.8.xml.out:887 usermod.8.xml.out:295 -#: usermod.8.xml.out:614 +#: useradd.8.xml.out:432 useradd.8.xml.out:907 usermod.8.xml.out:295 +#: usermod.8.xml.out:631 msgid "crypt" msgstr "crypt" @@ -3106,11 +3355,11 @@ msgstr "crypt" #: groupadd.8.xml.out:164 groupadd.8.xml.out:315 groupmod.8.xml.out:148 #: groupmod.8.xml.out:271 groups.1.xml.out:68 groups.1.xml.out:104 #: grpck.8.xml.out:255 gshadow.5.xml.out:63 gshadow.5.xml.out:69 -#: passwd.1.xml.out:443 passwd.5.xml.out:104 passwd.5.xml.out:110 +#: passwd.1.xml.out:465 passwd.5.xml.out:104 passwd.5.xml.out:110 #: passwd.5.xml.out:170 passwd.5.xml.out:176 pwck.8.xml.out:305 #: shadow.3.xml.out:34 shadow.3.xml.out:217 shadow.5.xml.out:89 -#: shadow.5.xml.out:95 useradd.8.xml.out:431 useradd.8.xml.out:829 -#: useradd.8.xml.out:887 usermod.8.xml.out:296 usermod.8.xml.out:614 +#: shadow.5.xml.out:95 useradd.8.xml.out:433 useradd.8.xml.out:849 +#: useradd.8.xml.out:907 usermod.8.xml.out:296 usermod.8.xml.out:631 msgid "3" msgstr "3" @@ -3136,7 +3385,7 @@ msgstr "" "оклику." #. (itstool) path: para/emphasis -#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:444 +#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 #: userdel.8.xml.out:93 usermod.8.xml.out:299 msgid "Note:" msgstr "Зауваження:" @@ -3152,7 +3401,7 @@ msgstr "" "доступ до списку процесів." #. (itstool) path: listitem/para -#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:448 +#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 #: usermod.8.xml.out:309 msgid "" "You should make sure the password respects the system's password policy." @@ -3161,7 +3410,7 @@ msgstr "" "системи." #. (itstool) path: term/option -#: groupadd.8.xml.out:185 newusers.8.xml.out:287 useradd.8.xml.out:456 +#: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 msgid "--system" msgstr "--system" @@ -3191,49 +3440,11 @@ msgstr "" "option-1/>-<_:option-2/> range, defined in <_:filename-3/>, замість " "діапазону <_:option-4/>-<_:option-5/>." -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "-P" -msgstr "-P" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "--prefix" -msgstr "--prefix" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 groupadd.8.xml.out:219 groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 groupdel.8.xml.out:108 groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 groupmod.8.xml.out:183 useradd.8.xml.out:502 -#: useradd.8.xml.out:507 userdel.8.xml.out:136 userdel.8.xml.out:140 -#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "КАТАЛОГ_ПРЕФІКСА" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 useradd.8.xml.out:505 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. 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." -msgstr "" -"Застосувати зміни до файлів налаштувань у кореневій файловій системі з " -"каталогу <_:replaceable-1/>. Використання цього параметра не змінює " -"кореневої теки. Параметр призначено лише для приготування цілі для " -"компіляції коду для іншої операційної системи. Обмеження: не буде виконано " -"перевірку користувачів/груп NIS і LDAP. При розпізнаванні у PAM буде " -"використано файли основної системи. Підтримки SELINUX не передбачено." - #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:397 -#: useradd.8.xml.out:549 useradd.8.xml.out:558 usermod.8.xml.out:238 +#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 +#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 msgid "-U" msgstr "-U" @@ -3251,21 +3462,21 @@ msgstr "Список імен користувачів, яких слід дод #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:386 useradd.8.xml.out:397 useradd.8.xml.out:558 +#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 msgid "-N" msgstr "-N" #. (itstool) path: para/option #. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:448 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:398 -#: useradd.8.xml.out:559 userdel.8.xml.out:86 userdel.8.xml.out:296 +#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 +#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 +#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" msgstr "USERGROUPS_ENAB" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 +#: useradd.8.xml.out:558 msgid "" "The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> " "options are not specified) is defined by the <_:option-4/> variable in <_:" @@ -3293,13 +3504,13 @@ msgstr "" "LDAP, <_:command-1/> відмовить у запиті щодо створення групи." #. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:463 useradd.8.xml.out:831 +#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "некоректний аргумент параметра" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:449 pwck.8.xml.out:311 useradd.8.xml.out:835 +#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 msgid "4" msgstr "4" @@ -3309,7 +3520,7 @@ msgid "GID is already used (when called without <_:option-1/>)" msgstr "GID вже використано (якщо викликано без <_:option-1/>)" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:847 +#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 msgid "9" msgstr "9" @@ -3319,7 +3530,7 @@ msgid "group name is already used" msgstr "назву групи вже використано" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:855 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "не вдалося оновити файл груп" @@ -3331,11 +3542,11 @@ msgstr "не вдалося оновити файл груп" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:480 useradd.8.xml.out:913 +#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 #: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 #: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 #: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:643 +#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 msgid "userdel" msgstr "userdel" @@ -3346,11 +3557,11 @@ msgstr "userdel" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:490 passwd.1.xml.out:488 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:916 +#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 +#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 #: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 #: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:522 +#: usermod.8.xml.out:263 usermod.8.xml.out:539 msgid "usermod" msgstr "usermod" @@ -3380,8 +3591,8 @@ msgstr "вилучення групи" #: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 #: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 #: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:392 -#: useradd.8.xml.out:639 useradd.8.xml.out:648 usermod.8.xml.out:174 +#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 +#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 msgid "GROUP" msgstr "GROUP" @@ -3439,13 +3650,13 @@ msgstr "" "щоб не лишилося жодних файлів, які належать цій групі." #. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:461 -#: pwck.8.xml.out:323 useradd.8.xml.out:841 userdel.8.xml.out:253 +#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 +#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 msgid "6" msgstr "6" #. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:843 +#: groupdel.8.xml.out:182 useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "вказаної групи не існує" @@ -3493,7 +3704,7 @@ msgstr "Створення, 2000" #: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 #: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 #: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "groupmems" @@ -3632,8 +3843,12 @@ msgstr "" #. (itstool) path: refsect1/programlisting #: groupmems.8.xml.out:167 +#, fuzzy +#| msgid "" +#| "$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems " +#| "$ groupmems -g groups -a gk4" msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " +"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " "groupmems -g groups -a gk4" msgstr "" "$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " @@ -3730,7 +3945,7 @@ msgstr "" "з <_:filename-5/> виконано не буде." #. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:246 +#: groupmod.8.xml.out:121 passwd.1.xml.out:242 msgid "-n" msgstr "-n" @@ -3812,7 +4027,7 @@ msgid "E_CLEANUP_SERVICE: can't setup cleanup service" msgstr "E_CLEANUP_SERVICE: не вдалося налаштувати службу чищення" #. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:859 userdel.8.xml.out:271 +#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 msgid "12" msgstr "12" @@ -4004,7 +4219,7 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:67 newusers.8.xml.out:75 +#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 msgid "file" msgstr "файл" @@ -4036,7 +4251,7 @@ msgstr "--read-only" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:134 login.defs.5.xml.out:136 +#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "no" @@ -4064,8 +4279,8 @@ msgstr "Упорядкувати записи у <_:filename-1/> <_:phrase-2/> #. (itstool) path: term/option #. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 +#: passwd.1.xml.out:302 msgid "-S" msgstr "-S" @@ -4292,7 +4507,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:324 pwconv.8.xml.out:48 +#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 #: pwconv.8.xml.out:166 pwconv.8.xml.out:208 msgid "grpconv" @@ -4306,7 +4521,7 @@ msgstr "grpconv" #. (itstool) path: varlistentry/term #: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 #: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "lastlog" @@ -4353,7 +4568,7 @@ msgstr "" ">." #. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:592 +#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 msgid "-b" msgstr "-b" @@ -4707,7 +4922,7 @@ msgstr "username L2D2048N5 username L2 D2048 N5" #. (itstool) path: para/command #: limits.5.xml.out:122 login.1.xml.out:83 login.1.xml.out:91 #: login.1.xml.out:197 su.1.xml.out:70 su.1.xml.out:82 su.1.xml.out:95 -#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:775 +#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:795 msgid "username" msgstr "користувач" @@ -5207,8 +5422,8 @@ msgstr "sh" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:436 login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 newgrp.1.xml.out:136 passwd.5.xml.out:197 +#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 #: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 #: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 #: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 @@ -5385,12 +5600,12 @@ msgid "<_:citerefentry-1/>." msgstr "<_:citerefentry-1/>." #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "Налаштування комплексу для роботи з прихованими паролями" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 msgid "" "The <_:filename-1/> file defines the site-specific configuration for the " "shadow password suite. This file is required. Absence of this file will not " @@ -5402,7 +5617,7 @@ msgstr "" "наслідків." #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "" "This file is a readable text file, each line of the file describing one " "configuration parameter. The lines consist of a configuration name and " @@ -5418,18 +5633,18 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 useradd.8.xml.out:242 useradd.8.xml.out:380 +#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 #: userdel.8.xml.out:87 userdel.8.xml.out:297 msgid "yes" msgstr "так" #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 msgid "0x" msgstr "0x" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 msgid "" "Parameter values may be of four types: strings, booleans, numbers, and long " "numbers. A string is comprised of any printable characters. A boolean should " @@ -5452,32 +5667,32 @@ msgstr "" "з подвійною точністю визначається характеристиками системи." #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "У ваше розпорядження надано такі пункти налаштувань:" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 pwconv.8.xml.out:146 useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "PASS_MAX_DAYS" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 pwconv.8.xml.out:145 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "PASS_MIN_DAYS" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 pwconv.8.xml.out:147 +#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "PASS_WARN_AGE" #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 msgid "" "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " "account creation. Any changes to these settings won't affect existing " @@ -5488,12 +5703,12 @@ msgstr "" "наявні облікові записи." #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "ПЕРЕХРЕСНІ ПОСИЛАННЯ" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "" "The following cross references show which programs in the shadow password " "suite use which parameters." @@ -5505,57 +5720,75 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 login.defs.5.xml.out:423 login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 pwck.8.xml.out:75 pwck.8.xml.out:216 +#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 #: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 #: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 msgid "USE_TCB" msgstr "USE_TCB" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "CHFN_AUTH" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 msgid "LOGIN_STRING" msgstr "LOGIN_STRING" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 login.defs.5.xml.out:264 login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 +#, fuzzy +#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 login.defs.5.xml.out:282 -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 +#, fuzzy +#| msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" +"phrase-2/> <_:phrase-3/>" msgstr "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 msgid "CHSH_AUTH LOGIN_STRING" msgstr "CHSH_AUTH LOGIN_STRING" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 login.defs.5.xml.out:307 login.defs.5.xml.out:313 -#: login.defs.5.xml.out:320 login.defs.5.xml.out:326 login.defs.5.xml.out:332 +#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 +#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "MAX_MEMBERS_PER_GROUP" @@ -5563,49 +5796,49 @@ msgstr "MAX_MEMBERS_PER_GROUP" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 pwconv.8.xml.out:49 pwconv.8.xml.out:73 +#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 #: pwconv.8.xml.out:208 msgid "grpunconv" msgstr "grpunconv" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "LASTLOG_UID_MAX" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "CONSOLE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 msgid "FAILLOG_ENAB" msgstr "FAILLOG_ENAB" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 msgid "FTMP_FILE" msgstr "FTMP_FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "ISSUE_FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "LASTLOG_ENAB LASTLOG_UID_MAX" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "" "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" @@ -5614,12 +5847,12 @@ msgstr "" "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "ULIMIT UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " "<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " @@ -5634,22 +5867,30 @@ msgstr "" "USERGROUPS_ENAB" #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 msgid "newgrp / sg" msgstr "newgrp / sg" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "SYSLOG_SG_ENAB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 -msgid "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +#: login.defs.5.xml.out:395 +#, fuzzy +#| msgid "" +#| "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " +#| "HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " +#| "SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +#| "SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX " +#| "UID_MIN UMASK" +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " +"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" +"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " +"UMASK <_:phrase-3/>" msgstr "" "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " "HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " @@ -5657,21 +5898,26 @@ msgstr "" "SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 +#: login.defs.5.xml.out:417 +#, fuzzy +#| msgid "" +#| "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " +#| "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" msgid "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " +"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" msgstr "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" @@ -5681,7 +5927,7 @@ msgstr "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 passwd.5.xml.out:188 pwconv.8.xml.out:39 +#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 #: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 #: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 @@ -5694,7 +5940,7 @@ msgstr "pwconv" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 passwd.5.xml.out:191 pwconv.8.xml.out:47 +#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 #: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 #: pwconv.8.xml.out:166 shadow.5.xml.out:280 @@ -5702,22 +5948,22 @@ msgid "pwunconv" msgstr "pwunconv" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "ENV_HZ ENVIRON_FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "SU_WHEEL_ONLY" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " "<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" @@ -5727,28 +5973,24 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 passwd.5.xml.out:200 shadow.5.xml.out:286 +#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 msgid "sulogin" msgstr "sulogin" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "ENV_TZ" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" -msgstr "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +#, fuzzy +#| msgid "ENV_HZ ENVIRON_FILE" +msgid "ENV_HZ ENV_TZ" +msgstr "ENV_HZ ENVIRON_FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 msgid "" "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " "MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " @@ -5763,12 +6005,12 @@ msgstr "" "phrase-1/>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "TCB_SYMLINKS USE_TCB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 msgid "" "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" "phrase-1/>" @@ -5777,7 +6019,7 @@ msgstr "" "phrase-1/>" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 msgid "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" msgstr "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" @@ -5786,18 +6028,18 @@ msgstr "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 vipw.8.xml.out:35 vipw.8.xml.out:42 +#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 #: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 msgid "vipw" msgstr "vipw" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 pwconv.8.xml.out:193 suauth.5.xml.out:179 +#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 msgid "BUGS" msgstr "ВАДИ" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 msgid "" "Much of the functionality that used to be provided by the shadow password " "suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:" @@ -5812,12 +6054,12 @@ msgstr "" "налаштувань PAM." #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 msgid "pam" msgstr "pam" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." @@ -5933,12 +6175,12 @@ msgid "id" msgstr "id" #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "пакетне оновлення і створення облікових записів користувачів" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 msgid "" "The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input " "by default) and uses this information to update a set of existing users or " @@ -5952,22 +6194,22 @@ msgstr "" "citerefentry-3/>). Винятки з цього правила описано нижче:" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 msgid "pw_name" msgstr "pw_name" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "Це ім'я користувача." #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 msgid "" "It can be the name of a new user or the name of an existing user (or a user " "created before by <_:command-1/>). In case of an existing user, the user's " @@ -5979,12 +6221,12 @@ msgstr "" "користувача не існуватиме, його буде створено." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "pw_passwd" #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "" "This field will be encrypted and used as the new value of the encrypted " "password." @@ -5992,17 +6234,17 @@ msgstr "" "Це поле буде зашифровано і використано як нове значення зашифрованого пароля." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 msgid "pw_uid" msgstr "pw_uid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "Це поле буде використано для визначення UID користувача." #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 msgid "" "If the field is empty, a new (unused) UID will be defined automatically by " "<_:command-1/>." @@ -6011,12 +6253,12 @@ msgstr "" "> автоматично." #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "Якщо у цьому полі міститься число, це число буде використано як UID." #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 msgid "" "If this field contains the name of an existing user (or the name of a user " "created before by <_:command-1/>), the UID of the specified user will be " @@ -6027,7 +6269,7 @@ msgstr "" "використано UID вказаного користувача." #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "" "If the UID of an existing user is changed, the files ownership of the user's " "file should be fixed manually." @@ -6036,19 +6278,19 @@ msgstr "" "користувача має бути виправлено вручну." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "" "Це поле використовують для визначення ідентифікатора основної групи " "користувача." #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 msgid "" "If this field contains the name of an existing group (or a group created " "before by <_:command-1/>), the GID of this group will be used as the primary " @@ -6059,7 +6301,7 @@ msgstr "" "ідентифікатор основної групи користувача." #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "" "If this field is a number, this number will be used as the primary group ID " "of the user. If no groups exist with this GID, a new group will be created " @@ -6070,7 +6312,7 @@ msgstr "" "нову групу з цим GID і назвою, яка збігається із іменем користувача." #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 msgid "" "If this field is empty, a new group will be created with the name of the " "user and a GID will be automatically defined by <_:command-1/> to be used as " @@ -6082,7 +6324,7 @@ msgstr "" "користувача і як GID для нової групи." #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 msgid "" "If this field contains the name of a group which does not exist (and was not " "created before by <_:command-1/>), a new group will be created with the " @@ -6096,32 +6338,32 @@ msgstr "" "для нової групи." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "pw_gecos" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "Це поле буде скопійовано до поля GECOS користувача." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "pw_dir" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "Це поле призначено для визначення домашнього каталогу користувача." #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "newusers не створює батьківських каталогів" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "" "If this field does not specify an existing directory, the specified " "directory is created, with ownership set to the user being created or " @@ -6143,7 +6385,7 @@ msgstr "" "нових користувачів." #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 msgid "" "If the home directory of an existing user is changed, <_:command-1/> does " "not move or copy the content of the old directory to the new location. This " @@ -6154,12 +6396,12 @@ msgstr "" "доведеться зробити вручну." #. (itstool) path: term/emphasis -#: newusers.8.xml.out:218 +#: newusers.8.xml.out:220 msgid "pw_shell" msgstr "pw_shell" #. (itstool) path: listitem/para -#: newusers.8.xml.out:221 +#: newusers.8.xml.out:223 msgid "" "This field defines the shell of the user. No checks are performed on this " "field." @@ -6168,7 +6410,7 @@ msgstr "" "поля не виконуються." #. (itstool) path: refsect1/para -#: newusers.8.xml.out:229 +#: newusers.8.xml.out:231 msgid "" "<_:command-1/> first tries to create or change all the specified users, and " "then write these changes to the user or group databases. If an error occurs " @@ -6181,7 +6423,7 @@ msgstr "" "даних не вноситимуться." #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "" "During this first pass, users are created with a locked password (and " "passwords are not changed for the users which are not created). A second " @@ -6195,7 +6437,7 @@ msgstr "" "буде зупинено." #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "" "This command is intended to be used in a large system environment where many " "accounts are updated at a single time." @@ -6204,48 +6446,57 @@ msgstr "" "одночасно оновлюють багато облікових записів." #. (itstool) path: term/option -#: newusers.8.xml.out:257 pwck.8.xml.out:164 useradd.8.xml.out:108 +#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 #: usermod.8.xml.out:89 msgid "--badname" msgstr "--badname" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 pwck.8.xml.out:167 useradd.8.xml.out:111 +#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 #: usermod.8.xml.out:92 msgid "Allow names that do not conform to standards." msgstr "Дозволити назви, які не відповідають стандартам." #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "" +"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " +"support these methods." +msgstr "" +"Доступними методами є DES, MD5, NONE і SHA256 або SHA512, якщо у вашій libc " +"передбачено підтримку цих методів." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 useradd.8.xml.out:461 msgid "Create a system account." msgstr "Створити загальносистемний обліковий запис." #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "SYS_UID_MIN" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "SYS_UID_MAX" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:319 -#: useradd.8.xml.out:468 useradd.8.xml.out:538 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 +#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 msgid "UID_MIN" msgstr "UID_MIN" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:321 -#: useradd.8.xml.out:468 useradd.8.xml.out:543 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 +#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 msgid "UID_MAX" msgstr "UID_MAX" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 useradd.8.xml.out:462 +#: newusers.8.xml.out:295 useradd.8.xml.out:464 msgid "" "System users will be created with no aging information in <_:filename-1/>, " "and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> " @@ -6258,8 +6509,47 @@ msgstr "" "не у <_:option-5/>-<_:option-6/> (та їхніх відповідників <_:option-7/> для " "створення груп)." +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default is 13." +msgstr "" +"Буде примусово встановлено мінімальне значення 1000 і максимальне значення " +"999999999." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default is 5000." +msgstr "" +"Буде примусово встановлено мінімальне значення 1000 і максимальне значення " +"999999999." + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default is 5." +msgstr "" +"Буде примусово встановлено мінімальне значення 1000 і максимальне значення " +"999999999." + #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "" "The input file must be protected since it contains unencrypted passwords." msgstr "" @@ -6267,49 +6557,49 @@ msgstr "" "незашифровані паролі." #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 msgid "/etc/pam.d/newusers" msgstr "/etc/pam.d/newusers" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 useradd.8.xml.out:222 useradd.8.xml.out:481 -#: useradd.8.xml.out:785 userdel.8.xml.out:215 usermod.8.xml.out:587 +#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 +#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 msgid "/etc/subgid" msgstr "/etc/subgid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 useradd.8.xml.out:787 userdel.8.xml.out:217 +#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "Окремі для користувачів ідентифікатори підлеглих груп." #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 useradd.8.xml.out:222 useradd.8.xml.out:480 -#: useradd.8.xml.out:791 userdel.8.xml.out:221 usermod.8.xml.out:593 +#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 +#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 msgid "/etc/subuid" msgstr "/etc/subuid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 useradd.8.xml.out:793 userdel.8.xml.out:223 +#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "Окремі для користувачів ідентифікатори підлеглих користувачів." #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 useradd.8.xml.out:906 userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 +#: usermod.8.xml.out:650 msgid "subgid" msgstr "subgid" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 useradd.8.xml.out:909 userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 +#: usermod.8.xml.out:653 msgid "subuid" msgstr "subuid" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 useradd.8.xml.out:904 userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>," @@ -6358,12 +6648,12 @@ msgid "The <_:command-1/> command appeared in BSD 4.4." msgstr "Команда <_:command-1/> з'явилася у BSD 4.4." #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "зміна пароля користувача" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 msgid "" "The <_:command-1/> command changes passwords for user accounts. A normal " "user may only change the password for their own account, while the superuser " @@ -6377,12 +6667,12 @@ msgstr "" "пов'язаного з ним пароля." #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "Зміни паролів" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 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 " @@ -6395,7 +6685,7 @@ msgstr "" "Надкористувач може обійти цей крок, тому може змінювати забуті паролі." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 msgid "" "After the password has been entered, password aging information is checked " "to see if the user is permitted to change the password at this time. If not, " @@ -6407,7 +6697,7 @@ msgstr "" "роботу." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "" "The user is then prompted twice for a replacement password. The second entry " "is compared against the first and both are required to match in order for " @@ -6418,53 +6708,25 @@ msgstr "" "пароль було змінено." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 +#: passwd.1.xml.out:98 msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" +"Then, the password is tested for complexity. <_:command-1/> will reject any " +"password which is not suitably complex. Care must be taken not to include " +"the system default erase or kill characters." msgstr "" -"Далі, пароль буде перевірено на складність. Загальним правилом є те, що " -"пароль має складатися з від 6 до 8 символів, включаючи один або декілька " -"символів з кожного з таких наборів:" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "малі літери латинської абетки" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "цифри від 0 до 9" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "символи пунктуації" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 -msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. <_:command-1/> will reject any password which is not suitably " -"complex." -msgstr "" -"До пароля не можна включати типові символи вилучення або витирання системи. " -"<_:command-1/> не прийме пароля, який не є достатньо складним." #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "Підказки для паролів користувача" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "UNIX" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 msgid "" "The security of a password depends upon the strength of the encryption " "algorithm and the size of the key space. The legacy <_:emphasis-1/> System " @@ -6479,7 +6741,7 @@ msgstr "" "пароля, яку було вибрано." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "" "Compromises in password security normally result from careless password " "selection or handling. For this reason, you should not select a password " @@ -6495,7 +6757,19 @@ msgstr "" "вгадування пароля і компрометації захисту системи." #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "" +"As a general guideline, passwords should be long and random. It's fine to " +"use simple character sets, such as passwords consisting only of lowercase " +"letters, if that helps memorizing longer passwords. For a password " +"consisting only of lowercase English letters randomly chosen, and a length " +"of 32, there are 26^32 (approximately 2^150) different possible " +"combinations. Being an exponential equation, it's apparent that the exponent " +"(the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 msgid "" "You can find advice on how to choose a strong password on http://en." "wikipedia.org/wiki/Password_strength" @@ -6504,7 +6778,7 @@ msgstr "" "wikipedia.org/wiki/Надійність_пароля" #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 msgid "" "This option can be used only with <_:option-1/> and causes show status for " "all users." @@ -6513,7 +6787,7 @@ msgstr "" "використання призведе до показу стану для усіх користувачів." #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "" "Delete a user's password (make it empty). This is a quick way to disable a " "password for an account. It will set the named account passwordless." @@ -6523,12 +6797,12 @@ msgstr "" "запис безпарольним." #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 msgid "--expire" msgstr "--expire" #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 msgid "" "Immediately expire an account's password. This in effect can force a user to " "change their password at the user's next login." @@ -6538,7 +6812,7 @@ msgstr "" "до системи." #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 msgid "" "This option is used to disable an account after the password has been " "expired for a number of days. After a user account has had an expired " @@ -6552,17 +6826,17 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 useradd.8.xml.out:278 useradd.8.xml.out:356 +#: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 msgid "-k" msgstr "-k" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "--keep-tokens" #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 msgid "" "Indicate password change should be performed only for expired authentication " "tokens (passwords). The user wishes to keep their non-expired tokens as " @@ -6573,12 +6847,12 @@ msgstr "" "дію жетонів, строк дії яких не вичерпано." #. (itstool) path: term/option -#: passwd.1.xml.out:222 usermod.8.xml.out:231 +#: passwd.1.xml.out:218 usermod.8.xml.out:231 msgid "--lock" msgstr "--lock" #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 msgid "" "Lock the password of the named account. This option disables a password by " "changing it to a value which matches no possible encrypted value (it adds a " @@ -6589,12 +6863,12 @@ msgstr "" "відповідає зашифрованому значенню (буде додано ´!´ на початку пароля)." #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "usermod --expiredate 1" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 msgid "" "Note that this does not disable the account. The user may still be able to " "login using another authentication token (e.g. an SSH key). To disable the " @@ -6608,49 +6882,49 @@ msgstr "" "запису значення 2 січня 1970 року)." #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "" "Користувачі із заблокованим паролем не зможуть змінювати власний пароль." #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "-q" msgstr "-q" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "--quiet" msgstr "--quiet" #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 vipw.8.xml.out:110 +#: passwd.1.xml.out:257 vipw.8.xml.out:110 msgid "Quiet mode." msgstr "Режим без повідомлень." #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "--repository" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: passwd.1.xml.out:268 passwd.1.xml.out:272 +#: passwd.1.xml.out:264 passwd.1.xml.out:268 msgid "REPOSITORY" msgstr "СХОВИЩЕ" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 msgid "change password in <_:replaceable-1/> repository" msgstr "змінити пароль у сховищі <_:replaceable-1/>" #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "--status" #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 msgid "" "Display account status information. The status information consists of 7 " "fields. The first field is the user's login name. The second field indicates " @@ -6669,12 +6943,12 @@ msgstr "" "значення віку виражаються у днях." #. (itstool) path: term/option -#: passwd.1.xml.out:309 usermod.8.xml.out:405 +#: passwd.1.xml.out:320 usermod.8.xml.out:405 msgid "--unlock" msgstr "--unlock" #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 msgid "" "Unlock the password of the named account. This option re-enables a password " "by changing the password back to its previous value (to the value before " @@ -6685,7 +6959,7 @@ msgstr "" "використання параметра <_:option-1/>)." #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 msgid "" "Set the number of days of warning before a password change is required. The " "<_:replaceable-1/> option is the number of days prior to the password " @@ -6697,12 +6971,12 @@ msgstr "" "користувача про те, що пароль невдовзі доведеться змінити." #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 msgid "-x" msgstr "-x" #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 msgid "" "Set the maximum number of days a password remains valid. After <_:" "replaceable-1/>, the password is required to be changed." @@ -6711,8 +6985,20 @@ msgstr "" "чинним. Щойно мине <_:replaceable-1/>, система вимагатиме від користувача " "змінити пароль." +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "" +"This option is used to indicate that passwd should read the new password " +"from standard input, which can be a pipe." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 msgid "" "Password complexity checking may vary from site to site. The user is urged " "to select a password as complex as he or she feels comfortable with." @@ -6722,7 +7008,7 @@ msgstr "" "розробників." #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "" "Users may not be able to change their password on a system if NIS is enabled " "and they are not logged into the NIS server." @@ -6731,7 +7017,7 @@ msgstr "" "увімкнено NIS, і користувачі не увійшли до сервера NIS." #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 msgid "" "<_:command-1/> uses PAM to authenticate users and to change their passwords." msgstr "" @@ -6739,38 +7025,56 @@ msgstr "" "паролів PAM." #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 msgid "/etc/pam.d/passwd" msgstr "/etc/pam.d/passwd" #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "некоректне поєднання параметрів" #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "неочікувана помилка, нічого не виконано" #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 msgid "unexpected failure, <_:filename-1/> file missing" msgstr "неочікувана помилка, не вистачає файла <_:filename-1/>" #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 msgid "<_:filename-1/> file busy, try again" msgstr "файл <_:filename-1/> зайнято, повторіть спробу" +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +#, fuzzy +#| msgid "passwd" +msgid "makepasswd" +msgstr "passwd" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 +#: passwd.1.xml.out:494 +#, fuzzy +#| msgid "" +#| "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +#| "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:517 +msgid "" +"The following web page comically (yet correctly) compares the strength of " +"two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." #. (itstool) path: refnamediv/refpurpose #: passwd.5.xml.out:41 @@ -8487,6 +8791,11 @@ msgstr "$TZ" msgid "$HZ" msgstr "$HZ" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "ENV_TZ" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -8837,7 +9146,7 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option #: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:583 useradd.8.xml.out:585 +#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 msgid "-D" msgstr "-D" @@ -8867,14 +9176,14 @@ msgstr "" "<_:option-1/>, <_:option-2/>, <_:option-3/> і <_:option-4/>)." #. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:592 +#: useradd.8.xml.out:118 useradd.8.xml.out:612 msgid "--base-dir" msgstr "--base-dir" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:592 useradd.8.xml.out:598 +#: useradd.8.xml.out:612 useradd.8.xml.out:618 msgid "BASE_DIR" msgstr "БАЗОВИЙ_КАТАЛОГ" @@ -8897,18 +9206,18 @@ msgstr "" "поєднано із назвою облікового запису." #. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:603 +#: useradd.8.xml.out:131 useradd.8.xml.out:623 msgid "HOME" msgstr "HOME" #. (itstool) path: para/filename #. (itstool) path: term/filename #: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:293 useradd.8.xml.out:343 -#: useradd.8.xml.out:393 useradd.8.xml.out:523 useradd.8.xml.out:604 -#: useradd.8.xml.out:616 useradd.8.xml.out:633 useradd.8.xml.out:649 -#: useradd.8.xml.out:663 useradd.8.xml.out:677 useradd.8.xml.out:767 -#: usermod.8.xml.out:419 +#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 +#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 +#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 +#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 +#: useradd.8.xml.out:787 usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "/etc/default/useradd" @@ -8993,7 +9302,7 @@ msgstr "" "форматі <_:emphasis-1/>." #. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:615 usermod.8.xml.out:418 +#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 msgid "EXPIRE" msgstr "EXPIRE" @@ -9035,7 +9344,7 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:482 +#: useradd.8.xml.out:218 useradd.8.xml.out:484 #, fuzzy #| msgid "-" msgid "-F" @@ -9141,14 +9450,30 @@ msgstr "" "<_:option-1/>, <_:option-2/> <_:replaceable-3/>[<_:emphasis-4/>[<_:" "emphasis-5/>]]]" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +#, fuzzy +#| msgid "GROUP" +msgid "GROUPS" +msgstr "GROUP" + #. (itstool) path: listitem/para #: useradd.8.xml.out:260 +#, fuzzy +#| msgid "" +#| "A list of supplementary groups which the user is also a member of. Each " +#| "group is separated from the next by a comma, with no intervening " +#| "whitespace. The groups are subject to the same restrictions as the group " +#| "given with the <_:option-1/> option. The default is for the user to " +#| "belong only to the initial group." msgid "" "A list of supplementary groups which the user is also a member of. Each " "group is separated from the next by a comma, with no intervening whitespace. " "The groups are subject to the same restrictions as the group given with the " "<_:option-1/> option. The default is for the user to belong only to the " -"initial group." +"initial group. In addition to passing in the -G flag, you can add the option " +"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " +"to those supplementary groups." msgstr "" "Список додаткових груп, учасником яких також буде користувач. Групи у списку " "слід відокремлювати комою, без проміжного пробілу. Групи підлягатимуть тим " @@ -9156,17 +9481,17 @@ msgstr "" "поведінкою є належність користувача лише до початкової групи." #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "--skel" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "SKEL_DIR" msgstr "SKEL_DIR" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 msgid "" "The skeleton directory, which contains files and directories to be copied in " "the user's home directory, when the home directory is created by <_:" @@ -9178,12 +9503,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 useradd.8.xml.out:350 +#: useradd.8.xml.out:290 useradd.8.xml.out:352 msgid "--create-home" msgstr "--create-home" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 msgid "" "This option is only valid if the <_:option-1/> (or <_:option-2/>) option is " "specified." @@ -9192,17 +9517,17 @@ msgstr "" "option-2/>)." #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "SKEL" #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 msgid "/etc/skel" msgstr "/etc/skel" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 msgid "" "If this option is not set, the skeleton directory is defined by the <_:" "option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." @@ -9211,17 +9536,17 @@ msgstr "" "<_:option-1/> у <_:filename-2/> або, типово, <_:filename-3/>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "Якщо можна, буде скопійовано ACL і розширені атрибути." #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "UMASK" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "" "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" "option-4/>, <_:option-5/> and others)." @@ -9230,7 +9555,7 @@ msgstr "" "option-3/>, <_:option-4/>, <_:option-5/> та іншими)." #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "" "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " "when creating an account to turn off password aging. Multiple <_:option-4/> " @@ -9244,17 +9569,17 @@ msgstr "" "replaceable-9/>=<_:replaceable-10/>" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "--no-log-init" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "Не додавати користувача до баз даних lastlog і faillog." #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 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." @@ -9264,12 +9589,12 @@ msgstr "" "від раніше вилучених користувачів." #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "LOG_INIT" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "" "If this option is not specified, <_:command-1/> will also consult the " "variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " @@ -9280,7 +9605,7 @@ msgstr "" "користувача не буде додано до баз даних lastlog і faillog." #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 msgid "" "Create the user's home directory if it does not exist. The files and " "directories contained in the skeleton directory (which can be defined with " @@ -9291,12 +9616,12 @@ msgstr "" "(який можна визначити за допомогою параметра <_:option-1/>)." #. (itstool) path: para/option -#: useradd.8.xml.out:361 useradd.8.xml.out:379 useradd.8.xml.out:475 +#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "CREATE_HOME" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 msgid "" "By default, if this option is not specified and <_:option-1/> is not " "enabled, no home directories are created." @@ -9305,7 +9630,7 @@ msgstr "" "не створюватиме домашніх каталогів." #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "" "The directory where the user's home directory is created must exist and have " "proper SELinux context and permissions. Otherwise the user's home directory " @@ -9317,12 +9642,12 @@ msgstr "" "каталог буде недоступним." #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "--no-create-home" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 #, fuzzy #| msgid "" #| "Do no create the user's home directory, even if the system wide setting " @@ -9336,12 +9661,12 @@ msgstr "" "значення <_:replaceable-3/>." #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "--no-user-group" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 msgid "" "Do not create a group with the same name as the user, but add the user to " "the group specified by the <_:option-1/> option or by the <_:option-2/> " @@ -9352,12 +9677,12 @@ msgstr "" "option-1/> або змінною <_:option-2/> у <_:filename-3/>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 msgid "allows the creation of an account with an already existing UID." msgstr "Дозволяє створення облікового запису із наявним UID." #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 usermod.8.xml.out:277 +#: useradd.8.xml.out:414 usermod.8.xml.out:277 msgid "" "This option is only valid in combination with the <_:option-1/> option. As a " "user identity serves as key to map between users on one hand and " @@ -9372,7 +9697,7 @@ msgstr "" "матимуть декілька облікових записів для входу до системи." #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "" "defines an initial password for the account. PASSWORD is expected to be " "encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " @@ -9384,7 +9709,7 @@ msgstr "" "режимі." #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "" "Without this option, the new account will be locked and with no password " "defined, i.e. a single exclamation mark in the respective field of <_:" @@ -9397,7 +9722,7 @@ msgstr "" "або визначити пароль власноруч." #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 msgid "" "<_:emphasis-1/>Avoid this option on the command line because the password " "(or encrypted password) will be visible by users listing the processes." @@ -9407,7 +9732,7 @@ msgstr "" "користувачів, які мають доступ до списку процесів." #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 msgid "" "Note that <_:command-1/> will not create a home directory for such a user, " "regardless of the default setting in <_:filename-2/> (<_:option-3/>). You " @@ -9421,7 +9746,7 @@ msgstr "" "домашній каталог." #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 #, fuzzy #| msgid "" #| "Note that <_:command-1/> will not create a home directory for such a " @@ -9440,7 +9765,7 @@ msgstr "" "домашній каталог." #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 #, fuzzy #| msgid "" #| "sets the path to the user's login shell. Without this option, the system " @@ -9459,17 +9784,17 @@ msgstr "" "входу у <_:filename-3/> лишатиметься порожнім." #. (itstool) path: term/option -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "--uid" msgstr "--uid" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "UID" msgstr "UID" #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 msgid "" "The numerical value of the user's ID. This value must be unique, unless the " "<_:option-1/> option is used. The value must be non-negative. The default is " @@ -9483,12 +9808,12 @@ msgstr "" "будь-якого іншого користувача." #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "--user-group" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "" "Create a group with the same name as the user, and add the user to this " "group." @@ -9497,29 +9822,38 @@ msgstr "" "користувача, додати користувача до цієї групи." #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:525 msgid "-Z" msgstr "-Z" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:594 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:526 msgid "--selinux-user" msgstr "--selinux-user" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 usermod.8.xml.out:501 +#: useradd.8.xml.out:568 usermod.8.xml.out:501 msgid "SEUSER" msgstr "SEКОРИСТУВАЧ" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 useradd.8.xml.out:589 usermod.8.xml.out:521 msgid "semanage" msgstr "semanage" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 +#: useradd.8.xml.out:571 +#, fuzzy +#| msgid "" +#| "defines the SELinux user for the new account. Without this option, a " +#| "SELinux uses the default user. Note that the shadow system doesn't store " +#| "the selinux-user, it uses <_:citerefentry-1/> for that." msgid "" -"defines the SELinux user for the new account. Without this option, a SELinux " +"defines the SELinux user for the new account. Without this option, SELinux " "uses the default user. Note that the shadow system doesn't store the selinux-" "user, it uses <_:citerefentry-1/> for that." msgstr "" @@ -9528,13 +9862,44 @@ msgstr "" "shadow не зберігає користувача selinux — для цього вона використовує <_:" "citerefentry-1/>." +#. (itstool) path: term/option +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +#, fuzzy +#| msgid "--selinux-user" +msgid "--selinux-range" +msgstr "--selinux-user" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +#, fuzzy +#| msgid "RANGE" +msgid "SERANGE" +msgstr "ДІАПАЗОН" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +#, fuzzy +#| msgid "" +#| "defines the SELinux user for the new account. Without this option, a " +#| "SELinux uses the default user. Note that the shadow system doesn't store " +#| "the selinux-user, it uses <_:citerefentry-1/> for that." +msgid "" +"defines the SELinux MLS range for the new account. Without this option, " +"SELinux uses the default range. Note that the shadow system doesn't store " +"the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" +"Визначає користувача SELinux для нового облікового запису. Без цього " +"параметра, SELinux використає типового користувача. Зауважте, що система " +"shadow не зберігає користувача selinux — для цього вона використовує <_:" +"citerefentry-1/>." + #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "Зміна типових значень" #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 msgid "" "When invoked with only the <_:option-1/> option, <_:command-2/> will display " "the current default values. When invoked with <_:option-3/> plus other " @@ -9547,7 +9912,7 @@ msgstr "" "вказаних параметрів. Коректними параметрами для зміни типових значень є такі:" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 msgid "" "sets the path prefix for a new user's home directory. The user's name will " "be affixed to the end of <_:replaceable-1/> to form the new user's home " @@ -9560,20 +9925,20 @@ msgstr "" "створення облікового запису не було використано параметр <_:option-2/>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 msgid "This option sets the <_:option-1/> variable in <_:filename-2/>." msgstr "" "Цей параметр встановлює значення змінної <_:option-1/> у <_:filename-2/>." #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 msgid "sets the date on which newly created user accounts are disabled." msgstr "" "Встановлює дату вимикання новостворених облікових записів користувачів." #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -9584,7 +9949,7 @@ msgstr "" "citerefentry-1/>, щоб дізнатися більше." #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "" "sets the default primary group for newly created users, accepting group " "names or a numerical group ID. The named group must exist, and the GID must " @@ -9595,23 +9960,23 @@ msgstr "" "назвою група має існувати, а GID має бути наявним записом." #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "Визначає типову оболонку входу для нових користувачів." #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "ПРИМІТКИ" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 msgid "" "The system administrator is responsible for placing the default user files " "in the <_:filename-1/> directory (or any other skeleton directory specified " @@ -9622,7 +9987,7 @@ msgstr "" "рядку команди) відповідає адміністратор системи." #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " "corresponding server." @@ -9631,7 +9996,7 @@ msgstr "" "має бути виконано на відповідному сервері." #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 msgid "" "Similarly, if the username already exists in an external user database such " "as NIS or LDAP, <_:command-1/> will deny the user account creation request." @@ -9641,12 +10006,12 @@ msgstr "" "створення облікового запису користувача." #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -9657,52 +10022,52 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." -msgstr "Довжина імен користувачів не може перевищувати 32 символи." +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." +msgstr "Довжина імен користувачів не може перевищувати 256 символи." #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "Типові значення для створення облікового запису." #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/shadow-maint/useradd-pre.d/*" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "/etc/shadow-maint/useradd-post.d/*" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "<_:filename-1/>, <_:filename-2/>" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "ACTION" msgstr "ACTION" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "SUBJECT" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "useradd-pre.d" msgstr "useradd-pre.d" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "useradd-post.d" msgstr "useradd-post.d" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -9718,44 +10083,44 @@ msgstr "" "буде ненульове значення, виконання дій буде перервано." #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "Каталог, у якому містяться типові файли." #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "не вдалося оновити файл паролів" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 msgid "UID already in use (and no <_:option-1/>)" msgstr "UID вже використано (і не вказано <_:option-1/>)" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "username already in use" msgid "username or group name already in use" msgstr "запис користувача вже використано" #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "не вдалося створити домашній каталог" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 msgid "14" msgstr "14" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "не вдалося оновити прив'язку користувача SELinux" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -10513,8 +10878,24 @@ msgstr "" "вилучено. Зауважте, що система shadow не зберігає користувача selinux, а " "використовує для цього semanage(8)." -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 +#, fuzzy +#| msgid "" +#| "defines the SELinux user for the new account. Without this option, a " +#| "SELinux uses the default user. Note that the shadow system doesn't store " +#| "the selinux-user, it uses <_:citerefentry-1/> for that." +msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" +"Визначає користувача SELinux для нового облікового запису. Без цього " +"параметра, SELinux використає типового користувача. Зауважте, що система " +"shadow не зберігає користувача selinux — для цього вона використовує <_:" +"citerefentry-1/>." + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 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 " @@ -10530,17 +10911,17 @@ msgstr "" "того, чи увійшов користувач до системи." #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "crontab" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "at" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 msgid "" "You must change the owner of any <_:command-1/> files or <_:command-2/> jobs " "manually." @@ -10549,42 +10930,44 @@ msgstr "" "command-2/> вручну." #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "Вам слід внести усі зміни щодо NIS на сервері NIS." #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 msgid "Group account information" msgstr "Відомості щодо груп облікових записів" #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 -msgid "Secure group account informatio." +#: usermod.8.xml.out:582 +#, fuzzy +#| msgid "Secure group account information." +msgid "Secure group account information" msgstr "Відомості щодо захищених груп облікових записів." #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 msgid "Shadow password suite configuration" msgstr "Налаштування комплексу для роботи з прихованими паролями" #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 msgid "User account information" msgstr "Відомості щодо облікових записів користувача" #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 msgid "Secure user account information" msgstr "Відомості щодо захищених облікових записів користувачів" #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "Окремі для користувачів ідентифікатори підлеглих груп" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "Окремі для користувачів ідентифікатори підлеглих користувачів" @@ -10617,8 +11000,18 @@ msgstr "vi" #. (itstool) path: refsect1/para #: vipw.8.xml.out:66 -msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +#, fuzzy +#| msgid "" +#| "The <_:command-1/> and <_:command-2/> commands edits the files <_:" +#| "filename-3/> and <_:filename-4/>, respectively. With the <_:option-5/> " +#| "flag, they will edit the shadow versions of those files, <_:filename-6/> " +#| "and <_:filename-7/>, respectively. The programs will set the appropriate " +#| "locks to prevent file corruption. When looking for an editor, the " +#| "programs will first try the environment variable <_:envar-8/>, then the " +#| "environment variable <_:envar-9/>, and finally the default editor, <_:" +#| "citerefentry-10/>." +msgid "" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -10815,6 +11208,21 @@ msgstr "" #~ "Якщо у рядку міститься <_:replaceable-1/>, це значення буде замінено на " #~ "ім'я користувача." +#~ msgid "The available methods are DES, MD5, and NONE." +#~ msgstr "Доступними методами є DES, MD5 і NONE." + +#~ msgid "" +#~ "The value 0 means that the system will choose the default number of " +#~ "rounds for the crypt method (5000)." +#~ msgstr "" +#~ "Значення 0 означає, що система вибере типову кількість проходів для " +#~ "методу шифрування (5000)." + +#~ msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#~ msgstr "" +#~ "Ви можете скористатися цим параметром у поєднанні із методами шифрування " +#~ "SHA256 або SHA512." + #~ msgid "" #~ "This defines the system default encryption algorithm for encrypting " #~ "passwords (if no algorithm are specified on the command line)." @@ -10822,21 +11230,6 @@ msgstr "" #~ "Визначає типовий алгоритм шифрування системи для шифрування паролів (якщо " #~ "алгоритм не було вказано у рядку команди)." -#~ msgid "DES" -#~ msgstr "DES" - -#~ msgid "MD5" -#~ msgstr "MD5" - -#~ msgid "SHA256" -#~ msgstr "SHA256" - -#~ msgid "SHA512" -#~ msgstr "SHA512" - -#~ msgid ", <_:replaceable-1/>, <_:replaceable-2/>" -#~ msgstr ", <_:replaceable-1/>, <_:replaceable-2/>" - #~ msgid "" #~ "It can take one of these values: <_:replaceable-1/> (default), <_:" #~ "replaceable-2/><_:phrase-3/>. MD5 and DES should not be used for new " @@ -10933,6 +11326,14 @@ msgstr "" #~ msgstr "" #~ "Ця змінна вважається застарілою. Вам слід користуватися <_:option-1/>." +#~| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +#~ msgid "SHA_CRYPT_MIN_ROUNDS" +#~ msgstr "SHA_CRYPT_MIN_ROUNDS" + +#~| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +#~ msgid "SHA_CRYPT_MAX_ROUNDS" +#~ msgstr "SHA_CRYPT_MAX_ROUNDS" + #~ msgid "" #~ "When <_:option-1/> is set to <_:replaceable-2/> or <_:replaceable-3/>, " #~ "this defines the number of SHA rounds used by the encryption algorithm by " @@ -10974,6 +11375,13 @@ msgstr "" #~ "Якщо <_:option-1/> > <_:option-2/>, буде використано найбільше " #~ "значення." +#~ msgid "" +#~ "By default, the number of rounds is defined by the <_:option-1/> and <_:" +#~ "option-2/> variables in <_:filename-3/>." +#~ msgstr "" +#~ "Типово, кількість проходів визначено змінними <_:option-1/> і <_:option-2/" +#~ "> у <_:filename-3/>." + #~ msgid "CHSH_AUTH" #~ msgstr "CHSH_AUTH" @@ -11861,6 +12269,42 @@ msgstr "" #~ "Ось приклад скрипту, який вилучає завдання cron, at і друку користувача: " #~ "<_:programlisting-1/>" +#~ msgid "ENV_HZ <_:phrase-1/>" +#~ msgstr "ENV_HZ <_:phrase-1/>" + +#~ msgid "" +#~ "Then, the password is tested for complexity. As a general guideline, " +#~ "passwords should consist of 6 to 8 characters including one or more " +#~ "characters from each of the following sets:" +#~ msgstr "" +#~ "Далі, пароль буде перевірено на складність. Загальним правилом є те, що " +#~ "пароль має складатися з від 6 до 8 символів, включаючи один або декілька " +#~ "символів з кожного з таких наборів:" + +#~ msgid "lower case alphabetics" +#~ msgstr "малі літери латинської абетки" + +#~ msgid "digits 0 thru 9" +#~ msgstr "цифри від 0 до 9" + +#~ msgid "punctuation marks" +#~ msgstr "символи пунктуації" + +#~ msgid "" +#~ "Care must be taken not to include the system default erase or kill " +#~ "characters. <_:command-1/> will reject any password which is not suitably " +#~ "complex." +#~ msgstr "" +#~ "До пароля не можна включати типові символи вилучення або витирання " +#~ "системи. <_:command-1/> не прийме пароля, який не є достатньо складним." + +#~ msgid "" +#~ "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +#~ "phrase-4/> <_:citerefentry-5/>." +#~ msgstr "" +#~ "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +#~ "phrase-4/> <_:citerefentry-5/>." + #~ msgid "" #~ "Usernames must start with a lower case letter or an underscore, followed " #~ "by lower case letters, digits, underscores, or dashes. They can end with " @@ -11871,6 +12315,10 @@ msgstr "" #~ "символи підкреслення та дефіси. Назви можуть завершуватися символом " #~ "долара. У термінах формальних виразів: [a-z_][a-z0-9_-]*[$]?" +#~| msgid "Secure group account information." +#~ msgid "Secure group account informatio." +#~ msgstr "Відомості щодо захищених груп облікових записів." + #~ msgid "<option>-g</option>, <option>--group</option>" #~ msgstr "<option>-g</option>, <option>--group</option>" diff --git a/man/po/zh_CN.po b/man/po/zh_CN.po index cb0db6a..7160da2 100644 --- a/man/po/zh_CN.po +++ b/man/po/zh_CN.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-man-pages VERSION\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-03-14 18:23-0500\n" "PO-Revision-Date: 2013-08-23 01:42+0200\n" "Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" @@ -15,12 +15,12 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" #. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 #: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 #: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 #: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 #: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 #: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 #: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 @@ -28,12 +28,12 @@ msgid "Julianne Frances" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 #: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 #: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 #: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 #: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 #: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 #: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 @@ -46,14 +46,14 @@ msgid "Creation, 1990" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 -#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 #: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 #: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 #: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 #: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 #: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 #: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 @@ -62,14 +62,14 @@ msgid "Thomas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 -#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 +#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 #: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 #: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 #: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 #: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 #: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 #: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 @@ -78,14 +78,14 @@ msgid "Kłoczko" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 +#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 #: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 #: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 #: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 #: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 #: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 #: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 @@ -94,14 +94,14 @@ msgid "kloczek@pld.org.pl" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 #: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 #: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 #: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 -#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 +#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 #: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 #: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 #: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 @@ -110,15 +110,15 @@ msgid "shadow-utils maintainer, 2000 - 2007" msgstr "" #. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 -#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 #: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 #: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 #: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 -#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 +#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 #: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 #: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 #: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 @@ -127,15 +127,15 @@ msgid "Nicolas" msgstr "" #. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 -#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 #: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 #: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 #: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 -#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 +#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 #: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 #: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 #: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 @@ -144,15 +144,15 @@ msgid "François" msgstr "" #. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 +#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 #: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 #: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 #: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 -#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 +#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 #: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 #: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 #: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 @@ -161,15 +161,15 @@ msgid "nicolas.francois@centraliens.net" msgstr "" #. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 +#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 #: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 #: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 #: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 -#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 +#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 #: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 #: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 #: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 @@ -184,9 +184,9 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle #: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:216 chage.1.xml.out:226 -#: chage.1.xml.out:236 chage.1.xml.out:241 chage.1.xml.out:285 -#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 +#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 +#: login.defs.5.xml.out:237 shadow.5.xml.out:262 msgid "chage" msgstr "chage" @@ -194,11 +194,11 @@ msgstr "chage" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum #. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:294 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:217 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:37 chsh.1.xml.out:171 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 -#: gpasswd.1.xml.out:277 groupadd.8.xml.out:345 groupadd.8.xml.out:348 +#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 +#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 +#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 #: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 #: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 #: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 @@ -206,44 +206,44 @@ msgstr "chage" #: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 #: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 #: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 -#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 +#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 #: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:456 -#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:431 -#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 -#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 -#: pwck.8.xml.out:293 shadow.5.xml.out:262 shadow.5.xml.out:265 -#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 -#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 -#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 -#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:817 -#: useradd.8.xml.out:878 useradd.8.xml.out:881 useradd.8.xml.out:884 -#: userdel.8.xml.out:241 userdel.8.xml.out:310 userdel.8.xml.out:313 -#: userdel.8.xml.out:316 usermod.8.xml.out:105 usermod.8.xml.out:244 -#: usermod.8.xml.out:605 usermod.8.xml.out:608 usermod.8.xml.out:611 -#: vipw.8.xml.out:78 vipw.8.xml.out:205 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 +#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 +#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 +#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 +#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 +#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 +#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 +#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 +#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 +#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 +#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 +#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 +#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 +#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 msgid "1" msgstr "1" #. (itstool) path: refmeta/refmiscinfo #: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 msgid "User Commands" msgstr "用户命令" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 -#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 #: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 #: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 #: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 -#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 +#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 #: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 #: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 #: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 @@ -252,20 +252,20 @@ msgid "shadow-utils" msgstr "shadow-utils" #. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 -#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 +#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 #: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 #: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 #: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 -#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 +#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 #: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 #: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 #: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 #: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.13" +msgid "4.15.0" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -275,10 +275,10 @@ msgstr "更改用户密码过期信息" #. (itstool) path: arg/replaceable #. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 -#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 +#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 #: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:64 passwd.1.xml.out:55 +#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 #: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 #: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 #: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 @@ -291,22 +291,22 @@ msgstr "选项" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis #: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 #: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 #: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 msgid "LOGIN" msgstr "登录" #. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 -#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 +#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 #: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 #: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 #: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 -#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 +#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 #: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 #: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 #: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 @@ -324,12 +324,12 @@ msgstr "" #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 -#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:51 +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 +#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 #: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 #: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:250 passwd.1.xml.out:150 +#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 #: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 #: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 #: vipw.8.xml.out:83 @@ -337,12 +337,12 @@ msgid "OPTIONS" msgstr "选项" #. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 -#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:81 +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 +#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 #: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 -#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 +#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 #: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 #, fuzzy #| msgid "The options which apply to the <command>su</command> command are:" @@ -351,9 +351,9 @@ msgstr "<command>su</command> 命令可以接受的选项有:" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 -#: passwd.1.xml.out:168 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:599 usermod.8.xml.out:112 usermod.8.xml.out:260 +#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 +#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 +#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 #, fuzzy #| msgid "-" msgid "-d" @@ -373,44 +373,44 @@ msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 #: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 -#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 -#: chpasswd.8.xml.out:177 chsh.1.xml.out:83 chsh.1.xml.out:96 -#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 -#: faillog.8.xml.out:169 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 -#: gpasswd.1.xml.out:157 groupadd.8.xml.out:101 groupadd.8.xml.out:157 -#: groupadd.8.xml.out:200 groupadd.8.xml.out:213 groupdel.8.xml.out:88 -#: groupdel.8.xml.out:101 groupmems.8.xml.out:83 groupmems.8.xml.out:94 -#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 -#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 -#: groupmod.8.xml.out:163 groupmod.8.xml.out:176 grpck.8.xml.out:148 -#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:127 -#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 -#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:321 -#: passwd.1.xml.out:334 pwck.8.xml.out:196 pwconv.8.xml.out:177 -#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 -#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 -#: useradd.8.xml.out:195 useradd.8.xml.out:229 useradd.8.xml.out:277 -#: useradd.8.xml.out:424 useradd.8.xml.out:488 useradd.8.xml.out:501 -#: useradd.8.xml.out:516 useradd.8.xml.out:530 useradd.8.xml.out:565 -#: useradd.8.xml.out:591 useradd.8.xml.out:609 useradd.8.xml.out:621 -#: useradd.8.xml.out:638 useradd.8.xml.out:654 userdel.8.xml.out:122 -#: userdel.8.xml.out:135 usermod.8.xml.out:98 usermod.8.xml.out:111 -#: usermod.8.xml.out:128 usermod.8.xml.out:151 usermod.8.xml.out:173 -#: usermod.8.xml.out:216 usermod.8.xml.out:289 usermod.8.xml.out:327 -#: usermod.8.xml.out:340 usermod.8.xml.out:356 usermod.8.xml.out:368 -#: usermod.8.xml.out:500 vipw.8.xml.out:114 +#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 +#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 +#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 +#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 +#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 +#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 +#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 +#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 +#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 +#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 +#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 +#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 +#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 +#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 +#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 +#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 +#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 +#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 +#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 +#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 +#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 +#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 +#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 +#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 +#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 +#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 +#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 +#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:288 groupadd.8.xml.out:303 +#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 #: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:138 passwd.1.xml.out:425 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:811 userdel.8.xml.out:235 +#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 +#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 msgid "0" msgstr "0" @@ -431,7 +431,7 @@ msgid "-E" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 msgid "--expiredate" msgstr "" @@ -439,7 +439,7 @@ msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:610 usermod.8.xml.out:129 usermod.8.xml.out:243 +#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 #: usermod.8.xml.out:416 msgid "EXPIRE_DATE" msgstr "" @@ -469,7 +469,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:344 useradd.8.xml.out:315 +#: passwd.1.xml.out:355 useradd.8.xml.out:317 #, fuzzy #| msgid "1" msgid "-1" @@ -491,78 +491,78 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 #: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:271 +#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 #: userdel.8.xml.out:99 vipw.8.xml.out:96 msgid "-h" msgstr "-h" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:107 -#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:118 +#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 #: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 -#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:271 userdel.8.xml.out:99 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 +#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 #: vipw.8.xml.out:96 msgid "--help" msgstr "" #. (itstool) path: varlistentry/term #: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 -#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:135 -#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 +#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 +#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 #: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 #: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:172 -#: gpasswd.1.xml.out:188 groupadd.8.xml.out:87 groupadd.8.xml.out:118 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 +#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 #: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 #: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 #: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 #: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 #: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 #: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 -#: newusers.8.xml.out:320 passwd.1.xml.out:156 passwd.1.xml.out:167 -#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 -#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:290 -#: passwd.1.xml.out:308 pwck.8.xml.out:173 pwck.8.xml.out:179 -#: pwck.8.xml.out:188 pwck.8.xml.out:209 pwconv.8.xml.out:171 -#: useradd.8.xml.out:168 useradd.8.xml.out:217 useradd.8.xml.out:271 -#: useradd.8.xml.out:330 useradd.8.xml.out:349 useradd.8.xml.out:372 -#: useradd.8.xml.out:385 useradd.8.xml.out:404 useradd.8.xml.out:455 -#: useradd.8.xml.out:548 userdel.8.xml.out:75 userdel.8.xml.out:99 -#: userdel.8.xml.out:105 userdel.8.xml.out:152 usermod.8.xml.out:77 -#: usermod.8.xml.out:88 usermod.8.xml.out:230 usermod.8.xml.out:249 -#: usermod.8.xml.out:270 usermod.8.xml.out:316 usermod.8.xml.out:404 -#: vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 -#: vipw.8.xml.out:127 vipw.8.xml.out:133 +#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 +#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 +#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 +#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 +#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 +#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 +#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 +#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 +#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 +#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 +#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 +#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 +#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 +#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 +#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 #, fuzzy #| msgid "<option>-a</option>, <option>--all</option>" msgid "<_:option-1/>, <_:option-2/>" msgstr "<option>-a</option>, <option>--all</option>" #. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:109 -#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:120 +#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 +#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 #: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 -#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:273 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 +#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." msgstr "显示帮助信息并退出。" #. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:197 +#: chage.1.xml.out:121 passwd.1.xml.out:193 #, fuzzy #| msgid "-" msgid "-i" @@ -586,8 +586,8 @@ msgid "-I" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 usermod.8.xml.out:152 +#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 +#: useradd.8.xml.out:642 usermod.8.xml.out:152 msgid "--inactive" msgstr "" @@ -595,8 +595,8 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/option #: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:622 useradd.8.xml.out:632 +#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 +#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 #: usermod.8.xml.out:152 msgid "INACTIVE" msgstr "" @@ -626,10 +626,10 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:242 faillog.8.xml.out:88 +#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 #: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 -#: passwd.1.xml.out:316 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:330 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 +#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 #: usermod.8.xml.out:217 msgid "-l" msgstr "-l" @@ -646,11 +646,11 @@ msgstr "显示账户年龄信息。" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 -#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 +#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 +#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:287 useradd.8.xml.out:350 useradd.8.xml.out:476 +#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 #, fuzzy #| msgid "-" @@ -658,19 +658,19 @@ msgid "-m" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:246 +#: chage.1.xml.out:157 passwd.1.xml.out:242 msgid "--mindays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 -#: passwd.1.xml.out:251 +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 +#: passwd.1.xml.out:247 msgid "MIN_DAYS" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:249 +#: chage.1.xml.out:160 passwd.1.xml.out:245 #, fuzzy #| msgid "" #| "Set the minimum number of days between password changes to " @@ -686,26 +686,26 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 -#: gpasswd.1.xml.out:217 useradd.8.xml.out:162 useradd.8.xml.out:373 +#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 +#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 msgid "-M" msgstr "-M" #. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:335 +#: chage.1.xml.out:169 passwd.1.xml.out:346 msgid "--maxdays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:335 passwd.1.xml.out:340 passwd.1.xml.out:345 +#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 msgid "MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:203 usermod.8.xml.out:481 +#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 #, fuzzy #| msgid "-" msgid "-W" @@ -726,7 +726,7 @@ msgstr "" "不能使用此账户。" #. (itstool) path: listitem/para -#: chage.1.xml.out:181 passwd.1.xml.out:343 +#: chage.1.xml.out:181 passwd.1.xml.out:354 #, fuzzy #| msgid "" #| "Passing the number <emphasis remap=\"I\">-1</emphasis> as " @@ -740,12 +740,12 @@ msgstr "" "emphasis> 会移除密码有效性检查。" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:189 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:191 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 #, fuzzy #| msgid "-" @@ -753,12 +753,12 @@ msgid "-R" msgstr "-" #. (itstool) path: term/option -#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 -#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 -#: gpasswd.1.xml.out:158 groupadd.8.xml.out:201 groupdel.8.xml.out:89 +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:171 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:160 groupadd.8.xml.out:201 groupdel.8.xml.out:89 #: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 -#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 -#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:489 +#: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 msgid "--root" msgstr "" @@ -767,22 +767,22 @@ msgstr "" #. (itstool) path: para/replaceable #: chage.1.xml.out:190 chage.1.xml.out:194 chage.1.xml.out:196 #: chfn.1.xml.out:130 chfn.1.xml.out:134 chfn.1.xml.out:136 -#: chgpasswd.8.xml.out:123 chgpasswd.8.xml.out:127 chgpasswd.8.xml.out:129 -#: chpasswd.8.xml.out:165 chpasswd.8.xml.out:169 chpasswd.8.xml.out:171 +#: chgpasswd.8.xml.out:129 chgpasswd.8.xml.out:133 chgpasswd.8.xml.out:135 +#: chpasswd.8.xml.out:171 chpasswd.8.xml.out:175 chpasswd.8.xml.out:177 #: chsh.1.xml.out:84 chsh.1.xml.out:88 chsh.1.xml.out:90 faillog.8.xml.out:157 -#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:158 -#: gpasswd.1.xml.out:162 gpasswd.1.xml.out:164 groupadd.8.xml.out:201 +#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:160 +#: gpasswd.1.xml.out:164 gpasswd.1.xml.out:166 groupadd.8.xml.out:201 #: groupadd.8.xml.out:205 groupadd.8.xml.out:207 groupdel.8.xml.out:89 #: groupdel.8.xml.out:93 groupdel.8.xml.out:95 groupmems.8.xml.out:142 #: groupmems.8.xml.out:146 groupmems.8.xml.out:148 groupmod.8.xml.out:164 #: groupmod.8.xml.out:168 groupmod.8.xml.out:170 grpck.8.xml.out:149 #: grpck.8.xml.out:153 grpck.8.xml.out:155 lastlog.8.xml.out:104 -#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:306 -#: newusers.8.xml.out:310 newusers.8.xml.out:312 passwd.1.xml.out:278 -#: passwd.1.xml.out:282 passwd.1.xml.out:284 pwck.8.xml.out:197 +#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:308 +#: newusers.8.xml.out:312 newusers.8.xml.out:314 passwd.1.xml.out:274 +#: passwd.1.xml.out:278 passwd.1.xml.out:280 pwck.8.xml.out:197 #: pwck.8.xml.out:201 pwck.8.xml.out:203 pwconv.8.xml.out:178 -#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:489 -#: useradd.8.xml.out:493 useradd.8.xml.out:495 userdel.8.xml.out:123 +#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:491 +#: useradd.8.xml.out:495 useradd.8.xml.out:497 userdel.8.xml.out:123 #: userdel.8.xml.out:127 userdel.8.xml.out:129 usermod.8.xml.out:328 #: usermod.8.xml.out:332 usermod.8.xml.out:334 vipw.8.xml.out:115 #: vipw.8.xml.out:119 vipw.8.xml.out:121 @@ -790,12 +790,12 @@ msgid "CHROOT_DIR" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:126 -#: chpasswd.8.xml.out:168 chsh.1.xml.out:87 faillog.8.xml.out:160 -#: gpasswd.1.xml.out:161 groupadd.8.xml.out:204 groupdel.8.xml.out:92 +#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:132 +#: chpasswd.8.xml.out:174 chsh.1.xml.out:87 faillog.8.xml.out:160 +#: gpasswd.1.xml.out:163 groupadd.8.xml.out:204 groupdel.8.xml.out:92 #: groupmems.8.xml.out:145 groupmod.8.xml.out:167 grpck.8.xml.out:152 -#: lastlog.8.xml.out:107 newusers.8.xml.out:309 passwd.1.xml.out:281 -#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:492 +#: lastlog.8.xml.out:107 newusers.8.xml.out:311 passwd.1.xml.out:277 +#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:494 #: userdel.8.xml.out:126 usermod.8.xml.out:331 vipw.8.xml.out:118 #, fuzzy #| msgid "" @@ -810,19 +810,58 @@ msgstr "" "replaceable>。" #. (itstool) path: term/option -#: chage.1.xml.out:203 passwd.1.xml.out:322 +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +#, fuzzy +#| msgid "-" +msgid "-P" +msgstr "-" + +#. (itstool) path: term/option +#: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 +#: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 +#: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +msgid "--prefix" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:203 chage.1.xml.out:208 chpasswd.8.xml.out:184 +#: chpasswd.8.xml.out:189 groupadd.8.xml.out:214 groupadd.8.xml.out:219 +#: groupdel.8.xml.out:102 groupdel.8.xml.out:106 groupdel.8.xml.out:108 +#: groupmod.8.xml.out:177 groupmod.8.xml.out:181 groupmod.8.xml.out:183 +#: passwd.1.xml.out:287 passwd.1.xml.out:292 useradd.8.xml.out:504 +#: useradd.8.xml.out:509 userdel.8.xml.out:136 userdel.8.xml.out:140 +#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 +msgid "PREFIX_DIR" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:206 chpasswd.8.xml.out:187 groupadd.8.xml.out:217 +#: passwd.1.xml.out:290 useradd.8.xml.out:507 +msgid "" +"Apply changes to configuration files under the root filesystem found under " +"the directory <_:replaceable-1/>. 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." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:218 passwd.1.xml.out:333 msgid "--warndays" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: chage.1.xml.out:203 chage.1.xml.out:208 passwd.1.xml.out:322 -#: passwd.1.xml.out:327 +#: chage.1.xml.out:218 chage.1.xml.out:223 passwd.1.xml.out:333 +#: passwd.1.xml.out:338 msgid "WARN_DAYS" msgstr "" #. (itstool) path: listitem/para -#: chage.1.xml.out:206 +#: chage.1.xml.out:221 #, fuzzy msgid "" "Set the number of days of warning before a password change is required. The " @@ -832,12 +871,12 @@ msgstr "" "设置在要求更改密码之前几天开始警告。<replaceable>WARN_DAYS</replaceable> 选项" #. (itstool) path: para/emphasis -#: chage.1.xml.out:220 chfn.1.xml.out:163 chsh.1.xml.out:112 +#: chage.1.xml.out:235 chfn.1.xml.out:163 chsh.1.xml.out:112 msgid "[ ]" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:215 +#: chage.1.xml.out:230 #, fuzzy #| msgid "" #| "If none of the options are selected, <command>chage</command> operates in " @@ -857,13 +896,13 @@ msgstr "" "<emphasis>[ ]</emphasis> 标记对里。" #. (itstool) path: refsect1/title -#: chage.1.xml.out:224 chsh.1.xml.out:117 groups.1.xml.out:65 +#: chage.1.xml.out:239 chsh.1.xml.out:117 groups.1.xml.out:65 #: lastlog.8.xml.out:170 msgid "NOTE" msgstr "注意" #. (itstool) path: refsect1/para -#: chage.1.xml.out:225 +#: chage.1.xml.out:240 #, fuzzy #| msgid "" #| "The <command>chage</command> program requires a shadow password file to " @@ -873,7 +912,7 @@ msgid "" msgstr "<command>chage</command> 需要有一个影子密码文件才可用。" #. (itstool) path: refsect1/para -#: chage.1.xml.out:229 +#: chage.1.xml.out:244 msgid "" "The chage program will report only the information from the shadow password " "file. This implies that configuration from other sources (e.g. LDAP or empty " @@ -887,7 +926,7 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: chage.1.xml.out:238 grpck.8.xml.out:294 login.defs.5.xml.out:410 +#: chage.1.xml.out:253 grpck.8.xml.out:294 login.defs.5.xml.out:429 #: passwd.5.xml.out:185 pwck.8.xml.out:40 pwck.8.xml.out:47 pwck.8.xml.out:53 #: pwck.8.xml.out:71 pwck.8.xml.out:147 pwck.8.xml.out:159 pwck.8.xml.out:191 #: pwck.8.xml.out:223 pwck.8.xml.out:284 pwconv.8.xml.out:197 @@ -896,7 +935,7 @@ msgid "pwck" msgstr "pwck" #. (itstool) path: refsect1/para -#: chage.1.xml.out:235 +#: chage.1.xml.out:250 msgid "" "The <_:command-1/> program will also not report any inconsistency between " "the shadow and passwd files (e.g. missing x in the passwd file). The <_:" @@ -904,7 +943,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: chage.1.xml.out:241 +#: chage.1.xml.out:256 #, fuzzy #| msgid "" #| "The <command>chage</command> command is restricted to the root user, " @@ -920,52 +959,54 @@ msgstr "" "option> 选项,用来让非特权用户觉得自己的密码或账户何时过期。" #. (itstool) path: refsect1/title -#: chage.1.xml.out:249 chfn.1.xml.out:170 chgpasswd.8.xml.out:175 -#: chpasswd.8.xml.out:216 chsh.1.xml.out:131 gpasswd.1.xml.out:241 +#: chage.1.xml.out:264 chfn.1.xml.out:170 chgpasswd.8.xml.out:201 +#: chpasswd.8.xml.out:256 chsh.1.xml.out:150 gpasswd.1.xml.out:243 #: groupadd.8.xml.out:247 groupdel.8.xml.out:133 groupmems.8.xml.out:176 #: groupmod.8.xml.out:212 grpck.8.xml.out:196 lastlog.8.xml.out:182 -#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:360 -#: passwd.1.xml.out:372 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 -#: su.1.xml.out:314 useradd.8.xml.out:710 userdel.8.xml.out:165 -#: usermod.8.xml.out:536 vipw.8.xml.out:142 +#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:381 +#: passwd.1.xml.out:394 pwck.8.xml.out:240 pwconv.8.xml.out:204 sg.1.xml.out:74 +#: su.1.xml.out:314 useradd.8.xml.out:730 userdel.8.xml.out:165 +#: usermod.8.xml.out:553 vipw.8.xml.out:142 msgid "CONFIGURATION" msgstr "配置文件" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chage.1.xml.out:252 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 -#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:155 chgpasswd.8.xml.out:178 -#: chgpasswd.8.xml.out:205 chpasswd.8.xml.out:77 chpasswd.8.xml.out:134 -#: chpasswd.8.xml.out:200 chpasswd.8.xml.out:219 chpasswd.8.xml.out:247 -#: chsh.1.xml.out:134 chsh.1.xml.out:159 gpasswd.1.xml.out:244 -#: groupadd.8.xml.out:129 groupadd.8.xml.out:239 groupadd.8.xml.out:250 -#: groupadd.8.xml.out:276 groupdel.8.xml.out:136 groupmems.8.xml.out:179 -#: groupmod.8.xml.out:109 groupmod.8.xml.out:204 groupmod.8.xml.out:215 -#: groupmod.8.xml.out:239 grpck.8.xml.out:199 lastlog.8.xml.out:185 -#: login.1.xml.out:273 login.1.xml.out:365 login.access.5.xml.out:100 -#: login.defs.5.xml.out:116 login.defs.5.xml.out:515 newgrp.1.xml.out:88 -#: newusers.8.xml.out:340 newusers.8.xml.out:363 newusers.8.xml.out:423 -#: passwd.1.xml.out:375 passwd.1.xml.out:405 pwck.8.xml.out:243 +#: chage.1.xml.out:267 chfn.1.xml.out:68 chfn.1.xml.out:173 chfn.1.xml.out:187 +#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:159 chgpasswd.8.xml.out:168 +#: chgpasswd.8.xml.out:177 chgpasswd.8.xml.out:204 chgpasswd.8.xml.out:233 +#: chpasswd.8.xml.out:79 chpasswd.8.xml.out:140 chpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:227 chpasswd.8.xml.out:236 chpasswd.8.xml.out:259 +#: chpasswd.8.xml.out:289 chsh.1.xml.out:153 chsh.1.xml.out:200 +#: gpasswd.1.xml.out:246 groupadd.8.xml.out:129 groupadd.8.xml.out:239 +#: groupadd.8.xml.out:250 groupadd.8.xml.out:276 groupdel.8.xml.out:136 +#: groupmems.8.xml.out:179 groupmod.8.xml.out:109 groupmod.8.xml.out:204 +#: groupmod.8.xml.out:215 groupmod.8.xml.out:239 grpck.8.xml.out:199 +#: lastlog.8.xml.out:185 login.1.xml.out:273 login.1.xml.out:365 +#: login.access.5.xml.out:100 login.defs.5.xml.out:118 login.defs.5.xml.out:534 +#: newgrp.1.xml.out:88 newusers.8.xml.out:340 newusers.8.xml.out:349 +#: newusers.8.xml.out:357 newusers.8.xml.out:384 newusers.8.xml.out:444 +#: passwd.1.xml.out:397 passwd.1.xml.out:427 pwck.8.xml.out:243 #: pwconv.8.xml.out:148 pwconv.8.xml.out:207 pwconv.8.xml.out:215 #: pwconv.8.xml.out:230 sg.1.xml.out:77 su.1.xml.out:109 su.1.xml.out:219 #: su.1.xml.out:277 su.1.xml.out:317 su.1.xml.out:357 useradd.8.xml.out:241 -#: useradd.8.xml.out:307 useradd.8.xml.out:378 useradd.8.xml.out:399 -#: useradd.8.xml.out:467 useradd.8.xml.out:474 useradd.8.xml.out:560 -#: useradd.8.xml.out:713 useradd.8.xml.out:797 userdel.8.xml.out:87 +#: useradd.8.xml.out:309 useradd.8.xml.out:380 useradd.8.xml.out:401 +#: useradd.8.xml.out:469 useradd.8.xml.out:476 useradd.8.xml.out:562 +#: useradd.8.xml.out:733 useradd.8.xml.out:817 userdel.8.xml.out:87 #: userdel.8.xml.out:168 userdel.8.xml.out:191 userdel.8.xml.out:297 -#: usermod.8.xml.out:399 usermod.8.xml.out:539 usermod.8.xml.out:569 +#: usermod.8.xml.out:399 usermod.8.xml.out:556 usermod.8.xml.out:586 #: vipw.8.xml.out:145 msgid "/etc/login.defs" msgstr "/etc/login.defs" #. (itstool) path: refsect1/para -#: chage.1.xml.out:250 chfn.1.xml.out:171 chgpasswd.8.xml.out:176 -#: chpasswd.8.xml.out:217 chsh.1.xml.out:132 gpasswd.1.xml.out:242 +#: chage.1.xml.out:265 chfn.1.xml.out:171 chgpasswd.8.xml.out:202 +#: chpasswd.8.xml.out:257 chsh.1.xml.out:151 gpasswd.1.xml.out:244 #: groupadd.8.xml.out:248 groupdel.8.xml.out:134 groupmems.8.xml.out:177 #: groupmod.8.xml.out:213 grpck.8.xml.out:197 lastlog.8.xml.out:183 -#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:361 -#: passwd.1.xml.out:373 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 -#: useradd.8.xml.out:711 userdel.8.xml.out:166 usermod.8.xml.out:537 +#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:382 +#: passwd.1.xml.out:395 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 +#: useradd.8.xml.out:731 userdel.8.xml.out:166 usermod.8.xml.out:554 #: vipw.8.xml.out:143 #, fuzzy #| msgid "" @@ -979,126 +1020,126 @@ msgstr "" "的行为:" #. (itstool) path: refsect1/title -#: chage.1.xml.out:261 chfn.1.xml.out:184 chgpasswd.8.xml.out:190 -#: chpasswd.8.xml.out:232 chsh.1.xml.out:144 expiry.1.xml.out:97 -#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:256 +#: chage.1.xml.out:276 chfn.1.xml.out:184 chgpasswd.8.xml.out:218 +#: chpasswd.8.xml.out:274 chsh.1.xml.out:163 expiry.1.xml.out:97 +#: faillog.5.xml.out:72 faillog.8.xml.out:220 gpasswd.1.xml.out:258 #: groupadd.8.xml.out:261 groupdel.8.xml.out:145 groupmems.8.xml.out:188 #: groupmod.8.xml.out:224 groups.1.xml.out:77 grpck.8.xml.out:208 #: gshadow.5.xml.out:132 lastlog.8.xml.out:194 limits.5.xml.out:172 #: login.1.xml.out:314 login.access.5.xml.out:97 logoutd.8.xml.out:65 -#: newgrp.1.xml.out:97 newusers.8.xml.out:396 passwd.1.xml.out:390 +#: newgrp.1.xml.out:97 newusers.8.xml.out:417 passwd.1.xml.out:412 #: passwd.5.xml.out:139 porttime.5.xml.out:106 pwck.8.xml.out:258 #: pwconv.8.xml.out:227 shadow.3.xml.out:202 shadow.5.xml.out:231 -#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:740 -#: userdel.8.xml.out:182 usermod.8.xml.out:554 vipw.8.xml.out:172 +#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:760 +#: userdel.8.xml.out:182 usermod.8.xml.out:571 vipw.8.xml.out:172 msgid "FILES" msgstr "文件" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:265 chfn.1.xml.out:193 chpasswd.8.xml.out:235 -#: chsh.1.xml.out:147 expiry.1.xml.out:100 groupmod.8.xml.out:245 +#: chage.1.xml.out:280 chfn.1.xml.out:193 chpasswd.8.xml.out:277 +#: chsh.1.xml.out:166 expiry.1.xml.out:100 groupmod.8.xml.out:245 #: grpck.8.xml.out:223 lastlog.8.xml.out:63 login.1.xml.out:145 #: login.1.xml.out:329 newgrp.1.xml.out:65 newgrp.1.xml.out:70 -#: newgrp.1.xml.out:100 newusers.8.xml.out:399 passwd.1.xml.out:393 +#: newgrp.1.xml.out:100 newusers.8.xml.out:420 passwd.1.xml.out:415 #: passwd.5.xml.out:47 passwd.5.xml.out:89 passwd.5.xml.out:142 #: pwck.8.xml.out:73 pwck.8.xml.out:145 pwck.8.xml.out:212 pwck.8.xml.out:224 #: pwck.8.xml.out:267 pwconv.8.xml.out:127 shadow.5.xml.out:234 sg.1.xml.out:89 -#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:524 -#: useradd.8.xml.out:743 userdel.8.xml.out:197 usermod.8.xml.out:103 -#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:575 +#: su.1.xml.out:185 su.1.xml.out:197 su.1.xml.out:345 useradd.8.xml.out:526 +#: useradd.8.xml.out:763 userdel.8.xml.out:197 usermod.8.xml.out:103 +#: usermod.8.xml.out:305 usermod.8.xml.out:362 usermod.8.xml.out:592 #: vipw.8.xml.out:68 vipw.8.xml.out:187 msgid "/etc/passwd" msgstr "/etc/passwd" #. (itstool) path: listitem/para -#: chage.1.xml.out:268 chfn.1.xml.out:195 chpasswd.8.xml.out:237 -#: chsh.1.xml.out:149 expiry.1.xml.out:102 groupmod.8.xml.out:247 +#: chage.1.xml.out:283 chfn.1.xml.out:195 chpasswd.8.xml.out:279 +#: chsh.1.xml.out:168 expiry.1.xml.out:102 groupmod.8.xml.out:247 #: grpck.8.xml.out:225 login.1.xml.out:331 newgrp.1.xml.out:102 -#: newusers.8.xml.out:401 passwd.1.xml.out:395 passwd.5.xml.out:144 +#: newusers.8.xml.out:422 passwd.1.xml.out:417 passwd.5.xml.out:144 #: pwck.8.xml.out:269 shadow.5.xml.out:236 sg.1.xml.out:91 su.1.xml.out:347 -#: useradd.8.xml.out:745 userdel.8.xml.out:199 vipw.8.xml.out:189 +#: useradd.8.xml.out:765 userdel.8.xml.out:199 vipw.8.xml.out:189 msgid "User account information." msgstr "用户账户信息。" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: chage.1.xml.out:273 chpasswd.8.xml.out:241 expiry.1.xml.out:106 +#: chage.1.xml.out:288 chpasswd.8.xml.out:283 expiry.1.xml.out:106 #: login.1.xml.out:335 newgrp.1.xml.out:68 newgrp.1.xml.out:106 -#: newusers.8.xml.out:295 newusers.8.xml.out:405 passwd.1.xml.out:399 +#: newusers.8.xml.out:297 newusers.8.xml.out:426 passwd.1.xml.out:421 #: passwd.5.xml.out:82 passwd.5.xml.out:148 pwck.8.xml.out:73 #: pwck.8.xml.out:107 pwck.8.xml.out:213 pwck.8.xml.out:225 pwck.8.xml.out:273 #: pwconv.8.xml.out:128 pwconv.8.xml.out:149 shadow.3.xml.out:97 #: shadow.3.xml.out:173 shadow.3.xml.out:205 shadow.5.xml.out:78 -#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:439 -#: useradd.8.xml.out:464 useradd.8.xml.out:749 userdel.8.xml.out:203 +#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:441 +#: useradd.8.xml.out:466 useradd.8.xml.out:769 userdel.8.xml.out:203 #: usermod.8.xml.out:144 usermod.8.xml.out:145 usermod.8.xml.out:166 -#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:581 +#: usermod.8.xml.out:167 usermod.8.xml.out:306 usermod.8.xml.out:598 #: vipw.8.xml.out:71 vipw.8.xml.out:193 msgid "/etc/shadow" msgstr "/etc/shadow" #. (itstool) path: listitem/para -#: chage.1.xml.out:276 chpasswd.8.xml.out:243 expiry.1.xml.out:108 -#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:407 -#: passwd.1.xml.out:401 pwck.8.xml.out:275 shadow.3.xml.out:207 -#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:751 +#: chage.1.xml.out:291 chpasswd.8.xml.out:285 expiry.1.xml.out:108 +#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:428 +#: passwd.1.xml.out:423 pwck.8.xml.out:275 shadow.3.xml.out:207 +#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:771 #: userdel.8.xml.out:205 vipw.8.xml.out:195 msgid "Secure user account information." msgstr "安全用户账户信息。" #. (itstool) path: refsect1/title -#: chage.1.xml.out:283 groupadd.8.xml.out:298 groupdel.8.xml.out:163 -#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:420 -#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:806 +#: chage.1.xml.out:298 groupadd.8.xml.out:298 groupdel.8.xml.out:163 +#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:442 +#: pwck.8.xml.out:282 su.1.xml.out:366 useradd.8.xml.out:826 #: userdel.8.xml.out:230 msgid "EXIT VALUES" msgstr "退出值" #. (itstool) path: listitem/para -#: chage.1.xml.out:290 groupadd.8.xml.out:305 groupdel.8.xml.out:170 -#: grpck.8.xml.out:239 passwd.1.xml.out:427 pwck.8.xml.out:289 -#: useradd.8.xml.out:813 userdel.8.xml.out:237 +#: chage.1.xml.out:305 groupadd.8.xml.out:305 groupdel.8.xml.out:170 +#: grpck.8.xml.out:239 passwd.1.xml.out:449 pwck.8.xml.out:289 +#: useradd.8.xml.out:833 userdel.8.xml.out:237 msgid "success" msgstr "成功" #. (itstool) path: listitem/para -#: chage.1.xml.out:296 passwd.1.xml.out:433 +#: chage.1.xml.out:311 passwd.1.xml.out:455 msgid "permission denied" msgstr "权限不够" #. (itstool) path: term/replaceable #. (itstool) path: citerefentry/manvolnum -#: chage.1.xml.out:300 groupadd.8.xml.out:309 groupdel.8.xml.out:174 +#: chage.1.xml.out:315 groupadd.8.xml.out:309 groupdel.8.xml.out:174 #: groupmod.8.xml.out:265 groups.1.xml.out:95 groups.1.xml.out:98 #: groups.1.xml.out:101 grpck.8.xml.out:249 limits.5.xml.out:90 #: limits.5.xml.out:101 limits.5.xml.out:188 limits.5.xml.out:191 -#: passwd.1.xml.out:437 pwck.8.xml.out:299 useradd.8.xml.out:823 +#: passwd.1.xml.out:459 pwck.8.xml.out:299 useradd.8.xml.out:843 #: userdel.8.xml.out:247 msgid "2" msgstr "2" #. (itstool) path: listitem/para -#: chage.1.xml.out:302 groupadd.8.xml.out:311 groupdel.8.xml.out:176 -#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:825 +#: chage.1.xml.out:317 groupadd.8.xml.out:311 groupdel.8.xml.out:176 +#: grpck.8.xml.out:245 pwck.8.xml.out:295 useradd.8.xml.out:845 #: userdel.8.xml.out:249 msgid "invalid command syntax" msgstr "无效的命令语法" #. (itstool) path: term/replaceable -#: chage.1.xml.out:306 +#: chage.1.xml.out:321 msgid "15" msgstr "15" #. (itstool) path: listitem/para -#: chage.1.xml.out:308 +#: chage.1.xml.out:323 msgid "can't find the shadow password file" msgstr "无法找到影子密码文件" #. (itstool) path: refsect1/para -#: chage.1.xml.out:284 groupadd.8.xml.out:299 groupdel.8.xml.out:164 -#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:421 -#: pwck.8.xml.out:283 useradd.8.xml.out:807 userdel.8.xml.out:231 +#: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:164 +#: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:443 +#: pwck.8.xml.out:283 useradd.8.xml.out:827 userdel.8.xml.out:231 #, fuzzy #| msgid "" #| "The <command>pwck</command> command exits with the following values: " @@ -1109,18 +1150,18 @@ msgid "" msgstr "<command>pwck</command> 命令有如下返回值:<placeholder-1/>" #. (itstool) path: refsect1/title -#: chage.1.xml.out:316 chfn.1.xml.out:202 chgpasswd.8.xml.out:214 -#: chpasswd.8.xml.out:262 chsh.1.xml.out:168 expiry.1.xml.out:115 -#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:274 +#: chage.1.xml.out:331 chfn.1.xml.out:202 chgpasswd.8.xml.out:242 +#: chpasswd.8.xml.out:304 chsh.1.xml.out:209 expiry.1.xml.out:115 +#: faillog.5.xml.out:84 faillog.8.xml.out:232 gpasswd.1.xml.out:276 #: groupadd.8.xml.out:343 groupdel.8.xml.out:202 groupmems.8.xml.out:206 #: groupmod.8.xml.out:323 groups.1.xml.out:89 grpck.8.xml.out:277 #: gshadow.5.xml.out:150 limits.5.xml.out:182 login.1.xml.out:374 -#: login.access.5.xml.out:109 login.defs.5.xml.out:527 newgrp.1.xml.out:127 -#: newusers.8.xml.out:450 nologin.8.xml.out:57 passwd.1.xml.out:471 +#: login.access.5.xml.out:109 login.defs.5.xml.out:546 newgrp.1.xml.out:127 +#: newusers.8.xml.out:471 nologin.8.xml.out:57 passwd.1.xml.out:493 #: passwd.5.xml.out:167 porttime.5.xml.out:118 pwck.8.xml.out:333 #: pwconv.8.xml.out:239 shadow.3.xml.out:214 shadow.5.xml.out:259 -#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:875 -#: userdel.8.xml.out:308 usermod.8.xml.out:602 vipw.8.xml.out:202 +#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:895 +#: userdel.8.xml.out:308 usermod.8.xml.out:619 vipw.8.xml.out:202 msgid "SEE ALSO" msgstr "参见" @@ -1133,53 +1174,53 @@ msgstr "参见" #. (itstool) path: para/command #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: chage.1.xml.out:319 chfn.1.xml.out:211 chpasswd.8.xml.out:265 -#: chsh.1.xml.out:177 expiry.1.xml.out:118 groupadd.8.xml.out:351 +#: chage.1.xml.out:334 chfn.1.xml.out:211 chpasswd.8.xml.out:307 +#: chsh.1.xml.out:218 expiry.1.xml.out:118 groupadd.8.xml.out:351 #: groupdel.8.xml.out:211 groupmems.8.xml.out:215 groupmod.8.xml.out:332 #: grpck.8.xml.out:291 lastlog.8.xml.out:176 login.1.xml.out:128 -#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:399 -#: login.defs.5.xml.out:516 login.defs.5.xml.out:533 login.defs.5.xml.out:539 -#: newusers.8.xml.out:79 newusers.8.xml.out:456 passwd.1.xml.out:40 -#: passwd.1.xml.out:47 passwd.1.xml.out:53 passwd.1.xml.out:66 -#: passwd.1.xml.out:69 passwd.1.xml.out:86 passwd.1.xml.out:116 -#: passwd.1.xml.out:152 passwd.1.xml.out:366 passwd.1.xml.out:413 -#: passwd.1.xml.out:422 passwd.1.xml.out:451 passwd.1.xml.out:457 -#: passwd.1.xml.out:477 passwd.5.xml.out:33 passwd.5.xml.out:40 +#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:415 +#: login.defs.5.xml.out:535 login.defs.5.xml.out:552 login.defs.5.xml.out:558 +#: newusers.8.xml.out:81 newusers.8.xml.out:477 passwd.1.xml.out:42 +#: passwd.1.xml.out:49 passwd.1.xml.out:55 passwd.1.xml.out:68 +#: passwd.1.xml.out:71 passwd.1.xml.out:88 passwd.1.xml.out:100 +#: passwd.1.xml.out:148 passwd.1.xml.out:388 passwd.1.xml.out:435 +#: passwd.1.xml.out:444 passwd.1.xml.out:473 passwd.1.xml.out:479 +#: passwd.1.xml.out:502 passwd.5.xml.out:33 passwd.5.xml.out:40 #: passwd.5.xml.out:182 pwck.8.xml.out:228 pwck.8.xml.out:342 #: pwconv.8.xml.out:84 pwconv.8.xml.out:99 shadow.5.xml.out:268 -#: shadow.5.xml.out:271 useradd.8.xml.out:884 userdel.8.xml.out:316 -#: usermod.8.xml.out:611 vipw.8.xml.out:217 +#: shadow.5.xml.out:271 useradd.8.xml.out:904 userdel.8.xml.out:316 +#: usermod.8.xml.out:628 vipw.8.xml.out:217 msgid "passwd" msgstr "passwd" #. (itstool) path: citerefentry/manvolnum #. (itstool) path: refmeta/manvolnum #. (itstool) path: term/replaceable -#: chage.1.xml.out:319 chage.1.xml.out:322 chfn.1.xml.out:208 -#: chfn.1.xml.out:211 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 chsh.1.xml.out:177 expiry.1.xml.out:118 +#: chage.1.xml.out:334 chage.1.xml.out:337 chfn.1.xml.out:208 +#: chfn.1.xml.out:211 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 chsh.1.xml.out:218 expiry.1.xml.out:118 #: expiry.1.xml.out:121 faillog.5.xml.out:34 faillog.8.xml.out:238 -#: gpasswd.1.xml.out:292 gpasswd.1.xml.out:295 groupadd.8.xml.out:363 +#: gpasswd.1.xml.out:294 gpasswd.1.xml.out:297 groupadd.8.xml.out:363 #: groupmod.8.xml.out:344 grpck.8.xml.out:267 grpck.8.xml.out:280 #: grpck.8.xml.out:287 grpck.8.xml.out:291 grpck.8.xml.out:297 #: gshadow.5.xml.out:23 gshadow.5.xml.out:153 gshadow.5.xml.out:156 #: limits.5.xml.out:36 login.1.xml.out:389 login.1.xml.out:392 #: login.1.xml.out:395 login.1.xml.out:398 login.access.5.xml.out:35 -#: login.defs.5.xml.out:103 login.defs.5.xml.out:539 login.defs.5.xml.out:542 -#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:79 -#: newusers.8.xml.out:453 newusers.8.xml.out:460 newusers.8.xml.out:463 -#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:455 -#: passwd.1.xml.out:477 passwd.1.xml.out:480 passwd.1.xml.out:484 +#: login.defs.5.xml.out:105 login.defs.5.xml.out:558 login.defs.5.xml.out:561 +#: newgrp.1.xml.out:145 newgrp.1.xml.out:148 newusers.8.xml.out:81 +#: newusers.8.xml.out:474 newusers.8.xml.out:481 newusers.8.xml.out:484 +#: nologin.8.xml.out:48 nologin.8.xml.out:63 passwd.1.xml.out:477 +#: passwd.1.xml.out:502 passwd.1.xml.out:505 passwd.1.xml.out:509 #: passwd.5.xml.out:34 passwd.5.xml.out:80 passwd.5.xml.out:194 #: porttime.5.xml.out:34 pwck.8.xml.out:317 pwck.8.xml.out:336 #: pwck.8.xml.out:342 pwck.8.xml.out:345 pwconv.8.xml.out:245 #: shadow.3.xml.out:220 shadow.5.xml.out:34 shadow.5.xml.out:271 #: sg.1.xml.out:134 sg.1.xml.out:137 su.1.xml.out:418 suauth.5.xml.out:34 -#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:628 -#: useradd.8.xml.out:899 useradd.8.xml.out:906 useradd.8.xml.out:909 +#: suauth.5.xml.out:91 useradd.8.xml.out:205 useradd.8.xml.out:648 +#: useradd.8.xml.out:919 useradd.8.xml.out:926 useradd.8.xml.out:929 #: userdel.8.xml.out:319 userdel.8.xml.out:335 userdel.8.xml.out:338 -#: usermod.8.xml.out:162 usermod.8.xml.out:629 usermod.8.xml.out:633 -#: usermod.8.xml.out:636 vipw.8.xml.out:208 vipw.8.xml.out:211 +#: usermod.8.xml.out:162 usermod.8.xml.out:646 usermod.8.xml.out:650 +#: usermod.8.xml.out:653 vipw.8.xml.out:208 vipw.8.xml.out:211 #: vipw.8.xml.out:214 vipw.8.xml.out:217 vipw.8.xml.out:220 vipw.8.xml.out:223 msgid "5" msgstr "5" @@ -1192,20 +1233,20 @@ msgstr "5" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/filename -#: chage.1.xml.out:322 expiry.1.xml.out:121 grpck.8.xml.out:51 -#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:542 -#: passwd.1.xml.out:480 passwd.5.xml.out:79 passwd.5.xml.out:194 +#: chage.1.xml.out:337 expiry.1.xml.out:121 grpck.8.xml.out:51 +#: grpck.8.xml.out:190 grpck.8.xml.out:297 login.defs.5.xml.out:561 +#: passwd.1.xml.out:505 passwd.5.xml.out:79 passwd.5.xml.out:194 #: pwck.8.xml.out:229 pwck.8.xml.out:233 pwck.8.xml.out:345 pwconv.8.xml.out:84 #: pwconv.8.xml.out:85 pwconv.8.xml.out:100 pwconv.8.xml.out:101 #: shadow.3.xml.out:33 shadow.3.xml.out:40 shadow.3.xml.out:96 #: shadow.3.xml.out:220 shadow.5.xml.out:33 shadow.5.xml.out:40 -#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:628 +#: shadow.5.xml.out:47 useradd.8.xml.out:205 useradd.8.xml.out:648 #: usermod.8.xml.out:162 vipw.8.xml.out:223 msgid "shadow" msgstr "shadow" #. (itstool) path: refsect1/para -#: chage.1.xml.out:317 expiry.1.xml.out:116 faillog.8.xml.out:233 +#: chage.1.xml.out:332 expiry.1.xml.out:116 faillog.8.xml.out:233 #: nologin.8.xml.out:58 shadow.3.xml.out:215 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>." msgstr "" @@ -1217,10 +1258,10 @@ msgstr "" #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: varlistentry/term #: chfn.1.xml.out:36 chfn.1.xml.out:43 chfn.1.xml.out:49 chfn.1.xml.out:62 -#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:171 +#: chfn.1.xml.out:89 chfn.1.xml.out:159 chfn.1.xml.out:164 chsh.1.xml.out:212 #: groupadd.8.xml.out:345 groupdel.8.xml.out:205 groupmems.8.xml.out:209 -#: groupmod.8.xml.out:326 login.defs.5.xml.out:239 useradd.8.xml.out:878 -#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:605 +#: groupmod.8.xml.out:326 login.defs.5.xml.out:243 useradd.8.xml.out:898 +#: userdel.8.xml.out:310 usermod.8.xml.out:105 usermod.8.xml.out:622 msgid "chfn" msgstr "chfn" @@ -1238,8 +1279,8 @@ msgstr "" #. (itstool) path: term/option #: chfn.1.xml.out:71 chfn.1.xml.out:110 groupadd.8.xml.out:106 #: groupadd.8.xml.out:145 groupadd.8.xml.out:323 groupmod.8.xml.out:93 -#: groupmod.8.xml.out:132 useradd.8.xml.out:405 useradd.8.xml.out:536 -#: useradd.8.xml.out:837 usermod.8.xml.out:271 usermod.8.xml.out:377 +#: groupmod.8.xml.out:132 useradd.8.xml.out:407 useradd.8.xml.out:538 +#: useradd.8.xml.out:857 usermod.8.xml.out:271 usermod.8.xml.out:377 #, fuzzy #| msgid "-" msgid "-o" @@ -1279,7 +1320,7 @@ msgstr "" #: chfn.1.xml.out:94 expiry.1.xml.out:61 expiry.1.xml.out:79 #: groupadd.8.xml.out:88 groupdel.8.xml.out:72 login.1.xml.out:90 #: login.1.xml.out:190 login.1.xml.out:229 useradd.8.xml.out:196 -#: useradd.8.xml.out:622 userdel.8.xml.out:76 userdel.8.xml.out:287 +#: useradd.8.xml.out:642 userdel.8.xml.out:76 userdel.8.xml.out:287 #: userdel.8.xml.out:302 usermod.8.xml.out:152 msgid "-f" msgstr "-f" @@ -1341,12 +1382,12 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option #: chfn.1.xml.out:122 faillog.8.xml.out:89 faillog.8.xml.out:144 -#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:173 +#: faillog.8.xml.out:186 faillog.8.xml.out:203 gpasswd.1.xml.out:175 #: groupadd.8.xml.out:112 groupadd.8.xml.out:185 grpck.8.xml.out:124 #: grpck.8.xml.out:138 login.1.xml.out:220 login.1.xml.out:229 -#: newusers.8.xml.out:287 passwd.1.xml.out:268 pwck.8.xml.out:155 -#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:456 -#: useradd.8.xml.out:542 userdel.8.xml.out:106 usermod.8.xml.out:317 +#: newusers.8.xml.out:289 passwd.1.xml.out:264 pwck.8.xml.out:155 +#: pwck.8.xml.out:188 useradd.8.xml.out:224 useradd.8.xml.out:458 +#: useradd.8.xml.out:544 userdel.8.xml.out:106 usermod.8.xml.out:317 msgid "-r" msgstr "-r" @@ -1371,8 +1412,8 @@ msgstr "" #. (itstool) path: para/option #: chfn.1.xml.out:143 faillog.8.xml.out:80 faillog.8.xml.out:180 #: faillog.8.xml.out:214 lastlog.8.xml.out:90 lastlog.8.xml.out:122 -#: lastlog.8.xml.out:139 passwd.1.xml.out:309 useradd.8.xml.out:414 -#: useradd.8.xml.out:531 usermod.8.xml.out:279 usermod.8.xml.out:369 +#: lastlog.8.xml.out:139 passwd.1.xml.out:320 useradd.8.xml.out:416 +#: useradd.8.xml.out:533 usermod.8.xml.out:279 usermod.8.xml.out:369 #: vipw.8.xml.out:133 #, fuzzy #| msgid "-" @@ -1380,7 +1421,7 @@ msgid "-u" msgstr "-" #. (itstool) path: term/option -#: chfn.1.xml.out:151 passwd.1.xml.out:322 usermod.8.xml.out:463 +#: chfn.1.xml.out:151 passwd.1.xml.out:333 usermod.8.xml.out:463 #, fuzzy #| msgid "-" msgid "-w" @@ -1425,11 +1466,11 @@ msgstr "" "<emphasis>[ ]</emphasis> 标记对里。" #. (itstool) path: listitem/para -#: chfn.1.xml.out:189 chgpasswd.8.xml.out:207 chpasswd.8.xml.out:249 -#: chsh.1.xml.out:161 groupadd.8.xml.out:278 groupmod.8.xml.out:241 -#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:425 -#: passwd.1.xml.out:407 pwconv.8.xml.out:232 su.1.xml.out:359 -#: useradd.8.xml.out:799 userdel.8.xml.out:193 +#: chfn.1.xml.out:189 chgpasswd.8.xml.out:235 chpasswd.8.xml.out:291 +#: chsh.1.xml.out:202 groupadd.8.xml.out:278 groupmod.8.xml.out:241 +#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:446 +#: passwd.1.xml.out:429 pwconv.8.xml.out:232 su.1.xml.out:359 +#: useradd.8.xml.out:819 userdel.8.xml.out:193 msgid "Shadow password suite configuration." msgstr "Shadow 密码套件配置。" @@ -1442,8 +1483,8 @@ msgstr "Shadow 密码套件配置。" #: chfn.1.xml.out:205 chsh.1.xml.out:36 chsh.1.xml.out:43 chsh.1.xml.out:49 #: chsh.1.xml.out:62 chsh.1.xml.out:73 chsh.1.xml.out:109 #: groupadd.8.xml.out:348 groupdel.8.xml.out:208 groupmems.8.xml.out:212 -#: groupmod.8.xml.out:329 login.defs.5.xml.out:270 useradd.8.xml.out:881 -#: userdel.8.xml.out:313 usermod.8.xml.out:608 +#: groupmod.8.xml.out:329 login.defs.5.xml.out:280 useradd.8.xml.out:901 +#: userdel.8.xml.out:313 usermod.8.xml.out:625 msgid "chsh" msgstr "chsh" @@ -1451,25 +1492,25 @@ msgstr "chsh" #. (itstool) path: para/filename #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname -#: chfn.1.xml.out:208 chgpasswd.8.xml.out:223 chpasswd.8.xml.out:272 -#: chsh.1.xml.out:174 groupadd.8.xml.out:194 groupadd.8.xml.out:363 -#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:102 -#: login.defs.5.xml.out:109 newusers.8.xml.out:298 newusers.8.xml.out:453 -#: passwd.1.xml.out:484 pwconv.8.xml.out:92 pwconv.8.xml.out:94 +#: chfn.1.xml.out:208 chgpasswd.8.xml.out:251 chpasswd.8.xml.out:314 +#: chsh.1.xml.out:215 groupadd.8.xml.out:194 groupadd.8.xml.out:363 +#: groupmod.8.xml.out:344 login.1.xml.out:389 login.defs.5.xml.out:104 +#: login.defs.5.xml.out:111 newusers.8.xml.out:300 newusers.8.xml.out:474 +#: passwd.1.xml.out:509 pwconv.8.xml.out:92 pwconv.8.xml.out:94 #: pwconv.8.xml.out:108 pwconv.8.xml.out:245 su.1.xml.out:418 -#: useradd.8.xml.out:899 userdel.8.xml.out:117 userdel.8.xml.out:319 -#: usermod.8.xml.out:629 vipw.8.xml.out:214 +#: useradd.8.xml.out:919 userdel.8.xml.out:117 userdel.8.xml.out:319 +#: usermod.8.xml.out:646 vipw.8.xml.out:214 msgid "login.defs" msgstr "login.defs" #. (itstool) path: refsect1/para -#: chfn.1.xml.out:203 chgpasswd.8.xml.out:215 chsh.1.xml.out:169 +#: chfn.1.xml.out:203 chgpasswd.8.xml.out:243 chsh.1.xml.out:210 #: limits.5.xml.out:183 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." msgstr "" #. (itstool) path: author/contrib -#: chgpasswd.8.xml.out:23 +#: chgpasswd.8.xml.out:25 msgid "Creation, 2006" msgstr "" @@ -1478,19 +1519,19 @@ msgstr "" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:33 chgpasswd.8.xml.out:40 chgpasswd.8.xml.out:46 -#: chgpasswd.8.xml.out:56 chgpasswd.8.xml.out:66 chgpasswd.8.xml.out:83 -#: login.defs.5.xml.out:249 +#: chgpasswd.8.xml.out:35 chgpasswd.8.xml.out:42 chgpasswd.8.xml.out:48 +#: chgpasswd.8.xml.out:58 chgpasswd.8.xml.out:68 chgpasswd.8.xml.out:85 +#: login.defs.5.xml.out:253 msgid "chgpasswd" msgstr "chgpasswd" #. (itstool) path: refmeta/manvolnum #. (itstool) path: citerefentry/manvolnum #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:34 chgpasswd.8.xml.out:220 chpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:268 chpasswd.8.xml.out:276 faillog.5.xml.out:87 -#: faillog.8.xml.out:34 gpasswd.1.xml.out:280 gpasswd.1.xml.out:283 -#: gpasswd.1.xml.out:286 gpasswd.1.xml.out:289 groupadd.8.xml.out:37 +#: chgpasswd.8.xml.out:36 chgpasswd.8.xml.out:248 chpasswd.8.xml.out:40 +#: chpasswd.8.xml.out:310 chpasswd.8.xml.out:318 faillog.5.xml.out:87 +#: faillog.8.xml.out:34 gpasswd.1.xml.out:282 gpasswd.1.xml.out:285 +#: gpasswd.1.xml.out:288 gpasswd.1.xml.out:291 groupadd.8.xml.out:37 #: groupadd.8.xml.out:354 groupadd.8.xml.out:357 groupadd.8.xml.out:360 #: groupadd.8.xml.out:366 groupadd.8.xml.out:369 groupadd.8.xml.out:372 #: groupdel.8.xml.out:35 groupdel.8.xml.out:186 groupdel.8.xml.out:214 @@ -1503,43 +1544,43 @@ msgstr "chgpasswd" #: grpck.8.xml.out:34 grpck.8.xml.out:283 grpck.8.xml.out:294 #: gshadow.5.xml.out:159 gshadow.5.xml.out:162 lastlog.8.xml.out:36 #: login.1.xml.out:174 login.1.xml.out:176 login.1.xml.out:249 -#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:545 -#: logoutd.8.xml.out:34 newusers.8.xml.out:50 newusers.8.xml.out:467 -#: nologin.8.xml.out:23 passwd.1.xml.out:474 passwd.1.xml.out:488 +#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:564 +#: logoutd.8.xml.out:34 newusers.8.xml.out:52 newusers.8.xml.out:488 +#: nologin.8.xml.out:23 passwd.1.xml.out:496 passwd.1.xml.out:513 #: passwd.5.xml.out:185 passwd.5.xml.out:188 passwd.5.xml.out:191 #: passwd.5.xml.out:200 pwck.8.xml.out:41 pwck.8.xml.out:339 pwck.8.xml.out:348 #: pwconv.8.xml.out:40 pwconv.8.xml.out:242 pwconv.8.xml.out:248 #: pwconv.8.xml.out:251 pwconv.8.xml.out:254 shadow.5.xml.out:274 #: shadow.5.xml.out:277 shadow.5.xml.out:280 shadow.5.xml.out:286 -#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:574 -#: useradd.8.xml.out:890 useradd.8.xml.out:893 useradd.8.xml.out:896 -#: useradd.8.xml.out:902 useradd.8.xml.out:913 useradd.8.xml.out:916 -#: userdel.8.xml.out:40 userdel.8.xml.out:259 userdel.8.xml.out:322 -#: userdel.8.xml.out:325 userdel.8.xml.out:328 userdel.8.xml.out:331 -#: userdel.8.xml.out:342 userdel.8.xml.out:345 usermod.8.xml.out:41 -#: usermod.8.xml.out:617 usermod.8.xml.out:620 usermod.8.xml.out:623 -#: usermod.8.xml.out:626 usermod.8.xml.out:640 usermod.8.xml.out:643 -#: vipw.8.xml.out:36 +#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:576 +#: useradd.8.xml.out:590 useradd.8.xml.out:910 useradd.8.xml.out:913 +#: useradd.8.xml.out:916 useradd.8.xml.out:922 useradd.8.xml.out:933 +#: useradd.8.xml.out:936 userdel.8.xml.out:40 userdel.8.xml.out:259 +#: userdel.8.xml.out:322 userdel.8.xml.out:325 userdel.8.xml.out:328 +#: userdel.8.xml.out:331 userdel.8.xml.out:342 userdel.8.xml.out:345 +#: usermod.8.xml.out:41 usermod.8.xml.out:522 usermod.8.xml.out:634 +#: usermod.8.xml.out:637 usermod.8.xml.out:640 usermod.8.xml.out:643 +#: usermod.8.xml.out:657 usermod.8.xml.out:660 vipw.8.xml.out:36 msgid "8" msgstr "8" #. (itstool) path: refmeta/refmiscinfo -#: chgpasswd.8.xml.out:35 chpasswd.8.xml.out:39 faillog.8.xml.out:35 +#: chgpasswd.8.xml.out:37 chpasswd.8.xml.out:41 faillog.8.xml.out:35 #: groupadd.8.xml.out:38 groupdel.8.xml.out:36 groupmems.8.xml.out:39 #: groupmod.8.xml.out:36 grpck.8.xml.out:35 lastlog.8.xml.out:37 -#: logoutd.8.xml.out:35 newusers.8.xml.out:51 nologin.8.xml.out:24 +#: logoutd.8.xml.out:35 newusers.8.xml.out:53 nologin.8.xml.out:24 #: pwck.8.xml.out:42 pwconv.8.xml.out:41 useradd.8.xml.out:54 #: userdel.8.xml.out:41 usermod.8.xml.out:42 vipw.8.xml.out:37 msgid "System Management Commands" msgstr "系统管理命令" #. (itstool) path: refnamediv/refpurpose -#: chgpasswd.8.xml.out:41 +#: chgpasswd.8.xml.out:43 msgid "update group passwords in batch mode" msgstr "批量更新组密码" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:55 +#: chgpasswd.8.xml.out:57 #, fuzzy #| msgid "" #| "The <command>chgpasswd</command> command reads a list of group name and " @@ -1556,12 +1597,12 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chgpasswd.8.xml.out:61 groupmems.8.xml.out:54 groupmems.8.xml.out:110 +#: chgpasswd.8.xml.out:63 groupmems.8.xml.out:54 groupmems.8.xml.out:110 msgid "group_name" msgstr "group_name" #. (itstool) path: para/emphasis -#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 passwd.5.xml.out:77 +#: chgpasswd.8.xml.out:64 chpasswd.8.xml.out:68 passwd.5.xml.out:77 #: passwd.5.xml.out:86 passwd.5.xml.out:91 passwd.5.xml.out:95 #: passwd.5.xml.out:98 #, fuzzy @@ -1570,12 +1611,12 @@ msgid "password" msgstr "passwd" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:60 chpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 msgid "<_:emphasis-1/>:<_:emphasis-2/>" msgstr "" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:64 +#: chgpasswd.8.xml.out:66 #, fuzzy #| msgid "" #| "By default the supplied password must be in clear-text, and is encrypted " @@ -1587,8 +1628,8 @@ msgstr "" "默认上,提供的密码必须是明码文本,然后由 <command>chgpasswd</command> 加密。" #. (itstool) path: para/option -#: chgpasswd.8.xml.out:70 chpasswd.8.xml.out:75 chpasswd.8.xml.out:132 -#: passwd.1.xml.out:129 +#: chgpasswd.8.xml.out:72 chpasswd.8.xml.out:77 chpasswd.8.xml.out:138 +#: passwd.1.xml.out:114 #, fuzzy #| msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgid "ENCRYPT_METHOD" @@ -1596,9 +1637,9 @@ msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" #. (itstool) path: para/option #. (itstool) path: term/option -#: chgpasswd.8.xml.out:71 chgpasswd.8.xml.out:101 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 chpasswd.8.xml.out:139 -#: passwd.1.xml.out:180 useradd.8.xml.out:179 useradd.8.xml.out:610 +#: chgpasswd.8.xml.out:73 chgpasswd.8.xml.out:107 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 chpasswd.8.xml.out:145 +#: passwd.1.xml.out:176 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 #, fuzzy #| msgid "-" @@ -1608,16 +1649,16 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: term/option #. (itstool) path: arg/arg -#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:88 chpasswd.8.xml.out:78 -#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:114 chpasswd.8.xml.out:129 -#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:90 chpasswd.8.xml.out:80 +#: chpasswd.8.xml.out:86 chpasswd.8.xml.out:116 chpasswd.8.xml.out:135 +#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:270 #: sg.1.xml.out:50 su.1.xml.out:86 su.1.xml.out:126 su.1.xml.out:131 #: useradd.8.xml.out:139 usermod.8.xml.out:99 msgid "-c" msgstr "-c" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:68 +#: chgpasswd.8.xml.out:70 #, fuzzy #| msgid "" #| "The default encryption algorithm can be defined for the system with the " @@ -1634,55 +1675,109 @@ msgstr "" "c</option> 选项覆盖。" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:74 chpasswd.8.xml.out:99 +#: chgpasswd.8.xml.out:76 chpasswd.8.xml.out:101 msgid "" "This command is intended to be used in a large system environment where many " "accounts are created at a single time." msgstr "此命令一般用于需要一次创建很多用户的大型系统。" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:88 chpasswd.8.xml.out:114 newusers.8.xml.out:268 +#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:116 newusers.8.xml.out:270 msgid "--crypt-method" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:117 newusers.8.xml.out:270 +#: chgpasswd.8.xml.out:92 chpasswd.8.xml.out:119 newusers.8.xml.out:272 msgid "Use the specified method to encrypt the passwords." msgstr "使用指定的方法加密密码。" -#. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:91 chpasswd.8.xml.out:118 -msgid "The available methods are DES, MD5, and NONE." -msgstr "可用的方法有 DES,MD5 和 NONE。" +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:95 chgpasswd.8.xml.out:149 chpasswd.8.xml.out:122 +#: chpasswd.8.xml.out:208 newusers.8.xml.out:330 +msgid "BCRYPT" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 +#, fuzzy +#| msgid "-h <placeholder-1/>" +msgid "<_:replaceable-1/>," +msgstr "-h <placeholder-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:96 chpasswd.8.xml.out:123 +msgid "DES" +msgstr "" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid "MD5" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:98 chgpasswd.8.xml.out:151 chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:210 newusers.8.xml.out:332 +msgid "SHA256" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:99 chgpasswd.8.xml.out:152 chpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:211 newusers.8.xml.out:333 +msgid "SHA512" +msgstr "" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:97 chpasswd.8.xml.out:124 +msgid ", <_:replaceable-1/>, <_:replaceable-2/>" +msgstr "" + +#. (itstool) path: phrase/replaceable +#: chgpasswd.8.xml.out:100 chgpasswd.8.xml.out:154 chpasswd.8.xml.out:127 +#: chpasswd.8.xml.out:213 newusers.8.xml.out:335 +#, fuzzy +#| msgid "DESCRIPTION" +msgid "YESCRYPT" +msgstr "描述" + +#. (itstool) path: para/phrase +#: chgpasswd.8.xml.out:99 chpasswd.8.xml.out:126 +#, fuzzy +#| msgid "-h <placeholder-1/>" +msgid ", <_:replaceable-1/>" +msgstr "-h <placeholder-1/>" + +#. (itstool) path: para/replaceable +#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:128 +msgid "NONE" +msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:94 chpasswd.8.xml.out:121 newusers.8.xml.out:271 +#: chgpasswd.8.xml.out:93 chpasswd.8.xml.out:120 msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." +"The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" +"><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports " +"these methods." msgstr "" -"可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512,前提是您的 libc 支持这写方" -"法。" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:101 chpasswd.8.xml.out:139 +#: chgpasswd.8.xml.out:107 chpasswd.8.xml.out:145 #, fuzzy #| msgid "encrypted password" msgid "--encrypted" msgstr "加密了的密码" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:103 chpasswd.8.xml.out:141 +#: chgpasswd.8.xml.out:109 chpasswd.8.xml.out:147 msgid "Supplied passwords are in encrypted form." msgstr "提供的密码是已经加密了的" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:113 chpasswd.8.xml.out:155 +#: chgpasswd.8.xml.out:119 chpasswd.8.xml.out:161 msgid "--md5" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:115 chpasswd.8.xml.out:157 +#: chgpasswd.8.xml.out:121 chpasswd.8.xml.out:163 msgid "" "Use MD5 encryption instead of DES when the supplied passwords are not " "encrypted." @@ -1690,74 +1785,125 @@ msgstr "如果提供的密码没有加密,则使用 MD5 加密而不是 DES。 #. (itstool) path: term/option #. (itstool) path: para/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 chsh.1.xml.out:97 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 chsh.1.xml.out:97 #: chsh.1.xml.out:108 grpck.8.xml.out:124 grpck.8.xml.out:161 -#: newusers.8.xml.out:320 pwck.8.xml.out:155 pwck.8.xml.out:209 -#: su.1.xml.out:163 useradd.8.xml.out:517 useradd.8.xml.out:655 -#: usermod.8.xml.out:357 vipw.8.xml.out:70 vipw.8.xml.out:127 +#: newusers.8.xml.out:322 passwd.1.xml.out:363 pwck.8.xml.out:155 +#: pwck.8.xml.out:209 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 vipw.8.xml.out:70 +#: vipw.8.xml.out:127 msgid "-s" msgstr "-s" #. (itstool) path: term/option -#: chgpasswd.8.xml.out:135 chpasswd.8.xml.out:178 newusers.8.xml.out:320 +#: chgpasswd.8.xml.out:141 chpasswd.8.xml.out:199 newusers.8.xml.out:322 msgid "--sha-rounds" msgstr "" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:137 chpasswd.8.xml.out:181 newusers.8.xml.out:322 +#: chgpasswd.8.xml.out:143 chpasswd.8.xml.out:202 newusers.8.xml.out:324 msgid "Use the specified number of rounds to encrypt the passwords." msgstr "使用指定次数的轮转来加密密码。" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:140 chpasswd.8.xml.out:184 newusers.8.xml.out:325 +#: chgpasswd.8.xml.out:146 chpasswd.8.xml.out:205 newusers.8.xml.out:327 +msgid "" +"You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> " +"<_:phrase-3/>" +msgstr "" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:156 chpasswd.8.xml.out:215 newusers.8.xml.out:337 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" +#| "filename>." msgid "" -"The value 0 means that the system will choose the default number of rounds " -"for the crypt method (5000)." -msgstr "值 0 表示让系统为加密方法选择默认的轮转次数 (5000)。" +"By default, the number of rounds for BCRYPT is defined by the " +"BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" +"默认,轮转数由 <filename>/etc/login.defs</filename> 文件中的 " +"SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS 变量确定。" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:144 chpasswd.8.xml.out:188 newusers.8.xml.out:329 +#: chgpasswd.8.xml.out:161 chpasswd.8.xml.out:220 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default number of rounds is 13." msgstr "会强制最小 1,000,最大 9,9999,9999" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:148 chpasswd.8.xml.out:192 newusers.8.xml.out:333 -msgid "You can only use this option with the SHA256 or SHA512 crypt method." -msgstr "您只可以对 SHA256 或 SHA512 使用此选项。" +#: chgpasswd.8.xml.out:165 chpasswd.8.xml.out:224 newusers.8.xml.out:346 +#, fuzzy +#| msgid "" +#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " +#| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" +#| "filename>." +msgid "" +"By default, the number of rounds for SHA256 or SHA512 is defined by the " +"SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "" +"默认,轮转数由 <filename>/etc/login.defs</filename> 文件中的 " +"SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS 变量确定。" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:152 newusers.8.xml.out:337 +#: chgpasswd.8.xml.out:170 chpasswd.8.xml.out:229 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default number of rounds is 5000." +msgstr "会强制最小 1,000,最大 9,9999,9999" + +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:175 chpasswd.8.xml.out:234 newusers.8.xml.out:355 #, fuzzy #| msgid "" #| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " #| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" #| "filename>." msgid "" -"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and " -"SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +"By default, the number of rounds for YESCRYPT is defined by the " +"YESCRYPT_COST_FACTOR in <_:filename-1/>." msgstr "" "默认,轮转数由 <filename>/etc/login.defs</filename> 文件中的 " "SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS 变量确定。" +#. (itstool) path: listitem/para +#: chgpasswd.8.xml.out:179 chpasswd.8.xml.out:238 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default number of rounds is 5." +msgstr "会强制最小 1,000,最大 9,9999,9999" + #. (itstool) path: refsect1/title -#: chgpasswd.8.xml.out:163 chpasswd.8.xml.out:208 faillog.8.xml.out:209 -#: gpasswd.1.xml.out:229 groupadd.8.xml.out:285 groupdel.8.xml.out:121 -#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:348 -#: passwd.1.xml.out:354 shadow.3.xml.out:194 su.1.xml.out:306 -#: useradd.8.xml.out:682 userdel.8.xml.out:281 usermod.8.xml.out:517 +#: chgpasswd.8.xml.out:189 chpasswd.8.xml.out:248 faillog.8.xml.out:209 +#: gpasswd.1.xml.out:231 groupadd.8.xml.out:285 groupdel.8.xml.out:121 +#: lastlog.8.xml.out:206 login.1.xml.out:236 newusers.8.xml.out:369 +#: passwd.1.xml.out:376 shadow.3.xml.out:194 su.1.xml.out:306 +#: useradd.8.xml.out:702 userdel.8.xml.out:281 usermod.8.xml.out:534 msgid "CAVEATS" msgstr "CAVEATS" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:164 chpasswd.8.xml.out:209 +#: chgpasswd.8.xml.out:190 chpasswd.8.xml.out:249 msgid "" "Remember to set permissions or umask to prevent readability of unencrypted " "files by other users." msgstr "记住要设置权限或者掩码来阻止其它用户对未加密文件的读取。" #. (itstool) path: refsect1/para -#: chgpasswd.8.xml.out:168 newusers.8.xml.out:353 +#: chgpasswd.8.xml.out:194 newusers.8.xml.out:374 msgid "" "You should make sure the passwords and the encryption method respect the " "system's password policy." @@ -1767,8 +1913,8 @@ msgstr "您需要确保你吗和加密方法符合系统的密码策略。" #. (itstool) path: phrase/filename #. (itstool) path: para/filename #. (itstool) path: citerefentry/refentrytitle -#: chgpasswd.8.xml.out:193 gpasswd.1.xml.out:48 gpasswd.1.xml.out:51 -#: gpasswd.1.xml.out:73 gpasswd.1.xml.out:231 gpasswd.1.xml.out:259 +#: chgpasswd.8.xml.out:221 gpasswd.1.xml.out:50 gpasswd.1.xml.out:53 +#: gpasswd.1.xml.out:75 gpasswd.1.xml.out:233 gpasswd.1.xml.out:261 #: groupadd.8.xml.out:170 groupadd.8.xml.out:264 groupdel.8.xml.out:148 #: groupmems.8.xml.out:191 groupmod.8.xml.out:227 groups.1.xml.out:58 #: groups.1.xml.out:70 groups.1.xml.out:80 grpck.8.xml.out:62 @@ -1776,19 +1922,19 @@ msgstr "您需要确保你吗和加密方法符合系统的密码策略。" #: grpck.8.xml.out:164 grpck.8.xml.out:177 grpck.8.xml.out:185 #: grpck.8.xml.out:211 gshadow.5.xml.out:91 gshadow.5.xml.out:124 #: gshadow.5.xml.out:135 newgrp.1.xml.out:80 newgrp.1.xml.out:112 -#: newusers.8.xml.out:411 pwck.8.xml.out:261 pwconv.8.xml.out:128 -#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:755 -#: userdel.8.xml.out:185 usermod.8.xml.out:557 vipw.8.xml.out:69 +#: newusers.8.xml.out:432 pwck.8.xml.out:261 pwconv.8.xml.out:128 +#: sg.1.xml.out:101 suauth.5.xml.out:90 useradd.8.xml.out:775 +#: userdel.8.xml.out:185 usermod.8.xml.out:574 vipw.8.xml.out:69 #: vipw.8.xml.out:175 msgid "/etc/group" msgstr "/etc/group" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:195 gpasswd.1.xml.out:261 groupadd.8.xml.out:266 +#: chgpasswd.8.xml.out:223 gpasswd.1.xml.out:263 groupadd.8.xml.out:266 #: groupdel.8.xml.out:150 groupmems.8.xml.out:193 groupmod.8.xml.out:229 #: groups.1.xml.out:82 grpck.8.xml.out:213 gshadow.5.xml.out:137 -#: newgrp.1.xml.out:114 newusers.8.xml.out:413 pwck.8.xml.out:263 -#: sg.1.xml.out:103 useradd.8.xml.out:757 userdel.8.xml.out:187 +#: newgrp.1.xml.out:114 newusers.8.xml.out:434 pwck.8.xml.out:263 +#: sg.1.xml.out:103 useradd.8.xml.out:777 userdel.8.xml.out:187 #: vipw.8.xml.out:177 msgid "Group account information." msgstr "组账户信息。" @@ -1796,8 +1942,8 @@ msgstr "组账户信息。" #. (itstool) path: term/filename #. (itstool) path: phrase/filename #. (itstool) path: para/filename -#: chgpasswd.8.xml.out:199 gpasswd.1.xml.out:52 gpasswd.1.xml.out:74 -#: gpasswd.1.xml.out:232 gpasswd.1.xml.out:265 groupadd.8.xml.out:170 +#: chgpasswd.8.xml.out:227 gpasswd.1.xml.out:54 gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:234 gpasswd.1.xml.out:267 groupadd.8.xml.out:170 #: groupadd.8.xml.out:270 groupdel.8.xml.out:154 groupmems.8.xml.out:87 #: groupmems.8.xml.out:88 groupmems.8.xml.out:98 groupmems.8.xml.out:103 #: groupmems.8.xml.out:104 groupmems.8.xml.out:134 groupmems.8.xml.out:135 @@ -1805,17 +1951,17 @@ msgstr "组账户信息。" #: grpck.8.xml.out:93 grpck.8.xml.out:114 grpck.8.xml.out:166 #: grpck.8.xml.out:186 grpck.8.xml.out:217 gshadow.5.xml.out:36 #: gshadow.5.xml.out:141 newgrp.1.xml.out:78 newgrp.1.xml.out:118 -#: newusers.8.xml.out:417 pwconv.8.xml.out:129 sg.1.xml.out:107 -#: useradd.8.xml.out:761 usermod.8.xml.out:563 vipw.8.xml.out:72 +#: newusers.8.xml.out:438 pwconv.8.xml.out:129 sg.1.xml.out:107 +#: useradd.8.xml.out:781 usermod.8.xml.out:580 vipw.8.xml.out:72 #: vipw.8.xml.out:181 msgid "/etc/gshadow" msgstr "/etc/gshadow" #. (itstool) path: listitem/para -#: chgpasswd.8.xml.out:201 gpasswd.1.xml.out:267 groupadd.8.xml.out:272 +#: chgpasswd.8.xml.out:229 gpasswd.1.xml.out:269 groupadd.8.xml.out:272 #: groupdel.8.xml.out:156 groupmod.8.xml.out:235 grpck.8.xml.out:219 -#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:419 -#: sg.1.xml.out:109 useradd.8.xml.out:763 vipw.8.xml.out:183 +#: gshadow.5.xml.out:143 newgrp.1.xml.out:120 newusers.8.xml.out:440 +#: sg.1.xml.out:109 useradd.8.xml.out:783 vipw.8.xml.out:183 msgid "Secure group account information." msgstr "安全组账户信息。" @@ -1825,12 +1971,12 @@ msgstr "安全组账户信息。" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:217 gpasswd.1.xml.out:38 gpasswd.1.xml.out:45 -#: gpasswd.1.xml.out:59 gpasswd.1.xml.out:72 gpasswd.1.xml.out:85 -#: gpasswd.1.xml.out:119 groupadd.8.xml.out:354 groupdel.8.xml.out:214 -#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:280 +#: chgpasswd.8.xml.out:245 gpasswd.1.xml.out:40 gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:61 gpasswd.1.xml.out:74 gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:121 groupadd.8.xml.out:354 groupdel.8.xml.out:214 +#: groupmod.8.xml.out:335 gshadow.5.xml.out:153 login.defs.5.xml.out:290 #: newgrp.1.xml.out:142 sg.1.xml.out:131 userdel.8.xml.out:322 -#: usermod.8.xml.out:617 +#: usermod.8.xml.out:634 msgid "gpasswd" msgstr "gpasswd" @@ -1840,19 +1986,19 @@ msgstr "gpasswd" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: chgpasswd.8.xml.out:220 gpasswd.1.xml.out:280 groupadd.8.xml.out:36 +#: chgpasswd.8.xml.out:248 gpasswd.1.xml.out:282 groupadd.8.xml.out:36 #: groupadd.8.xml.out:43 groupadd.8.xml.out:49 groupadd.8.xml.out:61 #: groupadd.8.xml.out:82 groupadd.8.xml.out:292 groupadd.8.xml.out:300 #: groupdel.8.xml.out:217 groupmems.8.xml.out:218 groupmod.8.xml.out:338 -#: login.defs.5.xml.out:290 useradd.8.xml.out:890 userdel.8.xml.out:325 -#: usermod.8.xml.out:620 +#: login.defs.5.xml.out:303 useradd.8.xml.out:910 userdel.8.xml.out:325 +#: usermod.8.xml.out:637 msgid "groupadd" msgstr "groupadd" #. (itstool) path: author/contrib -#: chpasswd.8.xml.out:21 groupadd.8.xml.out:20 groupdel.8.xml.out:18 -#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:86 -#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:33 +#: chpasswd.8.xml.out:23 groupadd.8.xml.out:20 groupdel.8.xml.out:18 +#: groupmod.8.xml.out:18 groups.1.xml.out:17 login.defs.5.xml.out:88 +#: logoutd.8.xml.out:17 newgrp.1.xml.out:18 newusers.8.xml.out:35 #: sg.1.xml.out:18 useradd.8.xml.out:36 userdel.8.xml.out:23 #: usermod.8.xml.out:24 msgid "Creation, 1991" @@ -1864,20 +2010,20 @@ msgstr "" #. (itstool) path: para/command #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:37 chpasswd.8.xml.out:44 chpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:60 chpasswd.8.xml.out:70 chpasswd.8.xml.out:89 -#: chpasswd.8.xml.out:96 chpasswd.8.xml.out:108 chpasswd.8.xml.out:255 -#: login.defs.5.xml.out:259 passwd.1.xml.out:474 +#: chpasswd.8.xml.out:39 chpasswd.8.xml.out:46 chpasswd.8.xml.out:52 +#: chpasswd.8.xml.out:62 chpasswd.8.xml.out:72 chpasswd.8.xml.out:91 +#: chpasswd.8.xml.out:98 chpasswd.8.xml.out:110 chpasswd.8.xml.out:297 +#: login.defs.5.xml.out:266 passwd.1.xml.out:496 msgid "chpasswd" msgstr "chpasswd" #. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:45 +#: chpasswd.8.xml.out:47 msgid "update passwords in batch mode" msgstr "批量更新密码" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:59 +#: chpasswd.8.xml.out:61 #, fuzzy #| msgid "" #| "The <command>chgpasswd</command> command reads a list of group name and " @@ -1894,13 +2040,13 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:65 groupmems.8.xml.out:52 groupmems.8.xml.out:53 +#: chpasswd.8.xml.out:67 groupmems.8.xml.out:52 groupmems.8.xml.out:53 #: groupmems.8.xml.out:83 groupmems.8.xml.out:94 msgid "user_name" msgstr "user_name" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:68 +#: chpasswd.8.xml.out:70 #, fuzzy #| msgid "" #| "By default the passwords must be supplied in clear-text, and are " @@ -1914,14 +2060,14 @@ msgstr "" "龄信息,也会更新之。" #. (itstool) path: para/option -#: chpasswd.8.xml.out:76 chpasswd.8.xml.out:133 +#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 #, fuzzy #| msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgid "MD5_CRYPT_ENAB" msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:73 +#: chpasswd.8.xml.out:75 #, fuzzy #| msgid "" #| "The default encryption algorithm can be defined for the system with the " @@ -1938,7 +2084,7 @@ msgstr "" "c</option> 选项覆盖。" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:83 msgid "" "By default, passwords are encrypted by PAM, but (even if not recommended) " "you can select a different encryption method with the <_:option-1/>, <_:" @@ -1946,21 +2092,21 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:88 +#: chpasswd.8.xml.out:90 #, fuzzy #| msgid "By default, PAM is used to encrypt the passwords." msgid "Except when PAM is used to encrypt the passwords," msgstr "默认,使用 PAM 来加密密码。" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:87 +#: chpasswd.8.xml.out:89 msgid "" "<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and " "then commits all the changes to disk if no errors occurred for any user." msgstr "" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:93 +#: chpasswd.8.xml.out:95 msgid "" "When PAM is used to encrypt the passwords (and update the passwords in the " "system database) then if a password cannot be updated <_:command-1/> " @@ -1969,17 +2115,17 @@ msgid "" msgstr "" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:114 +#: chpasswd.8.xml.out:116 msgid "METHOD" msgstr "" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:125 +#: chpasswd.8.xml.out:131 msgid "By default, PAM is used to encrypt the passwords." msgstr "默认,使用 PAM 来加密密码。" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:128 +#: chpasswd.8.xml.out:134 #, fuzzy #| msgid "" #| "The default behavior (if the <option>-g</option>, <option>-N</option>, " @@ -1996,45 +2142,17 @@ msgstr "" "<option>USERGROUPS_ENAB</option> 变量指定。" #. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:178 -msgid "ROUNDS" -msgstr "" - -#. (itstool) path: para/option -#: chpasswd.8.xml.out:198 -#, fuzzy -#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "SHA_CRYPT_MIN_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/option #: chpasswd.8.xml.out:199 -#, fuzzy -#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "SHA_CRYPT_MAX_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:196 -#, fuzzy -#| msgid "" -#| "By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS " -#| "and SHA_CRYPT_MAX_ROUNDS variables in <filename>/etc/login.defs</" -#| "filename>." -msgid "" -"By default, the number of rounds is defined by the <_:option-1/> and <_:" -"option-2/> variables in <_:filename-3/>." +msgid "ROUNDS" msgstr "" -"默认,轮转数由 <filename>/etc/login.defs</filename> 文件中的 " -"SHA_CRYPT_MIN_ROUNDS 和 SHA_CRYPT_MAX_ROUNDS 变量确定。" #. (itstool) path: term/filename -#: chpasswd.8.xml.out:253 +#: chpasswd.8.xml.out:295 msgid "/etc/pam.d/chpasswd" msgstr "/etc/pam.d/chpasswd" #. (itstool) path: listitem/para -#: chpasswd.8.xml.out:255 newusers.8.xml.out:431 passwd.1.xml.out:413 +#: chpasswd.8.xml.out:297 newusers.8.xml.out:452 passwd.1.xml.out:435 #, fuzzy #| msgid "PAM configuration for <command>passwd</command>." msgid "PAM configuration for <_:command-1/>." @@ -2046,17 +2164,17 @@ msgstr "<command>passwd</command> 的 PAM 配置。" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:268 login.defs.5.xml.out:380 newusers.8.xml.out:49 -#: newusers.8.xml.out:56 newusers.8.xml.out:62 newusers.8.xml.out:75 -#: newusers.8.xml.out:96 newusers.8.xml.out:123 newusers.8.xml.out:132 -#: newusers.8.xml.out:151 newusers.8.xml.out:164 newusers.8.xml.out:170 -#: newusers.8.xml.out:172 newusers.8.xml.out:210 newusers.8.xml.out:230 -#: newusers.8.xml.out:252 newusers.8.xml.out:431 useradd.8.xml.out:902 +#: chpasswd.8.xml.out:310 login.defs.5.xml.out:393 newusers.8.xml.out:51 +#: newusers.8.xml.out:58 newusers.8.xml.out:64 newusers.8.xml.out:77 +#: newusers.8.xml.out:98 newusers.8.xml.out:125 newusers.8.xml.out:134 +#: newusers.8.xml.out:153 newusers.8.xml.out:166 newusers.8.xml.out:172 +#: newusers.8.xml.out:174 newusers.8.xml.out:212 newusers.8.xml.out:232 +#: newusers.8.xml.out:254 newusers.8.xml.out:452 useradd.8.xml.out:922 msgid "newusers" msgstr "newusers" #. (itstool) path: para/phrase -#: chpasswd.8.xml.out:270 grpck.8.xml.out:285 passwd.1.xml.out:482 +#: chpasswd.8.xml.out:312 grpck.8.xml.out:285 passwd.1.xml.out:507 msgid "<_:citerefentry-1/>," msgstr "" @@ -2066,21 +2184,21 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: chpasswd.8.xml.out:276 groupadd.8.xml.out:366 groupdel.8.xml.out:223 -#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:462 -#: newusers.8.xml.out:467 useradd.8.xml.out:52 useradd.8.xml.out:59 +#: chpasswd.8.xml.out:318 groupadd.8.xml.out:366 groupdel.8.xml.out:223 +#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:481 +#: newusers.8.xml.out:488 useradd.8.xml.out:52 useradd.8.xml.out:59 #: useradd.8.xml.out:64 useradd.8.xml.out:71 useradd.8.xml.out:75 #: useradd.8.xml.out:87 useradd.8.xml.out:90 useradd.8.xml.out:103 #: useradd.8.xml.out:129 useradd.8.xml.out:187 useradd.8.xml.out:209 -#: useradd.8.xml.out:239 useradd.8.xml.out:284 useradd.8.xml.out:341 -#: useradd.8.xml.out:472 useradd.8.xml.out:584 useradd.8.xml.out:586 -#: useradd.8.xml.out:690 useradd.8.xml.out:808 userdel.8.xml.out:342 -#: usermod.8.xml.out:640 +#: useradd.8.xml.out:239 useradd.8.xml.out:286 useradd.8.xml.out:343 +#: useradd.8.xml.out:474 useradd.8.xml.out:604 useradd.8.xml.out:606 +#: useradd.8.xml.out:710 useradd.8.xml.out:828 userdel.8.xml.out:342 +#: usermod.8.xml.out:657 msgid "useradd" msgstr "useradd" #. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:263 newusers.8.xml.out:451 +#: chpasswd.8.xml.out:305 newusers.8.xml.out:472 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." msgstr "" @@ -2101,8 +2219,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:517 -#: useradd.8.xml.out:655 usermod.8.xml.out:357 +#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:519 +#: useradd.8.xml.out:675 usermod.8.xml.out:357 #, fuzzy #| msgid "pw_shell" msgid "--shell" @@ -2110,8 +2228,8 @@ msgstr "pw_shell" #. (itstool) path: term/replaceable #. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:517 -#: useradd.8.xml.out:522 useradd.8.xml.out:655 useradd.8.xml.out:662 +#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:519 +#: useradd.8.xml.out:524 useradd.8.xml.out:675 useradd.8.xml.out:682 #: usermod.8.xml.out:357 msgid "SHELL" msgstr "" @@ -2146,12 +2264,13 @@ msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:153 su.1.xml.out:198 +#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:130 chsh.1.xml.out:143 +#: chsh.1.xml.out:172 chsh.1.xml.out:184 su.1.xml.out:198 msgid "/etc/shells" msgstr "/etc/shells" #. (itstool) path: para/filename -#: chsh.1.xml.out:123 +#: chsh.1.xml.out:123 chsh.1.xml.out:142 msgid "/bin/rsh" msgstr "" @@ -2167,11 +2286,97 @@ msgid "" "original value." msgstr "" +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chsh.1.xml.out:132 chsh.1.xml.out:181 +msgid "%vendordir%/shells" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:133 +msgid "%vendordir%/shells.d/*" +msgstr "" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:134 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/*" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:135 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d/@filename@" +msgstr "/etc/shells" + +#. (itstool) path: para/filename +#: chsh.1.xml.out:136 +msgid "%vendordir%/shells.d/@filename@" +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:128 +msgid "" +"The only restriction placed on the login shell is that the command name must " +"be listed in <_:filename-1/>. If this file does not exist, the definitions " +"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" +"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " +"used. If the invoker is the superuser any value may be added regardless what " +"is defined in the configuration files. An account with a restricted login " +"shell may not change her login shell." +msgstr "" + +#. (itstool) path: refsect1/para +#: chsh.1.xml.out:141 +msgid "" +"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " +"since accidentally changing to a restricted shell would prevent the user " +"from ever changing her login shell back to its original value." +msgstr "" + #. (itstool) path: listitem/para -#: chsh.1.xml.out:155 +#: chsh.1.xml.out:174 msgid "List of valid login shells." msgstr "可用的登录 shell 的列表。" +#. (itstool) path: listitem/para +#: chsh.1.xml.out:177 +#, fuzzy +#| msgid "List of valid login shells." +msgid "User defined list of valid login shells." +msgstr "可用的登录 shell 的列表。" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:183 +msgid "Default configuration file if <_:filename-1/> does not exist." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:188 +msgid "%vendordir%/shells.d" +msgstr "" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:190 +msgid "Directory for additional vendor specific configuration files." +msgstr "" + +#. (itstool) path: term/filename +#: chsh.1.xml.out:194 +#, fuzzy +#| msgid "/etc/shells" +msgid "/etc/shells.d" +msgstr "/etc/shells" + +#. (itstool) path: listitem/para +#: chsh.1.xml.out:196 +#, fuzzy +#| msgid "Directory containing default files." +msgid "Directory for additional user defined configuration files." +msgstr "包含默认文件的目录。" + #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command @@ -2187,7 +2392,7 @@ msgid "check and enforce password expiration policy" msgstr "" #. (itstool) path: arg/replaceable -#: expiry.1.xml.out:52 gpasswd.1.xml.out:61 +#: expiry.1.xml.out:52 gpasswd.1.xml.out:63 msgid "option" msgstr "选项" @@ -2222,7 +2427,7 @@ msgstr "如果用户密码过期,则强制用户修改密码。" #. (itstool) path: author/contrib #: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 -#: passwd.1.xml.out:24 passwd.5.xml.out:17 porttime.5.xml.out:17 +#: passwd.1.xml.out:26 passwd.5.xml.out:17 porttime.5.xml.out:17 #: shadow.3.xml.out:17 shadow.5.xml.out:17 su.1.xml.out:34 msgid "Creation, 1989" msgstr "" @@ -2243,7 +2448,7 @@ msgstr "faillog" #. (itstool) path: refmeta/refmiscinfo #: faillog.5.xml.out:35 gshadow.5.xml.out:24 limits.5.xml.out:37 -#: login.access.5.xml.out:36 login.defs.5.xml.out:104 passwd.5.xml.out:35 +#: login.access.5.xml.out:36 login.defs.5.xml.out:106 passwd.5.xml.out:35 #: porttime.5.xml.out:35 shadow.5.xml.out:35 suauth.5.xml.out:35 #, fuzzy #| msgid "File Formats and Conversions" @@ -2332,8 +2537,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:124 -#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 +#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 #: usermod.8.xml.out:78 usermod.8.xml.out:210 #, fuzzy #| msgid "-" @@ -2341,7 +2546,7 @@ msgid "-a" msgstr "-" #. (itstool) path: term/option -#: faillog.8.xml.out:72 passwd.1.xml.out:157 +#: faillog.8.xml.out:72 passwd.1.xml.out:153 msgid "--all" msgstr "" @@ -2569,8 +2774,8 @@ msgstr "" #: login.1.xml.out:108 login.1.xml.out:112 login.1.xml.out:119 #: login.1.xml.out:171 login.1.xml.out:177 login.1.xml.out:230 #: login.1.xml.out:238 login.1.xml.out:247 login.1.xml.out:253 -#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:343 -#: login.defs.5.xml.out:518 login.defs.5.xml.out:530 newgrp.1.xml.out:133 +#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:356 +#: login.defs.5.xml.out:537 login.defs.5.xml.out:549 newgrp.1.xml.out:133 #: nologin.8.xml.out:60 passwd.5.xml.out:125 passwd.5.xml.out:132 #: passwd.5.xml.out:179 porttime.5.xml.out:121 shadow.5.xml.out:265 #: sg.1.xml.out:122 su.1.xml.out:415 @@ -2578,30 +2783,30 @@ msgid "login" msgstr "login" #. (itstool) path: author/firstname -#: gpasswd.1.xml.out:20 +#: gpasswd.1.xml.out:22 msgid "Rafal" msgstr "" #. (itstool) path: author/surname -#: gpasswd.1.xml.out:21 +#: gpasswd.1.xml.out:23 msgid "Maszkowski" msgstr "" #. (itstool) path: author/contrib -#: gpasswd.1.xml.out:22 login.access.5.xml.out:18 pwconv.8.xml.out:23 +#: gpasswd.1.xml.out:24 login.access.5.xml.out:18 pwconv.8.xml.out:23 #: suauth.5.xml.out:17 msgid "Creation, 1996" msgstr "" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:47 +#: gpasswd.1.xml.out:49 #, fuzzy #| msgid "administer <placeholder-1/>" msgid "administer <_:filename-1/>" msgstr "管理员 <placeholder-1/>" #. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:50 +#: gpasswd.1.xml.out:52 #, fuzzy #| msgid "administer <placeholder-1/> and <placeholder-2/>" msgid "administer <_:filename-1/> and <_:filename-2/>" @@ -2611,9 +2816,9 @@ msgstr "管理员 <placeholder-1/> 和 <placeholder-2/>" #. (itstool) path: para/replaceable #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:64 gpasswd.1.xml.out:89 gpasswd.1.xml.out:129 -#: gpasswd.1.xml.out:142 gpasswd.1.xml.out:177 gpasswd.1.xml.out:181 -#: gpasswd.1.xml.out:193 gpasswd.1.xml.out:197 gpasswd.1.xml.out:292 +#: gpasswd.1.xml.out:66 gpasswd.1.xml.out:91 gpasswd.1.xml.out:131 +#: gpasswd.1.xml.out:144 gpasswd.1.xml.out:179 gpasswd.1.xml.out:183 +#: gpasswd.1.xml.out:195 gpasswd.1.xml.out:199 gpasswd.1.xml.out:294 #: grpck.8.xml.out:49 grpck.8.xml.out:188 grpck.8.xml.out:280 #: gshadow.5.xml.out:156 limits.5.xml.out:138 newgrp.1.xml.out:48 #: newgrp.1.xml.out:145 pwck.8.xml.out:336 pwconv.8.xml.out:114 @@ -2622,19 +2827,19 @@ msgid "group" msgstr "group" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:73 +#: gpasswd.1.xml.out:75 msgid ", and <_:filename-1/>" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:76 +#: gpasswd.1.xml.out:78 #, fuzzy #| msgid "administrators" msgid "administrators," msgstr "管理员" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:71 +#: gpasswd.1.xml.out:73 msgid "" "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" ">. Every group can have <_:phrase-4/> members and a password." @@ -2642,14 +2847,14 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: gpasswd.1.xml.out:80 gpasswd.1.xml.out:112 gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 #, fuzzy #| msgid "-" msgid "-A" msgstr "-" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:79 +#: gpasswd.1.xml.out:81 msgid "" "System administrators can use the <_:option-1/> option to define group " "administrator(s) and the <_:option-2/> option to define members. They have " @@ -2657,21 +2862,21 @@ msgid "" msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:86 +#: gpasswd.1.xml.out:88 #, fuzzy #| msgid "administrators" msgid "a group administrator" msgstr "管理员" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:87 +#: gpasswd.1.xml.out:89 #, fuzzy #| msgid "administrators" msgid "a system administrator" msgstr "管理员" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:84 +#: gpasswd.1.xml.out:86 msgid "" "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " "prompts for the new password of the <_:replaceable-4/>." @@ -2682,8 +2887,8 @@ msgstr "" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:93 gpasswd.1.xml.out:180 gpasswd.1.xml.out:196 -#: gpasswd.1.xml.out:277 groups.1.xml.out:71 groups.1.xml.out:92 +#: gpasswd.1.xml.out:95 gpasswd.1.xml.out:182 gpasswd.1.xml.out:198 +#: gpasswd.1.xml.out:279 groups.1.xml.out:71 groups.1.xml.out:92 #: gshadow.5.xml.out:76 gshadow.5.xml.out:165 newgrp.1.xml.out:34 #: newgrp.1.xml.out:41 newgrp.1.xml.out:47 newgrp.1.xml.out:55 #: newgrp.1.xml.out:63 newgrp.1.xml.out:66 sg.1.xml.out:60 sg.1.xml.out:64 @@ -2692,19 +2897,19 @@ msgid "newgrp" msgstr "newgrp" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:91 +#: gpasswd.1.xml.out:93 msgid "" "If a password is set the members can still use <_:citerefentry-1/> without a " "password, and non-members must supply the password." msgstr "" #. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:99 +#: gpasswd.1.xml.out:101 msgid "Notes about group passwords" msgstr "请注意组密码" #. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:100 +#: gpasswd.1.xml.out:102 msgid "" "Group passwords are an inherent security problem since more than one person " "is permitted to know the password. However, groups are a useful tool for " @@ -2712,7 +2917,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:111 +#: gpasswd.1.xml.out:113 #, fuzzy #| msgid "" #| "Except for the <option>-A</option> and <option>-M</option> options, the " @@ -2724,26 +2929,26 @@ msgstr "" "除了 <option>-A</option> 和 <option>-M</option> 选项,其它选项不能联合使用。" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:115 +#: gpasswd.1.xml.out:117 msgid "The options cannot be combined." msgstr "这些选项不能组合使用。" #. (itstool) path: term/option -#: gpasswd.1.xml.out:124 groupmems.8.xml.out:83 +#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 msgid "--add" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:124 gpasswd.1.xml.out:128 gpasswd.1.xml.out:137 -#: gpasswd.1.xml.out:141 gpasswd.1.xml.out:205 gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 +#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 #: groups.1.xml.out:48 groups.1.xml.out:59 msgid "user" msgstr "用户" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:127 +#: gpasswd.1.xml.out:129 #, fuzzy #| msgid "" #| "Add the <replaceable>user</replaceable> to the named <replaceable>group</" @@ -2754,12 +2959,12 @@ msgstr "" "replaceable>。" #. (itstool) path: term/option -#: gpasswd.1.xml.out:137 groupmems.8.xml.out:94 passwd.1.xml.out:168 +#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 msgid "--delete" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:140 +#: gpasswd.1.xml.out:142 #, fuzzy #| msgid "" #| "Remove the <replaceable>user</replaceable> from the named " @@ -2770,19 +2975,19 @@ msgstr "" "replaceable>。" #. (itstool) path: term/option -#: gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:160 #, fuzzy #| msgid "-" msgid "-Q" msgstr "-" #. (itstool) path: term/option -#: gpasswd.1.xml.out:173 +#: gpasswd.1.xml.out:175 msgid "--remove-password" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:176 +#: gpasswd.1.xml.out:178 msgid "" "Remove the password from the named <_:replaceable-1/>. The group password " "will be empty. Only group members will be allowed to use <_:command-2/> to " @@ -2790,12 +2995,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:189 +#: gpasswd.1.xml.out:191 msgid "--restrict" msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:192 +#: gpasswd.1.xml.out:194 msgid "" "Restrict the access to the named <_:replaceable-1/>. The group password is " "set to \"!\". Only group members with a password will be allowed to use <_:" @@ -2803,48 +3008,48 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: gpasswd.1.xml.out:205 +#: gpasswd.1.xml.out:207 #, fuzzy #| msgid "administrators" msgid "--administrators" msgstr "管理员" #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:204 gpasswd.1.xml.out:216 +#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." msgstr "" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:208 +#: gpasswd.1.xml.out:210 msgid "Set the list of administrative users." msgstr "设置有管理权限的用户列表。" #. (itstool) path: term/option -#: gpasswd.1.xml.out:217 +#: gpasswd.1.xml.out:219 #, fuzzy #| msgid "members" msgid "--members" msgstr "成员" #. (itstool) path: listitem/para -#: gpasswd.1.xml.out:220 +#: gpasswd.1.xml.out:222 msgid "Set the list of group members." msgstr "设置组成员列表。" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:232 +#: gpasswd.1.xml.out:234 msgid "and <_:filename-1/> files." msgstr "" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 +#: gpasswd.1.xml.out:236 #, fuzzy #| msgid "file" msgid "file." msgstr "文件" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:230 +#: gpasswd.1.xml.out:232 #, fuzzy #| msgid "" #| "You may not add a user to a NIS or LDAP group. This must be performed on " @@ -2861,11 +3066,11 @@ msgstr "您可能不能想 NIS 组或 LDAP 组添加用户。这只能在相应 #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:283 groupadd.8.xml.out:357 groupdel.8.xml.out:34 +#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 #: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 #: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:299 useradd.8.xml.out:893 -#: userdel.8.xml.out:328 usermod.8.xml.out:623 +#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 +#: userdel.8.xml.out:328 usermod.8.xml.out:640 msgid "groupdel" msgstr "groupdel" @@ -2875,11 +3080,11 @@ msgstr "groupdel" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:286 groupadd.8.xml.out:360 groupdel.8.xml.out:220 +#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 #: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 #: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:311 -#: useradd.8.xml.out:896 userdel.8.xml.out:331 usermod.8.xml.out:626 +#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 +#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 msgid "groupmod" msgstr "groupmod" @@ -2889,10 +3094,10 @@ msgstr "groupmod" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:289 grpck.8.xml.out:33 grpck.8.xml.out:40 +#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 #: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 #: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:318 +#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 #: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 msgid "grpck" msgstr "grpck" @@ -2902,7 +3107,7 @@ msgstr "grpck" #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname #. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:295 grpck.8.xml.out:95 grpck.8.xml.out:287 +#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 #: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 #: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 #: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 @@ -2910,12 +3115,12 @@ msgid "gshadow" msgstr "gshadow" #. (itstool) path: para/phrase -#: gpasswd.1.xml.out:293 newgrp.1.xml.out:146 sg.1.xml.out:135 +#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 msgid ", <_:citerefentry-1/>" msgstr "" #. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:275 newgrp.1.xml.out:128 sg.1.xml.out:117 +#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." @@ -2975,8 +3180,8 @@ msgstr "用户名不能超过 32 个字符长。" #: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 #: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 #: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:391 -#: useradd.8.xml.out:396 useradd.8.xml.out:557 useradd.8.xml.out:639 +#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 +#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 #, fuzzy #| msgid "-" @@ -2994,7 +3199,7 @@ msgstr "" #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:639 usermod.8.xml.out:174 +#: useradd.8.xml.out:659 usermod.8.xml.out:174 msgid "--gid" msgstr "" @@ -3003,8 +3208,8 @@ msgstr "" #. (itstool) path: para/option #: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 #: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:300 -#: useradd.8.xml.out:469 +#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 +#: useradd.8.xml.out:471 msgid "GID" msgstr "" @@ -3042,7 +3247,7 @@ msgid "GID_MAX" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:111 useradd.8.xml.out:541 +#: groupadd.8.xml.out:111 useradd.8.xml.out:543 #, fuzzy #| msgid "" #| "See also the <option>-r</option> option and the <option>UID_MAX</option> " @@ -3053,33 +3258,33 @@ msgstr "请参考 <option>-r</option> 选项和 <option>UID_MAX</option> 的描 #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:125 groupadd.8.xml.out:131 groupadd.8.xml.out:134 -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:303 -#: useradd.8.xml.out:314 useradd.8.xml.out:317 useradd.8.xml.out:319 -#: useradd.8.xml.out:320 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 +#: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 +#: useradd.8.xml.out:322 #, fuzzy #| msgid "-" msgid "-K" msgstr "-" #. (itstool) path: term/option -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "--key" msgstr "" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 msgid "KEY" msgstr "" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:125 useradd.8.xml.out:303 +#: groupadd.8.xml.out:125 useradd.8.xml.out:305 #, fuzzy #| msgid "EXIT VALUES" msgid "VALUE" msgstr "退出值" #. (itstool) path: varlistentry/term -#: groupadd.8.xml.out:124 useradd.8.xml.out:302 +#: groupadd.8.xml.out:124 useradd.8.xml.out:304 #, fuzzy #| msgid "" #| "<option>-u</option>, <option>--uid</option> <replaceable>UID</" @@ -3097,14 +3302,14 @@ msgid "" msgstr "" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:134 useradd.8.xml.out:320 +#: groupadd.8.xml.out:134 useradd.8.xml.out:322 #, fuzzy #| msgid "10" msgid "100" msgstr "10" #. (itstool) path: para/replaceable -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:321 +#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:323 msgid "499" msgstr "" @@ -3124,7 +3329,7 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: term/replaceable #: groupadd.8.xml.out:138 groupadd.8.xml.out:333 groupdel.8.xml.out:192 -#: groupmod.8.xml.out:295 useradd.8.xml.out:853 userdel.8.xml.out:265 +#: groupmod.8.xml.out:295 useradd.8.xml.out:873 userdel.8.xml.out:265 msgid "10" msgstr "10" @@ -3144,7 +3349,7 @@ msgstr "" "replaceable>=<replaceable>499</replaceable> 尚不能工作。" #. (itstool) path: term/option -#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:405 +#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 #: usermod.8.xml.out:271 msgid "--non-unique" msgstr "" @@ -3164,13 +3369,13 @@ msgstr "" #: groupadd.8.xml.out:158 groupmems.8.xml.out:55 groupmems.8.xml.out:130 #: groupmod.8.xml.out:143 login.1.xml.out:80 login.1.xml.out:88 #: login.1.xml.out:95 login.1.xml.out:212 su.1.xml.out:207 -#: useradd.8.xml.out:425 usermod.8.xml.out:237 usermod.8.xml.out:290 +#: useradd.8.xml.out:427 usermod.8.xml.out:237 usermod.8.xml.out:290 #: usermod.8.xml.out:411 vipw.8.xml.out:102 msgid "-p" msgstr "-p" #. (itstool) path: term/option -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 #, fuzzy #| msgid "passwd" @@ -3178,7 +3383,7 @@ msgid "--password" msgstr "passwd" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:425 +#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 msgid "PASSWORD" msgstr "" @@ -3187,8 +3392,8 @@ msgstr "" #: groupadd.8.xml.out:163 groupmod.8.xml.out:148 gshadow.5.xml.out:62 #: gshadow.5.xml.out:68 passwd.5.xml.out:103 passwd.5.xml.out:109 #: passwd.5.xml.out:170 shadow.5.xml.out:88 shadow.5.xml.out:94 -#: useradd.8.xml.out:430 useradd.8.xml.out:887 usermod.8.xml.out:295 -#: usermod.8.xml.out:614 +#: useradd.8.xml.out:432 useradd.8.xml.out:907 usermod.8.xml.out:295 +#: usermod.8.xml.out:631 msgid "crypt" msgstr "" @@ -3198,11 +3403,11 @@ msgstr "" #: groupadd.8.xml.out:164 groupadd.8.xml.out:315 groupmod.8.xml.out:148 #: groupmod.8.xml.out:271 groups.1.xml.out:68 groups.1.xml.out:104 #: grpck.8.xml.out:255 gshadow.5.xml.out:63 gshadow.5.xml.out:69 -#: passwd.1.xml.out:443 passwd.5.xml.out:104 passwd.5.xml.out:110 +#: passwd.1.xml.out:465 passwd.5.xml.out:104 passwd.5.xml.out:110 #: passwd.5.xml.out:170 passwd.5.xml.out:176 pwck.8.xml.out:305 #: shadow.3.xml.out:34 shadow.3.xml.out:217 shadow.5.xml.out:89 -#: shadow.5.xml.out:95 useradd.8.xml.out:431 useradd.8.xml.out:829 -#: useradd.8.xml.out:887 usermod.8.xml.out:296 usermod.8.xml.out:614 +#: shadow.5.xml.out:95 useradd.8.xml.out:433 useradd.8.xml.out:849 +#: useradd.8.xml.out:907 usermod.8.xml.out:296 usermod.8.xml.out:631 msgid "3" msgstr "3" @@ -3222,7 +3427,7 @@ msgid "" msgstr "" #. (itstool) path: para/emphasis -#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:444 +#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 #: userdel.8.xml.out:93 usermod.8.xml.out:299 msgid "Note:" msgstr "" @@ -3242,14 +3447,14 @@ msgstr "" "过的密码)会被用户通过列出这个过程而看到。" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:448 +#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 #: usermod.8.xml.out:309 msgid "" "You should make sure the password respects the system's password policy." msgstr "您应该确保密码符合系统的密码政策。" #. (itstool) path: term/option -#: groupadd.8.xml.out:185 newusers.8.xml.out:287 useradd.8.xml.out:456 +#: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 msgid "--system" msgstr "" @@ -3276,45 +3481,11 @@ msgid "" "option-5/>." msgstr "" -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -#, fuzzy -#| msgid "-" -msgid "-P" -msgstr "-" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:214 groupdel.8.xml.out:102 groupmod.8.xml.out:177 -#: useradd.8.xml.out:502 userdel.8.xml.out:136 usermod.8.xml.out:341 -msgid "--prefix" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:214 groupadd.8.xml.out:219 groupdel.8.xml.out:102 -#: groupdel.8.xml.out:106 groupdel.8.xml.out:108 groupmod.8.xml.out:177 -#: groupmod.8.xml.out:181 groupmod.8.xml.out:183 useradd.8.xml.out:502 -#: useradd.8.xml.out:507 userdel.8.xml.out:136 userdel.8.xml.out:140 -#: userdel.8.xml.out:142 usermod.8.xml.out:341 usermod.8.xml.out:346 -msgid "PREFIX_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:217 useradd.8.xml.out:505 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. 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." -msgstr "" - #. (itstool) path: term/option #. (itstool) path: para/option #: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:397 -#: useradd.8.xml.out:549 useradd.8.xml.out:558 usermod.8.xml.out:238 +#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 +#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 #, fuzzy #| msgid "-" @@ -3338,7 +3509,7 @@ msgstr "管理员可以更改组密码和成员。" #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:386 useradd.8.xml.out:397 useradd.8.xml.out:558 +#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 #, fuzzy #| msgid "-" msgid "-N" @@ -3346,15 +3517,15 @@ msgstr "-" #. (itstool) path: para/option #. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:448 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:398 -#: useradd.8.xml.out:559 userdel.8.xml.out:86 userdel.8.xml.out:296 +#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 +#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 +#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 msgid "USERGROUPS_ENAB" msgstr "" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:395 -#: useradd.8.xml.out:556 +#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 +#: useradd.8.xml.out:558 #, fuzzy #| msgid "" #| "The default behavior (if the <option>-g</option>, <option>-N</option>, " @@ -3392,13 +3563,13 @@ msgstr "" "<command>useradd</command> 将拒绝创建用户账户的请求。" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:463 useradd.8.xml.out:831 +#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 msgid "invalid argument to option" msgstr "给了选项一个无效的参数" #. (itstool) path: term/replaceable #: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:449 pwck.8.xml.out:311 useradd.8.xml.out:835 +#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 msgid "4" msgstr "4" @@ -3410,7 +3581,7 @@ msgid "GID is already used (when called without <_:option-1/>)" msgstr "UID 已经使用 (且没有 <option>-o</option>)" #. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:847 +#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 msgid "9" msgstr "9" @@ -3422,7 +3593,7 @@ msgid "group name is already used" msgstr "组名已经在使用" #. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:855 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 #: userdel.8.xml.out:267 msgid "can't update group file" msgstr "无法更新组文件" @@ -3434,11 +3605,11 @@ msgstr "无法更新组文件" #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command #: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:480 useradd.8.xml.out:913 +#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 #: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 #: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 #: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:643 +#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 msgid "userdel" msgstr "userdel" @@ -3449,11 +3620,11 @@ msgstr "userdel" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:490 passwd.1.xml.out:488 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:916 +#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 +#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 #: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 #: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:522 +#: usermod.8.xml.out:263 usermod.8.xml.out:539 msgid "usermod" msgstr "usermod" @@ -3479,8 +3650,8 @@ msgstr "删除一个组" #: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 #: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 #: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:392 -#: useradd.8.xml.out:639 useradd.8.xml.out:648 usermod.8.xml.out:174 +#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 +#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 msgid "GROUP" msgstr "GROUP" @@ -3530,13 +3701,13 @@ msgid "" msgstr "您需要手动检查所有文件系统,以确保没有遗留的属于此组的文件。" #. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:461 -#: pwck.8.xml.out:323 useradd.8.xml.out:841 userdel.8.xml.out:253 +#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 +#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 msgid "6" msgstr "6" #. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:843 +#: groupdel.8.xml.out:182 useradd.8.xml.out:863 msgid "specified group doesn't exist" msgstr "指定的组不存在" @@ -3581,7 +3752,7 @@ msgstr "" #: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 #: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 #: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:305 +#: login.defs.5.xml.out:318 msgid "groupmems" msgstr "groupmems" @@ -3728,7 +3899,7 @@ msgstr "" #| "\t$ groupmems -g groups -a gk4\n" #| " " msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root.groups groupmems $ " +"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " "groupmems -g groups -a gk4" msgstr "" "\n" @@ -3819,7 +3990,7 @@ msgstr "" "<option>SYS_UID_MAX</option> 进行检查。" #. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:246 +#: groupmod.8.xml.out:121 passwd.1.xml.out:242 #, fuzzy #| msgid "-" msgid "-n" @@ -3921,7 +4092,7 @@ msgid "E_CLEANUP_SERVICE: can't setup cleanup service" msgstr "" #. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:859 userdel.8.xml.out:271 +#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 msgid "12" msgstr "12" @@ -4106,7 +4277,7 @@ msgstr "" #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable #. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:67 newusers.8.xml.out:75 +#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 msgid "file" msgstr "文件" @@ -4147,7 +4318,7 @@ msgstr "" #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:134 login.defs.5.xml.out:136 +#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 #: useradd.8.xml.out:246 msgid "no" msgstr "" @@ -4172,8 +4343,8 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:161 -#: passwd.1.xml.out:291 +#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 +#: passwd.1.xml.out:302 #, fuzzy #| msgid "-" msgid "-S" @@ -4413,7 +4584,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:324 pwconv.8.xml.out:48 +#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 #: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 #: pwconv.8.xml.out:166 pwconv.8.xml.out:208 msgid "grpconv" @@ -4427,7 +4598,7 @@ msgstr "grpconv" #. (itstool) path: varlistentry/term #: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 #: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:337 +#: login.defs.5.xml.out:350 msgid "lastlog" msgstr "lastlog" @@ -4473,7 +4644,7 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:592 +#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 #, fuzzy #| msgid "-" @@ -4847,7 +5018,7 @@ msgstr "" #. (itstool) path: para/command #: limits.5.xml.out:122 login.1.xml.out:83 login.1.xml.out:91 #: login.1.xml.out:197 su.1.xml.out:70 su.1.xml.out:82 su.1.xml.out:95 -#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:775 +#: su.1.xml.out:153 su.1.xml.out:155 useradd.8.xml.out:795 msgid "username" msgstr "用户名" @@ -5310,8 +5481,8 @@ msgstr "chsh" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:436 login.defs.5.xml.out:520 -#: login.defs.5.xml.out:536 newgrp.1.xml.out:136 passwd.5.xml.out:197 +#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 +#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 #: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 #: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 #: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 @@ -5472,12 +5643,12 @@ msgid "<_:citerefentry-1/>." msgstr "" #. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:110 +#: login.defs.5.xml.out:112 msgid "shadow password suite configuration" msgstr "影子密码套件配置" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:115 +#: login.defs.5.xml.out:117 msgid "" "The <_:filename-1/> file defines the site-specific configuration for the " "shadow password suite. This file is required. Absence of this file will not " @@ -5485,7 +5656,7 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:122 +#: login.defs.5.xml.out:124 msgid "" "This file is a readable text file, each line of the file describing one " "configuration parameter. The lines consist of a configuration name and " @@ -5496,20 +5667,20 @@ msgstr "" #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:133 useradd.8.xml.out:242 useradd.8.xml.out:380 +#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 #: userdel.8.xml.out:87 userdel.8.xml.out:297 msgid "yes" msgstr "" #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:140 +#: login.defs.5.xml.out:142 #, fuzzy #| msgid "0" msgid "0x" msgstr "0" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:130 +#: login.defs.5.xml.out:132 msgid "" "Parameter values may be of four types: strings, booleans, numbers, and long " "numbers. A string is comprised of any printable characters. A boolean should " @@ -5522,32 +5693,32 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:145 +#: login.defs.5.xml.out:147 msgid "The following configuration items are provided:" msgstr "提供如下配置项:" #. (itstool) path: para/option #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable -#: login.defs.5.xml.out:193 pwconv.8.xml.out:146 useradd.8.xml.out:309 -#: useradd.8.xml.out:314 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 +#: useradd.8.xml.out:316 msgid "PASS_MAX_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:193 pwconv.8.xml.out:145 +#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 msgid "PASS_MIN_DAYS" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/emphasis -#: login.defs.5.xml.out:194 pwconv.8.xml.out:147 +#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 msgid "PASS_WARN_AGE" msgstr "" #. (itstool) path: variablelist/para -#: login.defs.5.xml.out:192 +#: login.defs.5.xml.out:195 msgid "" "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " "account creation. Any changes to these settings won't affect existing " @@ -5555,12 +5726,12 @@ msgid "" msgstr "" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:225 +#: login.defs.5.xml.out:229 msgid "CROSS REFERENCES" msgstr "交叉引用" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:226 +#: login.defs.5.xml.out:230 msgid "" "The following cross references show which programs in the shadow password " "suite use which parameters." @@ -5570,65 +5741,81 @@ msgstr "如下交叉引用显示影子密码套件哪个程序使用哪个参数 #. (itstool) path: para/phrase #. (itstool) path: phrase/option #. (itstool) path: para/option -#: login.defs.5.xml.out:235 login.defs.5.xml.out:423 login.defs.5.xml.out:431 -#: login.defs.5.xml.out:503 pwck.8.xml.out:75 pwck.8.xml.out:216 +#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 +#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 #: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 #: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 msgid "USE_TCB" msgstr "USE_TCB" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:242 +#: login.defs.5.xml.out:246 msgid "CHFN_AUTH" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 +#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 #, fuzzy #| msgid "CHSH_AUTH LOGIN_STRING" msgid "LOGIN_STRING" msgstr "CHSH_AUTH LOGIN_STRING" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:241 +#: login.defs.5.xml.out:245 msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:253 login.defs.5.xml.out:264 login.defs.5.xml.out:284 -#: login.defs.5.xml.out:388 login.defs.5.xml.out:404 +#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 +#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 +#, fuzzy +#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" +msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" + +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 +#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +#. (itstool) path: para/phrase +#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 +#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 +msgid "YESCRYPT_COST_FACTOR" +msgstr "" + #. (itstool) path: listitem/para -#: login.defs.5.xml.out:251 login.defs.5.xml.out:282 +#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 #, fuzzy #| msgid "" #| "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <phrase " #| "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" -msgid "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-1/>" +msgid "" +"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" +"phrase-2/> <_:phrase-3/>" msgstr "" "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <phrase " "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:262 +#: login.defs.5.xml.out:271 msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:272 +#: login.defs.5.xml.out:282 msgid "CHSH_AUTH LOGIN_STRING" msgstr "CHSH_AUTH LOGIN_STRING" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:292 +#: login.defs.5.xml.out:305 msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" msgstr "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:301 login.defs.5.xml.out:307 login.defs.5.xml.out:313 -#: login.defs.5.xml.out:320 login.defs.5.xml.out:326 login.defs.5.xml.out:332 +#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 +#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 msgid "MAX_MEMBERS_PER_GROUP" msgstr "MAX_MEMBERS_PER_GROUP" @@ -5636,65 +5823,65 @@ msgstr "MAX_MEMBERS_PER_GROUP" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:330 pwconv.8.xml.out:49 pwconv.8.xml.out:73 +#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 #: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 #: pwconv.8.xml.out:208 msgid "grpunconv" msgstr "grpunconv" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:339 +#: login.defs.5.xml.out:352 msgid "LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:346 login.defs.5.xml.out:439 +#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 msgid "CONSOLE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:348 +#: login.defs.5.xml.out:361 msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:351 +#: login.defs.5.xml.out:364 #, fuzzy #| msgid "SYSLOG_SG_ENAB" msgid "FAILLOG_ENAB" msgstr "SYSLOG_SG_ENAB" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:353 +#: login.defs.5.xml.out:366 #, fuzzy #| msgid "FILE" msgid "FTMP_FILE" msgstr "FILE" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:355 +#: login.defs.5.xml.out:368 msgid "ISSUE_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:357 +#: login.defs.5.xml.out:370 msgid "LASTLOG_ENAB LASTLOG_UID_MAX" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 +#: login.defs.5.xml.out:374 msgid "" "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " "PORTTIME_CHECKS_ENAB QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:365 +#: login.defs.5.xml.out:378 msgid "ULIMIT UMASK" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:345 +#: login.defs.5.xml.out:358 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " "<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " @@ -5704,17 +5891,17 @@ msgid "" msgstr "" #. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:372 +#: login.defs.5.xml.out:385 msgid "newgrp / sg" msgstr "newgrp / sg" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:374 +#: login.defs.5.xml.out:387 msgid "SYSLOG_SG_ENAB" msgstr "SYSLOG_SG_ENAB" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:382 +#: login.defs.5.xml.out:395 #, fuzzy #| msgid "" #| "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " @@ -5723,10 +5910,11 @@ msgstr "SYSLOG_SG_ENAB" #| "phrase> SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " #| "UMASK" msgid "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/> " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " +"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" +"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " +"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " +"UMASK <_:phrase-3/>" msgstr "" "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <phrase " @@ -5734,27 +5922,28 @@ msgstr "" "SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:401 +#: login.defs.5.xml.out:417 #, fuzzy #| msgid "" #| "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " #| "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <phrase " #| "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" msgid "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-1/>" +"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " +"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " +"<_:phrase-3/>" msgstr "" "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <phrase " "condition=\"sha_crypt\">SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS</phrase>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:414 +#: login.defs.5.xml.out:433 msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:412 login.defs.5.xml.out:421 +#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 #, fuzzy #| msgid "" #| "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <phrase " @@ -5770,7 +5959,7 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:419 passwd.5.xml.out:188 pwconv.8.xml.out:39 +#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 #: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 #: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 #: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 @@ -5783,7 +5972,7 @@ msgstr "pwconv" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:428 passwd.5.xml.out:191 pwconv.8.xml.out:47 +#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 #: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 #: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 #: pwconv.8.xml.out:166 shadow.5.xml.out:280 @@ -5791,22 +5980,22 @@ msgid "pwunconv" msgstr "pwunconv" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:441 +#: login.defs.5.xml.out:460 msgid "ENV_HZ ENVIRON_FILE" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:443 +#: login.defs.5.xml.out:462 msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:446 +#: login.defs.5.xml.out:465 msgid "SU_WHEEL_ONLY" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:438 +#: login.defs.5.xml.out:457 msgid "" "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " "<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" @@ -5814,28 +6003,22 @@ msgstr "" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:453 passwd.5.xml.out:200 shadow.5.xml.out:286 +#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 msgid "sulogin" msgstr "sulogin" -#. (itstool) path: para/phrase -#. (itstool) path: para/option -#: login.defs.5.xml.out:457 su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - #. (itstool) path: listitem/para -#: login.defs.5.xml.out:455 -msgid "ENV_HZ <_:phrase-1/>" +#: login.defs.5.xml.out:474 +msgid "ENV_HZ ENV_TZ" msgstr "" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:475 +#: login.defs.5.xml.out:494 msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:464 +#: login.defs.5.xml.out:483 #, fuzzy #| msgid "" #| "CREATE_HOME GID_MAX GID_MIN MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS " @@ -5855,12 +6038,12 @@ msgstr "" "USE_TCB</phrase>" #. (itstool) path: para/phrase -#: login.defs.5.xml.out:485 login.defs.5.xml.out:495 +#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 msgid "TCB_SYMLINKS USE_TCB" msgstr "" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:482 +#: login.defs.5.xml.out:501 #, fuzzy #| msgid "" #| "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB " @@ -5873,7 +6056,7 @@ msgstr "" "condition=\"tcb\">TCB_SYMLINKS USE_TCB</phrase>" #. (itstool) path: listitem/para -#: login.defs.5.xml.out:492 +#: login.defs.5.xml.out:511 #, fuzzy #| msgid "" #| "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <phrase " @@ -5888,18 +6071,18 @@ msgstr "" #. (itstool) path: refnamediv/refname #. (itstool) path: cmdsynopsis/command #. (itstool) path: para/command -#: login.defs.5.xml.out:500 vipw.8.xml.out:35 vipw.8.xml.out:42 +#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 #: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 msgid "vipw" msgstr "vipw" #. (itstool) path: refsect1/title -#: login.defs.5.xml.out:511 pwconv.8.xml.out:193 suauth.5.xml.out:179 +#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 msgid "BUGS" msgstr "缺陷" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:512 +#: login.defs.5.xml.out:531 msgid "" "Much of the functionality that used to be provided by the shadow password " "suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:" @@ -5908,14 +6091,14 @@ msgid "" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:545 +#: login.defs.5.xml.out:564 #, fuzzy #| msgid "pw_name" msgid "pam" msgstr "pw_name" #. (itstool) path: refsect1/para -#: login.defs.5.xml.out:528 +#: login.defs.5.xml.out:547 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." @@ -6007,12 +6190,12 @@ msgid "id" msgstr "" #. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:57 +#: newusers.8.xml.out:59 msgid "update and create new users in batch" msgstr "批量更新和创建新用户" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:74 +#: newusers.8.xml.out:76 #, fuzzy #| msgid "" #| "The <command>newusers</command> command reads a file of user name and " @@ -6033,22 +6216,22 @@ msgstr "" "citerefentry>),除了下边这些区别:" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:82 +#: newusers.8.xml.out:84 msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" msgstr "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:87 +#: newusers.8.xml.out:89 msgid "pw_name" msgstr "pw_name" #. (itstool) path: listitem/para -#: newusers.8.xml.out:90 +#: newusers.8.xml.out:92 msgid "This is the name of the user." msgstr "这是用户的用户名。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:93 +#: newusers.8.xml.out:95 #, fuzzy #| msgid "" #| "It can be the name of a new user or the name of an existing user (or an " @@ -6064,29 +6247,29 @@ msgstr "" "创建的用户)。现有用户时,将会更改用户信息,否则会创建新用户。" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:104 +#: newusers.8.xml.out:106 msgid "pw_passwd" msgstr "pw_passwd" #. (itstool) path: listitem/para -#: newusers.8.xml.out:107 +#: newusers.8.xml.out:109 msgid "" "This field will be encrypted and used as the new value of the encrypted " "password." msgstr "此字段将被加密然后用于加密后密码的新值。" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:115 +#: newusers.8.xml.out:117 msgid "pw_uid" msgstr "pw_uid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:118 +#: newusers.8.xml.out:120 msgid "This field is used to define the UID of the user." msgstr "此字段用于定义用户的 UID。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:121 +#: newusers.8.xml.out:123 #, fuzzy #| msgid "" #| "If the field is empty, an new (unused) UID will be defined automatically " @@ -6098,12 +6281,12 @@ msgstr "" "如果此字段为空,<command>newusers</command> 会自动确定一个新的(未使用的)UID。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:125 +#: newusers.8.xml.out:127 msgid "If this field contains a number, this number will be used as the UID." msgstr "如果此字段包含一个数字,此数字会用于 UID。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:129 +#: newusers.8.xml.out:131 #, fuzzy #| msgid "" #| "If this field contains the name of an existing user (or the name of an " @@ -6118,24 +6301,24 @@ msgstr "" "创建的一个用户),将会使用指定用户的 UID。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:135 +#: newusers.8.xml.out:137 msgid "" "If the UID of an existing user is changed, the files ownership of the user's " "file should be fixed manually." msgstr "如果一个现有用户更改了 UID,此用户的文件所有权需要手动修复。" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:143 +#: newusers.8.xml.out:145 msgid "pw_gid" msgstr "pw_gid" #. (itstool) path: listitem/para -#: newusers.8.xml.out:146 +#: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." msgstr "此字段用于定义用户的主组 ID。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:149 +#: newusers.8.xml.out:151 #, fuzzy #| msgid "" #| "If this field contains the name of an existing group (or a group created " @@ -6150,7 +6333,7 @@ msgstr "" "一个组),此组的 GID 会被用于做此用户的主组 ID。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:155 +#: newusers.8.xml.out:157 msgid "" "If this field is a number, this number will be used as the primary group ID " "of the user. If no groups exist with this GID, a new group will be created " @@ -6160,7 +6343,7 @@ msgstr "" "有组,将会使用此 GID 创建一个新组,名称和用户名相同。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:161 +#: newusers.8.xml.out:163 #, fuzzy #| msgid "" #| "If this field is empty, a new group will be created with the name of the " @@ -6176,7 +6359,7 @@ msgstr "" "的一个 GID 作为主组 ID 来创建一个新组。" #. (itstool) path: listitem/para -#: newusers.8.xml.out:167 +#: newusers.8.xml.out:169 #, fuzzy #| msgid "" #| "If this field contains the name of a group which does not exist (and was " @@ -6195,32 +6378,32 @@ msgstr "" "个组,并作为用户的主组。" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:179 +#: newusers.8.xml.out:181 msgid "pw_gecos" msgstr "pw_gecos" #. (itstool) path: listitem/para -#: newusers.8.xml.out:182 +#: newusers.8.xml.out:184 msgid "This field is copied in the GECOS field of the user." msgstr "此字段复制到用户的 GECOS 字段。" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:189 +#: newusers.8.xml.out:191 msgid "pw_dir" msgstr "pw_dir" #. (itstool) path: listitem/para -#: newusers.8.xml.out:192 +#: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." msgstr "此字段用于定义用户的主目录。" #. (itstool) path: para/emphasis -#: newusers.8.xml.out:199 +#: newusers.8.xml.out:201 msgid "newusers does not create parent directories" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:195 +#: newusers.8.xml.out:197 msgid "" "If this field does not specify an existing directory, the specified " "directory is created, with ownership set to the user being created or " @@ -6233,7 +6416,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:208 +#: newusers.8.xml.out:210 #, fuzzy #| msgid "" #| "If the home directory of an existing user is changed, <command>newusers</" @@ -6248,19 +6431,19 @@ msgstr "" "的内容到新位置。这需要手动完成。" #. (itstool) path: term/emphasis -#: newusers.8.xml.out:218 +#: newusers.8.xml.out:220 msgid "pw_shell" msgstr "pw_shell" #. (itstool) path: listitem/para -#: newusers.8.xml.out:221 +#: newusers.8.xml.out:223 msgid "" "This field defines the shell of the user. No checks are performed on this " "field." msgstr "此字段定义了用户的 shell。对此字段不进行任何检查。" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:229 +#: newusers.8.xml.out:231 #, fuzzy #| msgid "" #| "<command>newusers</command> first tries to create or change all the " @@ -6278,7 +6461,7 @@ msgstr "" "改。" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:235 +#: newusers.8.xml.out:237 msgid "" "During this first pass, users are created with a locked password (and " "passwords are not changed for the users which are not created). A second " @@ -6287,55 +6470,64 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: newusers.8.xml.out:243 +#: newusers.8.xml.out:245 msgid "" "This command is intended to be used in a large system environment where many " "accounts are updated at a single time." msgstr "此命令一般用于在大型的应用环境中,对大量账户进行一次性更新。" #. (itstool) path: term/option -#: newusers.8.xml.out:257 pwck.8.xml.out:164 useradd.8.xml.out:108 +#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 #: usermod.8.xml.out:89 msgid "--badname" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:260 pwck.8.xml.out:167 useradd.8.xml.out:111 +#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 #: usermod.8.xml.out:92 msgid "Allow names that do not conform to standards." msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:290 useradd.8.xml.out:459 +#: newusers.8.xml.out:273 +msgid "" +"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " +"support these methods." +msgstr "" +"可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512,前提是您的 libc 支持这写方" +"法。" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:292 useradd.8.xml.out:461 msgid "Create a system account." msgstr "创建一个系统账户。" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MIN" msgstr "" #. (itstool) path: para/option -#: newusers.8.xml.out:297 useradd.8.xml.out:466 usermod.8.xml.out:398 +#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 msgid "SYS_UID_MAX" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:319 -#: useradd.8.xml.out:468 useradd.8.xml.out:538 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 +#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 msgid "UID_MIN" msgstr "" #. (itstool) path: para/option #. (itstool) path: para/replaceable -#: newusers.8.xml.out:299 useradd.8.xml.out:308 useradd.8.xml.out:321 -#: useradd.8.xml.out:468 useradd.8.xml.out:543 usermod.8.xml.out:397 +#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 +#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 msgid "UID_MAX" msgstr "" #. (itstool) path: listitem/para -#: newusers.8.xml.out:293 useradd.8.xml.out:462 +#: newusers.8.xml.out:295 useradd.8.xml.out:464 #, fuzzy msgid "" "System users will be created with no aging information in <_:filename-1/>, " @@ -6349,64 +6541,97 @@ msgstr "" "<option>UID_MIN</option>-<option>UID_MAX</option> (and their <option>GID</" "option> counterparts for the creation of groups)。" +#. (itstool) path: listitem/para +#: newusers.8.xml.out:342 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " +"The default is 13." +msgstr "会强制最小 1,000,最大 9,9999,9999" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:351 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " +"for SHA256 and SHA512. The default is 5000." +msgstr "会强制最小 1,000,最大 9,9999,9999" + +#. (itstool) path: listitem/para +#: newusers.8.xml.out:359 +#, fuzzy +#| msgid "" +#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " +#| "enforced." +msgid "" +"A minimal value of 1 and a maximal value of 11 will be enforced for " +"YESCRYPT. The default is 5." +msgstr "会强制最小 1,000,最大 9,9999,9999" + #. (itstool) path: refsect1/para -#: newusers.8.xml.out:349 +#: newusers.8.xml.out:370 msgid "" "The input file must be protected since it contains unencrypted passwords." msgstr "输入文件必须受到保护,因为它包含未加密的密码。" #. (itstool) path: term/filename -#: newusers.8.xml.out:429 +#: newusers.8.xml.out:450 msgid "/etc/pam.d/newusers" msgstr "/etc/pam.d/newusers" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:435 useradd.8.xml.out:222 useradd.8.xml.out:481 -#: useradd.8.xml.out:785 userdel.8.xml.out:215 usermod.8.xml.out:587 +#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 +#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subgid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:437 useradd.8.xml.out:787 userdel.8.xml.out:217 +#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 msgid "Per user subordinate group IDs." msgstr "" #. (itstool) path: term/filename #. (itstool) path: para/filename -#: newusers.8.xml.out:441 useradd.8.xml.out:222 useradd.8.xml.out:480 -#: useradd.8.xml.out:791 userdel.8.xml.out:221 usermod.8.xml.out:593 +#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 +#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 #, fuzzy #| msgid "/etc/suauth" msgid "/etc/subuid" msgstr "/etc/suauth" #. (itstool) path: listitem/para -#: newusers.8.xml.out:443 useradd.8.xml.out:793 userdel.8.xml.out:223 +#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 msgid "Per user subordinate user IDs." msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:460 useradd.8.xml.out:906 userdel.8.xml.out:335 -#: usermod.8.xml.out:633 +#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 +#: usermod.8.xml.out:650 #, fuzzy #| msgid "/etc/suauth" msgid "subgid" msgstr "/etc/suauth" #. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:463 useradd.8.xml.out:909 userdel.8.xml.out:338 -#: usermod.8.xml.out:636 +#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 +#: usermod.8.xml.out:653 #, fuzzy #| msgid "/etc/suauth" msgid "subuid" msgstr "/etc/suauth" #. (itstool) path: para/phrase -#: newusers.8.xml.out:458 useradd.8.xml.out:904 userdel.8.xml.out:333 -#: usermod.8.xml.out:631 +#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 +#: usermod.8.xml.out:648 msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," msgstr "" @@ -6458,12 +6683,12 @@ msgid "The <_:command-1/> command appeared in BSD 4.4." msgstr "<command>nologin</command> 首次出现于 BSD 4.4。" #. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:48 +#: passwd.1.xml.out:50 msgid "change user password" msgstr "更改用户密码" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:65 +#: passwd.1.xml.out:67 #, fuzzy #| msgid "" #| "The <command>passwd</command> command changes passwords for user " @@ -6482,12 +6707,12 @@ msgstr "" "更改账户或相关的密码有效期。" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:74 +#: passwd.1.xml.out:76 msgid "Password Changes" msgstr "密码更改" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:75 +#: passwd.1.xml.out:77 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 " @@ -6499,7 +6724,7 @@ msgstr "" "码。" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:83 +#: passwd.1.xml.out:85 #, fuzzy #| msgid "" #| "After the password has been entered, password aging information is " @@ -6515,7 +6740,7 @@ msgstr "" "许,<command>passwd</command> 拒绝更改密码,然后退出。" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:90 +#: passwd.1.xml.out:92 msgid "" "The user is then prompted twice for a replacement password. The second entry " "is compared against the first and both are required to match in order for " @@ -6524,57 +6749,25 @@ msgstr "" "提示用户输入两次新密码。第二次和第一次进行比较,并且需要相同才能更改密码。" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:96 +#: passwd.1.xml.out:98 msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" +"Then, the password is tested for complexity. <_:command-1/> will reject any " +"password which is not suitably complex. Care must be taken not to include " +"the system default erase or kill characters." msgstr "" -"然后,测试密码的负责程度。一般来讲,密码应该包含 6 到 8 位字符,从下边的一个" -"或多个集合中选择:" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:104 -msgid "lower case alphabetics" -msgstr "小写字母" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:107 -msgid "digits 0 thru 9" -msgstr "数字 0 到 9" - -#. (itstool) path: listitem/para -#: passwd.1.xml.out:110 -msgid "punctuation marks" -msgstr "标点符号" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:114 -#, fuzzy -#| msgid "" -#| "Care must be taken not to include the system default erase or kill " -#| "characters. <command>passwd</command> will reject any password which is " -#| "not suitably complex." -msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. <_:command-1/> will reject any password which is not suitably " -"complex." -msgstr "" -"必须要留意不能包含系统默认的擦除和杀死字符。<command>passwd</command> 会拒绝" -"复杂度不满足要求的密码。" #. (itstool) path: refsect2/title -#: passwd.1.xml.out:123 +#: passwd.1.xml.out:108 msgid "Hints for user passwords" msgstr "关于用户密码的提示" #. (itstool) path: para/emphasis -#: passwd.1.xml.out:127 +#: passwd.1.xml.out:112 msgid "UNIX" msgstr "" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:124 +#: passwd.1.xml.out:109 #, fuzzy #| msgid "" #| "The security of a password depends upon the strength of the encryption " @@ -6595,7 +6788,7 @@ msgstr "" "<option>ENCRYPT_METHOD</option>)。密钥空间的大小依赖于选择的密码的随机性。" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:133 +#: passwd.1.xml.out:118 msgid "" "Compromises in password security normally result from careless password " "selection or handling. For this reason, you should not select a password " @@ -6608,7 +6801,19 @@ msgstr "" "或者街道号。所有这些可以用于猜测来损害系统安全。" #. (itstool) path: refsect2/para -#: passwd.1.xml.out:142 +#: passwd.1.xml.out:127 +msgid "" +"As a general guideline, passwords should be long and random. It's fine to " +"use simple character sets, such as passwords consisting only of lowercase " +"letters, if that helps memorizing longer passwords. For a password " +"consisting only of lowercase English letters randomly chosen, and a length " +"of 32, there are 26^32 (approximately 2^150) different possible " +"combinations. Being an exponential equation, it's apparent that the exponent " +"(the length) is more important than the base (the size of the character set)." +msgstr "" + +#. (itstool) path: refsect2/para +#: passwd.1.xml.out:138 #, fuzzy #| msgid "" #| "You can find advices on how to choose a strong password on http://en." @@ -6621,7 +6826,7 @@ msgstr "" "议。" #. (itstool) path: listitem/para -#: passwd.1.xml.out:160 +#: passwd.1.xml.out:156 #, fuzzy #| msgid "" #| "This option can be used only with <option>-S</option> and causes show " @@ -6632,7 +6837,7 @@ msgid "" msgstr "此选项只能和 <option>-S</option> 一起使用,来显示所有用户的状态。" #. (itstool) path: listitem/para -#: passwd.1.xml.out:171 +#: passwd.1.xml.out:167 msgid "" "Delete a user's password (make it empty). This is a quick way to disable a " "password for an account. It will set the named account passwordless." @@ -6641,21 +6846,21 @@ msgstr "" "户。" #. (itstool) path: term/option -#: passwd.1.xml.out:180 +#: passwd.1.xml.out:176 #, fuzzy #| msgid "expiry" msgid "--expire" msgstr "expiry" #. (itstool) path: listitem/para -#: passwd.1.xml.out:183 +#: passwd.1.xml.out:179 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 "让一个账户的密码立即过期。这可以强制一个用户下次登录时更改密码。" #. (itstool) path: listitem/para -#: passwd.1.xml.out:200 +#: passwd.1.xml.out:196 #, fuzzy #| msgid "" #| "This option is used to disable an account after the password has been " @@ -6673,19 +6878,19 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: passwd.1.xml.out:210 useradd.8.xml.out:278 useradd.8.xml.out:356 +#: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 #, fuzzy #| msgid "-" msgid "-k" msgstr "-" #. (itstool) path: term/option -#: passwd.1.xml.out:210 +#: passwd.1.xml.out:206 msgid "--keep-tokens" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:213 +#: passwd.1.xml.out:209 msgid "" "Indicate password change should be performed only for expired authentication " "tokens (passwords). The user wishes to keep their non-expired tokens as " @@ -6695,12 +6900,12 @@ msgstr "" "令。" #. (itstool) path: term/option -#: passwd.1.xml.out:222 usermod.8.xml.out:231 +#: passwd.1.xml.out:218 usermod.8.xml.out:231 msgid "--lock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:225 +#: passwd.1.xml.out:221 msgid "" "Lock the password of the named account. This option disables a password by " "changing it to a value which matches no possible encrypted value (it adds a " @@ -6710,12 +6915,12 @@ msgstr "" "在密码开头添加一个“!”)。" #. (itstool) path: para/command -#: passwd.1.xml.out:235 +#: passwd.1.xml.out:231 msgid "usermod --expiredate 1" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:231 +#: passwd.1.xml.out:227 #, fuzzy #| msgid "" #| "Note that this does not disable the account. The user may still be able " @@ -6733,52 +6938,52 @@ msgstr "" "户的过期时间为1970年1月2日)。" #. (itstool) path: listitem/para -#: passwd.1.xml.out:238 +#: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." msgstr "被锁定了密码的用户不允许更改密码。" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "-q" msgstr "-q" #. (itstool) path: term/option -#: passwd.1.xml.out:258 pwck.8.xml.out:179 vipw.8.xml.out:108 +#: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 msgid "--quiet" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:261 vipw.8.xml.out:110 +#: passwd.1.xml.out:257 vipw.8.xml.out:110 msgid "Quiet mode." msgstr "安静模式。" #. (itstool) path: term/option -#: passwd.1.xml.out:268 +#: passwd.1.xml.out:264 msgid "--repository" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable -#: passwd.1.xml.out:268 passwd.1.xml.out:272 +#: passwd.1.xml.out:264 passwd.1.xml.out:268 #, fuzzy #| msgid "EDITOR" msgid "REPOSITORY" msgstr "EDITOR" #. (itstool) path: listitem/para -#: passwd.1.xml.out:271 +#: passwd.1.xml.out:267 #, fuzzy #| msgid "change password in <replaceable>REPOSITORY</replaceable> repository" msgid "change password in <_:replaceable-1/> repository" msgstr "在 <replaceable>REPOSITORY</replaceable> 中更改密码" #. (itstool) path: term/option -#: passwd.1.xml.out:291 +#: passwd.1.xml.out:302 msgid "--status" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:294 +#: passwd.1.xml.out:305 msgid "" "Display account status information. The status information consists of 7 " "fields. The first field is the user's login name. The second field indicates " @@ -6794,12 +6999,12 @@ msgstr "" "和禁用期。这些年龄以天为单位计算。" #. (itstool) path: term/option -#: passwd.1.xml.out:309 usermod.8.xml.out:405 +#: passwd.1.xml.out:320 usermod.8.xml.out:405 msgid "--unlock" msgstr "" #. (itstool) path: listitem/para -#: passwd.1.xml.out:312 +#: passwd.1.xml.out:323 #, fuzzy #| msgid "" #| "Unlock the password of the named account. This option re-enables a " @@ -6814,7 +7019,7 @@ msgstr "" "之前的值)重新启用密码。" #. (itstool) path: listitem/para -#: passwd.1.xml.out:325 +#: passwd.1.xml.out:336 #, fuzzy #| msgid "" #| "Set the number of days of warning before a password change is required. " @@ -6830,14 +7035,14 @@ msgstr "" "在密码过期之前提前警告的天数。" #. (itstool) path: term/option -#: passwd.1.xml.out:335 +#: passwd.1.xml.out:346 #, fuzzy #| msgid "-" msgid "-x" msgstr "-" #. (itstool) path: listitem/para -#: passwd.1.xml.out:338 +#: passwd.1.xml.out:349 #, fuzzy #| msgid "" #| "Set the maximum number of days a password remains valid. After " @@ -6850,15 +7055,27 @@ msgstr "" "设置密码仍然有效的最大天数。<replaceable>MAX_DAYS</replaceable> 之后,密码会" "要求更改。" +#. (itstool) path: term/option +#: passwd.1.xml.out:363 +msgid "--stdin" +msgstr "" + +#. (itstool) path: listitem/para +#: passwd.1.xml.out:366 +msgid "" +"This option is used to indicate that passwd should read the new password " +"from standard input, which can be a pipe." +msgstr "" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:355 +#: passwd.1.xml.out:377 msgid "" "Password complexity checking may vary from site to site. The user is urged " "to select a password as complex as he or she feels comfortable with." msgstr "密码复杂性检查在每台机器间不同。用户应该选择适合的尽量复杂的密码。" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:360 +#: passwd.1.xml.out:382 msgid "" "Users may not be able to change their password on a system if NIS is enabled " "and they are not logged into the NIS server." @@ -6866,7 +7083,7 @@ msgstr "" "在启动了 NIS 的系统上,如果没有登录 NIS 服务器,用户或许不能更改自己的密码。" #. (itstool) path: refsect1/para -#: passwd.1.xml.out:365 +#: passwd.1.xml.out:387 #, fuzzy #| msgid "" #| "<command>passwd</command> uses PAM to authenticate users and to change " @@ -6876,39 +7093,53 @@ msgid "" msgstr "<command>passwd</command> 使用 PAM 来认证用户以及更改密码。" #. (itstool) path: term/filename -#: passwd.1.xml.out:411 +#: passwd.1.xml.out:433 msgid "/etc/pam.d/passwd" msgstr "/etc/pam.d/passwd" #. (itstool) path: listitem/para -#: passwd.1.xml.out:439 +#: passwd.1.xml.out:461 msgid "invalid combination of options" msgstr "无效的选项组合" #. (itstool) path: listitem/para -#: passwd.1.xml.out:445 +#: passwd.1.xml.out:467 msgid "unexpected failure, nothing done" msgstr "意外的失败,什么也没有做。" #. (itstool) path: listitem/para -#: passwd.1.xml.out:451 +#: passwd.1.xml.out:473 #, fuzzy #| msgid "unexpected failure, <filename>passwd</filename> file missing" msgid "unexpected failure, <_:filename-1/> file missing" msgstr "意外的失败,<filename>passwd</filename> 文件丢失" #. (itstool) path: listitem/para -#: passwd.1.xml.out:457 +#: passwd.1.xml.out:479 #, fuzzy #| msgid "<filename>passwd</filename> file busy, try again" msgid "<_:filename-1/> file busy, try again" msgstr "<filename>passwd</filename> 文件忙,请重试" +#. (itstool) path: citerefentry/refentrytitle +#: passwd.1.xml.out:499 +#, fuzzy +#| msgid "passwd" +msgid "makepasswd" +msgstr "passwd" + #. (itstool) path: refsect1/para -#: passwd.1.xml.out:472 +#: passwd.1.xml.out:494 msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:phrase-4/> " -"<_:citerefentry-5/>." +"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" +"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "" + +#. (itstool) path: refsect1/para +#: passwd.1.xml.out:517 +msgid "" +"The following web page comically (yet correctly) compares the strength of " +"two different methods for choosing a password: \"https://xkcd.com/936/\"" msgstr "" #. (itstool) path: refnamediv/refpurpose @@ -8873,6 +9104,11 @@ msgstr "" msgid "$HZ" msgstr "" +#. (itstool) path: para/option +#: su.1.xml.out:278 +msgid "ENV_TZ" +msgstr "" + #. (itstool) path: para/option #: su.1.xml.out:279 msgid "ENV_HZ" @@ -9304,7 +9540,7 @@ msgstr "创建一个新用户或更新默认新用户信息" #. (itstool) path: para/option #. (itstool) path: term/option #: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:583 useradd.8.xml.out:585 +#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 msgid "-D" msgstr "-D" @@ -9345,14 +9581,14 @@ msgstr "" "<option>-U</option>,和 <option>USERGROUPS_ENAB</option>)。" #. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:592 +#: useradd.8.xml.out:118 useradd.8.xml.out:612 msgid "--base-dir" msgstr "" #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable #: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:592 useradd.8.xml.out:598 +#: useradd.8.xml.out:612 useradd.8.xml.out:618 msgid "BASE_DIR" msgstr "" @@ -9383,18 +9619,18 @@ msgstr "" "须已经存在。" #. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:603 +#: useradd.8.xml.out:131 useradd.8.xml.out:623 msgid "HOME" msgstr "" #. (itstool) path: para/filename #. (itstool) path: term/filename #: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:293 useradd.8.xml.out:343 -#: useradd.8.xml.out:393 useradd.8.xml.out:523 useradd.8.xml.out:604 -#: useradd.8.xml.out:616 useradd.8.xml.out:633 useradd.8.xml.out:649 -#: useradd.8.xml.out:663 useradd.8.xml.out:677 useradd.8.xml.out:767 -#: usermod.8.xml.out:419 +#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 +#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 +#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 +#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 +#: useradd.8.xml.out:787 usermod.8.xml.out:419 msgid "/etc/default/useradd" msgstr "/etc/default/useradd" @@ -9499,7 +9735,7 @@ msgstr "" "式指定。" #. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:615 usermod.8.xml.out:418 +#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 msgid "EXPIRE" msgstr "" @@ -9546,7 +9782,7 @@ msgstr "" #. (itstool) path: term/option #. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:482 +#: useradd.8.xml.out:218 useradd.8.xml.out:484 #, fuzzy #| msgid "-" msgid "-F" @@ -9662,6 +9898,13 @@ msgid "" "emphasis-5/>]]]" msgstr "" +#. (itstool) path: para/option +#: useradd.8.xml.out:267 +#, fuzzy +#| msgid "GROUP" +msgid "GROUPS" +msgstr "GROUP" + #. (itstool) path: listitem/para #: useradd.8.xml.out:260 #, fuzzy @@ -9676,23 +9919,25 @@ msgid "" "group is separated from the next by a comma, with no intervening whitespace. " "The groups are subject to the same restrictions as the group given with the " "<_:option-1/> option. The default is for the user to belong only to the " -"initial group." +"initial group. In addition to passing in the -G flag, you can add the option " +"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " +"to those supplementary groups." msgstr "" "用户还属于的附加组列表。每个组都用逗号隔开,没有中间的空格。这里的组受到了 " "<option>-g</option> 选项给定的组同样的限制。默认上,用户只属于初始组。" #. (itstool) path: term/option -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "--skel" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:278 +#: useradd.8.xml.out:280 msgid "SKEL_DIR" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:281 +#: useradd.8.xml.out:283 #, fuzzy #| msgid "" #| "The skeleton directory, which contains files and directories to be copied " @@ -9708,12 +9953,12 @@ msgstr "" #. (itstool) path: para/option #. (itstool) path: term/option -#: useradd.8.xml.out:288 useradd.8.xml.out:350 +#: useradd.8.xml.out:290 useradd.8.xml.out:352 msgid "--create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:286 +#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 #, fuzzy #| msgid "" #| "This option is only valid if the <option>-m</option> (or <option>--create-" @@ -9726,19 +9971,19 @@ msgstr "" "项时才有效。" #. (itstool) path: para/option -#: useradd.8.xml.out:292 +#: useradd.8.xml.out:294 msgid "SKEL" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:294 +#: useradd.8.xml.out:296 #, fuzzy #| msgid "/etc/skel/" msgid "/etc/skel" msgstr "/etc/skel/" #. (itstool) path: listitem/para -#: useradd.8.xml.out:290 +#: useradd.8.xml.out:292 #, fuzzy #| msgid "" #| "If this option is not set, the skeleton directory is defined by the " @@ -9752,24 +9997,24 @@ msgstr "" "的 <option>SKEL</option> 的变量或默认为 <filename>/etc/skel</filename>。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:296 +#: useradd.8.xml.out:298 msgid "If possible, the ACLs and extended attributes are copied." msgstr "如果可以,也复制 ACL 和扩展属性。" #. (itstool) path: para/option -#: useradd.8.xml.out:309 +#: useradd.8.xml.out:311 msgid "UMASK" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:306 +#: useradd.8.xml.out:308 msgid "" "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" "option-4/>, <_:option-5/> and others)." msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:312 +#: useradd.8.xml.out:314 msgid "" "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " "when creating an account to turn off password aging. Multiple <_:option-4/> " @@ -9778,17 +10023,17 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:330 +#: useradd.8.xml.out:332 msgid "--no-log-init" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:332 +#: useradd.8.xml.out:334 msgid "Do not add the user to the lastlog and faillog databases." msgstr "不要将用户添加到最近登录和登录失败数据库。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:335 +#: useradd.8.xml.out:337 #, fuzzy #| msgid "" #| "By default, the user's entries in the lastlog and faillog databases are " @@ -9801,12 +10046,12 @@ msgstr "" "的条目。" #. (itstool) path: para/option -#: useradd.8.xml.out:342 +#: useradd.8.xml.out:344 msgid "LOG_INIT" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:340 +#: useradd.8.xml.out:342 msgid "" "If this option is not specified, <_:command-1/> will also consult the " "variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " @@ -9814,7 +10059,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:353 +#: useradd.8.xml.out:355 #, fuzzy #| msgid "" #| "Create the user's home directory if it does not exist. The files and " @@ -9829,12 +10074,12 @@ msgstr "" "option> 选项指定),将会复制到主目录。" #. (itstool) path: para/option -#: useradd.8.xml.out:361 useradd.8.xml.out:379 useradd.8.xml.out:475 +#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 msgid "CREATE_HOME" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:359 +#: useradd.8.xml.out:361 #, fuzzy #| msgid "" #| "By default, if this option is not specified and <option>CREATE_HOME</" @@ -9847,7 +10092,7 @@ msgstr "" "建主目录。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:364 +#: useradd.8.xml.out:366 msgid "" "The directory where the user's home directory is created must exist and have " "proper SELinux context and permissions. Otherwise the user's home directory " @@ -9855,12 +10100,12 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:373 +#: useradd.8.xml.out:375 msgid "--no-create-home" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:376 +#: useradd.8.xml.out:378 #, fuzzy #| msgid "" #| "Do no create the user's home directory, even if the system wide setting " @@ -9874,12 +10119,12 @@ msgstr "" "(<option>CREATE_HOME</option>) 为 <replaceable>yes</replaceable>。" #. (itstool) path: term/option -#: useradd.8.xml.out:386 +#: useradd.8.xml.out:388 msgid "--no-user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:389 +#: useradd.8.xml.out:391 #, fuzzy #| msgid "" #| "Do not create a group with the same name as the user, but add the user to " @@ -9895,7 +10140,7 @@ msgstr "" "<filename>/etc/default/useradd</filename> 中的 <option>GROUP</option> 变量。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:408 +#: useradd.8.xml.out:410 #, fuzzy #| msgid "" #| "Allow the creation of a user account with a duplicate (non-unique) UID." @@ -9903,7 +10148,7 @@ msgid "allows the creation of an account with an already existing UID." msgstr "允许使用重复的 UID 创建用户账户。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:412 usermod.8.xml.out:277 +#: useradd.8.xml.out:414 usermod.8.xml.out:277 msgid "" "This option is only valid in combination with the <_:option-1/> option. As a " "user identity serves as key to map between users on one hand and " @@ -9913,7 +10158,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:428 +#: useradd.8.xml.out:430 msgid "" "defines an initial password for the account. PASSWORD is expected to be " "encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " @@ -9921,7 +10166,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:435 +#: useradd.8.xml.out:437 msgid "" "Without this option, the new account will be locked and with no password " "defined, i.e. a single exclamation mark in the respective field of <_:" @@ -9930,7 +10175,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:443 +#: useradd.8.xml.out:445 #, fuzzy #| msgid "" #| "<emphasis role=\"bold\">Note:</emphasis> This option is not recommended " @@ -9944,7 +10189,7 @@ msgstr "" "过的密码)会被用户通过列出这个过程而看到。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:471 +#: useradd.8.xml.out:473 #, fuzzy #| msgid "" #| "Note that <command>useradd</command> will not create a home directory for " @@ -9963,7 +10208,7 @@ msgstr "" "样。如果想为要创建的系统账户创建主目录,需要指定 <option>-m</option> 选项。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:479 +#: useradd.8.xml.out:481 #, fuzzy #| msgid "" #| "Note that <command>useradd</command> will not create a home directory for " @@ -9981,7 +10226,7 @@ msgstr "" "样。如果想为要创建的系统账户创建主目录,需要指定 <option>-m</option> 选项。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:520 +#: useradd.8.xml.out:522 msgid "" "sets the path to the user's login shell. Without this option, the system " "will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " @@ -9990,17 +10235,17 @@ msgid "" msgstr "" #. (itstool) path: term/option -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "--uid" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:531 usermod.8.xml.out:369 +#: useradd.8.xml.out:533 usermod.8.xml.out:369 msgid "UID" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:534 +#: useradd.8.xml.out:536 #, fuzzy #| msgid "" #| "The numerical value of the user's ID. This value must be unique, unless " @@ -10018,54 +10263,76 @@ msgstr "" "小值。" #. (itstool) path: term/option -#: useradd.8.xml.out:549 +#: useradd.8.xml.out:551 msgid "--user-group" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:552 +#: useradd.8.xml.out:554 msgid "" "Create a group with the same name as the user, and add the user to this " "group." msgstr "创建一个和用户同名的组,并将用户添加到组中。" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:525 #, fuzzy #| msgid "-" msgid "-Z" msgstr "-" #. (itstool) path: term/option -#: useradd.8.xml.out:566 userdel.8.xml.out:153 usermod.8.xml.out:501 +#. (itstool) path: para/option +#: useradd.8.xml.out:568 useradd.8.xml.out:594 userdel.8.xml.out:153 +#: usermod.8.xml.out:501 usermod.8.xml.out:526 msgid "--selinux-user" msgstr "" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:566 usermod.8.xml.out:501 +#: useradd.8.xml.out:568 usermod.8.xml.out:501 msgid "SEUSER" msgstr "" #. (itstool) path: citerefentry/refentrytitle -#: useradd.8.xml.out:573 +#: useradd.8.xml.out:575 useradd.8.xml.out:589 usermod.8.xml.out:521 msgid "semanage" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:569 +#: useradd.8.xml.out:571 msgid "" -"defines the SELinux user for the new account. Without this option, a SELinux " +"defines the SELinux user for the new account. Without this option, SELinux " "uses the default user. Note that the shadow system doesn't store the selinux-" "user, it uses <_:citerefentry-1/> for that." msgstr "" +#. (itstool) path: term/option +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "--selinux-range" +msgstr "" + +#. (itstool) path: term/replaceable +#: useradd.8.xml.out:582 usermod.8.xml.out:515 +msgid "SERANGE" +msgstr "" + +#. (itstool) path: listitem/para +#: useradd.8.xml.out:585 +msgid "" +"defines the SELinux MLS range for the new account. Without this option, " +"SELinux uses the default range. Note that the shadow system doesn't store " +"the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + #. (itstool) path: refsect2/title -#: useradd.8.xml.out:581 +#: useradd.8.xml.out:601 msgid "Changing the default values" msgstr "更改默认值" #. (itstool) path: refsect2/para -#: useradd.8.xml.out:582 +#: useradd.8.xml.out:602 #, fuzzy #| msgid "" #| "When invoked with only the <option>-D</option> option, <command>useradd</" @@ -10084,7 +10351,7 @@ msgstr "" "将为指定的选项更新默认值。有效的“更改默认值”选项有:" #. (itstool) path: listitem/para -#: useradd.8.xml.out:595 +#: useradd.8.xml.out:615 #, fuzzy #| msgid "" #| "The path prefix for a new user's home directory. The user's name will be " @@ -10102,8 +10369,8 @@ msgstr "" "录名。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:602 useradd.8.xml.out:614 useradd.8.xml.out:631 -#: useradd.8.xml.out:647 useradd.8.xml.out:661 +#: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 +#: useradd.8.xml.out:667 useradd.8.xml.out:681 #, fuzzy #| msgid "" #| "This option sets the <option>HOME</option> variable in <filename>/etc/" @@ -10114,14 +10381,14 @@ msgstr "" "option> 选项。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:613 +#: useradd.8.xml.out:633 #, fuzzy #| msgid "The date on which the user account is disabled." msgid "sets the date on which newly created user accounts are disabled." msgstr "禁用此用户账户的日期。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:625 +#: useradd.8.xml.out:645 msgid "" "defines the number of days after the password exceeded its maximum age where " "the user is expected to replace this password. See <_:citerefentry-1/>for " @@ -10129,7 +10396,7 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:642 +#: useradd.8.xml.out:662 msgid "" "sets the default primary group for newly created users, accepting group " "names or a numerical group ID. The named group must exist, and the GID must " @@ -10137,23 +10404,23 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:658 +#: useradd.8.xml.out:678 msgid "defines the default login shell for new users." msgstr "" #. (itstool) path: refsect1/title -#: useradd.8.xml.out:673 +#: useradd.8.xml.out:693 msgid "NOTES" msgstr "注意:" #. (itstool) path: para/filename #. (itstool) path: term/filename -#: useradd.8.xml.out:675 useradd.8.xml.out:779 +#: useradd.8.xml.out:695 useradd.8.xml.out:799 msgid "/etc/skel/" msgstr "/etc/skel/" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:674 +#: useradd.8.xml.out:694 #, fuzzy #| msgid "" #| "The system administrator is responsible for placing the default user " @@ -10169,14 +10436,14 @@ msgstr "" "者命令行上、<filename>/etc/default/useradd</filename> 中指定的任何其它目录)。" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:683 +#: useradd.8.xml.out:703 msgid "" "You may not add a user to a NIS or LDAP group. This must be performed on the " "corresponding server." msgstr "您可能不能想 NIS 组或 LDAP 组添加用户。这只能在相应服务器上进行。" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:688 +#: useradd.8.xml.out:708 #, fuzzy #| msgid "" #| "Similarly, if the username already exists in an external user database " @@ -10190,12 +10457,12 @@ msgstr "" "<command>useradd</command> 将拒绝创建用户账户的请求。" #. (itstool) path: para/command -#: useradd.8.xml.out:702 +#: useradd.8.xml.out:722 msgid "ls" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 +#: useradd.8.xml.out:714 msgid "" "Usernames may contain only lower and upper case letters, digits, " "underscores, or dashes. They can end with a dollar sign. Dashes are not " @@ -10206,60 +10473,60 @@ msgid "" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:704 -msgid "Usernames may only be up to 32 characters long." -msgstr "用户名不能超过 32 个字符长。" +#: useradd.8.xml.out:724 +msgid "Usernames may only be up to 256 characters long." +msgstr "用户名不能超过 256 个字符长。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:769 +#: useradd.8.xml.out:789 msgid "Default values for account creation." msgstr "账户创建的默认值。" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 #, fuzzy #| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/default/useradd" #. (itstool) path: term/filename -#: useradd.8.xml.out:773 +#: useradd.8.xml.out:793 msgid "/etc/shadow-maint/useradd-post.d/*" msgstr "" #. (itstool) path: varlistentry/term -#: useradd.8.xml.out:773 userdel.8.xml.out:209 +#: useradd.8.xml.out:793 userdel.8.xml.out:209 msgid "<_:filename-1/>, <_:filename-2/>" msgstr "" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 #, fuzzy #| msgid "OPTIONS" msgid "ACTION" msgstr "选项" #. (itstool) path: para/command -#: useradd.8.xml.out:775 userdel.8.xml.out:211 +#: useradd.8.xml.out:795 userdel.8.xml.out:211 msgid "SUBJECT" msgstr "" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-pre.d" msgstr "useradd" #. (itstool) path: para/filename -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 #, fuzzy #| msgid "useradd" msgid "useradd-post.d" msgstr "useradd" #. (itstool) path: listitem/para -#: useradd.8.xml.out:775 +#: useradd.8.xml.out:795 msgid "" "Run-part files to execute during user addition. The environment variable <_:" "command-1/> will be populated with useradd and <_:command-2/> with the <_:" @@ -10269,48 +10536,48 @@ msgid "" msgstr "" #. (itstool) path: listitem/para -#: useradd.8.xml.out:781 +#: useradd.8.xml.out:801 msgid "Directory containing default files." msgstr "包含默认文件的目录。" #. (itstool) path: listitem/para -#: useradd.8.xml.out:819 userdel.8.xml.out:243 +#: useradd.8.xml.out:839 userdel.8.xml.out:243 msgid "can't update password file" msgstr "无法更新密码文件" #. (itstool) path: listitem/para -#: useradd.8.xml.out:837 +#: useradd.8.xml.out:857 #, fuzzy #| msgid "UID already in use (and no <option>-o</option>)" msgid "UID already in use (and no <_:option-1/>)" msgstr "UID 已经使用 (且没有 <option>-o</option>)" #. (itstool) path: listitem/para -#: useradd.8.xml.out:849 +#: useradd.8.xml.out:869 #, fuzzy #| msgid "group name already in use" msgid "username or group name already in use" msgstr "组名已经在使用" #. (itstool) path: listitem/para -#: useradd.8.xml.out:861 +#: useradd.8.xml.out:881 msgid "can't create home directory" msgstr "无法创建主目录" #. (itstool) path: term/replaceable -#: useradd.8.xml.out:865 +#: useradd.8.xml.out:885 #, fuzzy #| msgid "1" msgid "14" msgstr "1" #. (itstool) path: listitem/para -#: useradd.8.xml.out:867 +#: useradd.8.xml.out:887 msgid "can't update SELinux user mapping" msgstr "" #. (itstool) path: refsect1/para -#: useradd.8.xml.out:876 usermod.8.xml.out:603 +#: useradd.8.xml.out:896 usermod.8.xml.out:620 msgid "" "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" "citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" @@ -11129,8 +11396,15 @@ msgid "" "shadow system doesn't store the selinux-user, it uses semanage(8) for that." msgstr "" -#. (itstool) path: refsect1/para +#. (itstool) path: listitem/para #: usermod.8.xml.out:518 +msgid "" +"defines the SELinux MLS range for the new account. Note that the shadow " +"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "" + +#. (itstool) path: refsect1/para +#: usermod.8.xml.out:535 #, fuzzy #| msgid "" #| "You must make certain that the named user is not executing any processes " @@ -11150,17 +11424,17 @@ msgstr "" "仅根据 utmp 检查用户是否已经登录。" #. (itstool) path: para/command -#: usermod.8.xml.out:527 +#: usermod.8.xml.out:544 msgid "crontab" msgstr "" #. (itstool) path: para/command -#: usermod.8.xml.out:528 +#: usermod.8.xml.out:545 msgid "at" msgstr "" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:526 +#: usermod.8.xml.out:543 #, fuzzy #| msgid "" #| "You must change the owner of any <command>crontab</command> files or " @@ -11173,52 +11447,52 @@ msgstr "" "属主。" #. (itstool) path: refsect1/para -#: usermod.8.xml.out:530 +#: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." msgstr "您必须更改 NIS 服务器上的 NIS 相关内容。" #. (itstool) path: listitem/para -#: usermod.8.xml.out:559 +#: usermod.8.xml.out:576 #, fuzzy #| msgid "Group account information." msgid "Group account information" msgstr "组账户信息。" #. (itstool) path: listitem/para -#: usermod.8.xml.out:565 +#: usermod.8.xml.out:582 #, fuzzy #| msgid "Secure group account information." -msgid "Secure group account informatio." +msgid "Secure group account information" msgstr "安全组账户信息。" #. (itstool) path: listitem/para -#: usermod.8.xml.out:571 +#: usermod.8.xml.out:588 #, fuzzy #| msgid "Shadow password suite configuration." msgid "Shadow password suite configuration" msgstr "Shadow 密码套件配置。" #. (itstool) path: listitem/para -#: usermod.8.xml.out:577 +#: usermod.8.xml.out:594 #, fuzzy #| msgid "User account information." msgid "User account information" msgstr "用户账户信息。" #. (itstool) path: listitem/para -#: usermod.8.xml.out:583 +#: usermod.8.xml.out:600 #, fuzzy #| msgid "Secure user account information." msgid "Secure user account information" msgstr "安全用户账户信息。" #. (itstool) path: listitem/para -#: usermod.8.xml.out:589 +#: usermod.8.xml.out:606 msgid "Per user subordinate group IDs" msgstr "" #. (itstool) path: listitem/para -#: usermod.8.xml.out:595 +#: usermod.8.xml.out:612 msgid "Per user subordinate user IDs" msgstr "" @@ -11270,7 +11544,7 @@ msgstr "vipw" #| "envar>, and finally the default editor, <citerefentry><refentrytitle>vi</" #| "refentrytitle><manvolnum>1</manvolnum></citerefentry>." msgid "" -"The <_:command-1/> and <_:command-2/> commands edits the files <_:filename-3/" +"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" "> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " "edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" ">, respectively. The programs will set the appropriate locks to prevent file " @@ -12996,6 +13270,31 @@ msgstr "" #~ "<citerefentry><refentrytitle>sulogin</refentrytitle><manvolnum>8</" #~ "manvolnum></citerefentry>." +#~ msgid "" +#~ "Then, the password is tested for complexity. As a general guideline, " +#~ "passwords should consist of 6 to 8 characters including one or more " +#~ "characters from each of the following sets:" +#~ msgstr "" +#~ "然后,测试密码的负责程度。一般来讲,密码应该包含 6 到 8 位字符,从下边的一" +#~ "个或多个集合中选择:" + +#~ msgid "lower case alphabetics" +#~ msgstr "小写字母" + +#~ msgid "digits 0 thru 9" +#~ msgstr "数字 0 到 9" + +#~ msgid "punctuation marks" +#~ msgstr "标点符号" + +#~ msgid "" +#~ "Care must be taken not to include the system default erase or kill " +#~ "characters. <command>passwd</command> will reject any password which is " +#~ "not suitably complex." +#~ msgstr "" +#~ "必须要留意不能包含系统默认的擦除和杀死字符。<command>passwd</command> 会拒" +#~ "绝复杂度不满足要求的密码。" + #~ msgid "<option>-d</option>, <option>--delete</option>" #~ msgstr "<option>-d</option>, <option>--delete</option>" @@ -13260,6 +13559,14 @@ msgstr "" #~ msgid "<option>-s</option>, <option>--sha-rounds</option>" #~ msgstr "<option>-s</option>, <option>--sha-rounds</option>" +#~ msgid "" +#~ "The value 0 means that the system will choose the default number of " +#~ "rounds for the crypt method (5000)." +#~ msgstr "值 0 表示让系统为加密方法选择默认的轮转次数 (5000)。" + +#~ msgid "You can only use this option with the SHA256 or SHA512 crypt method." +#~ msgstr "您只可以对 SHA256 或 SHA512 使用此选项。" + #~ msgid "PAM configuration for <command>newusers</command>." #~ msgstr "<command>newusers</command> 的 PAM 配置。" @@ -14211,6 +14518,9 @@ msgstr "" #~ "<option>-c</option>, <option>--crypt-method</option> " #~ "<replaceable>METHOD</replaceable>" +#~ msgid "The available methods are DES, MD5, and NONE." +#~ msgstr "可用的方法有 DES,MD5 和 NONE。" + #~ msgid "<option>-e</option>, <option>--encrypted</option>" #~ msgstr "<option>-e</option>, <option>--encrypted</option>" diff --git a/man/pt_BR/Makefile.in b/man/pt_BR/Makefile.in index 0ec510c..f12dbd0 100644 --- a/man/pt_BR/Makefile.in +++ b/man/pt_BR/Makefile.in @@ -172,6 +172,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -190,6 +192,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,9 +208,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -223,6 +232,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -231,6 +241,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -253,6 +265,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/man/ru/Makefile.am b/man/ru/Makefile.am index 8a776a8..84d55d9 100644 --- a/man/ru/Makefile.am +++ b/man/ru/Makefile.am @@ -21,7 +21,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -44,6 +43,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ diff --git a/man/ru/Makefile.in b/man/ru/Makefile.in index cbdffd7..cfa1982 100644 --- a/man/ru/Makefile.in +++ b/man/ru/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/ru ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -332,20 +348,22 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man1/su.1 man5/suauth.5 \ - man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man1/su.1 man5/suauth.5 man8/useradd.8 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -354,8 +372,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -739,10 +764,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -750,7 +775,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(<!DOCTYPE .*docbookx.dtd"\)>/\1 [<!ENTITY % config SYSTEM "config.xml">%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^<refentry .*\)>:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -761,11 +786,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/ru/man1/chage.1 b/man/ru/man1/chage.1 index 49be778..fd2c3ec 100644 --- a/man/ru/man1/chage.1 +++ b/man/ru/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "chage" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "chage" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chage \- изменяет информацию об устаревании пароля пользователя .SH "СИНТАКСИС" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fIпараметры\fR] \fIУЧЁТНАЯ_ЗАПИСЬ\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "ОПИСАНИЕ" .PP The @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/ru/man1/chfn.1 b/man/ru/man1/chfn.1 index 98d1cf1..6d7039e 100644 --- a/man/ru/man1/chfn.1 +++ b/man/ru/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "chfn" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "chfn" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chfn \- изменяет информацию о пользователе .SH "СИНТАКСИС" .HP \w'\fBchfn\fR\ 'u -\fBchfn\fR [\fIпараметры\fR] [\fIУЧЁТНАЯ_ЗАПИСЬ\fR] +\fBchfn\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man1/chsh.1 b/man/ru/man1/chsh.1 index a8f2743..20fcc1a 100644 --- a/man/ru/man1/chsh.1 +++ b/man/ru/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "chsh" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "chsh" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chsh \- изменяет регистрационную оболочку пользователя .SH "СИНТАКСИС" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fIпараметры\fR] [\fIУЧЁТНАЯ_ЗАПИСЬ\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "ОПИСАНИЕ" .PP The @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "НАСТРОЙКА" .PP The following configuration variables in diff --git a/man/ru/man1/expiry.1 b/man/ru/man1/expiry.1 index 697ee41..84d59b1 100644 --- a/man/ru/man1/expiry.1 +++ b/man/ru/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "expiry" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "expiry" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ expiry \- проверяет и изменяет пароль согласно политике устаревания .SH "СИНТАКСИС" .HP \w'\fBexpiry\fR\ 'u -\fBexpiry\fR \fIпараметр\fR +\fBexpiry\fR \fIoption\fR .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man1/gpasswd.1 b/man/ru/man1/gpasswd.1 index b8c9402..976a154 100644 --- a/man/ru/man1/gpasswd.1 +++ b/man/ru/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "gpasswd" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "gpasswd" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ gpasswd \- administer /etc/group and /etc/gshadow .SH "СИНТАКСИС" .HP \w'\fBgpasswd\fR\ 'u -\fBgpasswd\fR [\fIпараметр\fR] \fIгруппа\fR +\fBgpasswd\fR [\fIoption\fR] \fIgroup\fR .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man1/groups.1 b/man/ru/man1/groups.1 index 3ab2ded..08a849a 100644 --- a/man/ru/man1/groups.1 +++ b/man/ru/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "groups" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "groups" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groups \- показывает имена групп запустившего программу пользователя .SH "СИНТАКСИС" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIимя\fR] +\fBgroups\fR [\fIuser\fR] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man1/id.1 b/man/ru/man1/id.1 index 0ce055b..7556192 100644 --- a/man/ru/man1/id.1 +++ b/man/ru/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "id" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "id" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man1/login.1 b/man/ru/man1/login.1 index 65229c4..e3b0720 100644 --- a/man/ru/man1/login.1 +++ b/man/ru/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "login" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "login" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,9 +31,9 @@ login \- начинает сеанс в системе .SH "СИНТАКСИС" .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIимя_пользователя\fR] [\fIПЕРЕМЕННАЯ_ОКРУЖЕНИЯ=ЗНАЧЕНИЕ\fR...] +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIusername\fR] [\fIENV=VAR\fR...] .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIимя_пользователя\fR +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIusername\fR .HP \w'\fBlogin\fR\ 'u \fBlogin\fR [\-p] \-r\ \fIhost\fR .SH "ОПИСАНИЕ" diff --git a/man/ru/man1/newgrp.1 b/man/ru/man1/newgrp.1 index 2af3bde..4bf0c07 100644 --- a/man/ru/man1/newgrp.1 +++ b/man/ru/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "newgrp" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "newgrp" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newgrp \- выполняет регистрацию пользователя в новой группе .SH "СИНТАКСИС" .HP \w'\fBnewgrp\fR\ 'u -\fBnewgrp\fR [\-] [\fIгруппа\fR] +\fBnewgrp\fR [\-] [\fIgroup\fR] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man1/passwd.1 b/man/ru/man1/passwd.1 index 8224852..4fa5ce0 100644 --- a/man/ru/man1/passwd.1 +++ b/man/ru/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "passwd" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "passwd" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ passwd \- изменяет пароль пользователя .SH "СИНТАКСИС" .HP \w'\fBpasswd\fR\ 'u -\fBpasswd\fR [\fIпараметры\fR] [\fIУЧЁТНАЯ_ЗАПИСЬ\fR] +\fBpasswd\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "ОПИСАНИЕ" .PP The @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP Затем пользователю предложат дважды ввести новый пароль\&. Значение второго ввода сравнивается с первым и для изменения пароли из обеих попыток должны совпасть\&. .PP -Затем пароль тестируется на сложность подбора\&. Согласно общим принципам, пароли должны быть длиной от 6 до 8 символов и включать один или более символов каждого типа: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -строчные буквы -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -цифры от 0 до 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -знаки пунктуации -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Выбор пароля" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -96,6 +61,8 @@ System encryption method is based on the NBS DES algorithm\&. More recent method .PP При обеспечении безопасности пароля выбирают нечто среднее между сложным паролем и сложностью работы с ним\&. По этой причине, вы не должны использовать пароль, который является словом из словаря или который придётся записать из\-за его сложности\&. Также, пароль не должен быть названием чего\-либо, номером вашей лицензии, днём рождения и домашним адресом\&. Обо всём этом легко догадаться, что приведёт к нарушению безопасности системы\&. .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP You can find advice on how to choose a strong password on http://en\&.wikipedia\&.org/wiki/Password_strength .SH "ПАРАМЕТРЫ" .PP @@ -175,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 Показать состояние учётной записи\&. Информация о состоянии содержит 7 полей\&. Первое поле содержит имя учётной записи\&. Второе поле указывает, заблокирован ли пароль учётной записи (L), она без пароля (NP) или у неё есть рабочий пароль (P)\&. Третье поле хранит дату последнего изменения пароля\&. В следующих четырёх полях хранятся минимальный срок, максимальный срок, период выдачи предупреждения и период неактивности пароля\&. Эти сроки измеряются в днях\&. @@ -205,6 +178,11 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "ПРЕДОСТЕРЕЖЕНИЯ" .PP Сложность пароля проверяется на разных машинах по разному\&. Пользователю настоятельно рекомендуется выбирать пароль такой сложности, чтобы ему нормально работалось\&. @@ -277,7 +255,10 @@ invalid argument to option .SH "СМОТРИТЕ ТАКЖЕ" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/ru/man1/sg.1 b/man/ru/man1/sg.1 index 532c615..6f87d74 100644 --- a/man/ru/man1/sg.1 +++ b/man/ru/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "sg" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "sg" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man1/su.1 b/man/ru/man1/su.1 index 17c6269..c47ada9 100644 --- a/man/ru/man1/su.1 +++ b/man/ru/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Пользовательские команды -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "su" "1" "11/08/2022" "shadow\-utils 4\&.13" "Пользовательские команды" +.TH "su" "1" "06/21/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ su \- изменяет ID пользователя или делает его суперпользователем .SH "СИНТАКСИС" .HP \w'\fBsu\fR\ 'u -\fBsu\fR [\fIпараметры\fR] [\fI\-\fR] [\fIимя_пользователя\fR\ [\ \fIargs\fR\ ]] +\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fIusername\fR\ [\ \fIargs\fR\ ]] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man3/shadow.3 b/man/ru/man3/shadow.3 index c86e060..68d19f4 100644 --- a/man/ru/man3/shadow.3 +++ b/man/ru/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Библиотечные функции -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "shadow" "3" "11/08/2022" "shadow\-utils 4\&.13" "Библиотечные функции" +.TH "shadow" "3" "06/21/2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -50,7 +50,7 @@ shadow, getspnam \- процедуры для работы с файлом ши .PP \fIint putspent(struct spwd\fR \fI*p,\fR -\fIФАЙЛ\fR +\fIFILE\fR \fI*fp\fR\fI);\fR .PP \fIint lckpwdf();\fR diff --git a/man/ru/man5/faillog.5 b/man/ru/man5/faillog.5 index c615de1..26c9102 100644 --- a/man/ru/man5/faillog.5 +++ b/man/ru/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "faillog" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "faillog" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/gshadow.5 b/man/ru/man5/gshadow.5 index 4c012de..e0ad132 100644 --- a/man/ru/man5/gshadow.5 +++ b/man/ru/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "gshadow" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "gshadow" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ contains the shadowed information for group accounts\&. .PP Каждая строка файла содержит поля, отделёнными друг от друга двоеточием: .PP -\fBимя группы\fR +\fBgroup name\fR .RS 4 Должно содержать правильное имя группы, которая существует в системе\&. .RE .PP -\fBшифрованный пароль\fR +\fBencrypted password\fR .RS 4 Refer to \fBcrypt\fR(3) @@ -63,7 +63,7 @@ This password supersedes any password specified in /etc/group\&. .RE .PP -\fBадминистраторы\fR +\fBadministrators\fR .RS 4 Список имён пользователей, перечисленных через запятую\&. .sp @@ -72,7 +72,7 @@ This password supersedes any password specified in Администраторы также имеют те же права, что и члены группы (смотрите далее)\&. .RE .PP -\fBчлены\fR +\fBmembers\fR .RS 4 Список имён пользователей, перечисленных через запятую\&. .sp diff --git a/man/ru/man5/limits.5 b/man/ru/man5/limits.5 index 9567b31..da82471 100644 --- a/man/ru/man5/limits.5 +++ b/man/ru/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "limits" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "limits" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -41,11 +41,11 @@ config\&.h) describes the resource limits you wish to impose\&. It should be own .PP Каждая строка описывает ограничение для одного пользователя имеет вид: .PP -\fIuser СТРОКА_ОГРАНИЧЕНИЙ\fR +\fIuser LIMITS_STRING\fR .PP или в виде: .PP -\fI@group СТРОКА_ОГРАНИЧЕНИЙ\fR +\fI@group LIMITS_STRING\fR .PP The \fILIMITS_STRING\fR diff --git a/man/ru/man5/login.access.5 b/man/ru/man5/login.access.5 index 8f7f7b0..4ca9898 100644 --- a/man/ru/man5/login.access.5 +++ b/man/ru/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "login\&.access" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "login\&.access" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/login.defs.5 b/man/ru/man5/login.defs.5 index aa24629..1f4bc48 100644 --- a/man/ru/man5/login.defs.5 +++ b/man/ru/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "login\&.defs" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "login\&.defs" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -192,8 +192,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/ru/man5/passwd.5 b/man/ru/man5/passwd.5 index 74fa8e3..8a3aeed 100644 --- a/man/ru/man5/passwd.5 +++ b/man/ru/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "passwd" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "passwd" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/porttime.5 b/man/ru/man5/porttime.5 index cbbd4e3..38065be 100644 --- a/man/ru/man5/porttime.5 +++ b/man/ru/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "porttime" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "porttime" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/shadow.5 b/man/ru/man5/shadow.5 index 6857795..3145f93 100644 --- a/man/ru/man5/shadow.5 +++ b/man/ru/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "shadow" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "shadow" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ is a file which contains the password information for the system\*(Aqs accounts .PP Each line of this file contains 9 fields, separated by colons (\(Fo:\(Fc), in the following order: .PP -\fBимя пользователя для входа в систему\fR +\fBlogin name\fR .RS 4 Должно содержать правильное имя учётной записи, которая существует в системе\&. .RE .PP -\fBшифрованный пароль\fR +\fBencrypted password\fR .RS 4 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 /etc/shadow @@ -59,7 +59,7 @@ If the password field contains some string that is not a valid result of \fBcrypt\fR(3), 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)\&. .RE .PP -\fBдата последней смены пароля\fR +\fBdate of last password change\fR .RS 4 The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -68,14 +68,14 @@ The value 0 has a special meaning, which is that the user should change her pass Пустое значение обозначает, что проверка устаревания пароля выключена\&. .RE .PP -\fBминимальный срок действия пароля\fR +\fBminimum password age\fR .RS 4 Минимальный срок действия пароля в днях, которые пользователь должен ждать, чтобы поменять пароль\&. .sp An empty field and value 0 mean that there is no minimum password age\&. .RE .PP -\fBмаксимальный срок действия пароля\fR +\fBmaximum password age\fR .RS 4 Максимальный срок действия пароля в днях, после которого пользователь должен изменить пароль\&. .sp @@ -86,14 +86,14 @@ An empty field and value 0 mean that there is no minimum password age\&. Если максимальный срок действия пароля меньше чем минимальный срок действия пароля, то пользователь не сможет изменить свой пароль\&. .RE .PP -\fBпериод предупреждения о пароле\fR +\fBpassword warning period\fR .RS 4 Количество дней до устаревания пароля (смотрите максимальный срок действия пароля) во время которых пользователю выдаётся предупреждение\&. .sp Пустое значение поля и 0 отключают период предупреждения о пароле\&. .RE .PP -\fBпериод неактивности пароля\fR +\fBpassword inactivity period\fR .RS 4 Количество дней после устаревания пароля (смотрите максимальный срок действия пароля) во время которых пароль всё ещё принимается (и пользователь должен обновить свой пароль при следующем входе)\&. .sp @@ -102,7 +102,7 @@ After expiration of the password and this expiration period is elapsed, no login Пустое значение поля означает, что период неактивности отсутствует\&. .RE .PP -\fBдата истечения срока действия учётной записи\fR +\fBaccount expiration date\fR .RS 4 The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -113,7 +113,7 @@ Note that an account expiration differs from a password expiration\&. In case of Значение 0 не должно использоваться, так как это может рассматриваться как неустаревающая учётная запись или что запись устарела 1 января 1970 года\&. .RE .PP -\fBзарезервированное поле\fR +\fBreserved field\fR .RS 4 Это поле зарезервировано для использования в будущем\&. .RE diff --git a/man/ru/man5/suauth.5 b/man/ru/man5/suauth.5 index 2c728e2..44fa4e0 100644 --- a/man/ru/man5/suauth.5 +++ b/man/ru/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 +.\" Date: 06/21/2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "suauth" "5" "11/08/2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "suauth" "5" "06/21/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/chgpasswd.8 b/man/ru/man8/chgpasswd.8 index 45c6268..868d573 100644 --- a/man/ru/man8/chgpasswd.8 +++ b/man/ru/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko <kloczek@pld.org.pl> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "chgpasswd" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "chgpasswd" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chgpasswd \- обновляет пароли групп в пакетном режиме .SH "СИНТАКСИС" .HP \w'\fBchgpasswd\fR\ 'u -\fBchgpasswd\fR [\fIпараметры\fR] +\fBchgpasswd\fR [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP The @@ -63,7 +63,12 @@ command are: .RS 4 Использовать указанный метод для шифрования паролей\&. .sp -Возможные методы: DES, MD5, NONE и SHA256 или SHA512, если эти методы поддерживается libc\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR @@ -94,14 +99,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Использовать указанное количество раундов шифрования паролей\&. .sp -Значение 0 означает, что система выберет количество раундов по умолчанию для выбранного метода шифрования (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Минимальное значение равно 1000, а максимальное значение равно 999,999,999\&. -.sp -Вы можете использовать этот параметр только при методе шифрования SHA256 или SHA512\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "ПРЕДОСТЕРЕЖЕНИЯ" .PP diff --git a/man/ru/man8/chpasswd.8 b/man/ru/man8/chpasswd.8 index bc59c32..d0ffacb 100644 --- a/man/ru/man8/chpasswd.8 +++ b/man/ru/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "chpasswd" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "chpasswd" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chpasswd \- обновляет пароли в пакетном режиме .SH "СИНТАКСИС" .HP \w'\fBchpasswd\fR\ 'u -\fBchpasswd\fR [\fIпараметры\fR] +\fBchpasswd\fR [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP The @@ -68,7 +68,12 @@ command are: .RS 4 Использовать указанный метод для шифрования паролей\&. .sp -Возможные методы: DES, MD5, NONE и SHA256 или SHA512, если эти методы поддерживается libc\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp By default (if none of the \fB\-c\fR, @@ -106,22 +111,23 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 Использовать указанное количество раундов шифрования паролей\&. .sp -Значение 0 означает, что система выберет количество раундов по умолчанию для выбранного метода шифрования (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Минимальное значение равно 1000, а максимальное значение равно 999,999,999\&. -.sp -Вы можете использовать этот параметр только при методе шифрования SHA256 или SHA512\&. -.sp -By default, the number of rounds is defined by the -\fBSHA_CRYPT_MIN_ROUNDS\fR -and -\fBSHA_CRYPT_MAX_ROUNDS\fR -variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "ПРЕДОСТЕРЕЖЕНИЯ" .PP diff --git a/man/ru/man8/faillog.8 b/man/ru/man8/faillog.8 index 3cb6a72..017e0bb 100644 --- a/man/ru/man8/faillog.8 +++ b/man/ru/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "faillog" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "faillog" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ faillog \- показывает записи из файла faillog или задаёт предел неудачных попыток входа в систему .SH "СИНТАКСИС" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fIпараметры\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP \fBfaillog\fR diff --git a/man/ru/man8/groupadd.8 b/man/ru/man8/groupadd.8 index b8300e4..f0942ef 100644 --- a/man/ru/man8/groupadd.8 +++ b/man/ru/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "groupadd" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "groupadd" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupadd \- создаёт новую группу .SH "СИНТАКСИС" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fIПАРАМЕТРЫ\fR] \fINEWGROUP\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/groupdel.8 b/man/ru/man8/groupdel.8 index dfa6c33..949d984 100644 --- a/man/ru/man8/groupdel.8 +++ b/man/ru/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "groupdel" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "groupdel" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- удаляет группу .SH "СИНТАКСИС" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIпараметры\fR] \fIГРУППА\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/groupmems.8 b/man/ru/man8/groupmems.8 index 668a28f..a3ef2fa 100644 --- a/man/ru/man8/groupmems.8 +++ b/man/ru/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "groupmems" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "groupmems" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/ru/man8/groupmod.8 b/man/ru/man8/groupmod.8 index 9b7e87c..f0e4b26 100644 --- a/man/ru/man8/groupmod.8 +++ b/man/ru/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "groupmod" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "groupmod" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupmod \- изменяет определение группы в системе .SH "СИНТАКСИС" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIпараметры\fR] \fIГРУППА\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/grpck.8 b/man/ru/man8/grpck.8 index 1d2c194..39ebad1 100644 --- a/man/ru/man8/grpck.8 +++ b/man/ru/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "grpck" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "grpck" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- проверяет корректность файлов групп .SH "СИНТАКСИС" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [параметры] [\fIгруппа\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/lastlog.8 b/man/ru/man8/lastlog.8 index 4c3bd8f..cd96dfb 100644 --- a/man/ru/man8/lastlog.8 +++ b/man/ru/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "lastlog" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "lastlog" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ lastlog \- выводит отчёт о последней регистрации в системе всех или указанного пользователя .SH "СИНТАКСИС" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fIпараметры\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP \fBlastlog\fR @@ -128,5 +128,5 @@ change the behavior of this tool: Большие промежутки в значениях идентификаторов пользователей приводят к тому, что программа некоторое время ничего не выводит на экран (то есть, если в базе данных lastlog нет пользователей с идентификаторами с 170 по 800, то во время обработки UID с 171 по 799 программа кажется повисшей)\&. .PP Having high UIDs can create problems when handling the -<term> /var/log/lastlog</term> +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/ru/man8/logoutd.8 b/man/ru/man8/logoutd.8 index fa64db1..20b26e7 100644 --- a/man/ru/man8/logoutd.8 +++ b/man/ru/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "logoutd" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "logoutd" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/newusers.8 b/man/ru/man8/newusers.8 index e7ab6cb..d01897a 100644 --- a/man/ru/man8/newusers.8 +++ b/man/ru/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "newusers" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "newusers" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newusers \- обновляет и создаёт новые учётные записи пользователей в пакетном режиме .SH "СИНТАКСИС" .HP \w'\fBnewusers\fR\ 'u -\fBnewusers\fR [\fIпараметры\fR] [\fIфайл\fR] +\fBnewusers\fR [\fIoptions\fR] [\fIfile\fR] .SH "ОПИСАНИЕ" .PP The @@ -56,7 +56,7 @@ It can be the name of a new user or the name of an existing user (or a user crea Это поле будет зашифровано и использовано как новое значение шифрованного пароля\&. .RE .PP -\fI pw_gid\fR +\fIpw_uid\fR .RS 4 Это поле используется для определения UID пользователя\&. .sp @@ -168,14 +168,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Использовать указанное количество раундов шифрования паролей\&. .sp -Значение 0 означает, что система выберет количество раундов по умолчанию для выбранного метода шифрования (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Минимальное значение равно 1000, а максимальное значение равно 999,999,999\&. -.sp -Вы можете использовать этот параметр только при методе шифрования SHA256 или SHA512\&. -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "ПРЕДОСТЕРЕЖЕНИЯ" .PP diff --git a/man/ru/man8/nologin.8 b/man/ru/man8/nologin.8 index 2ec0d03..dd071b9 100644 --- a/man/ru/man8/nologin.8 +++ b/man/ru/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net> .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "nologin" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "nologin" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/pwck.8 b/man/ru/man8/pwck.8 index 2866d4f..b052af4 100644 --- a/man/ru/man8/pwck.8 +++ b/man/ru/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "pwck" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "pwck" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ pwck \- verify the integrity of password files .SH "СИНТАКСИС" .HP \w'\fBpwck\fR\ 'u -\fBpwck\fR [параметры] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] +\fBpwck\fR [options] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/pwconv.8 b/man/ru/man8/pwconv.8 index edc5618..1dafb35 100644 --- a/man/ru/man8/pwconv.8 +++ b/man/ru/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "pwconv" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "pwconv" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,13 +31,13 @@ pwconv, pwunconv, grpconv, grpunconv \- преобразует пароли пользователей и групп в/из защищённую форму .SH "СИНТАКСИС" .HP \w'\fBpwconv\fR\ 'u -\fBpwconv\fR [\fIпараметры\fR] +\fBpwconv\fR [\fIoptions\fR] .HP \w'\fBpwunconv\fR\ 'u -\fBpwunconv\fR [\fIпараметры\fR] +\fBpwunconv\fR [\fIoptions\fR] .HP \w'\fBgrpconv\fR\ 'u -\fBgrpconv\fR [\fIпараметры\fR] +\fBgrpconv\fR [\fIoptions\fR] .HP \w'\fBgrpunconv\fR\ 'u -\fBgrpunconv\fR [\fIпараметры\fR] +\fBgrpunconv\fR [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/sulogin.8 b/man/ru/man8/sulogin.8 index f0620a3..37e61c9 100644 --- a/man/ru/man8/sulogin.8 +++ b/man/ru/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "sulogin" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "sulogin" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/useradd.8 b/man/ru/man8/useradd.8 index 94559cb..336ab74 100644 --- a/man/ru/man8/useradd.8 +++ b/man/ru/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "useradd" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "useradd" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,11 +31,11 @@ useradd \- регистрирует нового пользователя или изменяет информацию по умолчанию о новых пользователях .SH "СИНТАКСИС" .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR [\fIпараметры\fR] \fIУЧЁТНАЯ_ЗАПИСЬ\fR +\fBuseradd\fR [\fIoptions\fR] \fILOGIN\fR .HP \w'\fBuseradd\fR\ 'u \fBuseradd\fR \-D .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR \-D [\fIпараметры\fR] +\fBuseradd\fR \-D [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP When invoked without the @@ -169,7 +169,11 @@ variable in .RS 4 A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the \fB\-g\fR -option\&. The default is for the user to belong only to the initial group\&. +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -194,6 +198,10 @@ variable in or, by default, /etc/skel\&. .sp +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp Если возможно, выполняется копирование ACL и расширенных атрибутов\&. .RE .PP @@ -380,9 +388,21 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -defines the SELinux user for the new account\&. Without this option, a SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses \fBsemanage\fR(8) for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "Изменение значений по умолчанию" .PP @@ -469,7 +489,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or \fBls\fR output\&. .PP -Имена пользователей могут быть длиной не более 32 знаков\&. +Имена пользователей могут быть длиной не более 256 знаков\&. .SH "НАСТРОЙКА" .PP The following configuration variables in diff --git a/man/ru/man8/userdel.8 b/man/ru/man8/userdel.8 index 1103268..7d1c317 100644 --- a/man/ru/man8/userdel.8 +++ b/man/ru/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "userdel" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "userdel" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ userdel \- удаляет учётную запись и файлы пользователя .SH "СИНТАКСИС" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [параметры] \fIУЧЁТНАЯ_ЗАПИСЬ\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "ОПИСАНИЕ" .PP The diff --git a/man/ru/man8/usermod.8 b/man/ru/man8/usermod.8 index 232977c..fd85384 100644 --- a/man/ru/man8/usermod.8 +++ b/man/ru/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "usermod" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "usermod" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ usermod \- изменяет учётную запись пользователя .SH "СИНТАКСИС" .HP \w'\fBusermod\fR\ 'u -\fBusermod\fR [\fIпараметры\fR] \fIУЧЁТНАЯ_ЗАПИСЬ\fR +\fBusermod\fR [\fIoptions\fR] \fILOGIN\fR .SH "ОПИСАНИЕ" .PP The @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "ПРЕДОСТЕРЕЖЕНИЯ" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -336,7 +348,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/ru/man8/vipw.8 b/man/ru/man8/vipw.8 index 723fd50..82712ed 100644 --- a/man/ru/man8/vipw.8 +++ b/man/ru/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 11/08/2022 -.\" Manual: Команды управления системой -.\" Source: shadow-utils 4.13 +.\" Date: 06/21/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Russian .\" -.TH "vipw" "8" "11/08/2022" "shadow\-utils 4\&.13" "Команды управления системой" +.TH "vipw" "8" "06/21/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,16 @@ vipw, vigr \- позволяют редактировать файлы паролей, групп, теневых паролей пользователей или групп\&. .SH "СИНТАКСИС" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fIпараметры\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fIпараметры\fR] +\fBvigr\fR [\fIoptions\fR] .SH "ОПИСАНИЕ" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/shadow-man.xsl b/man/shadow-man.xsl new file mode 100644 index 0000000..a3408e6 --- /dev/null +++ b/man/shadow-man.xsl @@ -0,0 +1,9 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="http://docbook.sf.net/xmlns/string.subst/1.0" version="1.0"> + <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl"/> + <xsl:param name="vendordir"/> + + <xsl:param name="man.string.subst.map.local.pre"> + <ss:substitution oldstring="%vendordir%" newstring="{$vendordir}" /> + </xsl:param> +</xsl:stylesheet> diff --git a/man/su.1.xml b/man/su.1.xml index 02cae5a..5c50014 100644 --- a/man/su.1.xml +++ b/man/su.1.xml @@ -321,7 +321,7 @@ &CONSOLE; &CONSOLE_GROUPS; &DEFAULT_HOME; - <phrase condition="no_pam">&ENV_HZ;</phrase> + &ENV_HZ; &ENVIRON_FILE; &ENV_PATH; &ENV_SUPATH; diff --git a/man/subuid.5.xml b/man/subuid.5.xml index fc6b2c9..79a6b42 100644 --- a/man/subuid.5.xml +++ b/man/subuid.5.xml @@ -130,7 +130,7 @@ <refentrytitle>newuidmap</refentrytitle><manvolnum>1</manvolnum> </citerefentry>, <citerefentry> - <refentrytitle>newusers</refentrytitle><manvolnum>1</manvolnum> + <refentrytitle>newusers</refentrytitle><manvolnum>8</manvolnum> </citerefentry>, <citerefentry> <refentrytitle>subgid</refentrytitle><manvolnum>5</manvolnum> diff --git a/man/sulogin.8.xml b/man/sulogin.8.xml index da4a7e2..5fb60a9 100644 --- a/man/sulogin.8.xml +++ b/man/sulogin.8.xml @@ -106,7 +106,7 @@ </para> </refsect1> - <refsect1 id='configuration'> + <refsect1 condition="no_pam" id='configuration'> <title>CONFIGURATION The following configuration variables in diff --git a/man/sv/Makefile.am b/man/sv/Makefile.am index e64b7bc..70329ed 100644 --- a/man/sv/Makefile.am +++ b/man/sv/Makefile.am @@ -15,7 +15,6 @@ man_MANS = \ man1/groups.1 \ man8/grpck.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man8/logoutd.8 \ man1/newgrp.1 \ man8/nologin.8 \ @@ -29,6 +28,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/porttime.5 diff --git a/man/sv/Makefile.in b/man/sv/Makefile.in index d6b562c..b3d1b12 100644 --- a/man/sv/Makefile.in +++ b/man/sv/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/sv ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -333,16 +349,18 @@ top_srcdir = @top_srcdir@ man_MANS = man1/chage.1 man1/chsh.1 man1/expiry.1 man5/faillog.5 \ man8/faillog.8 man3/getspnam.3 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man5/gshadow.5 man8/lastlog.8 man8/logoutd.8 man1/newgrp.1 \ - man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ - man1/sg.1 man3/shadow.3 man5/suauth.5 man8/userdel.8 \ - man8/vigr.8 man8/vipw.8 $(am__append_1) + man5/gshadow.5 man8/logoutd.8 man1/newgrp.1 man8/nologin.8 \ + man1/passwd.1 man5/passwd.5 man8/pwck.8 man1/sg.1 \ + man3/shadow.3 man5/suauth.5 man8/userdel.8 man8/vigr.8 \ + man8/vipw.8 $(am__append_1) $(am__append_2) man_nopam = \ man5/limits.5 \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -351,8 +369,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -736,10 +761,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -747,7 +772,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -758,11 +783,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/sv/man1/chage.1 b/man/sv/man1/chage.1 index ae3159e..5e9c097 100644 --- a/man/sv/man1/chage.1 +++ b/man/sv/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "CHAGE" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "CHAGE" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chage \- \(:andra \(oaldringsinformation f\(:or anv\(:andarl\(:osenord .SH "SYNOPSIS" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fIflaggor\fR] \fIINLOGGNINGSNAMN\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "BESKRIVNING" .PP The @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/sv/man1/chsh.1 b/man/sv/man1/chsh.1 index f89f3d9..1a8f1db 100644 --- a/man/sv/man1/chsh.1 +++ b/man/sv/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "CHSH" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "CHSH" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chsh \- \(:andra inloggningsskal .SH "SYNOPSIS" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fIflaggor\fR] [\fIINLOGGNINGSNAMN\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "BESKRIVNING" .PP The @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/sv/man1/expiry.1 b/man/sv/man1/expiry.1 index e4891a4..f9625cc 100644 --- a/man/sv/man1/expiry.1 +++ b/man/sv/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "EXPIRY" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "EXPIRY" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man1/groups.1 b/man/sv/man1/groups.1 index b6e06d5..886569a 100644 --- a/man/sv/man1/groups.1 +++ b/man/sv/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GROUPS" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "GROUPS" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groups \- visa aktuella gruppnamn .SH "SYNOPSIS" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIanv\(:andare\fR] +\fBgroups\fR [\fIuser\fR] .SH "BESKRIVNING" .PP The diff --git a/man/sv/man1/id.1 b/man/sv/man1/id.1 index 6c94a96..4ae10de 100644 --- a/man/sv/man1/id.1 +++ b/man/sv/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "ID" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "ID" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man1/newgrp.1 b/man/sv/man1/newgrp.1 index 5f39894..3dbce36 100644 --- a/man/sv/man1/newgrp.1 +++ b/man/sv/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "NEWGRP" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "NEWGRP" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newgrp \- logga in i en ny grupp .SH "SYNOPSIS" .HP \w'\fBnewgrp\fR\ 'u -\fBnewgrp\fR [\-] [\fIgrupp\fR] +\fBnewgrp\fR [\-] [\fIgroup\fR] .SH "BESKRIVNING" .PP The diff --git a/man/sv/man1/passwd.1 b/man/sv/man1/passwd.1 index 823ed02..6259499 100644 --- a/man/sv/man1/passwd.1 +++ b/man/sv/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "PASSWD" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "PASSWD" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ passwd \- \(:andra anv\(:andarl\(:osenord .SH "SYNOPSIS" .HP \w'\fBpasswd\fR\ 'u -\fBpasswd\fR [\fIflaggor\fR] [\fIINLOGGNINGSNAMN\fR] +\fBpasswd\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "BESKRIVNING" .PP The @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP Anv\(:andaren fr\(oagas sedan tv\(oa g\(oanger efter ett ers\(:attande l\(:osenord\&. Den andra inmatningen j\(:amf\(:ors mot den f\(:orsta och b\(oada m\(oaste st\(:amma \(:overens f\(:or att l\(:osenordet ska \(:andras\&. .PP -Sedan testas l\(:osenordet f\(:or sin komplexitet\&. Som en allm\(:an riktlinje b\(:or l\(:osenord inneh\(oalla 6 till 8 tecken och inkluderas ett eller flera tecken fr\(oan var och en av f\(:oljande punkter: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -gemena bokst\(:aver ur alfabetet -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -siffrorna 0 till 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -skiljetecken -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Tips f\(:or anv\(:andarl\(:osenord" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -96,6 +61,8 @@ System encryption method is based on the NBS DES algorithm\&. More recent method .PP Problem i l\(:osenordss\(:akerheten brukar normalt komma fr\(oan slarvigt valda l\(:osenord eller hantering\&. Av denna anledning b\(:or du inte v\(:alja ett l\(:osenord som finns i en ordbok eller som m\(oaste skrivas ner\&. L\(:osenordet b\(:or heller inte vara ett korrekt namn, ditt personnummer, f\(:odelsedatum eller gatuadress\&. Dessa kan anv\(:andas som gissningar f\(:or att ta sig in i systemet\&. .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP You can find advice on how to choose a strong password on http://en\&.wikipedia\&.org/wiki/Password_strength .SH "FLAGGOR" .PP @@ -175,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 Display account status information\&. The status information consists of 7 fields\&. The first field is the user\*(Aqs login name\&. The second field indicates if the user account has a locked password (L), has no password (NP), or has a usable password (P)\&. The third field gives the date of the last password change\&. The next four fields are the minimum age, maximum age, warning period, and inactivity period for the password\&. These ages are expressed in days\&. @@ -205,6 +178,11 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "T\(:ANK P\(oA" .PP Password complexity checking may vary from site to site\&. The user is urged to select a password as complex as he or she feels comfortable with\&. @@ -277,7 +255,10 @@ invalid argument to option .SH "SE OCKS\(oA" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/sv/man1/sg.1 b/man/sv/man1/sg.1 index f8ad8d2..967f227 100644 --- a/man/sv/man1/sg.1 +++ b/man/sv/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Anv\(:andarkommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "SG" "1" "08-11-2022" "shadow\-utils 4\&.13" "Anv\(:andarkommandon" +.TH "SG" "1" "21-06-2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man3/shadow.3 b/man/sv/man3/shadow.3 index bdf65b2..a2de94d 100644 --- a/man/sv/man3/shadow.3 +++ b/man/sv/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Biblioteksanrop -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "SHADOW" "3" "08-11-2022" "shadow\-utils 4\&.13" "Biblioteksanrop" +.TH "SHADOW" "3" "21-06-2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -50,7 +50,7 @@ shadow, getspnam \- encrypted password file routines .PP \fIint putspent(struct spwd\fR \fI*p,\fR -\fIFIL\fR +\fIFILE\fR \fI*fp\fR\fI);\fR .PP \fIint lckpwdf();\fR diff --git a/man/sv/man5/faillog.5 b/man/sv/man5/faillog.5 index 06cf896..f4a5f75 100644 --- a/man/sv/man5/faillog.5 +++ b/man/sv/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 +.\" Date: 21-06-2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "FAILLOG" "5" "08-11-2022" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "21-06-2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/gshadow.5 b/man/sv/man5/gshadow.5 index 30a6ade..d90374a 100644 --- a/man/sv/man5/gshadow.5 +++ b/man/sv/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 +.\" Date: 21-06-2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GSHADOW" "5" "08-11-2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "21-06-2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ Denna fil f\(oar inte vara l\(:asbar av vanliga anv\(:andare om l\(:osenordss\(: .PP Each line of this file contains the following colon\-separated fields: .PP -\fBgruppnamn\fR +\fBgroup name\fR .RS 4 It must be a valid group name, which exist on the system\&. .RE .PP -\fBkrypterat l\(:osenord\fR +\fBencrypted password\fR .RS 4 Refer to \fBcrypt\fR(3) diff --git a/man/sv/man5/limits.5 b/man/sv/man5/limits.5 index 9e8986d..647d856 100644 --- a/man/sv/man5/limits.5 +++ b/man/sv/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 +.\" Date: 21-06-2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "LIMITS" "5" "08-11-2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LIMITS" "5" "21-06-2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/passwd.5 b/man/sv/man5/passwd.5 index ffa1db0..2d362b8 100644 --- a/man/sv/man5/passwd.5 +++ b/man/sv/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 +.\" Date: 21-06-2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "PASSWD" "5" "08-11-2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PASSWD" "5" "21-06-2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/porttime.5 b/man/sv/man5/porttime.5 index 0550292..e1da89a 100644 --- a/man/sv/man5/porttime.5 +++ b/man/sv/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 +.\" Date: 21-06-2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "PORTTIME" "5" "08-11-2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "21-06-2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/suauth.5 b/man/sv/man5/suauth.5 index 231b881..2caf2d3 100644 --- a/man/sv/man5/suauth.5 +++ b/man/sv/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 +.\" Date: 21-06-2024 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "SUAUTH" "5" "08-11-2022" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUAUTH" "5" "21-06-2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man8/faillog.8 b/man/sv/man8/faillog.8 index a885d40..98263bf 100644 --- a/man/sv/man8/faillog.8 +++ b/man/sv/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "FAILLOG" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "FAILLOG" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ faillog \- display faillog records or set login failure limits .SH "SYNOPSIS" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fIflaggor\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "BESKRIVNING" .PP \fBfaillog\fR diff --git a/man/sv/man8/groupadd.8 b/man/sv/man8/groupadd.8 index 4c65936..3bfea6f 100644 --- a/man/sv/man8/groupadd.8 +++ b/man/sv/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GROUPADD" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "GROUPADD" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupadd \- skapa en ny grupp .SH "SYNOPSIS" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fIFLAGGOR\fR] \fINEWGROUP\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "BESKRIVNING" .PP The diff --git a/man/sv/man8/groupdel.8 b/man/sv/man8/groupdel.8 index db14aa0..8b66eb6 100644 --- a/man/sv/man8/groupdel.8 +++ b/man/sv/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GROUPDEL" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "GROUPDEL" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- ta bort en grupp .SH "SYNOPSIS" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIflaggor\fR] \fIGRUPP\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "BESKRIVNING" .PP The diff --git a/man/sv/man8/groupmems.8 b/man/sv/man8/groupmems.8 index 3cf8360..4203d4a 100644 --- a/man/sv/man8/groupmems.8 +++ b/man/sv/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GROUPMEMS" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "GROUPMEMS" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/sv/man8/groupmod.8 b/man/sv/man8/groupmod.8 index 788fe08..d72f800 100644 --- a/man/sv/man8/groupmod.8 +++ b/man/sv/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GROUPMOD" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "GROUPMOD" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupmod \- \(:andra en gruppdefinition p\(oa systemet .SH "SYNOPSIS" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIflaggor\fR] \fIGRUPP\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "BESKRIVNING" .PP The diff --git a/man/sv/man8/grpck.8 b/man/sv/man8/grpck.8 index 58dccbe..665a4c2 100644 --- a/man/sv/man8/grpck.8 +++ b/man/sv/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "GRPCK" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "GRPCK" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- validera integriteten f\(:or gruppfiler .SH "SYNOPSIS" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [flaggor] [\fIgrupp\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "BESKRIVNING" .PP The diff --git a/man/sv/man8/lastlog.8 b/man/sv/man8/lastlog.8 index 63ce7fa..bf36f8d 100644 --- a/man/sv/man8/lastlog.8 +++ b/man/sv/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "LASTLOG" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "LASTLOG" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ lastlog \- reports the most recent login of all users or of a given user .SH "SYNOPSIS" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fIflaggor\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "BESKRIVNING" .PP \fBlastlog\fR @@ -128,5 +128,5 @@ Databastider f\(:or tidigare anv\(:andarinloggningar\&. 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)\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/sv/man8/logoutd.8 b/man/sv/man8/logoutd.8 index f6aa807..12677d8 100644 --- a/man/sv/man8/logoutd.8 +++ b/man/sv/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "LOGOUTD" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "LOGOUTD" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man8/nologin.8 b/man/sv/man8/nologin.8 index d507fcb..b943388 100644 --- a/man/sv/man8/nologin.8 +++ b/man/sv/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "NOLOGIN" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "NOLOGIN" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man8/pwck.8 b/man/sv/man8/pwck.8 index cee3cfa..fff0952 100644 --- a/man/sv/man8/pwck.8 +++ b/man/sv/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "PWCK" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "PWCK" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ pwck \- verify the integrity of password files .SH "SYNOPSIS" .HP \w'\fBpwck\fR\ 'u -\fBpwck\fR [flaggor] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] +\fBpwck\fR [options] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] .SH "BESKRIVNING" .PP The diff --git a/man/sv/man8/userdel.8 b/man/sv/man8/userdel.8 index d2c1a5e..c80ef7f 100644 --- a/man/sv/man8/userdel.8 +++ b/man/sv/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "USERDEL" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "USERDEL" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ userdel \- ta bort ett anv\(:andarkonto och relaterade filer .SH "SYNOPSIS" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [flaggor] \fIINLOGGNINGSNAMN\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "BESKRIVNING" .PP The diff --git a/man/sv/man8/vipw.8 b/man/sv/man8/vipw.8 index 4607794..4dc34dc 100644 --- a/man/sv/man8/vipw.8 +++ b/man/sv/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08-11-2022 -.\" Manual: Systemhanteringskommandon -.\" Source: shadow-utils 4.13 +.\" Date: 21-06-2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Swedish .\" -.TH "VIPW" "8" "08-11-2022" "shadow\-utils 4\&.13" "Systemhanteringskommandon" +.TH "VIPW" "8" "21-06-2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,16 @@ vipw, vigr \- redigera l\(:osenordet, grupp, skuggl\(:osenord eller skuggruppfil .SH "SYNOPSIS" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fIflaggor\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fIflaggor\fR] +\fBvigr\fR [\fIoptions\fR] .SH "BESKRIVNING" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/tr/Makefile.in b/man/tr/Makefile.in index fd1633d..ff1d884 100644 --- a/man/tr/Makefile.in +++ b/man/tr/Makefile.in @@ -172,6 +172,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -190,6 +192,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,9 +208,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -223,6 +232,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -231,6 +241,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -253,6 +265,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/man/uk/Makefile.am b/man/uk/Makefile.am index 30c8627..3fb5ffb 100644 --- a/man/uk/Makefile.am +++ b/man/uk/Makefile.am @@ -21,7 +21,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -44,6 +43,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/login.access.5 \ man5/porttime.5 diff --git a/man/uk/Makefile.in b/man/uk/Makefile.in index ce192e6..83e14fa 100644 --- a/man/uk/Makefile.in +++ b/man/uk/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/uk ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -332,19 +348,21 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man1/su.1 man5/suauth.5 \ - man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man1/su.1 man5/suauth.5 man8/useradd.8 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) man_nopam = \ man5/login.access.5 \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -353,8 +371,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -738,10 +763,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -749,7 +774,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -760,11 +785,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/uk/man1/chage.1 b/man/uk/man1/chage.1 index b35b7ac..3f51fd3 100644 --- a/man/uk/man1/chage.1 +++ b/man/uk/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "chage" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "chage" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,26 +31,28 @@ chage \- зміна даних щодо завершення строку дії пароля користувача .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fIпараметри\fR] \fIЗАПИС\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "ОПИС" .PP -Команда +The \fBchage\fR -змінює кількість днів між змінами паролів і дату останньої зміни пароля\&. Ці відомості використовує система для визначення того, коли користувач має змінювати пароль\&. +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\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBchage\fR, є такими: +The options which apply to the +\fBchage\fR +command are: .PP -\fB\-d\fR, \fB\-\-lastday\fR \fIОСТАННІЙ_ДЕНЬ\fR +\fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Встановити кількість днів з 1 січня 1970 року, коли пароль було востаннє змінено\&. Дату може бути також вказано у форматі РРРР\-ММ\-ДД (або форматі, який поширений у вашій країні)\&. Якщо для -\fIОСТАННІЙ_ДЕНЬ\fR -встановлено значення -\fI0\fR, користувачеві доведеться змінити пароль під час наступного входу до системи\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP -\fB\-E\fR, \fB\-\-expiredate\fR \fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR +\fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Встановити дату або кількість днів з 1 січня 1970 року, коли слід заборонити доступ до облікового запису користувача\&. Дату може бути також вказано у форматі РРРР\-ММ\-ДД (або форматі, який поширений у вашій країні)\&. Користувач, чий обліковий запис заблоковано, має звернутися до адміністратора системи, перш ніж знову зможе користуватися системою\&. .sp @@ -66,11 +68,11 @@ chage \-E $(date \-d +180days +%Y\-%m\-%d) .RE .\} .sp -Передавання числа +Passing the number \fI\-1\fR -у полі -\fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR -призведе до вилучення дати завершення строку дії облікового запису\&. +as the +\fIEXPIRE_DATE\fR +will remove an account expiration date\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -83,17 +85,17 @@ chage \-E $(date \-d +180days +%Y\-%m\-%d) При виведенні дат користуватися форматом РРРР\-ММ\-ДД\&. .RE .PP -\fB\-I\fR, \fB\-\-inactive\fR \fIНЕАКТИВНИЙ\fR +\fB\-I\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR .RS 4 -Встановити кількість днів неактивності після завершення строку дії пароля, перш ніж обліковий запис буде заблоковано\&. Значенням параметра -\fIНЕАКТИВНИЙ\fR -має бути кількість днів неактивності\&. Користувач, чий обліковий запис заблоковано, має звернутися до адміністратора системи, перш ніж знову зможе користуватися системою\&. +Set the number of days of inactivity after a password has expired before the account is locked\&. The +\fIINACTIVE\fR +option is the number of days of inactivity\&. A user whose account is locked must contact the system administrator before being able to use the system again\&. .sp -Передавання числа +Passing the number \fI\-1\fR -у полі -\fIНЕАКТИВНИЙ\fR -призведе до вилучення неактивності облікового запису\&. +as the +\fIINACTIVE\fR +will remove an account\*(Aqs inactivity\&. .RE .PP \fB\-l\fR, \fB\-\-list\fR @@ -101,29 +103,30 @@ chage \-E $(date \-d +180days +%Y\-%m\-%d) Показати відомості щодо застарівання облікового запису\&. .RE .PP -\fB\-m\fR, \fB\-\-mindays\fR \fIДНІ\fR +\fB\-m\fR, \fB\-\-mindays\fR\ \&\fIMIN_DAYS\fR .RS 4 -Встановити мінімальну кількість днів між змінами пароля -\fIДНІ\fR\&. Нульове значення для цього поля вказує, що користувач може змінювати пароль будь\-коли\&. +Set the minimum number of days between password changes to +\fIMIN_DAYS\fR\&. A value of zero for this field indicates that the user may change their password at any time\&. .RE .PP -\fB\-M\fR, \fB\-\-maxdays\fR \fIМАКСИМАЛЬНО_ДНІВ\fR +\fB\-M\fR, \fB\-\-maxdays\fR\ \&\fIMAX_DAYS\fR .RS 4 -Встановити максимальну кількість днів, протягом яких буде чинним пароль\&. Якщо -\fIМАКСИМАЛЬНО_ДНІВ\fR -разом із -\fIОСТАННІЙ_ДЕНЬ\fR -буде меншим за поточну дату, система проситиме користувача змінити пароль, перш ніж він зможе увійти до свого облікового запису\&. Цю подію можна наперед запланувати за допомогою параметра -\fB\-W\fR, використання якого призведе до того, що система заздалегідь попереджуватиме користувача про потребу змінити пароль\&. +Set the maximum number of days during which a password is valid\&. When +\fIMAX_DAYS\fR +plus +\fILAST_DAY\fR +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 +\fB\-W\fR +option, which provides the user with advance warning\&. .sp -Передавання числа +Passing the number \fI\-1\fR -у полі -\fIМАКСИМАЛЬНО_ДНІВ\fR -призведе до вилучення перевірки чинності паролів\&. +as +\fIMAX_DAYS\fR +will remove checking a password\*(Aqs validity\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -132,38 +135,48 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-W\fR, \fB\-\-warndays\fR \fIДНІ\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP +\fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 -Встановити кількість днів між попередженням про потребу у зміні пароля і завершенням строку дії пароля\&. Параметром -\fIДНІ\fR -є кількість днів до завершення строку дії пароля, коли система попереджуватиме користувача про те, що пароль невдовзі доведеться змінити\&. +Set the number of days of warning before a password change is required\&. The +\fIWARN_DAYS\fR +option is the number of days prior to the password expiring that a user will be warned their password is about to expire\&. .RE .PP -Якщо не буде вказано жодного параметра, +If none of the options are selected, \fBchage\fR -буде запущено в інтерактивному режимі \(em програма покаже користувачеві поточні значення для усіх полів\&. Введіть нове значення, щоб змінити поле або нічого не вводьте, щоб лишити поточне значення\&. Поточне значення буде взято у квадратні дужки (\fI[ ]\fR)\&. +operates in an interactive fashion, prompting the user with the current values for all of the fields\&. Enter the new value to change the field, or leave the line blank to use the current value\&. The current value is displayed between a pair of +\fI[ ]\fR +marks\&. .SH "ЗАУВАЖЕННЯ" .PP -Для роботи програми +The \fBchage\fR -потрібна доступність файла прихованих паролів\&. +program requires a shadow password file to be available\&. .PP Програма chage повідомлятиме дані лише на основі файла паролів shadow\&. Таким чином, налаштування з інших джерел (наприклад, LDAP або порожнього поля хешу пароля з файла passwd), які впливають на вхід користувачів до системи, не буде показано у виведених chage даних\&. .PP -Крім того, програма +The \fBchage\fR -не повідомлятиме про несумісності у файлах shadow і passwd (наприклад, про те, що у файлі passwd немає якогось запису)\&. Для пошуку подібних несумісностей можна скористатися програмою -\fBpwck\fR\&. +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. .PP -Користуватися командою +The \fBchage\fR -може лише користувач root, окрім варіанта з параметром -\fB\-l\fR, яким може скористатися непривілейований користувач для отримання даних щодо строку дії власного пароля або облікового запису\&. +command is restricted to the root user, except for the +\fB\-l\fR +option, which may be used by an unprivileged user to determine when their password or account is due to expire\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd @@ -177,28 +190,28 @@ directory\&. Only absolute paths are supported\&. .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBchage\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI1\fR .RS 4 -відмовлено у доступі +permission denied .RE .PP \fI2\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI15\fR .RS 4 -не вдалося знайти файл прихованих паролів +can\*(Aqt find the shadow password file .RE .SH "ДИВ\&. ТАКОЖ" .PP diff --git a/man/uk/man1/chfn.1 b/man/uk/man1/chfn.1 index 2e10ac2..fbce48e 100644 --- a/man/uk/man1/chfn.1 +++ b/man/uk/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "chfn" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "chfn" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,48 +31,50 @@ chfn \- зміна справжнього імені користувача і відомостей щодо нього .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBchfn\fR\ 'u -\fBchfn\fR [\fIпараметри\fR] [\fIЗАПИС\fR] +\fBchfn\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "ОПИС" .PP -Команда +The \fBchfn\fR -змінює повне ім\*(Aqя користувача, номер кімнати в офісі, номер телефону в офісі і дані щодо домашнього телефону для облікового запису користувача\&. Ці дані, зазвичай, виводить +command changes user fullname, office room number, office phone number, and home phone number information for a user\*(Aqs account\&. This information is typically printed by \fBfinger\fR(1) -та подібні програми\&. Звичайні користувачі можуть змінювати значення полів лише для власного облікового запису, відповідно до обмежень у -/etc/login\&.defs\&. (Типовими налаштуваннями користувачам заборонено змінювати власне повне ім\*(Aqя\&.) Надкористувач може змінювати будь\-яке поле будь\-якого облікового запису\&. Крім того, лише надкористувач може використовувати параметр +and similar programs\&. A normal user may only change the fields for her own account, subject to the restrictions in +/etc/login\&.defs\&. (The default configuration is to prevent users from changing their fullname\&.) The superuser may change any field for any account\&. Additionally, only the superuser may use the \fB\-o\fR -для зміни невизначених частин поля GECOS\&. +option to change the undefined portions of the GECOS field\&. .PP -Ці поля не повинні містити двокрапок\&. Окрім поля -\fIother\fR, у полях не повинно міститися ком та знаків рівності\&. Також рекомендуємо уникати символів поза US\-ASCII, втім, примусово це обмеження застосовується лише до номерів телефонів\&. Поле +These fields must not contain any colons\&. Except for the \fIother\fR -використовують для зберігання облікових даних, які використовують інші програми\&. +field, they should not contain any comma or equal sign\&. It is also recommended to avoid non\-US\-ASCII characters, but this is only enforced for the phone numbers\&. The +\fIother\fR +field is used to store accounting information used by other applications\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBchfn\fR, є такими: +The options which apply to the +\fBchfn\fR +command are: .PP -\fB\-f\fR, \fB\-\-full\-name\fR \fIІМ\*(AqЯ_ПОВНІСТЮ\fR +\fB\-f\fR, \fB\-\-full\-name\fR\ \&\fIFULL_NAME\fR .RS 4 Змінити повне ім\*(Aqя користувача\&. .RE .PP -\fB\-h\fR, \fB\-\-home\-phone\fR \fIДОМАШНІЙ_ТЕЛЕФОН\fR +\fB\-h\fR, \fB\-\-home\-phone\fR\ \&\fIHOME_PHONE\fR .RS 4 Змінити домашній телефон користувача\&. .RE .PP -\fB\-o\fR, \fB\-\-other\fR \fIІНШЕ\fR +\fB\-o\fR, \fB\-\-other\fR\ \&\fIOTHER\fR .RS 4 Змінити інші відомості GECOS користувача\&. Це поле використовують для зберігання облікових даних, які використовують інші програми, його вміст може змінювати надкористувач\&. .RE .PP -\fB\-r\fR, \fB\-\-room\fR \fIНОМЕР_КІМНАТИ\fR +\fB\-r\fR, \fB\-\-room\fR\ \&\fIROOM_NUMBER\fR .RS 4 Змінити номер кімнати користувача\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -86,21 +88,23 @@ directory\&. Only absolute paths are supported\&. Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-w\fR, \fB\-\-work\-phone\fR \fIРОБОЧИЙ_ТЕЛЕФОН\fR +\fB\-w\fR, \fB\-\-work\-phone\fR\ \&\fIWORK_PHONE\fR .RS 4 Змінити робочий телефон користувача\&. .RE .PP -Якщо не буде вказано жодного параметра, +If none of the options are selected, \fBchfn\fR -буде запущено в інтерактивному режимі \(em програма покаже користувачеві поточні значення для усіх полів\&. Введіть нове значення, щоб змінити поле або нічого не вводьте, щоб лишити поточне значення\&. Поточне значення буде взято у квадратні дужки (\fB[ ]\fR)\&. Без параметрів +operates in an interactive fashion, prompting the user with the current values for all of the fields\&. Enter the new value to change the field, or leave the line blank to use the current value\&. The current value is displayed between a pair of +\fB[ ]\fR +marks\&. Without options, \fBchfn\fR -попросить вказати поточний обліковий запис користувача\&.\&. +prompts for the current user account\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/login\&.defs diff --git a/man/uk/man1/chsh.1 b/man/uk/man1/chsh.1 index ce8c3da..50d1566 100644 --- a/man/uk/man1/chsh.1 +++ b/man/uk/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "chsh" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "chsh" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,23 +31,24 @@ chsh \- зміна оболонки входу .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fIпараметри\fR] [\fIЗАПИС\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "ОПИС" .PP -Команда +The \fBchsh\fR -змінює оболонку входу користувача\&. Команда визначає назву початкової команди входу користувача\&. Звичайний користувач може змінювати оболонку входу лише для власного облікового запису; надкористувач може змінювати оболонку входу для будь\-якого облікового запису\&. +command changes the user login shell\&. This determines the name of the user\*(Aqs initial login command\&. A normal user may only change the login shell for her own account; the superuser may change the login shell for any account\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBchsh\fR, є такими: +The options which apply to the +\fBchsh\fR +command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -56,27 +57,37 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-s\fR, \fB\-\-shell\fR \fIОБОЛОНКА\fR +\fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 Назва нової оболонки для входу користувача\&. Встановлення для цього поля порожнього значення призведе до того, що система вибере типову оболонку для входу\&. .RE .PP -Якщо не буде вказано параметра -\fB\-s\fR, +If the +\fB\-s\fR +option is not selected, \fBchsh\fR -буде запущено в інтерактивному режимі \(em програма покаже користувачеві поточне значення для оболонки входу\&. Введіть нове значення, щоб змінити оболонку або нічого не вводьте, щоб лишити поточну\&. Поточну оболонку буде взято у квадратні дужки (\fI[ ]\fR)\&. +operates in an interactive fashion, prompting the user with the current login shell\&. Enter the new value to change the shell, or leave the line blank to use the current one\&. The current shell is displayed between a pair of +\fI[ ]\fR +marks\&. .SH "ЗАУВАЖЕННЯ" .PP -Єдиним обмеженням, яке накладають на оболонку входу є те, що назва команди має бути частиною списку у -/etc/shells, якщо команду не викликано від імені надкористувача\&. Надкористувач може додавати будь\-яке значення\&. Власники облікових записів із обмеженою оболонкою для входу не може змінювати власну оболонку\&. З цієї причини не варто додавати +The only restriction placed on the login shell is that the command name must be listed in +/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh -у -/etc/shells, оскільки випадкова зміна обмеженої командної оболонки призведе до повної заборони для користувача змінювати оболонку входу та початкову\&. +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd diff --git a/man/uk/man1/expiry.1 b/man/uk/man1/expiry.1 index f51a451..fc6211b 100644 --- a/man/uk/man1/expiry.1 +++ b/man/uk/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "expiry" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "expiry" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,17 @@ expiry \- перевірка і встановлення правил застарівання паролів .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBexpiry\fR\ 'u -\fBexpiry\fR \fIпараметр\fR +\fBexpiry\fR \fIoption\fR .SH "ОПИС" .PP -Команда +The \fBexpiry\fR -перевіряє (\fB\-c\fR) поточний пароль на застарівання і примушує до його зміни (\fB\-f\fR), якщо це потрібно\&. Команду можна викликати від імені звичайного користувача\&. +command checks (\fB\-c\fR) the current password expiration and forces (\fB\-f\fR) changes when required\&. It is callable as a normal user command\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBexpiry\fR, є такими: +The options which apply to the +\fBexpiry\fR +command are: .PP \fB\-c\fR, \fB\-\-check\fR .RS 4 diff --git a/man/uk/man1/gpasswd.1 b/man/uk/man1/gpasswd.1 index 5094275..6e872c8 100644 --- a/man/uk/man1/gpasswd.1 +++ b/man/uk/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "gpasswd" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "gpasswd" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,59 +28,63 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "НАЗВА" -gpasswd \- адміністрування /etc/group і /etc/gshadow +gpasswd \- administer /etc/group and /etc/gshadow .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgpasswd\fR\ 'u -\fBgpasswd\fR [\fIпараметр\fR] \fIгрупа\fR +\fBgpasswd\fR [\fIoption\fR] \fIgroup\fR .SH "ОПИС" .PP -Команду +The \fBgpasswd\fR -використовують для адміністрування -/etc/group, and /etc/gshadow\&. У кожної групи може складатися з -адміністраторів, -учасників і мати пароль\&. +command is used to administer +/etc/group, and /etc/gshadow\&. Every group can have +administrators, +members and a password\&. .PP -Адміністратори системи можуть скористатися параметром +System administrators can use the \fB\-A\fR -для визначення адміністраторів групи і параметром +option to define group administrator(s) and the \fB\-M\fR -для визначення учасників\&. Вони мають усі права адміністраторів і учасників груп\&. +option to define members\&. They have all rights of group administrators and members\&. .PP -Виклик -\fBgpasswd\fR, якщо його здійснює групи \(Foадміністратор групи\(Fc лише із назвою групи, призведе до запиту щодо нового пароля для групи -\fIгрупа\fR\&. +\fBgpasswd\fR +called by +a group administrator +with a group name only prompts for the new password of the +\fIgroup\fR\&. .PP -Якщо пароль встановлено, учасники зможуть продовжити користуватися +If a password is set the members can still use \fBnewgrp\fR(1) -без пароля, а тим, хто не є учасником, доведеться вказати пароль\&. +without a password, and non\-members must supply the password\&. .SS "Нотатки щодо паролів груп" .PP Паролі груп мають неусувну проблему захисту, оскільки пароль знатимуть декілька осіб\&. Втім, групи є корисним інструментом для забезпечення взаємодії між різними користувачами\&. .SH "ПАРАМЕТРИ" .PP -Окрім параметрів +Except for the \fB\-A\fR -і -\fB\-M\fR, параметри не можна поєднувати\&. +and +\fB\-M\fR +options, the options cannot be combined\&. .PP -Параметри, які застосовують до команди -\fBgpasswd\fR, є такими: +The options which apply to the +\fBgpasswd\fR +command are: .PP -\fB\-a\fR, \fB\-\-add\fR \fIкористувач\fR +\fB\-a\fR, \fB\-\-add\fR\ \&\fIuser\fR .RS 4 -Додати -\fIкористувач\fR -до іменованого -\fIгрупа\fR\&. +Add the +\fIuser\fR +to the named +\fIgroup\fR\&. .RE .PP -\fB\-d\fR, \fB\-\-delete\fR \fIкористувач\fR +\fB\-d\fR, \fB\-\-delete\fR\ \&\fIuser\fR .RS 4 -Вилучити -\fIкористувач\fR -з іменованого -\fIгрупа\fR\&. +Remove the +\fIuser\fR +from the named +\fIgroup\fR\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -88,7 +92,7 @@ gpasswd \- адміністрування /etc/group і /etc/gshadow Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-Q\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-Q\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -99,44 +103,42 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-r\fR, \fB\-\-remove\-password\fR .RS 4 -Вилучити пароль із вказаної за назвою групи -\fIгрупа\fR\&. Пароль групи стане порожнім\&. Скористатися +Remove the password from the named +\fIgroup\fR\&. The group password will be empty\&. Only group members will be allowed to use \fBnewgrp\fR -для долучення до іменованої групи -\fIгрупа\fR -зможуть лише учасники групи\&. +to join the named +\fIgroup\fR\&. .RE .PP \fB\-R\fR, \fB\-\-restrict\fR .RS 4 -Обмежити доступ до вказаної за назвою групи -\fIгрупа\fR\&. Для пароля групи буде встановлено значення \(Fo!\(Fc\&. Скористатися +Restrict the access to the named +\fIgroup\fR\&. The group password is set to "!"\&. Only group members with a password will be allowed to use \fBnewgrp\fR -для долучення до іменованої групи -\fIгрупа\fR -зможуть лише учасники групи з паролем\&. +to join the named +\fIgroup\fR\&. .RE .PP -\fB\-A\fR, \fB\-\-administrators\fR \fIкористувач\fR,\&.\&.\&. +\fB\-A\fR, \fB\-\-administrators\fR\ \&\fIuser\fR,\&.\&.\&. .RS 4 Встановити список адміністративних користувачів\&. .RE .PP -\fB\-M\fR, \fB\-\-members\fR \fIкористувач\fR,\&.\&.\&. +\fB\-M\fR, \fB\-\-members\fR\ \&\fIuser\fR,\&.\&.\&. .RS 4 Встановити список учасників групи\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP -Цей інструмент працює лише з файлами +This tool only operates on the /etc/group and /etc/gshadow files\&. -Отже, за його допомогою ви не зможете внести зміни до груп NIS або LDAP\&. Зміни доведеться вносити на відповідному сервері\&. +Thus you cannot change any NIS or LDAP group\&. This must be performed on the corresponding server\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -155,4 +157,4 @@ and /etc/gshadow files\&. \fBgroupdel\fR(8), \fBgroupmod\fR(8), \fBgrpck\fR(8), -\fBгрупа\fR(5), \fBgshadow\fR(5)\&. +\fBgroup\fR(5), \fBgshadow\fR(5)\&. diff --git a/man/uk/man1/groups.1 b/man/uk/man1/groups.1 index ac7d0d4..420b935 100644 --- a/man/uk/man1/groups.1 +++ b/man/uk/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "groups" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "groups" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,24 +31,25 @@ groups \- показ поточних назв груп .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fIкористувач\fR] +\fBgroups\fR [\fIuser\fR] .SH "ОПИС" .PP -Команда +The \fBgroups\fR -виводить назви або значення ідентифікаторів поточних груп\&. Якщо у значення немає відповідного запису у -/etc/group, значення буде виведено як числове значення групи\&. Використання необов\*(Aqязкового параметра -\fIкористувач\fR -призведе до показу груп іменованого користувача\&. +command displays the current group names or ID values\&. If the value does not have a corresponding entry in +/etc/group, the value will be displayed as the numerical group value\&. The optional +\fIuser\fR +parameter will display the groups for the named user\&. .SH "ЗАУВАЖЕННЯ" .PP -Для систем, у яких не передбачено підтримку додаткових груп (див\&. -\fBinitgroups\fR(3)) буде показано відомості з -/etc/group\&. Користувач має скористатися +Systems which do not support supplementary groups (see +\fBinitgroups\fR(3)) will have the information from +/etc/group +reported\&. The user must use \fBnewgrp\fR -або +or \fBsg\fR -для зміни його поточного справжнього і ефективного ідентифікатора групи\&. +to change his current real and effective group ID\&. .SH "ФАЙЛИ" .PP /etc/group diff --git a/man/uk/man1/id.1 b/man/uk/man1/id.1 index 50baa95..f37ac67 100644 --- a/man/uk/man1/id.1 +++ b/man/uk/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "id" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "id" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man1/login.1 b/man/uk/man1/login.1 index 01dd61e..411f26d 100644 --- a/man/uk/man1/login.1 +++ b/man/uk/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "login" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "login" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,74 +31,78 @@ login \- розпочати сеанс у системі .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIкористувач\fR] [\fIСЕРЕДОВИЩЕ=ЗМІННА\fR...] +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIusername\fR] [\fIENV=VAR\fR...] .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIкористувач\fR +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIusername\fR .HP \w'\fBlogin\fR\ 'u \fBlogin\fR [\-p] \-r\ \fIhost\fR .SH "ОПИС" .PP -Програму +The \fBlogin\fR -призначено для встановлення нового сеансу роботи з системою\&. Зазвичай, її виклик відбувається автоматично у відповідь на запит +program is used to establish a new session with the system\&. It is normally invoked automatically by responding to the \fIlogin:\fR -у терміналі користувача\&. +prompt on the user\*(Aqs terminal\&. \fBlogin\fR -може бути спеціалізованою для оболонки і непридатною до виклику у форматі підлеглого процесу\&. Якщо програму викликано з оболонки, +may be special to the shell and may not be invoked as a sub\-process\&. When called from a shell, \fBlogin\fR -має бути виконано як -\fBexec login\fR, що спричинить вихід користувача з поточної оболонки (і, таким чином, запобігатиме поверненню користувача, який увійшов до системи, до сеансу того, хто віддав команду)\&. Спроба виконати +should be executed as +\fBexec login\fR +which will cause the user to exit from the current shell (and thus will prevent the new logged in user to return to the session of the caller)\&. Attempting to execute \fBlogin\fR -з будь\-якої командної оболонки, окрім оболонки входу, призведе до виведення повідомлення про помилку\&. +from any shell but the login shell will produce an error message\&. .PP -Після цього, користувачеві, якщо це потрібно, буде запропоновано ввести пароль\&. Відтворення пароля на екрані буде вимкнено, щоб запобігти розкриттю пароля\&. Кількість спроб буде суттєво обмежено\&. При перевищенні граничної кількості спроб ввести пароль +The user is then prompted for a password, where appropriate\&. Echoing is disabled to prevent revealing the password\&. Only a small number of password failures are permitted before \fBlogin\fR -завершить роботу і перерве зв\*(Aqязок для обміну даними\&. +exits and the communications link is severed\&. .PP -Якщо для вашого облікового запису було увімкнено застарівання паролів, програма може попросити вас ввести новий пароль, перш ніж продовжити роботу\&. Вам доведеться ввести старий і новий пароль, перш ніж продовжити роботу\&. Будь ласка, зверніться до підручника з -\fBpasswd\fR(1), щоб дізнатися більше\&. +If password aging has been enabled for your account, you may be prompted for a new password before proceeding\&. You will be forced to provide your old password and the new password before continuing\&. Please refer to +\fBpasswd\fR(1) +for more information\&. .PP -Після успішного входу до системи вас буде проінформовано про усі повідомлення системи та наявність пошти\&. Ви можете вимкнути виведення даних до файла повідомлень системи, -/etc/motd, створенням файла нульового розміру +After a successful login, you will be informed of any system messages and the presence of mail\&. You may turn off the printing of the system message file, +/etc/motd, by creating a zero\-length file \&.hushlogin -у вашому каталозі для входу\&. Повідомленням про пошту буде одне з таких повідомлень: \(Fo\fIВи отримали нову пошту\&.\fR\(Fc, \(Fo\fIДля вас є пошта\&.\fR\(Fc або \(Fo\fIПошти немає\&.\fR\(Fc, відповідно до стану вашої поштової скриньки\&. +in your login directory\&. The mail message will be one of "\fIYou have new mail\&.\fR", "\fIYou have mail\&.\fR", or "\fINo Mail\&.\fR" according to the condition of your mailbox\&. .PP -Ваші ідентифікатори користувача і групи буде встановлено відповідно до значень у файлі -/etc/passwd\&. Значення +Your user and group ID will be set according to their values in the +/etc/passwd +file\&. The value for \fB$HOME\fR, \fB$SHELL\fR, \fB$PATH\fR, -\fB$LOGNAME\fR -і +\fB$LOGNAME\fR, and \fB$MAIL\fR -буде встановлено відповідно до відповідних полів у записі пароля\&. Значення ulimit, umask і nice також може бути встановлено відповідно до записів у полі GECOS\&. +are set according to the appropriate fields in the password entry\&. Ulimit, umask and nice values may also be set according to entries in the GECOS field\&. .PP -У деяких встановлених системах змінну середовища +On some installations, the environmental variable \fB$TERM\fR -буде ініціалізовано значенням типу термінала у вашому рядку tty, як це вказано у +will be initialized to the terminal type on your tty line, as specified in /etc/ttytype\&. .PP Також може бути виконано скрипт ініціалізації для вашого інтерпретатора командного рядка\&. Будь ласка, зверніться до відповідного розділу підручника, щоб дізнатися більше про цю функціональну можливість\&. .PP Вхід до підсистеми буде позначено наявністю \(Fo*\(Fc як першого символу оболонки входу\&. Заданий домашній каталог буде використано як кореневий каталог нової файлової системи, до якої користувач насправді увійшов\&. .PP -Програма +The \fBlogin\fR -НЕ відповідає за вилучення записів користувачів з файла utmp\&. За чищення видимого власника сеансу термінала відповідають +program is NOT responsible for removing users from the utmp file\&. It is the responsibility of \fBgetty\fR(8) -і -\fBinit\fR(8)\&. Якщо ви користуєтеся +and +\fBinit\fR(8) +to clean up apparent ownership of a terminal session\&. If you use \fBlogin\fR -з запиту командної оболонки без -\fBexec\fR, використаний вами обліковий запис користувача продовжуватиме \(Foпрацювати\(Fc у системі, навіть після того, як ви вийдете з \(Foпідлеглого сеансу\(Fc\&. +from the shell prompt without +\fBexec\fR, the user you use will continue to appear to be logged in even after you log out of the "subsession"\&. .SH "ПАРАМЕТРИ" .PP \fB\-f\fR .RS 4 Не виконувати розпізнавання, користувача попередньо розпізнано\&. .sp -Зауваження: у цьому випадку обов\*(Aqязковим є -\fIкористувач\fR\&. +Note: In that case, +\fIusername\fR +is mandatory\&. .RE .PP \fB\-h\fR @@ -116,40 +120,40 @@ login \- розпочати сеанс у системі Виконати протокол автоматичного входу для rlogin\&. .RE .PP -Параметри +The \fB\-r\fR, \fB\-h\fR -і +and \fB\-f\fR -використовують, лише якщо +options are only used when \fBlogin\fR -викликано від імені користувача root\&. +is invoked by root\&. .SH "ЗАСТЕРЕЖЕННЯ" .PP -У цієї версії +This version of \fBlogin\fR -багато параметрів збирання\&. У певній збірці може бути використано лише частину з них\&. +has many compilation options, only some of which may be in use at any particular site\&. .PP Розташування файлів є різним у різних конфігураціях системи\&. .PP -Програма +The \fBlogin\fR -НЕ відповідає за вилучення записів користувачів з файла utmp\&. За чищення видимого власника сеансу термінала відповідають +program is NOT responsible for removing users from the utmp file\&. It is the responsibility of \fBgetty\fR(8) -і -\fBinit\fR(8)\&. Якщо ви користуєтеся +and +\fBinit\fR(8) +to clean up apparent ownership of a terminal session\&. If you use \fBlogin\fR -з запиту командної оболонки без -\fBexec\fR, використаний вами обліковий запис користувача продовжуватиме \(Foпрацювати\(Fc у системі, навіть після того, як ви вийдете з \(Foпідлеглого сеансу\(Fc\&. +from the shell prompt without +\fBexec\fR, the user you use will continue to appear to be logged in even after you log out of the "subsession"\&. .PP -Як і з будь\-якою програмою, вигляд -\fBlogin\fR -може бути підроблено\&. Якщо до комп\*(Aqютера мають фізичний доступ сторонні користувачі, зловмисник може скористатися цим для отримання пароля наступного за ним користувача комп\*(Aqютера\&. У Linux користувачі можуть скористатися механізмом SAK для ініціалізації надійного шляху і запобігання атакам цього типу\&. +As with any program, +\fBlogin\fR\*(Aqs appearance can be faked\&. If non\-trusted users have physical access to a machine, an attacker could use this to obtain the password of the next person coming to sit in front of the machine\&. Under Linux, the SAK mechanism can be used by users to initiate a trusted path and prevent this kind of attack\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /var/run/utmp diff --git a/man/uk/man1/newgrp.1 b/man/uk/man1/newgrp.1 index 2d15737..94f0974 100644 --- a/man/uk/man1/newgrp.1 +++ b/man/uk/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "newgrp" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "newgrp" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,30 +31,35 @@ newgrp \- увійти до нової групи .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBnewgrp\fR\ 'u -\fBnewgrp\fR [\-] [\fIгрупа\fR] +\fBnewgrp\fR [\-] [\fIgroup\fR] .SH "ОПИС" .PP -Команду +The \fBnewgrp\fR -призначено для зміни поточного ідентифікатора групи під час сеансу роботи у системі\&. Якщо вказано необов\*(Aqязковий прапорець -\fB\-\fR, середовища користувача буде повторно ініціалізовано так, наче користувач знову увійшов до системи\&. Якщо прапорець не вказано, лишиться незмінним поточне середовища, включно із поточним робочим каталогом\&. +command is used to change the current group ID during a login session\&. If the optional +\fB\-\fR +flag is given, the user\*(Aqs environment will be reinitialized as though the user had logged in, otherwise the current environment, including current working directory, remains unchanged\&. .PP \fBnewgrp\fR -змінює поточний справжній ідентифікатор групи на ідентифікатор іменованої групи або ідентифікатор типової групи зі списку у -/etc/passwd, якщо назву групи не вказано\&. +changes the current real group ID to the named group, or to the default group listed in +/etc/passwd +if no group name is given\&. \fBnewgrp\fR -також намагається додати групу до набору груп користувача\&. Якщо команду віддано не від імені root, система попросить користувача ввести пароль, якщо у нього немає пароля (у -/etc/shadow, якщо цей користувач має запис у файлі прихованих паролів, або у -/etc/passwd, якщо це не так), а у групи є, або якщо користувача немає у списку учасників, а групу захищено паролем\&. Користувачеві буде відмовлено у доступі, якщо пароль групи є порожнім, а користувача немає у списку її учасників\&. +also tries to add the group to the user groupset\&. If not root, the user will be prompted for a password if she does not have a password (in +/etc/shadow +if this user has an entry in the shadowed password file, or in +/etc/passwd +otherwise) and the group does, or if the user is not listed as a member and the group has a password\&. The user will be denied access if the group password is empty and the user is not listed as a member\&. .PP -Якщо у цієї групи є запис у -/etc/gshadow, список учасників і пароль до цієї групи буде взято з цього файла\&. Якщо запису немає, буде враховано запис у -/etc/group\&. +If there is an entry for this group in +/etc/gshadow, then the list of members and the password of this group will be taken from this file, otherwise, the entry in +/etc/group +is considered\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd @@ -83,4 +88,4 @@ newgrp \- увійти до нової групи \fBsu\fR(1), \fBsg\fR(1), \fBgpasswd\fR(1), -\fBгрупа\fR(5), \fBgshadow\fR(5)\&. +\fBgroup\fR(5), \fBgshadow\fR(5)\&. diff --git a/man/uk/man1/passwd.1 b/man/uk/man1/passwd.1 index 9ccb811..cf6d809 100644 --- a/man/uk/man1/passwd.1 +++ b/man/uk/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "passwd" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "passwd" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,81 +31,50 @@ passwd \- зміна пароля користувача .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBpasswd\fR\ 'u -\fBpasswd\fR [\fIпараметри\fR] [\fIЗАПИС\fR] +\fBpasswd\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "ОПИС" .PP -Команда +The \fBpasswd\fR -змінює паролі до облікових записів користувачів\&. Звичайний користувач може змінювати пароль лише для власного облікового запису, а надкористувач може змінювати пароль для будь\-якого облікового запису\&. +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\&. \fBpasswd\fR -також змінює період чинності облікового запису або пов\*(Aqязаного з ним пароля\&. +also changes the account or associated password validity period\&. .SS "Зміни паролів" .PP Спочатку програма попросить користувача ввести старий пароль, якщо такий існує\&. Потім цей пароль буде зашифровано і порівняно із збереженим паролем\&. Користувачу буде надано лише одну спробу ввести правильний пароль\&. Надкористувач може обійти цей крок, тому може змінювати забуті паролі\&. .PP -Після введення пароля буде перевірено дані щодо віку пароля, щоб визначити, чи може користувач змінювати пароль на поточний момент часу\&. Якщо користувач не може цього робити, +After the password has been entered, password aging information is checked to see if the user is permitted to change the password at this time\&. If not, \fBpasswd\fR -відмовить у зміні пароля і завершить роботу\&. +refuses to change the password and exits\&. .PP Потім програма попросить користувача ввести пароль\-замінник двічі\&. Друге введене значення буде порівняно із першим \(em вони мають бути однаковими, щоб пароль було змінено\&. .PP -Далі, пароль буде перевірено на складність\&. Загальним правилом є те, що пароль має складатися з від 6 до 8 символів, включаючи один або декілька символів з кожного з таких наборів: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -малі літери латинської абетки -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -цифри від 0 до 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -символи пунктуації -.RE -.PP -До пароля не можна включати типові символи вилучення або витирання системи\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -не прийме пароля, який не є достатньо складним\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "Підказки для паролів користувача" .PP -Захист пароля залежить від складності алгоритму шифрування та розміру простору ключів\&. Застарілий спосіб шифрування системи +The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy \fIUNIX\fR -засновано на алгоритмі DES NBS\&. На сьогодні, рекомендують сучасніші методи (див\&. -\fBENCRYPT_METHOD\fR)\&. Розмір простору ключів залежить від випадковості пароля, яку було вибрано\&. +System encryption method is based on the NBS DES algorithm\&. More recent methods are now recommended (see +\fBENCRYPT_METHOD\fR)\&. The size of the key space depends upon the randomness of the password which is selected\&. .PP Послаблення захисту паролями, зазвичай, є результатом необдуманого вибору пароля або поводження з ним\&. З цієї причини, не слід вибирати пароль зі словника або десь його записувати\&. Не слід також вибирати для пароля власне ім\*(Aqя, номер водійського посвідчення, дату народження або назву вулиці, на якій ви мешкаєте\&. Вибір будь\-якого з цих варіантів може призвести до вгадування пароля і компрометації захисту системи\&. .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP Поради щодо вибору надійного пароля можна знайти на сторінці https://uk\&.wikipedia\&.org/wiki/Надійність_пароля .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBpasswd\fR, є такими: +The options which apply to the +\fBpasswd\fR +command are: .PP \fB\-a\fR, \fB\-\-all\fR .RS 4 -Цим параметром можна скористатися лише у поєднанні із -\fB\-S\fR\&. Його використання призведе до показу стану для усіх користувачів\&. +This option can be used only with +\fB\-S\fR +and causes show status for all users\&. .RE .PP \fB\-d\fR, \fB\-\-delete\fR @@ -123,11 +92,11 @@ passwd \- зміна пароля користувача Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-i\fR, \fB\-\-inactive\fR \fIНЕАКТИВНИЙ\fR +\fB\-i\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR .RS 4 -Цей параметр використовують для вимикання облікового запису за вказану кількість днів після завершення строку дії пароля\&. Після того, як мине -\fIНЕАКТИВНИЙ\fR -днів з моменту завершення строку дії пароля, користувач не зможе увійти до облікового запису\&. +This option is used to disable an account after the password has been expired for a number of days\&. After a user account has had an expired password for +\fIINACTIVE\fR +days, the user may no longer sign on to the account\&. .RE .PP \fB\-k\fR, \fB\-\-keep\-tokens\fR @@ -139,17 +108,17 @@ passwd \- зміна пароля користувача .RS 4 Заблокувати пароль іменованого облікового запису\&. За допомогою цього параметра можна вимкнути пароль, змінивши його на значення, яке не відповідає зашифрованому значенню (буде додано \(aa!\(aa на початку пароля)\&. .sp -Зауважте, що це не призведе до вимикання облікового запису\&. Користувач зможе входити до системи за допомогою іншого жетона розпізнавання (наприклад ключа SSH)\&. Щоб вимкнути обліковий запис, адміністраторам слід користуватися +Note that this does not disable the account\&. The user may still be able to login using another authentication token (e\&.g\&. an SSH key)\&. To disable the account, administrators should use \fBusermod \-\-expiredate 1\fR -(ця команда встановить для дати завершення строку дії облікового запису значення 2 січня 1970 року)\&. +(this set the account\*(Aqs expire date to Jan 2, 1970)\&. .sp Користувачі із заблокованим паролем не зможуть змінювати власний пароль\&. .RE .PP -\fB\-n\fR, \fB\-\-mindays\fR \fIДНІ\fR +\fB\-n\fR, \fB\-\-mindays\fR\ \&\fIMIN_DAYS\fR .RS 4 -Встановити мінімальну кількість днів між змінами пароля -\fIДНІ\fR\&. Нульове значення для цього поля вказує, що користувач може змінювати пароль будь\-коли\&. +Set the minimum number of days between password changes to +\fIMIN_DAYS\fR\&. A value of zero for this field indicates that the user may change their password at any time\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR @@ -157,13 +126,14 @@ passwd \- зміна пароля користувача Режим без повідомлень\&. .RE .PP -\fB\-r\fR, \fB\-\-repository\fR \fIСХОВИЩЕ\fR +\fB\-r\fR, \fB\-\-repository\fR\ \&\fIREPOSITORY\fR .RS 4 -змінити пароль у сховищі -\fIСХОВИЩЕ\fR +change password in +\fIREPOSITORY\fR +repository .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -172,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 Вивести дані щодо стану облікового запису\&. Дані щодо стану складаються з 7 полів\&. Першим полем є назва облікового запису користувача\&. Друге поле вказує на те, чи є обліковий запис таким, для якого заблоковано пароль (L), немає пароля (NP) або має придатний до користування пароль (P)\&. Третє поле задає дату останньої зміни пароля\&. Наступними чотирма полями є мінімальний вік, максимальний вік, період попередження та період неактивності для пароля\&. Ці значення віку виражаються у днях\&. @@ -179,27 +155,33 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-u\fR, \fB\-\-unlock\fR .RS 4 -Розблокувати пароль для іменованого облікового запису\&. Цей параметр повторно вмикає пароль, замінюючи пароль на попереднє його значення (на значення до використання параметра -\fB\-l\fR)\&. +Unlock the password of the named account\&. This option re\-enables a password by changing the password back to its previous value (to the value before using the +\fB\-l\fR +option)\&. .RE .PP -\fB\-w\fR, \fB\-\-warndays\fR \fIДНІ\fR +\fB\-w\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 -Встановити кількість днів між попередженням про потребу у зміні пароля і завершенням строку дії пароля\&. Параметром -\fIДНІ\fR -є кількість днів до завершення строку дії пароля, коли система попереджуватиме користувача про те, що пароль невдовзі доведеться змінити\&. +Set the number of days of warning before a password change is required\&. The +\fIWARN_DAYS\fR +option is the number of days prior to the password expiring that a user will be warned that their password is about to expire\&. .RE .PP -\fB\-x\fR, \fB\-\-maxdays\fR \fIМАКСИМАЛЬНО_ДНІВ\fR +\fB\-x\fR, \fB\-\-maxdays\fR\ \&\fIMAX_DAYS\fR .RS 4 -Встановити максимальну кількість днів, протягом яких пароль лишатиметься чинним\&. Щойно мине -\fIМАКСИМАЛЬНО_ДНІВ\fR, система вимагатиме від користувача змінити пароль\&. +Set the maximum number of days a password remains valid\&. After +\fIMAX_DAYS\fR, the password is required to be changed\&. .sp -Передавання числа +Passing the number \fI\-1\fR -у полі -\fIМАКСИМАЛЬНО_ДНІВ\fR -призведе до вилучення перевірки чинності паролів\&. +as +\fIMAX_DAYS\fR +will remove checking a password\*(Aqs validity\&. +.RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP @@ -208,9 +190,9 @@ directory\&. Only absolute paths are supported\&. Можливо, користувачі не зможуть змінити свій пароль у системі, якщо увімкнено NIS, і користувачі не увійшли до сервера NIS\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd @@ -229,51 +211,54 @@ directory\&. Only absolute paths are supported\&. .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBpasswd\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI1\fR .RS 4 -відмовлено у доступі +permission denied .RE .PP \fI2\fR .RS 4 -некоректне поєднання параметрів +invalid combination of options .RE .PP \fI3\fR .RS 4 -неочікувана помилка, нічого не виконано +unexpected failure, nothing done .RE .PP \fI4\fR .RS 4 -неочікувана помилка, не вистачає файла +unexpected failure, passwd +file missing .RE .PP \fI5\fR .RS 4 -файл passwd -зайнято, повторіть спробу +file busy, try again .RE .PP \fI6\fR .RS 4 -некоректний аргумент параметра +invalid argument to option .RE .SH "ДИВ\&. ТАКОЖ" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/uk/man1/sg.1 b/man/uk/man1/sg.1 index b4ca933..df439f4 100644 --- a/man/uk/man1/sg.1 +++ b/man/uk/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "sg" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "sg" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,30 +31,34 @@ sg \- виконання команди від імені іншого ідентифікатора групи .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [група\ [\-c]\ команда] +\fBsg\fR [\-] [group\ [\-c\ ]\ command] .SH "ОПИС" .PP -Команда +The \fBsg\fR -працює подібно до команди -\fBnewgrp\fR, але приймає команду\&. Цю команду буде виконано за допомогою оболонки -/bin/sh\&. У більшості оболонок, з яких ви можете запустити -\fBsg\fR, вам доведеться брати багатослівні команди у лапки\&. Іншою відмінністю між +command works similar to \fBnewgrp\fR -і +but accepts a command\&. The command will be executed with the +/bin/sh +shell\&. With most shells you may run \fBsg\fR -є те, що деякі оболонки обробляють +from, you need to enclose multi\-word commands in quotes\&. Another difference between \fBnewgrp\fR -по\-особливому, замінюючи себе новим екземпляром оболонки, який створює -\fBnewgrp\fR\&. Такого не трапляється з -\fBsg\fR\&. Отже, після виходу з команди +and \fBsg\fR -ви повернетеся до вашого попереднього ідентифікатора групи\&. +is that some shells treat +\fBnewgrp\fR +specially, replacing themselves with a new instance of a shell that +\fBnewgrp\fR +creates\&. This doesn\*(Aqt happen with +\fBsg\fR, so upon exit from a +\fBsg\fR +command you are returned to your previous group ID\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd @@ -83,4 +87,4 @@ sg \- виконання команди від імені іншого іден \fBnewgrp\fR(1), \fBsu\fR(1), \fBgpasswd\fR(1), -\fBгрупа\fR(5), \fBgshadow\fR(5)\&. +\fBgroup\fR(5), \fBgshadow\fR(5)\&. diff --git a/man/uk/man1/su.1 b/man/uk/man1/su.1 index fd6a061..722a9ba 100644 --- a/man/uk/man1/su.1 +++ b/man/uk/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди користувача -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "su" "1" "08/11/2022" "shadow\-utils 4\&.13" "Команди користувача" +.TH "su" "1" "21/06/2024" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,50 +31,53 @@ su \- зміна ідентифікатора користувача або набуття прав надкористувача .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBsu\fR\ 'u -\fBsu\fR [\fIпараметри\fR] [\fI\-\fR] [\fIкористувач\fR\ [\ \fIаргументи\fR\ ]] +\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fIusername\fR\ [\ \fIargs\fR\ ]] .SH "ОПИС" .PP -Команду +The \fBsu\fR -використовують для набуття прав іншого користувача під час робочого сеансу у системі\&. Якщо команду викликано без -\fBкористувач\fR, -\fBsu\fR, типово, надає доступ до облікового запису надкористувача\&. Параметром +command is used to become another user during a login session\&. Invoked without a +\fBusername\fR, +\fBsu\fR +defaults to becoming the superuser\&. The \fB\-\fR -можна скористатися для забезпечення середовища, подібного до того, яке б мав отримати користувач, який увійшов до системи безпосередньо\&. Параметром +option may be used to provide an environment similar to what the user would expect had the user logged in directly\&. The \fB\-c\fR -можна скористатися для того, щоб більшість командних оболонок вважали наступний аргумент командою\&. +option may be used to treat the next argument as a command by most shells\&. .PP -Параметри буде розпізнано усюди у списку аргументів\&. Ви можете скористатися аргументом -\fB\-\-\fR, щоб припинити обробку аргументів\&. Параметр +Options are recognized everywhere in the argument list\&. You can use the +\fB\-\-\fR +argument to stop option parsing\&. The \fB\-\fR -є особливим: програма розпізнає його також після -\fB\-\-\fR, але його слід розташувати перед -\fBкористувач\fR\&. +option is special: it is also recognized after +\fB\-\-\fR, but has to be placed before +\fBusername\fR\&. .PP Програма попросить користувача ввести пароль, якщо у цьому є потреба\&. Введення некоректного пароля призведе до виведення повідомлення про помилку\&. Усі спроби, коректні і некоректні, буде записано до журналу для виявлення спроб зловмисників проникнути у систему\&. .PP -Поточне середовище буде передано новій оболонці\&. Значення +The current environment is passed to the new shell\&. The value of \fB$PATH\fR -буде скинуто до +is reset to /bin:/usr/bin -для звичайних користувачів або +for normal users, or /sbin:/bin:/usr/sbin:/usr/bin -для надкористувача\&. Це значення можна змінити за допомогою визначень +for the superuser\&. This may be changed with the \fBENV_PATH\fR -і +and \fBENV_SUPATH\fR -у +definitions in /etc/login\&.defs\&. .PP Вхід до підсистеми буде позначено наявністю \(Fo*\(Fc як першого символу оболонки входу\&. Заданий домашній каталог буде використано як кореневий каталог нової файлової системи, до якої користувач насправді увійшов\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBsu\fR, є такими: +The options which apply to the +\fBsu\fR +command are: .PP -\fB\-c\fR, \fB\-\-command\fR \fIКОМАНДА\fR +\fB\-c\fR, \fB\-\-command\fR\ \&\fICOMMAND\fR .RS 4 -Вказати команду, яку буде викликано командною оболонкою за допомогою її +Specify a command that will be invoked by the shell using its \fB\-c\fR\&. .sp У виконаної команди не буде керівного термінала\&. Цей параметр не можна використовувати для виконання інтерактивних програм, яким потрібне для керування термінал\&. @@ -84,15 +87,16 @@ su \- зміна ідентифікатора користувача або на .RS 4 Надає середовище, яке є подібним до середовища, яке мав би отримати користувач після безпосереднього входу до системи\&. .sp -Якщо використано параметр -\fB\-\fR, його має бути вказано перед будь\-яким -\fBкористувач\fR\&. З міркувань сумісності рекомендуємо використовувати його як останній параметр, до -\fBкористувач\fR\&. Для інших форм (\fB\-l\fR -і -\fB\-\-login\fR) цього обмеження не передбачено\&. +When +\fB\-\fR +is used, it must be specified before any +\fBusername\fR\&. For portability it is recommended to use it as last option, before any +\fBusername\fR\&. The other forms (\fB\-l\fR +and +\fB\-\-login\fR) do not have this restriction\&. .RE .PP -\fB\-s\fR, \fB\-\-shell\fR \fIОБОЛОНКА\fR +\fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 Оболонка, яку буде викликано\&. .sp @@ -103,31 +107,34 @@ su \- зміна ідентифікатора користувача або на .RE .PP .RS 4 -Якщо використано параметр -\fB\-\-preserve\-environment\fR, оболонка, яку вказано за допомогою змінної середовища -\fB$SHELL\fR\&. +If +\fB\-\-preserve\-environment\fR +is used, the shell specified by the +\fB$SHELL\fR +environment variable\&. .RE .PP .RS 4 -Оболонки, на яку вказує запис +The shell indicated in the /etc/passwd -для вибраного користувача\&. +entry for the target user\&. .RE .PP .RS 4 -/bin/sh, якщо оболонку не вдасться знайти у жоден із вказаних вище способів\&. +/bin/sh +if a shell could not be found by any above method\&. .RE .sp -Якщо командну оболонку вказаного користувача обмежено (тобто вмісту поля оболонки запису цього користувача у +If the target user has a restricted shell (i\&.e\&. the shell field of this user\*(Aqs entry in /etc/passwd -немає у списку -/etc/shells), параметр +is not listed in +/etc/shells), then the \fB\-\-shell\fR -та змінну середовища +option or the \fB$SHELL\fR -не буде взято до уваги, якщо +environment variable won\*(Aqt be taken into account, unless \fBsu\fR -не викликано від імені користувача root\&. +is called by root\&. .RE .PP \fB\-m\fR, \fB\-p\fR, \fB\-\-preserve\-environment\fR @@ -136,12 +143,13 @@ su \- зміна ідентифікатора користувача або на .PP \fB$PATH\fR .RS 4 -відновлено початкове значення за параметром +reset according to the /etc/login\&.defs +options \fBENV_PATH\fR -або +or \fBENV_SUPATH\fR -(див\&. нижче); +(see below); .RE .PP \fB$IFS\fR @@ -150,73 +158,75 @@ su \- зміна ідентифікатора користувача або на \(Fo\(Fc, якщо було встановлено інше значення\&. .RE .sp -Якщо у користувача призначення командну оболонку обмежено, цей параметр ні на що не вплине (якщо +If the target user has a restricted shell, this option has no effect (unless \fBsu\fR -не викликано від імені користувача root)\&. +is called by root)\&. .sp Зауважте, що типовою поведінкою для середовища є така: .PP .RS 4 -Буде відновлено початкові значення змінних середовища +The \fB$HOME\fR, \fB$SHELL\fR, \fB$USER\fR, \fB$LOGNAME\fR, -\fB$PATH\fR -і -\fB$IFS\fR\&. +\fB$PATH\fR, and +\fB$IFS\fR +environment variables are reset\&. .RE .PP .RS 4 -Якщо не використано -\fB\-\-login\fR, середовище буде скопійовано, окрім вказаних вище змінних\&. +If +\fB\-\-login\fR +is not used, the environment is copied, except for the variables above\&. .RE .PP .RS 4 -Якщо використано -\fB\-\-login\fR, змінні середовища +If +\fB\-\-login\fR +is used, the \fB$TERM\fR, \fB$COLORTERM\fR, -\fB$DISPLAY\fR -і +\fB$DISPLAY\fR, and \fB$XAUTHORITY\fR -буде скопійовано, якщо було встановлено їхні значення\&. +environment variables are copied if they were set\&. .RE .PP .RS 4 -Якщо використано -\fB\-\-login\fR, значення змінних середовища +If +\fB\-\-login\fR +is used, the \fB$TZ\fR, -\fB$HZ\fR -і +\fB$HZ\fR, and \fB$MAIL\fR -буде встановлено за параметрами +environment variables are set according to the /etc/login\&.defs +options \fBENV_TZ\fR, \fBENV_HZ\fR, -\fBMAIL_DIR\fR -і +\fBMAIL_DIR\fR, and \fBMAIL_FILE\fR -(див\&. нижче)\&. +(see below)\&. .RE .PP .RS 4 -Якщо використано -\fB\-\-login\fR, значення для інших змінних середовища можна встановити за допомогою файла +If +\fB\-\-login\fR +is used, other environment variables might be set by the \fBENVIRON_FILE\fR -(див\&. нижче)\&. +file (see below)\&. .RE .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP -У цієї версії +This version of \fBsu\fR -багато параметрів збирання\&. У певній збірці може бути використано лише частину з них\&. +has many compilation options, only some of which may be in use at any particular site\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd @@ -235,41 +245,41 @@ su \- зміна ідентифікатора користувача або на .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Якщо виконано успішно, +On success, \fBsu\fR -повертає значення виходу виконаної команди\&. +returns the exit value of the command it executed\&. .PP -Якщо цю команду перервано сигналом, +If this command was terminated by a signal, \fBsu\fR -повертає номер цього сигналу плюс 128\&. +returns the number of this signal plus 128\&. .PP -Якщо su довелося перервати виконання команди (оскільки було надіслано команду щодо переривання роботи, але команда не перервала роботу вчасно), +If su has to kill the command (because it was asked to terminate, and the command did not terminate in time), \fBsu\fR -поверне 255\&. +returns 255\&. .PP -Деякі значення виходу з +Some exit values from \fBsu\fR -є незалежними від виконаної команди: +are independent from the executed command: .PP \fI0\fR .RS 4 -успіх (лише -\fB\-\-help\fR) +success (\fB\-\-help\fR +only) .RE .PP \fI1\fR .RS 4 -Помилка системи або розпізнавання +System or authentication failure .RE .PP \fI126\fR .RS 4 -Потрібну команду не знайдено +The requested command was not found .RE .PP \fI127\fR .RS 4 -Потрібну команду не вдалося виконати +The requested command could not be executed .RE .SH "ДИВ\&. ТАКОЖ" .PP diff --git a/man/uk/man3/shadow.3 b/man/uk/man3/shadow.3 index 3cb5513..0639108 100644 --- a/man/uk/man3/shadow.3 +++ b/man/uk/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Виклики бібліотеки -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "shadow" "3" "08/11/2022" "shadow\-utils 4\&.13" "Виклики бібліотеки" +.TH "shadow" "3" "21/06/2024" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -50,7 +50,7 @@ shadow, getspnam \- підпрограми для файла зашифрова .PP \fIint putspent(struct spwd\fR \fI*p,\fR -\fIФАЙЛ\fR +\fIFILE\fR \fI*fp\fR\fI);\fR .PP \fIint lckpwdf();\fR @@ -59,9 +59,10 @@ shadow, getspnam \- підпрограми для файла зашифрова .SH "ОПИС" .PP \fIshadow\fR -керує вмістом файла прихованих паролів, -/etc/shadow\&. Структура файла -\fI#include\fR: +manipulates the contents of the shadow password file, +/etc/shadow\&. The structure in the +\fI#include\fR +file is: .sp .if n \{\ .RS 4 @@ -177,45 +178,47 @@ sp_flag \- зарезервовано для використання у май .PP \fIgetspent\fR, \fIgetspname\fR, -\fIfgetspent\fR -і +\fIfgetspent\fR, and \fIsgetspent\fR -усі повертають вказівник на +each return a pointer to a \fIstruct spwd\fR\&. \fIgetspent\fR -повертає наступний запис з файла, а +returns the next entry from the file, and \fIfgetspent\fR -повертає наступний запис з заданого потоку даних, яким має бути файл у належному форматі\&. +returns the next entry from the given stream, which is assumed to be a file of the proper format\&. \fIsgetspent\fR -повертає вказівник на -\fIstruct spwd\fR, використовуючи вхідні дані з наданого рядок\&. +returns a pointer to a +\fIstruct spwd\fR +using the provided string as input\&. \fIgetspnam\fR -шукає з поточної позиції у файлів запис, що відповідає рядку +searches from the current position in the file for an entry matching \fIname\fR\&. .PP \fIsetspent\fR -і +and \fIendspent\fR -можна скористатися для того, щоб відкрити або закрити, відповідно, доступ до файла прихованих паролів\&. +may be used to begin and end, respectively, access to the shadow password file\&. .PP -Підпрограмами +The \fIlckpwdf\fR -і +and \fIulckpwdf\fR -слід користуватися для забезпечення виключного доступу до файла -/etc/shadow\&. +routines should be used to insure exclusive access to the +/etc/shadow +file\&. \fIlckpwdf\fR -намагається отримати блокування за допомогою +attempts to acquire a lock using \fIpw_lock\fR -протягом періоду до 15 секунд\&. Підпрограма продовжує спроби отримати друге блокування +for up to 15 seconds\&. It continues by attempting to acquire a second lock using \fIspw_lock\fR -за решту початкових 15 секунд\&. Якщо протягом загального періоду у 15 секунд спроби завершаться невдачею, +for the remainder of the initial 15 seconds\&. Should either attempt fail after a total of 15 seconds, \fIlckpwdf\fR -повертає \-1\&. Якщо вдасться отримати обидва блокування, буде повернуто 0\&. +returns \-1\&. When both locks are acquired 0 is returned\&. .SH "ДІАГНОСТИКА" .PP -Підпрограми повертають NULL, якщо не залишилося доступних записів або якщо станеться помилка під час обробки даних\&. Підпрограми, які повертають значення типу -\fIint\fR, повертають 0, якщо підпрограму виконано успішно, і \-1, якщо виконання підпрограми завершилося помилкою\&. +Routines return NULL if no more entries are available or if an error occurs during processing\&. Routines which have +\fIint\fR +as the return value return 0 for success and \-1 for failure\&. .SH "ЗАСТЕРЕЖЕННЯ" .PP Цими підпрограмами може користуватися лише надкористувач, оскільки доступ до файла прихованих паролів обмежено\&. diff --git a/man/uk/man5/faillog.5 b/man/uk/man5/faillog.5 index f88747f..2363207 100644 --- a/man/uk/man5/faillog.5 +++ b/man/uk/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "faillog" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "faillog" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -32,7 +32,7 @@ faillog \- файл журналу невдалих спроб увійти до .SH "ОПИС" .PP /var/log/faillog -зберігає кількість помилок під час входу і обмеження для кожного з облікових записів\&. +maintains a count of login failures and the limits for each account\&. .PP У файлі містяться записи фіксованої довжини, індексовані за числовим UID\&. Кожен запис містить кількість помилок при вході з моменту останнього успішного входу до системи; максимальну кількість помилок до вимикання облікового запису; рядок, на якому сталася помилка під час останньої спроби увійти до системи; дату останньої помилки під час спроби увійти до системи та період часу (у секундах), протягом якого обліковий запис буде заблоковано після помилки\&. .PP diff --git a/man/uk/man5/gshadow.5 b/man/uk/man5/gshadow.5 index f2a5f25..68fd5ef 100644 --- a/man/uk/man5/gshadow.5 +++ b/man/uk/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "gshadow" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "gshadow" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -32,37 +32,38 @@ gshadow \- файл зашифрованих груп .SH "ОПИС" .PP /etc/gshadow -містить зашифровані відомості щодо облікових записів груп\&. +contains the shadowed information for group accounts\&. .PP Цей файл має бути недоступним для читання звичайними користувачами, якщо ви хочете підтримувати захист паролів\&. .PP У кожному рядку цього файла містяться такі відокремлені двокрапками поля: .PP -\fBназва групи\fR +\fBgroup name\fR .RS 4 Це має бути коректна назва групи, яка існує у системі\&. .RE .PP -\fBшифрований пароль\fR +\fBencrypted password\fR .RS 4 -Зверніться до -\fBcrypt\fR(3), щоб дізнатися більше про те, як буде оброблено цей рядок\&. +Refer to +\fBcrypt\fR(3) +for details on how this string is interpreted\&. .sp -Якщо у полі пароля міститься якийсь рядок, який не є коректним результатом виконання -\fBcrypt\fR(3), наприклад, ! або *, користувачі не зможуть скористатися паролем unix для доступу до групи (але учасники групи пароля не потребуватимуть)\&. +If the password field contains some string that is not a valid result of +\fBcrypt\fR(3), for instance ! or *, users will not be able to use a unix password to access the group (but group members do not need the password)\&. .sp -Пароль використовуватиметься, коли користувач, який не є учасником групи, захоче отримати права доступу до цієї групи (див\&. +The password is used when a user who is not a member of the group wants to gain the permissions of this group (see \fBnewgrp\fR(1))\&. .sp Це поле може бути порожнім\&. Якщо поле є порожнім, лише учасники групи зможуть отримувати права доступу групи\&. .sp Поле пароля, яке починається зі знаку оклику, означає, що пароль заблоковано\&. Решта символів у рядку є вмістом поля пароля до того, як пароль було заблоковано\&. .sp -Цей пароль має пріоритет над будь\-яким паролем, який вказано у +This password supersedes any password specified in /etc/group\&. .RE .PP -\fBадміністратори\fR +\fBadministrators\fR .RS 4 Це має бути список відокремлених комами імен користувачів\&. .sp @@ -71,13 +72,13 @@ gshadow \- файл зашифрованих груп Також адміністратори мають ті самі права доступу, що і учасники (див\&. нижче)\&. .RE .PP -\fBучасники\fR +\fBmembers\fR .RS 4 Це має бути список відокремлених комами імен користувачів\&. .sp Учасники можуть отримувати доступ до групи без надсилання запиту щодо пароля\&. .sp -Вам слід використовувати той самий список користувачів, що і у +You should use the same list of users as in /etc/group\&. .RE .SH "ФАЙЛИ" @@ -94,7 +95,7 @@ gshadow \- файл зашифрованих груп .SH "ДИВ\&. ТАКОЖ" .PP \fBgpasswd\fR(5), -\fBгрупа\fR(5), +\fBgroup\fR(5), \fBgrpck\fR(8), \fBgrpconv\fR(8), \fBnewgrp\fR(1)\&. diff --git a/man/uk/man5/login.access.5 b/man/uk/man5/login.access.5 index 6526549..9d1669a 100644 --- a/man/uk/man5/login.access.5 +++ b/man/uk/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "login\&.access" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "login\&.access" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,29 +31,29 @@ login.access \- таблиця керування доступом до входу до системи .SH "ОПИС" .PP -У файлі +The \fIlogin\&.access\fR -задають комбінації (користувач, вузол) і/або (користувач, термінал), для яких вхід до системи буде прийнятним або забороненим\&. +file specifies (user, host) combinations and/or (user, tty) combinations for which a login will be either accepted or refused\&. .PP -Коли хтось входить до системи, система виконує сканування +When someone logs in, the \fIlogin\&.access\fR -на перший запис, який відповідає комбінації (користувач, вузол), або, у випадку позамережевих входів, перший запис, який відповідає комбінації (користувач, термінал)\&. Поле прав доступу у записі цієї таблиці визначає, буде вхід прийнято чи заборонено\&. +is scanned for the first entry that matches the (user, host) combination, or, in case of non\-networked logins, the first entry that matches the (user, tty) combination\&. The permissions field of that table entry determines whether the login will be accepted or refused\&. .PP Кожен рядок таблиці керування доступом до входу до системи містить три поля, які відокремлено символом \(Fo:\(Fc: .PP -\fIправа доступу\fR:\fIкористувачі\fR:\fIorigins\fR +\fIpermission\fR:\fIusers\fR:\fIorigins\fR .PP -Першим полем має бути символ \(Fo\fI+\fR\(Fc (доступ надано) або \(Fo\fI\-\fR\(Fc (доступ заборонено)\&. У другому полі має бути список одного або декількох назв облікових записів, назв груп або +The first field should be a "\fI+\fR" (access granted) or "\fI\-\fR" (access denied) character\&. The second field should be a list of one or more login names, group names, or \fIALL\fR -(універсальний відповідник)\&. У третьому полі має бути список одного або декількох терміналів (для немережевих входів), назв вузлів, назв доменів (починаються з \(Fo\&.\(Fc), адрес вузлів, мережевих чисел інтернету (завершуються \(Fo\&.\(Fc), +(always matches)\&. The third field should be a list of one or more tty names (for non\-networked logins), host names, domain names (begin with "\&."), host addresses, internet network numbers (end with "\&."), \fIALL\fR -(універсальний відповідник) або +(always matches) or \fILOCAL\fR -(відповідник будь\-якого рядка, який не містить символу \(Fo\&.\(Fc)\&. Якщо ви працюєте з NIS ви можете скористатися @netgroupname у взірцях вузла або користувача\&. +(matches any string that does not contain a "\&." character)\&. If you run NIS you can use @netgroupname in host or user patterns\&. .PP -Оператор +The \fIEXCEPT\fR -уможливлює написання дуже компактних правил\&. +operator makes it possible to write very compact rules\&. .PP Пошук у файлі груп відбуватиметься, лише якщо ім\*(Aqя не збігатиметься із іменем користувача, що увійшов до системи\&. Відповідними вважатимуться лише ті групи, користувачів яких вказано явно: програма не шукатиме у значення ідентифікаторів основної групи користувача\&. .SH "ФАЙЛИ" diff --git a/man/uk/man5/login.defs.5 b/man/uk/man5/login.defs.5 index 5b265cb..d075f74 100644 --- a/man/uk/man5/login.defs.5 +++ b/man/uk/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "login\&.defs" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "login\&.defs" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,27 +31,28 @@ login.defs \- Налаштування комплексу для роботи з прихованими паролями .SH "ОПИС" .PP -Файл +The /etc/login\&.defs -визначає специфічні для системи налаштування для комплексу керування паролями shadow\&. Цей файл є необхідним\&. Якщо цього файла не завадить працездатності системи, але, ймовірно, призведе до небажаних наслідків\&. +file defines the site\-specific configuration for the shadow password suite\&. This file is required\&. Absence of this file will not prevent system operation, but will probably result in undesirable operation\&. .PP Цей файл є придатним до читання текстовим файлом, кожен з рядків якого описує один параметр налаштувань\&. Рядки складаються з назви налаштування та значення, які відокремлено пробілом\&. Порожні рядки і рядки коментарів буде проігноровано\&. Коментарі позначають символом \(Fo#\(Fc, цей символ має бути першим непробільним символом рядка\&. .PP -Значення параметрів мають належати до чотирьох типів: рядки, булеві значення, числа та числа з подвійною точністю\&. Рядок складається з будь\-яких друкованих символів\&. Булеве значення має бути одним з двох: -\fIтак\fR -або -\fIno\fR\&. Невизначеному булевому параметру або булевому параметру, значенням якого не є одне з цих двох значень, буде надано значення -\fIno\fR\&. Числа (звичайні і з подвійною точністю) можуть бути десятковими, вісімковими (їхні записи починаються з -\fI0\fR) або шістнадцятковими (їхні записи починаються з -\fI0x\fR)\&. Максимальне значення звичайного числового параметра або числового параметра з подвійною точністю визначається характеристиками системи\&. +Parameter values may be of four types: strings, booleans, numbers, and long numbers\&. A string is comprised of any printable characters\&. A boolean should be either the value +\fIyes\fR +or +\fIno\fR\&. An undefined boolean parameter or one with a value other than these will be given a +\fIno\fR +value\&. Numbers (both regular and long) may be either decimal values, octal values (precede the value with +\fI0\fR) or hexadecimal values (precede the value with +\fI0x\fR)\&. The maximum value of the regular and long numeric parameters is machine\-dependent\&. .PP У ваше розпорядження надано такі пункти налаштувань: .PP \fBPASS_MAX_DAYS\fR, \fBPASS_MIN_DAYS\fR -і +and \fBPASS_WARN_AGE\fR -буде використано лише у момент створення облікового запису\&. Будь\-які зміни у цих параметрах не вплинуть на наявні облікові записи\&. +are only used at the time of account creation\&. Any changes to these settings won\*(Aqt affect existing accounts\&. .SH "ПЕРЕХРЕСНІ ПОСИЛАННЯ" .PP Наведені нижче посилання показують, які програми комплексу для роботи з паролями shadow використовують відповідні параметри\&. @@ -191,8 +192,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/uk/man5/passwd.5 b/man/uk/man5/passwd.5 index 82fa63b..280322d 100644 --- a/man/uk/man5/passwd.5 +++ b/man/uk/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "passwd" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "passwd" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -32,7 +32,7 @@ passwd \- файл паролів .SH "ОПИС" .PP /etc/passwd -містить по одному рядку для кожного з облікових записів користувача із сімома полями, які відокремлено двокрапками (\(Fo:\(Fc)\&. Цими полями є такі: +contains one line for each user account, with seven fields delimited by colons (\(Fo:\(Fc)\&. These fields are: .sp .RS 4 .ie n \{\ @@ -111,47 +111,54 @@ passwd \- файл паролів необов\*(Aqязковий інтерпретатор команд користувача .RE .PP -Якщо у полі -\fIпароль\fR -міститься -\(Fox\(Fc -у нижньому регістрі, зашифрований пароль насправді зберігається у файлі -\fBshadow\fR(5); -\fIмає\fR -бути відповідний рядок у файлі -/etc/shadow, інакше обліковий запис користувача буде некоректним\&. +If the +\fIpassword\fR +field is a lower\-case +\(Fox\(Fc, then the encrypted password is actually stored in the +\fBshadow\fR(5) +file instead; there +\fImust\fR +be a corresponding line in the +/etc/shadow +file, or else the user account is invalid\&. .PP -Поле, у якому зберігається зашифрований -\fIпароль\fR, може бути порожнім\&. Якщо пароль є порожнім, для розпізнавання за вказаним іменем користувача не потрібен буде пароль\&. Втім, деякі програми, які читають дані з файла -/etc/passwd, можуть взагалі вирішити не дозволити -\fIдовільний\fR -доступ, якщо поле -\fIпароль\fR -є порожнім\&. +The encrypted +\fIpassword\fR +field may be empty, in which case no password is required to authenticate as the specified login name\&. However, some applications which read the +/etc/passwd +file may decide not to permit +\fIany\fR +access at all if the +\fIpassword\fR +field is blank\&. .PP -Поле -\fIпароль\fR, яке починається зі знаку оклику, означає, що пароль заблоковано\&. Решта символів у рядку є вмістом поля -\fIпароль\fR -до того, як пароль було заблоковано\&. +A +\fIpassword\fR +field which starts with an exclamation mark means that the password is locked\&. The remaining characters on the line represent the +\fIpassword\fR +field before the password was locked\&. .PP -Зверніться до -\fBcrypt\fR(3), щоб дізнатися більше про те, як буде оброблено цей рядок\&. +Refer to +\fBcrypt\fR(3) +for details on how this string is interpreted\&. .PP -Якщо у полі пароля міститься якийсь рядок, який не є коректним результатом виконання -\fBcrypt\fR(3), наприклад, ! або *, користувач не зможе скористатися паролем unix для входу до облікового запису (але користувач зможе увійти до системи в інший спосіб)\&. +If the password field contains some string that is not a valid result of +\fBcrypt\fR(3), 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)\&. .PP -Поле коментаря, також відоме як поле gecos, використовують різноманітні загальносистемні інструменти, зокрема -\fBfinger\fR(1)\&. Амперсанд у цьому полі буде замінено записаним великим літерами іменем користувача, коли поле буде використано або показано у таких загальносистемних інструментах\&. +The comment field, also known as the gecos field, is used by various system utilities, such as +\fBfinger\fR(1)\&. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities\&. .PP -Поле домашнього каталогу задає назву початкового робочого каталогу\&. Програма +The home directory field provides the name of the initial working directory\&. The \fBlogin\fR -використовує ці дані для встановлення значення змінної середовища -\fB$HOME\fR\&. +program uses this information to set the value of the +\fB$HOME\fR +environmental variable\&. .PP -Поле інтерпретатора команд задає назву командного інтерпретатора мови програмування користувача або назву початкової програми для виконання\&. Програма +The command interpreter field provides the name of the user\*(Aqs command language interpreter, or the name of the initial program to execute\&. The \fBlogin\fR -використовує ці дані для встановлення значення змінної середовища -\fB$SHELL\fR\&. Якщо значення у цьому полі є порожнім, типовим його значенням буде значення +program uses this information to set the value of the +\fB$SHELL\fR +environmental variable\&. If this field is empty, it defaults to the value /bin/sh\&. .SH "ФАЙЛИ" .PP diff --git a/man/uk/man5/porttime.5 b/man/uk/man5/porttime.5 index bf74916..690a22e 100644 --- a/man/uk/man5/porttime.5 +++ b/man/uk/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "porttime" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "porttime" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -32,41 +32,41 @@ porttime \- файл часу доступу до портів .SH "ОПИС" .PP \fIporttime\fR -містить список пристроїв терміналів, імен користувачів та даних щодо дозволеного часу входу до системи\&. +contains a list of tty devices, user names, and permitted login times\&. .PP Кожен запис складається з трьох відокремлених двокрапками полів\&. Перше поле є списком відокремлених комами пристроїв tty або зірочкою на позначення, що цьому запису відповідають усі пристрої tty\&. Друге поле є списком відокремлених комами імен користувачів або зірочкою на позначення, що цьому запису відповідають усі імена користувачів\&. Третє поле є списком відокремлених комами дозволених часів доступу\&. .PP -Кожен запис часу доступу складається з нуля або більшої кількості скорочених записів днів тижня: +Each access time entry consists of zero or more days of the week, abbreviated \fISu\fR, \fIMo\fR, \fITu\fR, \fIWe\fR, \fITh\fR, -\fIFr\fR -і -\fISa\fR, після яких вказано проміжок часу з двох значень, які відокремлено дефісом\&. Можна скористатися скороченням +\fIFr\fR, and +\fISa\fR, followed by a pair of times separated by a hyphen\&. The abbreviation \fIWk\fR -для позначення часу від понеділка до п\*(Aqятниці і скороченням +may be used to represent Monday thru Friday, and \fIAl\fR -для позначення будь\-якого дня\&. Якщо дні не вказано, буде використано -\fIAl\fR\&. +may be used to indicate every day\&. If no days are given, +\fIAl\fR +is assumed\&. .SH "ПРИКЛАДИ" .PP -Вказаний нижче запис дозволяє доступ до користувача +The following entry allows access to user \fBjfh\fR -на будь\-якому порту протягом робочого тижня з 9 ранку до 5 вечора\&. +on every port during weekdays from 9am to 5pm\&. .PP *:jfh:Wk0900\-1700 .PP -Вказані нижче записи дозволяють доступ лише до користувачів +The following entries allow access only to the users \fIroot\fR -і +and \fIoper\fR -на +on /dev/console -будь\-коли\&. Цей приклад ілюструє спосіб, у який файл +at any time\&. This illustrates how the /etc/porttime -є упорядкованим списком часів доступу\&. Другому запису відповідає будь\-який інший користувач, якому буде заборонено доступ будь\-коли\&. +file is an ordered list of access times\&. Any other user would match the second entry which does not permit access at any time\&. .sp .if n \{\ .RS 4 @@ -78,9 +78,9 @@ console:root,oper:Al0000\-2400 console:*: .RE .\} .PP -Наведений нижче запис дозволяє доступ для користувача +The following entry allows access for the user \fIgames\fR -до будь\-якого порту у неробочий час\&. +on any port during non\-working hours\&. .PP *:games:Wk1700\-0900,SaSu0000\-2400 .SH "ФАЙЛИ" diff --git a/man/uk/man5/shadow.5 b/man/uk/man5/shadow.5 index c5715fc..9780f75 100644 --- a/man/uk/man5/shadow.5 +++ b/man/uk/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "shadow" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "shadow" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -32,32 +32,34 @@ shadow \- файли прихованих паролів .SH "ОПИС" .PP shadow -є файлом, який містить дані паролів для облікових записів системи і необов\*(Aqязкові дані щодо застарівання\&. +is a file which contains the password information for the system\*(Aqs accounts and optional aging information\&. .PP Цей файл має бути недоступним для читання звичайними користувачами, якщо ви хочете підтримувати захист паролів\&. .PP У кожному рядку файла міститься 9 полів, дані яких відокремлено двокрапками (\(Fo:\(Fc), у такому порядку: .PP -\fBім\*(Aqя користувача\fR +\fBlogin name\fR .RS 4 Це має бути коректна назва облікового запису, яка існує у системі\&. .RE .PP -\fBшифрований пароль\fR +\fBencrypted password\fR .RS 4 -Це поле може бути порожнім\&. Якщо поле порожнє, для розпізнавання за вказаним іменем користувача не потрібен буде пароль\&. Втім, деякі програми, які читають дані з файла -/etc/shadow, можуть взагалі вирішити не дозволити будь\-який доступ, якщо поле пароля є порожнім\&. +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 +/etc/shadow +file may decide not to permit any access at all if the password field is empty\&. .sp Поле пароля, яке починається зі знаку оклику, означає, що пароль заблоковано\&. Решта символів у рядку є вмістом поля пароля до того, як пароль було заблоковано\&. .sp -Зверніться до -\fBcrypt\fR(3), щоб дізнатися більше про те, як буде оброблено цей рядок\&. +Refer to +\fBcrypt\fR(3) +for details on how this string is interpreted\&. .sp -Якщо у полі пароля міститься якийсь рядок, який не є коректним результатом виконання -\fBcrypt\fR(3), наприклад, ! або *, користувач не зможе скористатися паролем unix для входу до облікового запису (але користувач зможе увійти до системи в інший спосіб)\&. +If the password field contains some string that is not a valid result of +\fBcrypt\fR(3), 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)\&. .RE .PP -\fBдата останньої зміни пароля\fR +\fBdate of last password change\fR .RS 4 Дата останньої зміни пароля, яку вказано у кількості днів з моменту 1 січня 1970 року 00:00 UTC\&. .sp @@ -66,14 +68,14 @@ shadow Якщо поле є порожнім, можливості застарівання паролів буде вимкнено\&. .RE .PP -\fBмінімальний вік пароля\fR +\fBminimum password age\fR .RS 4 Мінімальний вік пароля є кількістю днів з моменту останньої зміни пароля, протягом яких користувачеві буде заборонено змінювати пароль\&. .sp Порожнє значення або значення 0 означають, що мінімальний вік пароля не використовуватиметься\&. .RE .PP -\fBмаксимальний вік пароля\fR +\fBmaximum password age\fR .RS 4 Максимальний вік пароля є кількістю днів з моменту останньої зміни пароля, по завершенню яких користувачеві доведеться змінити пароль\&. .sp @@ -84,14 +86,14 @@ shadow Якщо максимальний вік пароля є меншим за мінімальний вік пароля, користувач не зможе змінити пароль\&. .RE .PP -\fBперіод попередження щодо пароля\fR +\fBpassword warning period\fR .RS 4 Кількість днів до моменту завершення строку дії пароля (див\&. максимальний вік пароля вище), коли користувача має бути попереджено про завершення строку дії пароля\&. .sp Порожнє значення або значення 0 означають, що не буде періоду попередження щодо завершення строку дії пароля\&. .RE .PP -\fBперіод неактивності пароля\fR +\fBpassword inactivity period\fR .RS 4 Кількість днів з моменту завершення строку дії пароля (див\&. максимальний вік пароля вище), протягом яких пароль лишатиметься прийнятним (і користувач зможе оновити пароль під час наступного входу до системи)\&. .sp @@ -100,7 +102,7 @@ shadow Порожнє значення поля означає, що не буде примусового періоду неактивності\&. .RE .PP -\fBдата прострочення облікового запису\fR +\fBaccount expiration date\fR .RS 4 Дата завершення строку дії облікового запису, яку вказано у кількості днів з моменту 1 січня 1970 року 00:00 UTC\&. .sp @@ -111,7 +113,7 @@ shadow Не слід використовувати значення 0, оскільки його можна вважати вказівкою на те, що або у облікового запису немає завершення строку дії, або як те, що строк дії облікового запису завершився 1 січня 1970 року\&. .RE .PP -\fBзарезервоване поле\fR +\fBreserved field\fR .RS 4 Це поле зарезервовано для використання у майбутньому\&. .RE diff --git a/man/uk/man5/suauth.5 b/man/uk/man5/suauth.5 index 02793b6..4f5e91c 100644 --- a/man/uk/man5/suauth.5 +++ b/man/uk/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Формати файлів і файли налаштувань -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "suauth" "5" "08/11/2022" "shadow\-utils 4\&.13" "Формати файлів і файли налашту" +.TH "suauth" "5" "21/06/2024" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -34,9 +34,9 @@ suauth \- докладний файл керування su \fB/etc/suauth\fR .SH "ОПИС" .PP -Файл +The file /etc/suauth -буде використано під час кожного виклику su\&. Він може змінити поведінку команди su на основі таких даних: +is referenced whenever the su command is called\&. It can change the behaviour of the su command, based upon: .sp .if n \{\ .RS 4 @@ -62,16 +62,20 @@ suauth \- докладний файл керування su .RE .\} .PP -Де \(Foідентифікатор\-призначення\(Fc є словом -\fIALL\fR, списком відокремлених \(Fo,\(Fc імен користувачів або словами -\fIALL EXCEPT\fR, після яких вказано список відокремлених \(Fo,\(Fc імен користувачів\&. +Where to\-id is either the word +\fIALL\fR, a list of usernames delimited by "," or the words +\fIALL EXCEPT\fR +followed by a list of usernames delimited by ","\&. .PP -Форматування запису \(Foпохідний\-ідентифікатор\(Fc є таким самим, що і для запису \(Foідентифікатор\-призначення\(Fc, окрім розпізнавання додаткового слова -\fIGROUP\fR\&. Можна також без проблем користуватися -\fIALL EXCEPT GROUP\fR\&. Після +from\-id is formatted the same as to\-id except the extra word \fIGROUP\fR -можна вказати назви однієї або декількох груп, відокремлених \(Fo,\(Fc\&. Ідентифікатора основної групи відповідної групи недостатньо, потрібен запис у -\fB/etc/group\fR(5)\&. +is recognized\&. +\fIALL EXCEPT GROUP\fR +is perfectly valid too\&. Following +\fIGROUP\fR +appears one or more group names, delimited by ","\&. It is not sufficient to have primary group id of the relevant group, an entry in +\fB/etc/group\fR(5) +is necessary\&. .PP Дією може бути лише один із наведених нижче підтримуваних у поточній версії варіантів\&. .PP @@ -130,9 +134,9 @@ terry:birddog:NOPASS birddog:terry:NOPASS Може бути доволі багато проблем\&. Зокрема, обробник файла не пробачає синтаксичних помилок, не дає додавати пробіли у довільні місця (окрім початку і кінця рядків) і має специфічні правила щодо розмежування записів\&. .SH "ДІАГНОСТИКА" .PP -Про помилку при обробці файла буде повідомлено за допомогою +An error parsing the file is reported using \fBsyslogd\fR(8) -у формі рівня ERR для можливості AUTH\&. +as level ERR on facility AUTH\&. .SH "ДИВ\&. ТАКОЖ" .PP \fBsu\fR(1)\&. diff --git a/man/uk/man8/chgpasswd.8 b/man/uk/man8/chgpasswd.8 index d5bfe71..7a067ef 100644 --- a/man/uk/man8/chgpasswd.8 +++ b/man/uk/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "chgpasswd" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "chgpasswd" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,38 +31,44 @@ chgpasswd \- оновлення паролів груп у пакетному режимі .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBchgpasswd\fR\ 'u -\fBchgpasswd\fR [\fIпараметри\fR] +\fBchgpasswd\fR [\fIoptions\fR] .SH "ОПИС" .PP -Команда +The \fBchgpasswd\fR -читає список пар назва групи \(em пароль зі стандартного джерела вхідних даних і використовує ці дані для оновлення набору наявних груп\&. Кожен рядок записується у такому форматі: +command reads a list of group name and password pairs from standard input and uses this information to update a set of existing groups\&. Each line is of the format: .PP -\fIназва_групи\fR:\fIпароль\fR +\fIgroup_name\fR:\fIpassword\fR .PP -Типово, наданий пароль має бути простим текстовим\&. Його буде зашифровано за допомогою +By default the supplied password must be in clear\-text, and is encrypted by \fBchgpasswd\fR\&. .PP -Типовий алгоритм шифрування може бути визначено для системи за допомогою змінної +The default encryption algorithm can be defined for the system with the \fBENCRYPT_METHOD\fR -у -/etc/login\&.defs, і може бути перезаписано за допомогою параметрів +variable of +/etc/login\&.defs, and can be overwritten with the \fB\-e\fR, -\fB\-m\fR -або -\fB\-c\fR\&. +\fB\-m\fR, or +\fB\-c\fR +options\&. .PP Цю команду призначено для використання у великих системних середовищах, де одночасно створюють багато облікових записів\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBchgpasswd\fR, є такими: +The options which apply to the +\fBchgpasswd\fR +command are: .PP \fB\-c\fR, \fB\-\-crypt\-method\fR .RS 4 Скористатися для шифрування паролів вказаним методом\&. .sp -Доступними методами є DES, MD5, NONE і SHA256 або SHA512, якщо у вашій libc передбачено підтримку цих методів\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR @@ -80,7 +86,7 @@ chgpasswd \- оновлення паролів груп у пакетному р Скористатися шифруванням MD5 замість DES, якщо надані паролі не зашифровано\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -93,14 +99,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Використати вказану кількість циклів шифрування паролів\&. .sp -Значення 0 означає, що система вибере типову кількість проходів для методу шифрування (5000)\&. -.sp -Буде примусово встановлено мінімальне значення 1000 і максимальне значення 999999999\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Ви можете скористатися цим параметром у поєднанні із методами шифрування SHA256 або SHA512\&. -.sp -Типово, кількість проходів визначається за допомогою змінних SHA_CRYPT_MIN_ROUNDS і SHA_CRYPT_MAX_ROUNDS у +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP @@ -109,9 +114,9 @@ directory\&. Only absolute paths are supported\&. Вам слід переконатися, що паролі і метод шифрування відповідає правилам поводження з паролями у системі\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group diff --git a/man/uk/man8/chpasswd.8 b/man/uk/man8/chpasswd.8 index 2b75a3c..7b7d86b 100644 --- a/man/uk/man8/chpasswd.8 +++ b/man/uk/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "chpasswd" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "chpasswd" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,53 +31,59 @@ chpasswd \- оновлення паролів у пакетному режимі .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBchpasswd\fR\ 'u -\fBchpasswd\fR [\fIпараметри\fR] +\fBchpasswd\fR [\fIoptions\fR] .SH "ОПИС" .PP -Команда +The \fBchpasswd\fR -читає список пар ім\*(Aqя користувача \(em пароль зі стандартного джерела вхідних даних і використовує ці дані для оновлення набору наявних записів користувачів\&. Кожен рядок записується у такому форматі: +command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users\&. Each line is of the format: .PP -\fIім\*(Aqя_користувача\fR:\fIпароль\fR +\fIuser_name\fR:\fIpassword\fR .PP -Типово, паролі має бути надано простим текстом\&. Паролі буде зашифровано за допомогою -\fBchpasswd\fR\&. Також буде оновлено дані щодо віку пароля, якщо такі збережено\&. +By default the passwords must be supplied in clear\-text, and are encrypted by +\fBchpasswd\fR\&. Also the password age will be updated, if present\&. .PP -Типовий алгоритм шифрування може бути визначено для системи за допомогою змінної +The default encryption algorithm can be defined for the system with the \fBENCRYPT_METHOD\fR -або +or \fBMD5_CRYPT_ENAB\fR -у -/etc/login\&.defs, і може бути перезаписано за допомогою параметрів +variables of +/etc/login\&.defs, and can be overwritten with the \fB\-e\fR, -\fB\-m\fR -або -\fB\-c\fR\&. +\fB\-m\fR, or +\fB\-c\fR +options\&. .PP \fBchpasswd\fR -спершу оновлює усі паролі у пам\*(Aqяті, а потім записує усі зміни на диск, якщо не сталося помилок для якогось з користувачів\&. +first updates all the passwords in memory, and then commits all the changes to disk if no errors occurred for any user\&. .PP Цю команду призначено для використання у великих системних середовищах, де одночасно створюють багато облікових записів\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBchpasswd\fR, є такими: +The options which apply to the +\fBchpasswd\fR +command are: .PP -\fB\-c\fR, \fB\-\-crypt\-method\fR \fIMETHOD\fR +\fB\-c\fR, \fB\-\-crypt\-method\fR\ \&\fIMETHOD\fR .RS 4 Скористатися для шифрування паролів вказаним методом\&. .sp -Доступними методами є DES, MD5, NONE і SHA256 або SHA512, якщо у вашій libc передбачено підтримку цих методів\&. +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp -Типово, (якщо не вказано жодного з параметрів +By default (if none of the \fB\-c\fR, -\fB\-m\fR -або -\fB\-e\fR), метод шифрування буде визначено змінною +\fB\-m\fR, or +\fB\-e\fR +options are specified), the encryption method is defined by the \fBENCRYPT_METHOD\fR -або +or \fBMD5_CRYPT_ENAB\fR -у +variables of /etc/login\&.defs\&. .RE .PP @@ -96,7 +102,7 @@ chpasswd \- оновлення паролів у пакетному режимі Скористатися шифруванням MD5 замість DES, якщо надані паролі не зашифровано\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -105,31 +111,32 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-s\fR, \fB\-\-sha\-rounds\fR \fIROUNDS\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP +\fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 Використати вказану кількість циклів шифрування паролів\&. .sp -Значення 0 означає, що система вибере типову кількість проходів для методу шифрування (5000)\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Буде примусово встановлено мінімальне значення 1000 і максимальне значення 999999999\&. -.sp -Ви можете скористатися цим параметром у поєднанні із методами шифрування SHA256 або SHA512\&. -.sp -Типово, кількість проходів визначено змінними -\fBSHA_CRYPT_MIN_ROUNDS\fR -і -\fBSHA_CRYPT_MAX_ROUNDS\fR -у +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP Не забудьте встановити права доступу або umask, щоб запобігти доступності до читання нешифрованих файлів сторонніми користувачами\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP diff --git a/man/uk/man8/faillog.8 b/man/uk/man8/faillog.8 index 33f48ac..f19d424 100644 --- a/man/uk/man8/faillog.8 +++ b/man/uk/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "faillog" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "faillog" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,34 +31,37 @@ faillog \- вивести записи faillog або встановити обмеження на невдалі спроби увійти до системи .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fIпараметри\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "ОПИС" .PP \fBfaillog\fR -показує вміст бази даних помилок під час входу до системи (/var/log/faillog)\&. Ця програма також може встановлювати лічильник і обмеження помилок\&. Якщо +displays the contents of the failure log database (/var/log/faillog)\&. It can also set the failure counters and limits\&. When \fBfaillog\fR -запущено без аргументів, програма покаже лише записи користувачів, при спробах входу до системи яких сталася помилка\&. +is run without arguments, it only displays the faillog records of the users who had a login failure\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBfaillog\fR, є такими: +The options which apply to the +\fBfaillog\fR +command are: .PP \fB\-a\fR, \fB\-\-all\fR .RS 4 -Вивести (або виконати дію) над записами faillog для усіх користувачів, запис яких міститься у базі даних -faillog\&. +Display (or act on) faillog records for all users having an entry in the +faillog +database\&. .sp -Діапазон учасників можна обмежити за допомогою параметра -\fB\-u\fR\&. +The range of users can be restricted with the +\fB\-u\fR +option\&. .sp У режимі показу діапазон буде обмежено наявними користувачами, але буде примусово показано записи faillog, навіть якщо вони є порожніми\&. .sp -З параметрами +With the \fB\-l\fR, \fB\-m\fR, \fB\-r\fR, \fB\-t\fR -записи користувачів буде змінено, навіть якщо запису користувача не існує у системі\&. Це корисно для скидання записів користувачів, облікові записи яких було вилучено, або встановлення наперед правил для діапазону користувачів\&. +options, the users\*(Aq records are changed, even if the user does not exist on the system\&. This is useful to reset records of users that have been deleted or to set a policy in advance for a range of users\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -66,42 +69,45 @@ faillog\&. Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-l\fR, \fB\-\-lock\-secs\fR \fIСЕК\fR +\fB\-l\fR, \fB\-\-lock\-secs\fR\ \&\fISEC\fR .RS 4 -Заблокувати обліковий запис на -\fIСЕК\fR -секунд після невдалої спроби увійти до системи\&. +Lock account for +\fISEC\fR +seconds after failed login\&. .sp -Для користування цим параметром потрібен доступ до запису для файла -/var/log/faillog\&. +Write access to +/var/log/faillog +is required for this option\&. .RE .PP -\fB\-m\fR, \fB\-\-maximum\fR \fIМАКСИМУМ\fR +\fB\-m\fR, \fB\-\-maximum\fR\ \&\fIMAX\fR .RS 4 -Встановити максимальну кількість невдалих спроб, після якої обліковий запис буде вимкнено, у значення -\fIМАКСИМУМ\fR\&. +Set the maximum number of login failures after the account is disabled to +\fIMAX\fR\&. .sp -Вибір для -\fIМАКСИМУМ\fR -значення 0 призведе до усування обмеження на кількість невдалих спроб увійти до системи\&. +Selecting a +\fIMAX\fR +value of 0 has the effect of not placing a limit on the number of failed logins\&. .sp -Для +The maximum failure count should always be 0 for \fIroot\fR -максимальною кількістю невдалих спроб увійти до системи має завжди бути 0, щоб запобігти спробам атакувати систему, викликавши відмову в обслуговуванні\&. +to prevent a denial of services attack against the system\&. .sp -Для користування цим параметром потрібен доступ до запису для файла -/var/log/faillog\&. +Write access to +/var/log/faillog +is required for this option\&. .RE .PP \fB\-r\fR, \fB\-\-reset\fR .RS 4 Скинути лічильники помилок входу\&. .sp -Для користування цим параметром потрібен доступ до запису для файла -/var/log/faillog\&. +Write access to +/var/log/faillog +is required for this option\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -110,41 +116,43 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-t\fR, \fB\-\-time\fR \fIДНІ\fR +\fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR .RS 4 -Показати записи faillog, які є свіжішими за -\fIДНІ\fR\&. +Display faillog records more recent than +\fIDAYS\fR\&. .RE .PP -\fB\-u\fR, \fB\-\-user\fR \fIЗАПИС\fR|\fIДІАПАЗОН\fR +\fB\-u\fR, \fB\-\-user\fR\ \&\fILOGIN\fR|\fIRANGE\fR .RS 4 -Вивести запис журналу помилок або лічильників помилок і обмежень на помилки (якщо використано з +Display faillog record or maintains failure counters and limits (if used with \fB\-l\fR, \fB\-m\fR -або -\fB\-r\fR) лише для вказаних користувачів\&. +or +\fB\-r\fR +options) only for the specified user(s)\&. .sp -Користувачів можна задавати за обліковим записом для входу, числовим ідентифікатором користувача або значенням -\fIДІАПАЗОН\fR -для користувачів\&. -\fIДІАПАЗОН\fR -користувачів можна вказати за допомогою мінімального і максимального значень (\fIUID_MIN\-UID_MAX\fR), максимального значення (\fI\-UID_MAX\fR) або мінімального значення (\fIUID_MIN\-\fR)\&. +The users can be specified by a login name, a numerical user ID, or a +\fIRANGE\fR +of users\&. This +\fIRANGE\fR +of users can be specified with a min and max values (\fIUID_MIN\-UID_MAX\fR), a max value (\fI\-UID_MAX\fR), or a min value (\fIUID_MIN\-\fR)\&. .RE .PP -Якщо не вказано жодного з параметрів +When none of the \fB\-l\fR, -\fB\-m\fR -або -\fB\-r\fR, +\fB\-m\fR, or +\fB\-r\fR +options are used, \fBfaillog\fR -показує запис faillog вказаних користувачів\&. +displays the faillog record of the specified user(s)\&. .SH "ЗАСТЕРЕЖЕННЯ" .PP \fBfaillog\fR -виводить дані лише користувачів, які не мали успішних входів до системи з моменту останньої помилки\&. Щоб було виведено запис користувача, який успішно входив до системи з часу останньої помилки, вам слід явним чином надіслати запит щодо користувача за допомогою прапорця +only prints out users with no successful login since the last failure\&. To print out a user who has had a successful login since their last failure, you must explicitly request the user with the \fB\-u\fR -або наказати програмі вивести дані усіх користувачів за допомогою прапорця -\fB\-a\fR\&. +flag, or print out all users with the +\fB\-a\fR +flag\&. .SH "ФАЙЛИ" .PP /var/log/faillog diff --git a/man/uk/man8/groupadd.8 b/man/uk/man8/groupadd.8 index a6ac855..3268541 100644 --- a/man/uk/man8/groupadd.8 +++ b/man/uk/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "groupadd" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "groupadd" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,41 +31,45 @@ groupadd \- створення нової групи .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fIПАРАМЕТРИ\fR] \fIНОВА_ГРУПА\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "ОПИС" .PP -Команда +The \fBgroupadd\fR -створює обліковий запис групи з використанням значень, які вказано у командному рядку, і типових для системи значень\&. Запис нової групи буде додано до файлів системи, якщо у цьому буде потреба\&. +command creates a new group account using the values specified on the command line plus the default values from the system\&. The new group will be entered into the system files as needed\&. .PP Groupnames may contain only lower and upper case letters, digits, underscores, or dashes\&. They can end with a dollar sign\&. Dashes are not allowed at the beginning of the groupname\&. Fully numeric groupnames and groupnames \&. or \&.\&. are also disallowed\&. .PP Довжина назв груп не може перевищувати 32 символи\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBgroupadd\fR, є такими: +The options which apply to the +\fBgroupadd\fR +command are: .PP \fB\-f\fR, \fB\-\-force\fR .RS 4 -Використання цього параметра призведе до простого виходу з команди зі станом успіху, якщо вказана група вже існує\&. Якщо використано разом із -\fB\-g\fR, і вказаний GID вже існує, буде вибрано інший (унікальний) GID (тобто буде вимкнено -\fB\-g\fR)\&. +This option causes the command to simply exit with success status if the specified group already exists\&. When used with +\fB\-g\fR, and the specified GID already exists, another (unique) GID is chosen (i\&.e\&. +\fB\-g\fR +is turned off)\&. .RE .PP -\fB\-g\fR, \fB\-\-gid\fR \fIGID\fR +\fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 -Числове значення ідентифікатора групи\&. +The numerical value of the group\*(Aqs ID\&. \fIGID\fR -має бути унікальним, якщо не використано параметр -\fB\-o\fR\&. Значення має бути невід\*(Aqємним\&. Типовим є використання найменшого значення ідентифікатора, яке дорівнює або перевищує -\fBМІНІМАЛЬНИЙ_GID\fR -і є більшим за значення ідентифікатора будь\-якої іншої групи\&. +must be unique, unless the +\fB\-o\fR +option is used\&. The value must be non\-negative\&. The default is to use the smallest ID value greater than or equal to +\fBGID_MIN\fR +and greater than every other group\&. .sp -Див\&. також описи параметрів +See also the \fB\-r\fR -і -\fBМАКСИМАЛЬНИЙ_GID\fR\&. +option and the +\fBGID_MAX\fR +description\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,47 +77,43 @@ Groupnames may contain only lower and upper case letters, digits, underscores, o Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-K\fR, \fB\-\-key\fR \fIКЛЮЧ\fR=\fIЗНАЧЕННЯ\fR +\fB\-K\fR, \fB\-\-key\fR\ \&\fIKEY\fR=\fIVALUE\fR .RS 4 -Має пріоритет над типовими значенням у +Overrides /etc/login\&.defs -(GID_MIN, GID_MAX та іншими)\&. Може бути вказано декілька параметрів -\fB\-K\fR\&. -.sp -Приклад: +defaults (GID_MIN, GID_MAX and others)\&. Multiple \fB\-K\fR -\fIМІНІМАЛЬНИЙ_GID\fR=\fI100\fR -\fB\-K\fR -\fIМАКСИМАЛЬНИЙ_GID\fR=\fI499\fR +options can be specified\&. .sp -Зауваження: -\fB\-K\fR -\fIМІНІМАЛЬНИЙ_GID\fR=\fI10\fR,\fIМАКСИМАЛЬНИЙ_GID\fR=\fI499\fR -ще не працює\&. +Example: +\fB\-K\fR\ \&\fIGID_MIN\fR=\fI100\fR\ \& +\fB\-K\fR\ \&\fIGID_MAX\fR=\fI499\fR +.sp +Note: +\fB\-K\fR\ \&\fIGID_MIN\fR=\fI10\fR,\fIGID_MAX\fR=\fI499\fR +doesn\*(Aqt work yet\&. .RE .PP \fB\-o\fR, \fB\-\-non\-unique\fR .RS 4 -уможливлює створення груп із вже використаним числовим ідентифікатором\&. У результаті для цього -\fIGID\fR -прив\*(Aqязка до групи -\fIНОВА_ГРУПА\fR -може бути неунікальною\&. +permits the creation of a group with an already used numerical ID\&. As a result, for this +\fIGID\fR, the mapping towards group +\fINEWGROUP\fR +may not be unique\&. .RE .PP -\fB\-p\fR, \fB\-\-password\fR \fIПАРОЛЬ\fR +\fB\-p\fR, \fB\-\-password\fR\ \&\fIPASSWORD\fR .RS 4 -визначає початковий пароль до облікового запису групи\&. ПАРОЛЬ має бути зашифровано у форматі, який повертає -\fBcrypt\fR(3)\&. +defines an initial password for the group account\&. PASSWORD is expected to be encrypted, as returned by +\fBcrypt \fR(3)\&. .sp -Без цього параметра обліковий запис групи буде заблоковано; для нього також не буде визначено пароля, тобто у відповідному полі файла облікових записів системи +Without this option, the group account will be locked and with no password defined, i\&.e\&. a single exclamation mark in the respective field of ths system account file /etc/group -або -/etc/gshadow -буде вказано одинарний знак оклику\&. +or +/etc/gshadow\&. .sp -\fBЗауваження:\fR -не рекомендуємо користуватися цим параметром, оскільки пароль (або шифрований пароль) буде видимим для користувачів, які мають доступ до списку процесів\&. +\fBNote:\fR +This option is not recommended because the password (or encrypted password) will be visible by users listing the processes\&. .sp Вам слід переконатися, що пароль відповідає правилам складання паролів системи\&. .RE @@ -122,14 +122,14 @@ Groupnames may contain only lower and upper case letters, digits, underscores, o .RS 4 Створити загальносистемну групу\&. .sp -Числові ідентифікатори нових груп системи буде вибрано у діапазоні +The numeric identifiers of new system groups are chosen in the \fBSYS_GID_MIN\fR\-\fBSYS_GID_MAX\fR range, defined in -login\&.defs, замість діапазону -\fBМІНІМАЛЬНИЙ_GID\fR\-\fBМАКСИМАЛЬНИЙ_GID\fR\&. +login\&.defs, instead of +\fBGID_MIN\fR\-\fBGID_MAX\fR\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -138,30 +138,30 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-P\fR, \fB\-\-prefix\fR \fIКАТАЛОГ_ПРЕФІКСА\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR .RS 4 -Застосувати зміни до файлів налаштувань у кореневій файловій системі з каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR\&. Використання цього параметра не змінює кореневої теки\&. Параметр призначено лише для приготування цілі для компіляції коду для іншої операційної системи\&. Обмеження: не буде виконано перевірку користувачів/груп NIS і LDAP\&. При розпізнаванні у PAM буде використано файли основної системи\&. Підтримки SELINUX не передбачено\&. +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. .RE .PP \fB\-U\fR, \fB\-\-users\fR .RS 4 Список імен користувачів, яких слід додати як учасників групи\&. .sp -Типову поведінку (якщо не вказано параметрів +The default behavior (if the \fB\-g\fR, -\fB\-N\fR -і -\fB\-U\fR) буде визначено змінною +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the \fBUSERGROUPS_ENAB\fR -у +variable in /etc/login\&.defs\&. .RE .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -182,44 +182,44 @@ directory\&. Only absolute paths are supported\&. .PP Не можна додавати групи NIS або LDAP\&. Для таких груп цю дію має бути виконано на відповідному сервері\&. .PP -Якщо назва групи вже існує у зовнішній базі даних груп, зокрема NIS або LDAP, +If the groupname already exists in an external group database such as NIS or LDAP, \fBgroupadd\fR -відмовить у запиті щодо створення групи\&. +will deny the group creation request\&. .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBgroupadd\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI2\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI3\fR .RS 4 -некоректний аргумент параметра +invalid argument to option .RE .PP \fI4\fR .RS 4 -GID вже використано (якщо викликано без +GID is already used (when called without \fB\-o\fR) .RE .PP \fI9\fR .RS 4 -назву групи вже використано +group name is already used .RE .PP \fI10\fR .RS 4 -не вдалося оновити файл груп +can\*(Aqt update group file .RE .SH "ДИВ\&. ТАКОЖ" .PP diff --git a/man/uk/man8/groupdel.8 b/man/uk/man8/groupdel.8 index 1bc3ce7..dbbf8e7 100644 --- a/man/uk/man8/groupdel.8 +++ b/man/uk/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "groupdel" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "groupdel" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,18 @@ groupdel \- вилучення групи .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fIпараметри\fR] \fIGROUP\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "ОПИС" .PP -Команда +The \fBgroupdel\fR -вносить зміни до файлів загальносистемних облікових записів, вилучаючи усі записи, які стосуються імені користувача\fIGROUP\fR\&. Іменована група має існувати\&. +command modifies the system account files, deleting all entries that refer to +\fIGROUP\fR\&. The named group must exist\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBgroupdel\fR, є такими: +The options which apply to the +\fBgroupdel\fR +command are: .PP \fB\-f\fR, \fB\-\-force\fR .RS 4 @@ -52,7 +54,7 @@ groupdel \- вилучення групи Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -61,12 +63,13 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-P\fR, \fB\-\-prefix\fR \fIКАТАЛОГ_ПРЕФІКСА\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR .RS 4 -Застосувати зміни до каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR -і використати файли налаштувань з каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR\&. Використання цього параметра не змінює кореневої теки\&. Параметр призначено лише для приготування цілі для компіляції коду для іншої операційної системи\&. Обмеження: не буде виконано перевірку користувачів/груп NIS і LDAP\&. При розпізнаванні у PAM буде використано файли основної системи\&. Підтримки SELINUX не передбачено\&. +Apply changes in the +\fIPREFIX_DIR\fR +directory and use the configuration files from the +\fIPREFIX_DIR\fR +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\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP @@ -75,9 +78,9 @@ directory\&. Only absolute paths are supported\&. Вам слід виконати перевірку усіх файлових систем вручну, щоб переконатися, щоб не лишилося жодних файлів, які належать цій групі\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -91,33 +94,33 @@ directory\&. Only absolute paths are supported\&. .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBgroupdel\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI2\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI6\fR .RS 4 -вказаної групи не існує +specified group doesn\*(Aqt exist .RE .PP \fI8\fR .RS 4 -не вдалося вилучити основну групу користувача +can\*(Aqt remove user\*(Aqs primary group .RE .PP \fI10\fR .RS 4 -не вдалося оновити файл груп +can\*(Aqt update group file .RE .SH "ДИВ\&. ТАКОЖ" .PP diff --git a/man/uk/man8/groupmems.8 b/man/uk/man8/groupmems.8 index 997f6d2..6270c57 100644 --- a/man/uk/man8/groupmems.8 +++ b/man/uk/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "groupmems" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "groupmems" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,46 +31,51 @@ groupmems \- адміністрування учасників основної групи користувача .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgroupmems\fR\ 'u -\fBgroupmems\fR \-a\ \fIім\*(Aqя_користувача\fR | \-d\ \fIім\*(Aqя_користувача\fR | [\-g\ \fIназва_групи\fR] | \-l | \-p +\fBgroupmems\fR \-a\ \fIuser_name\fR | \-d\ \fIuser_name\fR | [\-g\ \fIgroup_name\fR] | \-l | \-p .SH "ОПИС" .PP -Команда +The \fBgroupmems\fR -надає змогу користувачеві адмініструвати список учасників власної групи без потреби у привілеях надкористувача\&. Допоміжну програму +command allows a user to administer their own group membership list without the requirement of superuser privileges\&. The \fBgroupmems\fR -призначено для систем, у яких облікові запис користувачів налаштовують так, щоб основною групою для них була група із назвою, яка збігається із назвою облікового запису користувача (тобто guest / guest)\&. +utility is for systems that configure its users to be in their own name sake primary group (i\&.e\&., guest / guest)\&. .PP -Лише надкористувач, як адміністратор, може використовувати +Only the superuser, as administrator, can use \fBgroupmems\fR -для зміни учасників інших груп\&. +to alter the memberships of other groups\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBgroupmems\fR, є такими: +The options which apply to the +\fBgroupmems\fR +command are: .PP -\fB\-a\fR, \fB\-\-add\fR \fIім\*(Aqя_користувача\fR +\fB\-a\fR, \fB\-\-add\fR\ \&\fIuser_name\fR .RS 4 Додати користувача до списку участі у групі\&. .sp -Якщо існує файл -/etc/gshadow, і у групи немає запису у файлі -/etc/gshadow, буде створено новий запис\&. +If the +/etc/gshadow +file exist, and the group has no entry in the +/etc/gshadow +file, a new entry will be created\&. .RE .PP -\fB\-d\fR, \fB\-\-delete\fR \fIім\*(Aqя_користувача\fR +\fB\-d\fR, \fB\-\-delete\fR\ \&\fIuser_name\fR .RS 4 Вилучити користувача зі списку участі у групі\&. .sp -Якщо файл +If the /etc/gshadow -існує, користувача буде вилучено зі списку учасників і адміністраторів групи\&. +file exist, the user will be removed from the list of members and administrators of the group\&. .sp -Якщо існує файл -/etc/gshadow, і у групи немає запису у файлі -/etc/gshadow, буде створено новий запис\&. +If the +/etc/gshadow +file exist, and the group has no entry in the +/etc/gshadow +file, a new entry will be created\&. .RE .PP -\fB\-g\fR, \fB\-\-group\fR \fIназва_групи\fR +\fB\-g\fR, \fB\-\-group\fR\ \&\fIgroup_name\fR .RS 4 Надкористувач може вказувати, до якого списку учасників груп слід внести зміни\&. .RE @@ -89,12 +94,14 @@ groupmems \- адміністрування учасників основної .RS 4 Витерти усіх користувачів зі списку учасників групи\&. .sp -Якщо існує файл -/etc/gshadow, і у групи немає запису у файлі -/etc/gshadow, буде створено новий запис\&. +If the +/etc/gshadow +file exist, and the group has no entry in the +/etc/gshadow +file, a new entry will be created\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -104,32 +111,37 @@ directory\&. Only absolute paths are supported\&. .RE .SH "КОНФІГУРАЦІЯ" .PP -Режимом доступу до виконуваного файла +The \fBgroupmems\fR -має бути +executable should be in mode 2710 -із власником +as user \fIroot\fR -і групою -\fIgroups\fR\&. Адміністратор системи може додавати користувачів до групи -\fIgroups\fR, щоб дозволити або заборонити їм користуватися програмою +and in group +\fIgroups\fR\&. The system administrator can add users to group +\fIgroups\fR +to allow or disallow them using the \fBgroupmems\fR -для керування списком учасників їхньої власної групи\&. +utility to manage their own group membership list\&. .sp .if n \{\ .RS 4 .\} .nf -$ groupadd \-r groups $ chmod 2710 groupmems $ chown root\&.groups groupmems $ groupmems \-g groups \-a gk4 + $ groupadd \-r groups + $ chmod 2710 groupmems + $ chown root:groups groupmems + $ groupmems \-g groups \-a gk4 + .fi .if n \{\ .RE .\} .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group diff --git a/man/uk/man8/groupmod.8 b/man/uk/man8/groupmod.8 index 4251b82..0e584c1 100644 --- a/man/uk/man8/groupmod.8 +++ b/man/uk/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "groupmod" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "groupmod" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,49 +31,50 @@ groupmod \- зміна визначення групи у системі .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fIпараметри\fR] \fIGROUP\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "ОПИС" .PP -Команда +The \fBgroupmod\fR -змінює визначення вказаної аргументом групи -\fIGROUP\fR, вносячи зміни до відповідного запису у базі даних груп\&. +command modifies the definition of the specified +\fIGROUP\fR +by modifying the appropriate entry in the group database\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBgroupmod\fR, є такими: +The options which apply to the +\fBgroupmod\fR +command are: .PP -\fB\-a\fR, \fB\-\-append\fR \fIGID\fR +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR .RS 4 Учасників групи вказують за допомогою параметра \-U\&. Записи буде дописано до наявного списку учасників, а не використано для заміни цього списку\&. .RE .PP -\fB\-g\fR, \fB\-\-gid\fR \fIGID\fR +\fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 -Ідентифікатор групи вказаного запису +The group ID of the given \fIGROUP\fR -буде змінено на +will be changed to \fIGID\fR\&. .sp -Значенням +The value of \fIGID\fR -має бути невід\*(Aqємне десяткове ціле число\&. Це значення має бути унікальним, якщо не використано параметр -\fB\-o\fR\&. +must be a non\-negative decimal integer\&. This value must be unique, unless the +\fB\-o\fR +option is used\&. .sp Записи користувачів, які використовують групу, як основну групу, буде оновлено з метою збереження групи, як їхньої основної групи\&. .sp -Ідентифікатор групи усіх файли, власником яких є група зі старим ідентифікатором, і які мають належати -\fIGROUP\fR, доведеться змінити вручну\&. +Any files that have the old group ID and must continue to belong to +\fIGROUP\fR, must have their group ID changed manually\&. .sp -Перевірок щодо -\fBМІНІМАЛЬНИЙ_GID\fR, -\fBМАКСИМАЛЬНИЙ_GID\fR, -\fBSYS_GID_MIN\fR -або +No checks will be performed with regard to the +\fBGID_MIN\fR, +\fBGID_MAX\fR, +\fBSYS_GID_MIN\fR, or \fBSYS_GID_MAX\fR -з -/etc/login\&.defs -виконано не буде\&. +from +/etc/login\&.defs\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -81,34 +82,36 @@ groupmod \- зміна визначення групи у системі Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-n\fR, \fB\-\-new\-name\fR \fIНОВА_ГРУПА\fR +\fB\-n\fR, \fB\-\-new\-name\fR\ \&\fINEW_GROUP\fR .RS 4 -Назву групи буде змінено з +The name of the group will be changed from \fIGROUP\fR -на -\fIНОВА_ГРУПА\fR\&. +to +\fINEW_GROUP\fR +name\&. .RE .PP \fB\-o\fR, \fB\-\-non\-unique\fR .RS 4 -Якщо використано у поєднанні із параметром -\fB\-g\fR, дозволити зміну групи +When used with the +\fB\-g\fR +option, allow to change the group \fIGID\fR -на неунікальне значення\&. +to a non\-unique value\&. .RE .PP -\fB\-p\fR, \fB\-\-password\fR \fIПАРОЛЬ\fR +\fB\-p\fR, \fB\-\-password\fR\ \&\fIPASSWORD\fR .RS 4 -Зашифрований пароль, як його повертає +The encrypted password, as returned by \fBcrypt\fR(3)\&. .sp -\fBЗауваження:\fR -не рекомендуємо користуватися цим параметром, оскільки пароль (або шифрований пароль) буде видимим для користувачів, які мають доступ до списку процесів\&. +\fBNote:\fR +This option is not recommended because the password (or encrypted password) will be visible by users listing the processes\&. .sp Вам слід переконатися, що пароль відповідає правилам складання паролів системи\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -117,32 +120,33 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-P\fR, \fB\-\-prefix\fR \fIКАТАЛОГ_ПРЕФІКСА\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR .RS 4 -Застосувати зміни до каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR -і використати файли налаштувань з каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR\&. Використання цього параметра не змінює кореневої теки\&. Параметр призначено лише для приготування цілі для компіляції коду для іншої операційної системи\&. Обмеження: не буде виконано перевірку користувачів/груп NIS і LDAP\&. При розпізнаванні у PAM буде використано файли основної системи\&. Підтримки SELINUX не передбачено\&. +Apply changes in the +\fIPREFIX_DIR\fR +directory and use the configuration files from the +\fIPREFIX_DIR\fR +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\&. .RE .PP \fB\-U\fR, \fB\-\-users\fR .RS 4 Список імен користувачів, яких слід додати як учасників групи\&. .sp -Типову поведінку (якщо не вказано параметрів +The default behavior (if the \fB\-g\fR, -\fB\-N\fR -і -\fB\-U\fR) буде визначено змінною +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the \fBUSERGROUPS_ENAB\fR -у +variable in /etc/login\&.defs\&. .RE .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -166,58 +170,58 @@ directory\&. Only absolute paths are supported\&. .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBgroupmod\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -E_SUCCESS: успіх +E_SUCCESS: success .RE .PP \fI2\fR .RS 4 -E_USAGE: некоректний синтаксис команди +E_USAGE: invalid command syntax .RE .PP \fI3\fR .RS 4 -E_BAD_ARG: некоректний аргумент параметра +E_BAD_ARG: invalid argument to option .RE .PP \fI4\fR .RS 4 -E_GID_IN_USE: ідентифікатор групи вже використано +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR .RS 4 -E_NOTFOUND: вказаної групи не існує +E_NOTFOUND: specified group doesn\*(Aqt exist .RE .PP \fI9\fR .RS 4 -E_NAME_IN_USE: назву групи вже використано +E_NAME_IN_USE: group name already in use .RE .PP \fI10\fR .RS 4 -E_GRP_UPDATE: не вдалося оновити файл групи +E_GRP_UPDATE: can\*(Aqt update group file .RE .PP \fI11\fR .RS 4 -E_CLEANUP_SERVICE: не вдалося налаштувати службу чищення +E_CLEANUP_SERVICE: can\*(Aqt setup cleanup service .RE .PP \fI12\fR .RS 4 -E_PAM_USERNAME: не вдалося визначити ваше ім\*(Aqя користувача для використання разом із pam +E_PAM_USERNAME: can\*(Aqt determine your username for use with pam .RE .PP \fI13\fR .RS 4 -E_PAM_ERROR: pam повернуто повідомлення про помилку, див\&. ідентифікатор groupmod у журналі syslog, щоб ознайомитися із повідомленням про помилку PAM +E_PAM_ERROR: pam returned an error, see syslog facility id groupmod for the PAM error message .RE .SH "ДИВ\&. ТАКОЖ" .PP diff --git a/man/uk/man8/grpck.8 b/man/uk/man8/grpck.8 index 134d7d1..3e574d9 100644 --- a/man/uk/man8/grpck.8 +++ b/man/uk/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "grpck" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "grpck" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,15 +31,15 @@ grpck \- перевірка цілісності файлів груп .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [параметри] [\fIгрупа\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "ОПИС" .PP -Команду +The \fBgrpck\fR -призначено для перевірки цілісності даних щодо груп\&. Вона перевіряє, чи усі записи у +command verifies the integrity of the groups information\&. It checks that all entries in /etc/group and /etc/gshadow -мають належне форматування і містять чинні дані\&. Програма попросить користувача вилучити записи із помилковим форматуванням або іншими непридатними до виправлення помилками\&. +have the proper format and contain valid data\&. The user is prompted to delete entries that are improperly formatted or which have other uncorrectable errors\&. .PP Буде виконано перевірки з метою переконатися, що кожен запис має: .sp @@ -97,32 +97,36 @@ and /etc/gshadow .sp -1 .IP \(bu 2.3 .\} -відповідний запис у файлі +a corresponding entry in the /etc/gshadow -(відповідно, +file (respectively /etc/group -для перевірок -gshadow) +for the +gshadow +checks) .RE .PP -Перевірки належної кількості полів та унікальності назв груп є критичними\&. Якщо у записі помилкова кількість полів, програма попросить користувача вилучити увесь рядок\&. Якщо користувач не підтвердить дію з вилучення, усі наступні перевірки буде пропущено\&. Якщо буде виявлено запис із дублюванням групи, програма попросить вилучити його, але якщо у цьому буде відмовлено, виконає решту перевірок\&. Усі інші помилки вважатимуться незначними \(em користувачу буде рекомендовано віддати команду -\fBgroupmod\fR, щоб виправити помилку\&. +The checks for correct number of fields and unique group name are fatal\&. If an entry has the wrong number of fields, the user will be prompted to delete the entire line\&. If the user does not answer affirmatively, all further checks are bypassed\&. An entry with a duplicated group name is prompted for deletion, but the remaining checks will still be made\&. All other errors are warnings and the user is encouraged to run the +\fBgroupmod\fR +command to correct the error\&. .PP -Команди, які мають справу з +The commands which operate on the /etc/group -and /etc/gshadow files, не зможуть змінити пошкоджені або дубльовані записи\&. У цих випадках слід скористатися +and /etc/gshadow files +are not able to alter corrupted or duplicated entries\&. \fBgrpck\fR -для вилучення помилкових записів\&. +should be used in those circumstances to remove the offending entries\&. .SH "ПАРАМЕТРИ" .PP -Параметри +The \fB\-r\fR -і +and \fB\-s\fR -не можна поєднувати\&. +options cannot be combined\&. .PP -Параметри, які застосовують до команди -\fBgrpck\fR, є такими: +The options which apply to the +\fBgrpck\fR +command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 @@ -131,14 +135,14 @@ and /etc/gshadow files, не зможуть змінити пошкоджені .PP \fB\-r\fR, \fB\-\-read\-only\fR .RS 4 -Виконати команду +Execute the \fBgrpck\fR -у режимі лише читання\&. Це призведе до того, що програма вважатиме відповідями на усі свої питання значення +command in read\-only mode\&. This causes all questions regarding changes to be answered \fIno\fR -і ні про що не запитуватиме користувача\&. +without user intervention\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -149,32 +153,32 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-s\fR, \fB\-\-sort\fR .RS 4 -Упорядкувати записи у +Sort entries in /etc/group and /etc/gshadow -за GID\&. +by GID\&. .RE .PP \fB\-S\fR, \fB\-\-silence\-warnings\fR .RS 4 -Придушити сумнівні попередження, зокрема попередження щодо неузгодженості між списками учасників групи у +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in /etc/group -і +and /etc/ghadow\&. .RE .PP -Типово, +By default, \fBgrpck\fR -працює з +operates on /etc/group -and /etc/gshadow\&. Користувач може вибрати альтернативні файли за допомогою -\fIгрупа\fR +and /etc/gshadow\&. The user may select alternate files with the +\fIgroup\fR and \fIshadow\fR parameters\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -193,42 +197,42 @@ and \fIshadow\fR parameters\&. .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBgrpck\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI1\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI2\fR .RS 4 -один або декілька помилкових записів груп +one or more bad group entries .RE .PP \fI3\fR .RS 4 -не вдалося відкрити файли груп +can\*(Aqt open group files .RE .PP \fI4\fR .RS 4 -не вдалося заблокувати файли груп +can\*(Aqt lock group files .RE .PP \fI5\fR .RS 4 -не вдалося оновити файли груп +can\*(Aqt update group files .RE .SH "ДИВ\&. ТАКОЖ" .PP -\fBгрупа\fR(5), +\fBgroup\fR(5), \fBgroupmod\fR(8), \fBgshadow\fR(5), \fBpasswd\fR(5), diff --git a/man/uk/man8/lastlog.8 b/man/uk/man8/lastlog.8 index d37b777..0fdc9f2 100644 --- a/man/uk/man8/lastlog.8 +++ b/man/uk/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "lastlog" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "lastlog" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,31 +31,33 @@ lastlog \- виведення даних щодо останнього входу до системи для усіх користувачів або для вказаного користувача\&. .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fIпараметри\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "ОПИС" .PP \fBlastlog\fR -форматує і виводить вміст журналу записів останнього входу до системи у файлі -/var/log/lastlog\&. Буде виведено дані -\fIім\*(Aqя користувача\fR, -\fIпорт\fR -і -\fIчас останнього входу до системи\fR\&. Типовий варіант (без прапорців) призведе до виведення записів lastlog, які буде упорядковано за порядком у +formats and prints the contents of the last login log +/var/log/lastlog +file\&. The +\fIlogin\-name\fR, +\fIport\fR, and +\fIlast login time\fR +will be printed\&. The default (no flags) causes lastlog entries to be printed, sorted by their order in /etc/passwd\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBlastlog\fR, є такими: +The options which apply to the +\fBlastlog\fR +command are: .PP -\fB\-b\fR, \fB\-\-before\fR \fIДНІ\fR +\fB\-b\fR, \fB\-\-before\fR\ \&\fIDAYS\fR .RS 4 -Вивести лише ті записи lastlog, вік яких перевищує -\fIДНІ\fR\&. +Print only lastlog records older than +\fIDAYS\fR\&. .RE .PP \fB\-C\fR, \fB\-\-clear\fR .RS 4 -Вилучити запис lastlog користувача\&. Цей параметр можна використовувати лише разом із +Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR (\fB\-\-user\fR))\&. .RE @@ -65,7 +67,7 @@ lastlog \- виведення даних щодо останнього вход Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -76,48 +78,45 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 -Встановити для запису lastlog користувача поточний час\&. Цей параметр можна використовувати лише разом із +Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR (\fB\-\-user\fR))\&. .RE .PP -\fB\-t\fR, \fB\-\-time\fR \fIДНІ\fR +\fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR .RS 4 -Вивести записи lastlog, які є свіжішими за -\fIДНІ\fR\&. +Print the lastlog records more recent than +\fIDAYS\fR\&. .RE .PP -\fB\-u\fR, \fB\-\-user\fR \fIЗАПИС\fR|\fIДІАПАЗОН\fR +\fB\-u\fR, \fB\-\-user\fR\ \&\fILOGIN\fR|\fIRANGE\fR .RS 4 Вивести запис lastlog для вказаних користувачів\&. .sp -Користувачів можна задавати за обліковим записом для входу, числовим ідентифікатором користувача або значенням -\fIДІАПАЗОН\fR -для користувачів\&. -\fIДІАПАЗОН\fR -користувачів можна вказати за допомогою мінімального і максимального значень (\fIUID_MIN\-UID_MAX\fR), максимального значення (\fI\-UID_MAX\fR) або мінімального значення (\fIUID_MIN\-\fR)\&. +The users can be specified by a login name, a numerical user ID, or a +\fIRANGE\fR +of users\&. This +\fIRANGE\fR +of users can be specified with a min and max values (\fIUID_MIN\-UID_MAX\fR), a max value (\fI\-UID_MAX\fR), or a min value (\fIUID_MIN\-\fR)\&. .RE .PP -Якщо користувач ніколи не входив до системи, буде виведено повідомлення -\fI** Ніколи не входив **\fR -замість порту і часу\&. +If the user has never logged in the message +\fI** Never logged in**\fR +will be displayed instead of the port and time\&. .PP Буде виведено записи лише для поточних користувачів системи\&. У системі можуть існувати дані для записів користувачів, які було раніше вилучено\&. .SH "ЗАУВАЖЕННЯ" .PP -Файл +The lastlog -є базою даних, які містить дані щодо останнього входу до системи кожного з користувачів\&. Вам не слід оновлювати його вміст вручну\&. Це розріджений файл, тому його розмір на диску, зазвичай, є набагато меншим за показаний -\fBls \-l\fR -(ця команда може показати дуже великий розмір, якщо у вашому +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 "\fBls \-l\fR" (which can indicate a really big file if you have in passwd -є записи із великими значеннями UID)\&. Переглянути справжній розмір файла можна за допомогою команди -\fBls \-s\fR\&. +users with a high UID)\&. You can display its real size with "\fBls \-s\fR"\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /var/log/lastlog @@ -128,6 +127,6 @@ passwd .PP Великі прогалини у числах UID призведуть до того, що програма lastlog працюватиме довше без виведення даних на екран (тобто, якщо у базі даних lastlog немає записів для користувачів із UID між 170 і 800, може здатися, що lastlog зависла, доки програма обробляє UID у діапазоні 171\-799)\&. .PP -Наявність великих значень UID може створити проблеми при обробці -/var/log/lastlog -за допомогою зовнішніх інструментів\&. Хоча сам файл є розрідженим і він не використовує надто багато місця на диску, деякі програми типово не призначено для визначення розріджених файлів \(em такі програми можуть потребувати для обробки певного параметра\&. +Having high UIDs can create problems when handling the +/var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/uk/man8/logoutd.8 b/man/uk/man8/logoutd.8 index 1206913..f86a741 100644 --- a/man/uk/man8/logoutd.8 +++ b/man/uk/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "logoutd" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "logoutd" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -35,13 +35,15 @@ logoutd \- примусово застосувати обмеження щодо .SH "ОПИС" .PP \fBlogoutd\fR -накладає обмеження на час входу та порт, які вказано у +enforces the login time and port restrictions specified in /etc/porttime\&. \fBlogoutd\fR -має бути запущено з -/etc/rc\&. Система виконуватиме регулярне сканування -/var/run/utmp\&. Буде виконано перевірку кожного користувача з метою визначення того, чи має доступ користувач до іменованого порту у поточний момент часу\&. Усі сеанси роботи, які порушуватимуть обмеження у -/etc/porttime, буде перервано\&. +should be started from +/etc/rc\&. The +/var/run/utmp +file is scanned periodically and each user name is checked to see if the named user is permitted on the named port at the current time\&. Any login session which is violating the restrictions in +/etc/porttime +is terminated\&. .SH "ФАЙЛИ" .PP /etc/porttime diff --git a/man/uk/man8/newusers.8 b/man/uk/man8/newusers.8 index 61d72dd..1bc4f25 100644 --- a/man/uk/man8/newusers.8 +++ b/man/uk/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "newusers" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "newusers" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,15 +31,15 @@ newusers \- пакетне оновлення і створення облікових записів користувачів .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBnewusers\fR\ 'u -\fBnewusers\fR [\fIпараметри\fR] [\fIфайл\fR] +\fBnewusers\fR [\fIoptions\fR] [\fIfile\fR] .SH "ОПИС" .PP -Команда +The \fBnewusers\fR -читає -\fIфайл\fR -(або, типово, стандартного джерела вхідних даних) і використовує ці дані для оновлення набору наявних записів користувачів або створення записів нових користувачів\&. Кожен рядок записано у тому самому форматі, що і стандартний файл паролів (див\&. -\fBpasswd\fR(5))\&. Винятки з цього правила описано нижче: +command reads a +\fIfile\fR +(or the standard input by default) and uses this information to update a set of existing users or to create new users\&. Each line is in the same format as the standard password file (see +\fBpasswd\fR(5)) with the exceptions explained below: .PP pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .PP @@ -47,8 +47,8 @@ pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .RS 4 Це ім\*(Aqя користувача\&. .sp -Це може бути ім\*(Aqя нового користувача або ім\*(Aqя наявного користувача (або користувача, запис якого створено раніше за допомогою -\fBnewusers\fR)\&. У випадку наявного користувача буде змінено дані щодо користувача\&. Якщо запису користувача не існуватиме, його буде створено\&. +It can be the name of a new user or the name of an existing user (or a user created before by +\fBnewusers\fR)\&. In case of an existing user, the user\*(Aqs information will be changed, otherwise a new user will be created\&. .RE .PP \fIpw_passwd\fR @@ -60,14 +60,13 @@ pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .RS 4 Це поле буде використано для визначення UID користувача\&. .sp -Якщо поле є порожнім, новий (невикористаний) UID буде визначено -\fBnewusers\fR -автоматично\&. +If the field is empty, a new (unused) UID will be defined automatically by +\fBnewusers\fR\&. .sp Якщо у цьому полі міститься число, це число буде використано як UID\&. .sp -Якщо у цьому полі міститься ім\*(Aqя наявного користувача (або ім\*(Aqя користувача, запис якого було створено раніше за допомогою -\fBnewusers\fR), буде використано UID вказаного користувача\&. +If this field contains the name of an existing user (or the name of a user created before by +\fBnewusers\fR), the UID of the specified user will be used\&. .sp Якщо буде змінено UID наявного користувача, власність на файли файла користувача має бути виправлено вручну\&. .RE @@ -76,19 +75,19 @@ pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .RS 4 Це поле використовують для визначення ідентифікатора основної групи користувача\&. .sp -Якщо у цьому полі міститься ім\*(Aqя наявної групи (або групи, яку раніше створено за допомогою -\fBnewusers\fR), GID цієї групи буде використано як ідентифікатор основної групи користувача\&. +If this field contains the name of an existing group (or a group created before by +\fBnewusers\fR), the GID of this group will be used as the primary group ID for the user\&. .sp Якщо у цьому полі записано число, це число буде використано як ідентифікатор основної групи користувача\&. Якщо груп із цим GID не існує, буде створено нову групу з цим GID і назвою, яка збігається із іменем користувача\&. .sp -Якщо це поле є порожнім, буде створено нову групу із назвою, яка збігається із іменем користувача, а GID буде автоматично визначено за допомогою +If this field is empty, a new group will be created with the name of the user and a GID will be automatically defined by \fBnewusers\fR -для використання як ідентифікатора основної групи для користувача і як GID для нової групи\&. +to be used as the primary group ID for the user and as the GID for the new group\&. .sp -Якщо у цьому полі міститься назва групи, якої не існує (і її не було створено раніше за допомогою -\fBnewusers\fR), буде створено нову групу із вказаною назвою, а GID буде автоматично визначено за допомогою +If this field contains the name of a group which does not exist (and was not created before by +\fBnewusers\fR), a new group will be created with the specified name and a GID will be automatically defined by \fBnewusers\fR -для використання як ідентифікатора основної групи для користувача і GID для нової групи\&. +to be used as the primary group ID for the user and GID for the new group\&. .RE .PP \fIpw_gecos\fR @@ -100,13 +99,13 @@ pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .RS 4 Це поле призначено для визначення домашнього каталогу користувача\&. .sp -Якщо це поле не вказує на наявний каталог, вказаний каталог буде створено\&. Власником буде користувач, обліковий запис якого буде створено або оновлено, та його основна група\&. Зауважте, що -\fInewusers не створює батьківських каталогів\fR -домашнього каталогу нового користувача\&. Команда newusers не зможе створити домашній каталог, якщо не існує батьківських щодо нього каталогів, і надішле повідомлення до stderr із інформуванням користувача про помилку\&. Команда newusers не перерве роботу і не поверне помилку до оболонки, з якої її віддано, якщо їй не вдасться створити домашній каталог, а продовжить обробку пакета вказаних нових користувачів\&. +If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that +\fInewusers does not create parent directories \fR +of the new user\*(Aqs home directory\&. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure\&. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified\&. .sp -Якщо буде змінено домашній каталог наявного користувача, +If the home directory of an existing user is changed, \fBnewusers\fR -не пересуватиме і не копіюватиме вміст старого каталогу до нового місця\&. Це доведеться зробити вручну\&. +does not move or copy the content of the old directory to the new location\&. This should be done manually\&. .RE .PP \fIpw_shell\fR @@ -115,13 +114,14 @@ pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .RE .PP \fBnewusers\fR -спочатку намагається створити або змінити дані усіх вказаних користувачів, а потім записує ці зміни до баз даних користувачів або груп\&. Якщо станеться помилка (окрім остаточного запису до баз даних), змін до баз даних не вноситимуться\&. +first tries to create or change all the specified users, and then write these changes to the user or group databases\&. If an error occurs (except in the final writes to the databases), no changes are committed to the databases\&. .PP Цю команду призначено для використання у великих системних середовищах, де одночасно оновлюють багато облікових записів\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBnewusers\fR, є такими: +The options which apply to the +\fBnewusers\fR +command are: .PP \fB\-\-badname\fR\ \& .RS 4 @@ -144,17 +144,18 @@ pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell .RS 4 Створити загальносистемний обліковий запис\&. .sp -Записи загальносистемних користувачів буде створено без даних щодо застарівання у -/etc/shadow, а їхні числові ідентифікатори буде вибрано у діапазоні -\fBSYS_UID_MIN\fR\-\fBSYS_UID_MAX\fR, який визначено у -login\&.defs, а не у +System users will be created with no aging information in +/etc/shadow, and their numeric identifiers are chosen in the +\fBSYS_UID_MIN\fR\-\fBSYS_UID_MAX\fR +range, defined in +login\&.defs, instead of \fBUID_MIN\fR\-\fBUID_MAX\fR -(та їхніх відповідників +(and their \fBGID\fR -для створення груп)\&. +counterparts for the creation of groups)\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -167,14 +168,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 Використати вказану кількість циклів шифрування паролів\&. .sp -Значення 0 означає, що система вибере типову кількість проходів для методу шифрування (5000)\&. -.sp -Буде примусово встановлено мінімальне значення 1000 і максимальне значення 999999999\&. +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -Ви можете скористатися цим параметром у поєднанні із методами шифрування SHA256 або SHA512\&. -.sp -Типово, кількість проходів визначається за допомогою змінних SHA_CRYPT_MIN_ROUNDS і SHA_CRYPT_MAX_ROUNDS у +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP @@ -183,9 +183,9 @@ directory\&. Only absolute paths are supported\&. Вам слід переконатися, що паролі і метод шифрування відповідає правилам поводження з паролями у системі\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: diff --git a/man/uk/man8/nologin.8 b/man/uk/man8/nologin.8 index ee731e2..ae3599b 100644 --- a/man/uk/man8/nologin.8 +++ b/man/uk/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "nologin" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "nologin" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -34,21 +34,22 @@ nologin \- увічливо відмовити у вході до системи \fBnologin\fR .SH "ОПИС" .PP -Команда +The \fBnologin\fR -виводить повідомлення про те, що обліковий запис є недоступним, і завершує роботу із ненульовим станом\&. Команду призначено на заміну поля командної оболонки для облікових записів, які було вимкнено\&. +command displays a message that an account is not available and exits non\-zero\&. It is intended as a replacement shell field for accounts that have been disabled\&. .PP -Щоб взагалі вимкнути можливість входу, ознайомтеся із документацією до +To disable all logins, investigate \fBnologin\fR(5)\&. .PP -Якщо встановлено значення -\fBSSH_ORIGINAL_COMMAND\fR, дані буде записано до журналу\&. +If +\fBSSH_ORIGINAL_COMMAND\fR +is populated it will be logged\&. .SH "ДИВ\&. ТАКОЖ" .PP \fBlogin\fR(1), \fBnologin\fR(5)\&. .SH "ІСТОРІЯ" .PP -Команда +The \fBnologin\fR -з\*(Aqявилася у BSD 4\&.4\&. +command appeared in BSD 4\&.4\&. diff --git a/man/uk/man8/pwck.8 b/man/uk/man8/pwck.8 index 8fdc3f7..bb3c08d 100644 --- a/man/uk/man8/pwck.8 +++ b/man/uk/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "pwck" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "pwck" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,15 +31,16 @@ pwck \- перевірка цілісності файлів паролів .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBpwck\fR\ 'u -\fBpwck\fR [параметри] [\fIФАЙЛ_ПАРОЛІВ\fR\ [\ \fIФАЙЛ_SHADOW\fR\ ]] +\fBpwck\fR [options] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] .SH "ОПИС" .PP -Команду +The \fBpwck\fR -призначено для перевірки цілісності даних щодо користувачів і розпізнавання\&. Вона перевіряє, чи усі записи у +command verifies the integrity of the users and authentication information\&. It checks that all entries in /etc/passwd -і -/etc/shadowмають належне форматування і містять чинні дані\&. Програма попросить користувача вилучити записи із помилковим форматуванням або іншими непридатними до виправлення помилками\&. +and +/etc/shadow +have the proper format and contain valid data\&. The user is prompted to delete entries that are improperly formatted or which have other uncorrectable errors\&. .PP Буде виконано перевірки з метою переконатися, що кожен запис має: .sp @@ -109,10 +110,11 @@ pwck \- перевірка цілісності файлів паролів чинна оболонка входу .RE .PP -Перевірки для даних прихованих паролів буде увімкнено, якщо вказано другий параметр файла -\fIФАЙЛ_SHADOW\fR -або якщо у системі існує -/etc/shadow\&. +Checks for shadowed password information are enabled when the second file parameter +\fISHADOWFILE\fR +is specified or when +/etc/shadow +exists on the system\&. .PP Цими перевірками є такі: .sp @@ -171,23 +173,26 @@ pwck \- перевірка цілісності файлів паролів останні зміни паролів не позначено часовими позначками у майбутньому .RE .PP -Перевірки належної кількості полів та унікальності імен користувачів є критичними\&. Якщо у записі помилкова кількість полів, програма попросить користувача вилучити увесь рядок\&. Якщо користувач не підтвердить дію з вилучення, усі наступні перевірки буде пропущено\&. Якщо буде виявлено запис із дублюванням імені користувача, програма попросить вилучити його, але якщо у цьому буде відмовлено, виконає решту перевірок\&. Усі інші помилки вважатимуться незначними \(em користувачу буде рекомендовано віддати команду -\fBusermod\fR, щоб виправити помилку\&. +The checks for correct number of fields and unique user name are fatal\&. If the entry has the wrong number of fields, the user will be prompted to delete the entire line\&. If the user does not answer affirmatively, all further checks are bypassed\&. An entry with a duplicated user name is prompted for deletion, but the remaining checks will still be made\&. All other errors are warnings and the user is encouraged to run the +\fBusermod\fR +command to correct the error\&. .PP -Команди, які мають справу з файлом -/etc/passwd, не зможуть змінити пошкоджені або дубльовані записи\&. У цих випадках слід скористатися +The commands which operate on the +/etc/passwd +file are not able to alter corrupted or duplicated entries\&. \fBpwck\fR -для вилучення помилкового запису\&. +should be used in those circumstances to remove the offending entry\&. .SH "ПАРАМЕТРИ" .PP -Параметри +The \fB\-r\fR -і +and \fB\-s\fR -не можна поєднувати\&. +options cannot be combined\&. .PP -Параметри, які застосовують до команди -\fBpwck\fR, є такими: +The options which apply to the +\fBpwck\fR +command are: .PP \fB\-\-badname\fR\ \& .RS 4 @@ -206,12 +211,12 @@ pwck \- перевірка цілісності файлів паролів .PP \fB\-r\fR, \fB\-\-read\-only\fR .RS 4 -Виконати команду +Execute the \fBpwck\fR -у режимі лише читання\&. +command in read\-only mode\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -222,27 +227,28 @@ directory\&. Only absolute paths are supported\&. .PP \fB\-s\fR, \fB\-\-sort\fR .RS 4 -Упорядкувати записи у +Sort entries in /etc/passwd -і +and /etc/shadow -за UID\&. +by UID\&. .RE .PP -Типово, +By default, \fBpwck\fR -працює з файлами +operates on the files /etc/passwd -і -/etc/shadow\&. Користувач може вибрати альтернативні файли за допомогою параметрів +and +/etc/shadow\&. The user may select alternate files with the \fIpasswd\fR -і -\fIshadow\fR\&. +and +\fIshadow\fR +parameters\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -261,47 +267,47 @@ directory\&. Only absolute paths are supported\&. .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBpwck\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI1\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI2\fR .RS 4 -одна або декілька невдалих спроб ввести пароль +one or more bad password entries .RE .PP \fI3\fR .RS 4 -не вдалося відкрити файли паролів +can\*(Aqt open password files .RE .PP \fI4\fR .RS 4 -не вдалося заблокувати файли паролів +can\*(Aqt lock password files .RE .PP \fI5\fR .RS 4 -не вдалося оновити файли паролів +can\*(Aqt update password files .RE .PP \fI6\fR .RS 4 -не вдалося упорядкувати файли паролів +can\*(Aqt sort password files .RE .SH "ДИВ\&. ТАКОЖ" .PP -\fBгрупа\fR(5), +\fBgroup\fR(5), \fBgrpck\fR(8), \fBpasswd\fR(5), \fBshadow\fR(5), diff --git a/man/uk/man8/pwconv.8 b/man/uk/man8/pwconv.8 index 8264a36..9f2ec23 100644 --- a/man/uk/man8/pwconv.8 +++ b/man/uk/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "pwconv" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "pwconv" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,98 +31,98 @@ pwconv, pwunconv, grpconv, grpunconv \- перетворення на приховані паролі і групи, і навпаки .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBpwconv\fR\ 'u -\fBpwconv\fR [\fIпараметри\fR] +\fBpwconv\fR [\fIoptions\fR] .HP \w'\fBpwunconv\fR\ 'u -\fBpwunconv\fR [\fIпараметри\fR] +\fBpwunconv\fR [\fIoptions\fR] .HP \w'\fBgrpconv\fR\ 'u -\fBgrpconv\fR [\fIпараметри\fR] +\fBgrpconv\fR [\fIoptions\fR] .HP \w'\fBgrpunconv\fR\ 'u -\fBgrpunconv\fR [\fIпараметри\fR] +\fBgrpunconv\fR [\fIoptions\fR] .SH "ОПИС" .PP -Команда +The \fBpwconv\fR -створює +command creates \fIshadow\fR -на основі +from \fIpasswd\fR -і, необов\*(Aqязково, наявного +and an optionally existing \fIshadow\fR\&. .PP -Команда +The \fBpwunconv\fR -створює +command creates \fIpasswd\fR -на основі +from \fIpasswd\fR -і -\fIshadow\fR, а потім вилучає +and +\fIshadow\fR +and then removes \fIshadow\fR\&. .PP -Команда +The \fBgrpconv\fR -створює +command creates \fIgshadow\fR -на основі -\fIгрупа\fR -і, необов\*(Aqязково, наявного +from +\fIgroup\fR +and an optionally existing \fIgshadow\fR\&. .PP -Команда +The \fBgrpunconv\fR -створює -\fIгрупа\fR -на основі -\fIгрупа\fR -і -\fIgshadow\fR, а потім вилучає +command creates +\fIgroup\fR +from +\fIgroup\fR +and +\fIgshadow\fR +and then removes \fIgshadow\fR\&. .PP -Ці чотири програми працюють зі звичайними паролями та паролями shadow та файлами груп: +These four programs all operate on the normal and shadow password and group files: /etc/passwd, /etc/group, -/etc/shadow -і +/etc/shadow, and /etc/gshadow\&. .PP -Кожна програма виконує належні блокування перед перетворенням\&. Команди +Each program acquires the necessary locks before conversion\&. \fBpwconv\fR -і +and \fBgrpconv\fR -є еквівалентними\&. Спочатку, буде вилучено записи у файлі shadow, яких немає в основному файлі\&. Потім буде оновлено записи shadow, у яких не вказано \(Fox\(Fc, як пароль, в основному файлі\&. Буде додано усі пропущені записи shadow\&. Нарешті, паролі в основному файлі буде замінено на \(Fox\(Fc\&. Цими програмами можна скористатися для початкового перетворення, а також для оновлення файла shadow, якщо до основного файла було внесено зміни вручну\&. +are similar\&. First, entries in the shadowed file which don\*(Aqt exist in the main file are removed\&. Then, shadowed entries which don\*(Aqt have `x\*(Aq as the password in the main file are updated\&. Any missing shadowed entries are added\&. Finally, passwords in the main file are replaced with `x\*(Aq\&. These programs can be used for initial conversion as well to update the shadowed file if the main file is edited by hand\&. .PP \fBpwconv\fR -використає значення +will use the values of \fIPASS_MIN_DAYS\fR, -\fIPASS_MAX_DAYS\fR -і +\fIPASS_MAX_DAYS\fR, and \fIPASS_WARN_AGE\fR -з +from /etc/login\&.defs -при додаванні нових записів до +when adding new entries to /etc/shadow\&. .PP -Так само, є подібними команди -\fBpwunconv\fR -і -\fBgrpunconv\fR\&. Паролі в основному файлі буде оновлено з файла shadow\&. Записи, які існують у основному файлі, але яких немає у файлі shadow, буде залишено\&. Нарешті, файл shadow буде вилучено\&. Робота +Likewise \fBpwunconv\fR -призведе до втрати деяких даних щодо застарівання паролів\&. Програма виконає перетворення лише тих даних, які можна перетворити\&. +and +\fBgrpunconv\fR +are similar\&. Passwords in the main file are updated from the shadowed file\&. Entries which exist in the main file but not in the shadowed file are left alone\&. Finally, the shadowed file is removed\&. Some password aging information is lost by +\fBpwunconv\fR\&. It will convert what it can\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди +The options which apply to the \fBpwconv\fR, \fBpwunconv\fR, -\fBgrpconv\fR -та -\fBgrpunconv\fR, є такими: +\fBgrpconv\fR, and +\fBgrpunconv\fR +commands are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -132,23 +132,23 @@ directory\&. Only absolute paths are supported\&. .RE .SH "ВАДИ" .PP -Помилки у файлах паролів або груп (зокрема некоректні або дубльовані записи) можуть спричинити зависання або помилки у роботі цих програм\&. Будь ласка, запустіть +Errors in the password or group files (such as invalid or duplicate entries) may cause these programs to loop forever or fail in other strange ways\&. Please run \fBpwck\fR -і +and \fBgrpck\fR -для виправлення таких помилок до перетворення паролів або груп shadow\&. +to correct any such errors before converting to or from shadow passwords or groups\&. .SH "НАЛАШТУВАННЯ" .PP -Вказана нижче змінна налаштувань у +The following configuration variable in /etc/login\&.defs -змінює поведінку +changes the behavior of \fBgrpconv\fR -і +and \fBgrpunconv\fR: .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку +change the behavior of \fBpwconv\fR: .SH "ФАЙЛИ" .PP diff --git a/man/uk/man8/sulogin.8 b/man/uk/man8/sulogin.8 index 1197390..66496ca 100644 --- a/man/uk/man8/sulogin.8 +++ b/man/uk/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "sulogin" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "sulogin" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -76,9 +76,9 @@ should execute the sulogin command in single user mode\&. As complete an environment as possible is created\&. However, various devices may be unmounted or uninitialized and many of the user commands may be unavailable or nonfunctional as a result\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd diff --git a/man/uk/man8/useradd.8 b/man/uk/man8/useradd.8 index 1f92e73..573e877 100644 --- a/man/uk/man8/useradd.8 +++ b/man/uk/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "useradd" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "useradd" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,69 +31,73 @@ useradd \- створення запису користувача або оновлення відомостей щодо типового нового користувача .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR [\fIпараметри\fR] \fIЗАПИС\fR +\fBuseradd\fR [\fIoptions\fR] \fILOGIN\fR .HP \w'\fBuseradd\fR\ 'u \fBuseradd\fR \-D .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR \-D [\fIпараметри\fR] +\fBuseradd\fR \-D [\fIoptions\fR] .SH "ОПИС" .PP -Якщо програму викликано без параметра -\fB\-D\fR, команда +When invoked without the +\fB\-D\fR +option, the \fBuseradd\fR -створити обліковий запис користувача з використанням значень, які вказано у рядку команди, і значень, які є типовими для системи\&. Залежно від параметрів рядка команди, команда +command creates a new user account using the values specified on the command line plus the default values from the system\&. Depending on command line options, the \fBuseradd\fR -оновить файли системи і також може створити домашній каталог нового користувача і скопіювати туди початкові файли\&. +command will update system files and may also create the new user\*(Aqs home directory and copy initial files\&. .PP -Типово, для нового користувача також буде створено його власну групу (див\&. +By default, a group will also be created for the new user (see \fB\-g\fR, \fB\-N\fR, -\fB\-U\fR -і +\fB\-U\fR, and \fBUSERGROUPS_ENAB\fR)\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBuseradd\fR, є такими: +The options which apply to the +\fBuseradd\fR +command are: .PP \fB\-\-badname\fR\ \& .RS 4 Дозволити назви, які не відповідають стандартам\&. .RE .PP -\fB\-b\fR, \fB\-\-base\-dir\fR \fIБАЗОВИЙ_КАТАЛОГ\fR +\fB\-b\fR, \fB\-\-base\-dir\fR\ \&\fIBASE_DIR\fR .RS 4 -Типовий базовий каталог для системи, якщо не вказано -\fB\-d\fR -\fIДОМАШНІЙ_КАТАЛОГ\fR\&. Для визначення домашнього каталогу -\fIБАЗОВИЙ_КАТАЛОГ\fR -буде поєднано із назвою облікового запису\&. +The default base directory for the system if +\fB\-d\fR\ \&\fIHOME_DIR\fR +is not specified\&. +\fIBASE_DIR\fR +is concatenated with the account name to define the home directory\&. .sp -Якщо цей параметр не вказано, +If this option is not specified, \fBuseradd\fR -використає базовий каталог, який вказано змінною +will use the base directory specified by the \fBHOME\fR -у -/etc/default/useradd, або типовий каталог -/home\&. +variable in +/etc/default/useradd, or +/home +by default\&. .RE .PP -\fB\-c\fR, \fB\-\-comment\fR \fIКОМЕНТАР\fR +\fB\-c\fR, \fB\-\-comment\fR\ \&\fICOMMENT\fR .RS 4 Будь\-який рядок тексту\&. Зазвичай, це короткий опис облікового запису\&. У поточній версії використано як поле для повного імені користувача\&. .RE .PP -\fB\-d\fR, \fB\-\-home\-dir\fR \fIДОМАШНІЙ_КАТАЛОГ\fR +\fB\-d\fR, \fB\-\-home\-dir\fR\ \&\fIHOME_DIR\fR .RS 4 -Новий запис користувача буде створено з використанням -\fIДОМАШНІЙ_КАТАЛОГ\fR, як значення для каталогу входу до системи користувача\&. Типовим значенням є дописування імені -\fIЗАПИС\fR -до -\fIБАЗОВИЙ_КАТАЛОГ\fR -і використання результату як назви каталогу облікового запису\&. Якщо каталогу -\fIДОМАШНІЙ_КАТАЛОГ\fR -не існує, його буде створено, якщо не вказано параметр -\fB\-M\fR\&. +The new user will be created using +\fIHOME_DIR\fR +as the value for the user\*(Aqs login directory\&. The default is to append the +\fILOGIN\fR +name to +\fIBASE_DIR\fR +and use that as the login directory name\&. If the directory +\fIHOME_DIR\fR +does not exist, then it will be created unless the +\fB\-M\fR +option is specified\&. .RE .PP \fB\-D\fR, \fB\-\-defaults\fR @@ -101,30 +105,30 @@ useradd \- створення запису користувача або оно Див\&. нижче, підрозділ \(FoЗміна типових значень\(Fc\&. .RE .PP -\fB\-e\fR, \fB\-\-expiredate\fR \fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR +\fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 -Дата, у яку буде вимкнено обліковий запис користувача\&. Дату вказують у форматі -\fIРРРР\-ММ\-ДД\fR\&. +The date on which the user account will be disabled\&. The date is specified in the format +\fIYYYY\-MM\-DD\fR\&. .sp -Якщо не вказано, +If not specified, \fBuseradd\fR -використає типову дату строку дії, який вказано змінною +will use the default expiry date specified by the \fBEXPIRE\fR -у -/etc/default/useradd, або типовий порожній рядок (необмежений строк дії)\&. +variable in +/etc/default/useradd, or an empty string (no expiry) by default\&. .RE .PP -\fB\-f\fR, \fB\-\-inactive\fR \fIНЕАКТИВНИЙ\fR +\fB\-f\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR .RS 4 -Визначає кількість днів після перевищення паролем максимального віку, протягом яких система очікуватиме на заміну пароля користувачем\&. Значення зберігається у файлі паролів shadow\&. Вхідне значення 0 вимкне пароль, строк дії якого вичерпано, без затримки\&. Вхідне значення \-1 призведе до вилучення відповідного поля у файлі паролів shadow\&. Див\&. -\fBshadow\fR(5), щоб дізнатися більше\&. +defines the number of days after the password exceeded its maximum age where the user is expected to replace this password\&. The value is stored in the shadow password file\&. An input of 0 will disable an expired password with no delay\&. An input of \-1 will blank the respective field in the shadow password file\&. See +\fBshadow\fR(5)for more information\&. .sp -Якщо не вказано, +If not specified, \fBuseradd\fR -використає типовий період неактивності, який вказано змінною -\fBНЕАКТИВНИЙ\fR -у -/etc/default/useradd, або типове значення \-1\&. +will use the default inactivity period specified by the +\fBINACTIVE\fR +variable in +/etc/default/useradd, or \-1 by default\&. .RE .PP \fB\-F\fR, \fB\-\-add\-subids\-for\-system\fR @@ -138,7 +142,7 @@ even when creating a system account with option\&. .RE .PP -\fB\-g\fR, \fB\-\-gid\fR \fIGROUP\fR +\fB\-g\fR, \fB\-\-gid\fR\ \&\fIGROUP\fR .RS 4 Назва або номер основної групи користувача\&. Відповідна група має існувати\&. Номер групи має вказувати на вже наявну групу\&. .sp @@ -161,10 +165,15 @@ variable in /etc/default/useradd, or 1000 by default\&. .RE .PP -\fB\-G\fR, \fB\-\-groups\fR \fIГРУПА1\fR[\fI,ГРУПА2,\&.\&.\&.\fR[\fI,ГРУПАN\fR]]] +\fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] .RS 4 -Список додаткових груп, учасником яких також буде користувач\&. Групи у списку слід відокремлювати комою, без проміжного пробілу\&. Групи підлягатимуть тим самим обмеженням, що і група, яку задано параметром -\fB\-g\fR\&. Типовою поведінкою є належність користувача лише до початкової групи\&. +A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the +\fB\-g\fR +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -172,45 +181,47 @@ variable in Показати довідкове повідомлення і завершити роботу\&. .RE .PP -\fB\-k\fR, \fB\-\-skel\fR \fISKEL_DIR\fR +\fB\-k\fR, \fB\-\-skel\fR\ \&\fISKEL_DIR\fR .RS 4 -Каркасний каталог, який містить файли і каталоги, які буде скопійовано до домашнього каталогу користувача, коли такий домашній каталог створюється командою +The skeleton directory, which contains files and directories to be copied in the user\*(Aqs home directory, when the home directory is created by \fBuseradd\fR\&. .sp -Цей параметр є чинним, лише якщо вказано параметр +This option is only valid if the \fB\-m\fR -(або -\fB\-\-create\-home\fR)\&. +(or +\fB\-\-create\-home\fR) option is specified\&. .sp -Якщо не вказано цей параметр, каталог каркасних даних буде визначено змінною +If this option is not set, the skeleton directory is defined by the \fBSKEL\fR -у +variable in /etc/default/useradd -або, типово, +or, by default, /etc/skel\&. .sp +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp Якщо можна, буде скопійовано ACL і розширені атрибути\&. .RE .PP -\fB\-K\fR, \fB\-\-key\fR \fIКЛЮЧ\fR=\fIЗНАЧЕННЯ\fR +\fB\-K\fR, \fB\-\-key\fR\ \&\fIKEY\fR=\fIVALUE\fR .RS 4 -Має пріоритет на типовими значеннями з +Overrides /etc/login\&.defs -(\fBUID_MIN\fR, +defaults (\fBUID_MIN\fR, \fBUID_MAX\fR, \fBUMASK\fR, \fBPASS_MAX_DAYS\fR -та іншими)\&. +and others)\&. .sp -Приклад: можна скористатися -\fB\-K\fR -\fIPASS_MAX_DAYS\fR=\fI\-1\fR -при створенні облікового запису для вимикання застарівання пароля\&. Може бути вказано декілька параметрів -\fB\-K\fR\&. Приклад: -\fB\-K\fR -\fIUID_MIN\fR -=\fI100\fR +Example: +\fB\-K\fR\ \&\fIPASS_MAX_DAYS \fR=\fI\-1\fR +can be used when creating an account to turn off password aging\&. Multiple \fB\-K\fR +options can be specified, e\&.g\&.: +\fB\-K\fR\ \&\fIUID_MIN\fR +=\fI100\fR\ \&\fB\-K\fR\ \& \fIUID_MAX\fR=\fI499\fR .RE .PP @@ -220,21 +231,24 @@ variable in .sp Типово, записи користувачів у базах даних lastlog і faillog буде скинуто до початкових даних, щоб уникнути повторного використання записів, які лишилися від раніше вилучених користувачів\&. .sp -Якщо не вказано цей параметр, +If this option is not specified, \fBuseradd\fR -також врахує значення змінної +will also consult the variable \fBLOG_INIT\fR -у -/etc/default/useradd, якщо для неї встановлено значення no, запис користувача не буде додано до баз даних lastlog і faillog\&. +in the +/etc/default/useradd +if set to no the user will not be added to the lastlog and faillog databases\&. .RE .PP \fB\-m\fR, \fB\-\-create\-home\fR .RS 4 -Створити домашній каталог користувача, якщо такого ще не існує\&. До такого домашнього каталогу буде скопійовано файли і каталоги з каркасного каталогу (який можна визначити за допомогою параметра -\fB\-k\fR)\&. +Create the user\*(Aqs home directory if it does not exist\&. The files and directories contained in the skeleton directory (which can be defined with the +\fB\-k\fR +option) will be copied to the home directory\&. .sp -Типово, якщо цей параметр не вказано і не увімкнено -\fBCREATE_HOME\fR, програма не створюватиме домашніх каталогів\&. +By default, if this option is not specified and +\fBCREATE_HOME\fR +is not enabled, no home directories are created\&. .sp Каталог, де буде створено домашній каталог користувача, має існувати і мати належний контекст SELinux і права доступу\&. Якщо ці умови не буде виконано, програма не зможе створити домашній каталог користувача або створений каталог буде недоступним\&. .RE @@ -249,20 +263,20 @@ Do not create the user\*(Aqs home directory, even if the system wide setting fro .PP \fB\-N\fR, \fB\-\-no\-user\-group\fR .RS 4 -Не створювати групи, назва якої збігається із назвою облікового запису користувача, а додати користувача до групи, яку вказано параметром +Do not create a group with the same name as the user, but add the user to the group specified by the \fB\-g\fR -або змінною +option or by the \fBGROUP\fR -у +variable in /etc/default/useradd\&. .sp -Типову поведінку (якщо не вказано параметрів +The default behavior (if the \fB\-g\fR, -\fB\-N\fR -і -\fB\-U\fR) буде визначено змінною +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the \fBUSERGROUPS_ENAB\fR -у +variable in /etc/login\&.defs\&. .RE .PP @@ -270,20 +284,20 @@ Do not create the user\*(Aqs home directory, even if the system wide setting fro .RS 4 Дозволяє створення облікового запису із наявним UID\&. .sp -Цей параметр можна використовувати лише у поєднанні із параметром -\fB\-u\fR\&. Оскільки профіль користувача слугує ключем для прив\*(Aqязки користувачів до прав доступу, прав власності на файли та інших аспектів загальносистемної поведінки, доступ до облікового запису із заданим UID матимуть декілька облікових записів для входу до системи\&. +This option is only valid in combination with the +\fB\-u\fR +option\&. As a user identity serves as key to map between users on one hand and permissions, file ownerships and other aspects that determine the system\*(Aqs behavior on the other hand, more than one login name will access the account of the given UID\&. .RE .PP -\fB\-p\fR, \fB\-\-password\fR \fIПАРОЛЬ\fR +\fB\-p\fR, \fB\-\-password\fR\ \&\fIPASSWORD\fR .RS 4 -визначає початковий пароль до облікового запису\&. ПАРОЛЬ має бути зашифровано у форматі, який повертає -\fBcrypt\fR(3)\&. У скрипті оболонки цей параметр надає змогу ефективно створювати записи користувачів у пакетному режимі\&. +defines an initial password for the account\&. PASSWORD is expected to be encrypted, as returned by +\fBcrypt \fR(3)\&. Within a shell script, this option allows to create efficiently batches of users\&. .sp -Без цього параметра новий обліковий запис буде заблоковано; для нього також не буде визначено пароля, тобто у відповідному полі файла -/etc/shadow\&. Це стан, у якому користувач не зможе отримати доступ до облікового запису або визначити пароль власноруч\&. +Without this option, the new account will be locked and with no password defined, i\&.e\&. a single exclamation mark in the respective field of +/etc/shadow\&. This is a state where the user won\*(Aqt be able to access the account or to define a password himself\&. .sp -\fBЗауваження:\fR -не рекомендуємо користуватися цим параметром у командному рядку, оскільки пароль (або шифрований пароль) буде видимим для користувачів, які мають доступ до списку процесів\&. +\fBNote:\fRAvoid this option on the command line because the password (or encrypted password) will be visible by users listing the processes\&. .sp Вам слід переконатися, що пароль відповідає правилам складання паролів системи\&. .RE @@ -292,21 +306,23 @@ Do not create the user\*(Aqs home directory, even if the system wide setting fro .RS 4 Створити загальносистемний обліковий запис\&. .sp -Записи загальносистемних користувачів буде створено без даних щодо застарівання у -/etc/shadow, а їхні числові ідентифікатори буде вибрано у діапазоні -\fBSYS_UID_MIN\fR\-\fBSYS_UID_MAX\fR, який визначено у -/etc/login\&.defs, а не у +System users will be created with no aging information in +/etc/shadow, and their numeric identifiers are chosen in the +\fBSYS_UID_MIN\fR\-\fBSYS_UID_MAX\fR +range, defined in +/etc/login\&.defs, instead of \fBUID_MIN\fR\-\fBUID_MAX\fR -(та їхніх відповідників +(and their \fBGID\fR -для створення груп)\&. +counterparts for the creation of groups)\&. .sp -Зауважте, що +Note that \fBuseradd\fR -не створюватиме домашнього каталогу для такого користувача, незалежно від того, яким є типове значення параметра у +will not create a home directory for such a user, regardless of the default setting in /etc/login\&.defs -(\fBCREATE_HOME\fR)\&. вам слід вказати параметри -\fB\-m\fR, якщо ви хочете, щоб для загальносистемного облікового запису було створено домашній каталог\&. +(\fBCREATE_HOME\fR)\&. You have to specify the +\fB\-m\fR +options if you want a home directory for a system account to be created\&. .sp Note that this option will not update /etc/subuid @@ -316,7 +332,7 @@ and options if you want to update the files for a system account to be created\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -325,13 +341,13 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-P\fR, \fB\-\-prefix\fR \fIКАТАЛОГ_ПРЕФІКСА\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR .RS 4 -Застосувати зміни до файлів налаштувань у кореневій файловій системі з каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR\&. Використання цього параметра не змінює кореневої теки\&. Параметр призначено лише для приготування цілі для компіляції коду для іншої операційної системи\&. Обмеження: не буде виконано перевірку користувачів/груп NIS і LDAP\&. При розпізнаванні у PAM буде використано файли основної системи\&. Підтримки SELINUX не передбачено\&. +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. .RE .PP -\fB\-s\fR, \fB\-\-shell\fR \fIОБОЛОНКА\fR +\fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 sets the path to the user\*(Aqs login shell\&. Without this option, the system will use the \fBSHELL\fR @@ -341,127 +357,144 @@ variable specified in remains empty\&. .RE .PP -\fB\-u\fR, \fB\-\-uid\fR \fIUID\fR +\fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR .RS 4 -Числове значення ідентифікатора користувача\&. Це значення має бути унікальним, якщо не використано параметр -\fB\-o\fR\&. Значення має бути невід\*(Aqємним\&. Типово, буде використано найменше значення ідентифікатора, яке перевищує або дорівнює значенню +The numerical value of the user\*(Aqs ID\&. This value must be unique, unless the +\fB\-o\fR +option is used\&. The value must be non\-negative\&. The default is to use the smallest ID value greater than or equal to \fBUID_MIN\fR -і є більшим за значення для будь\-якого іншого користувача\&. +and greater than every other user\&. .sp -Див\&. також описи параметрів +See also the \fB\-r\fR -і -\fBUID_MAX\fR\&. +option and the +\fBUID_MAX\fR +description\&. .RE .PP \fB\-U\fR, \fB\-\-user\-group\fR .RS 4 Створити групу, назва якої збігається із назвою облікового запису користувача, додати користувача до цієї групи\&. .sp -Типову поведінку (якщо не вказано параметрів +The default behavior (if the \fB\-g\fR, -\fB\-N\fR -і -\fB\-U\fR) буде визначено змінною +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the \fBUSERGROUPS_ENAB\fR -у +variable in /etc/login\&.defs\&. .RE .PP -\fB\-Z\fR, \fB\-\-selinux\-user\fR \fISEКОРИСТУВАЧ\fR +\fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -Визначає користувача SELinux для нового облікового запису\&. Без цього параметра, SELinux використає типового користувача\&. Зауважте, що система shadow не зберігає користувача selinux \(em для цього вона використовує -\fBsemanage\fR(8)\&. +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "Зміна типових значень" .PP -Якщо програму викликано лише з параметром -\fB\-D\fR, +When invoked with only the +\fB\-D\fR +option, \fBuseradd\fR -виведе поточні типові значення\&. Якщо виклик відбувся з параметром +will display the current default values\&. When invoked with \fB\-D\fR -та іншими параметрами, +plus other options, \fBuseradd\fR -оновить типові значення для вказаних параметрів\&. Коректними параметрами для зміни типових значень є такі: +will update the default values for the specified options\&. Valid default\-changing options are: .PP -\fB\-b\fR, \fB\-\-base\-dir\fR \fIБАЗОВИЙ_КАТАЛОГ\fR +\fB\-b\fR, \fB\-\-base\-dir\fR\ \&\fIBASE_DIR\fR .RS 4 -Встановлює префікс шляху для домашнього каталогу нового користувача\&. Назву облікового запису користувача буде дописано наприкінці -\fIБАЗОВИЙ_КАТАЛОГ\fR -для створення назви домашнього каталогу нового користувача, якщо під час створення облікового запису не було використано параметр -\fB\-d\fR\&. +sets the path prefix for a new user\*(Aqs home directory\&. The user\*(Aqs name will be affixed to the end of +\fIBASE_DIR\fR +to form the new user\*(Aqs home directory name, if the +\fB\-d\fR +option is not used when creating a new account\&. .sp -Цей параметр встановлює значення змінної +This option sets the \fBHOME\fR -у +variable in /etc/default/useradd\&. .RE .PP -\fB\-e\fR, \fB\-\-expiredate\fR \fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR +\fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Встановлює дату вимикання новостворених облікових записів користувачів\&. .sp -Цей параметр встановлює значення змінної +This option sets the \fBEXPIRE\fR -у +variable in /etc/default/useradd\&. .RE .PP -\fB\-f\fR, \fB\-\-inactive\fR \fIНЕАКТИВНИЙ\fR +\fB\-f\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR .RS 4 -Визначає кількість днів після перевищення паролем максимального віку, протягом яких система очікуватиме на заміну пароля користувачем\&. Див\&. -\fBshadow\fR(5), щоб дізнатися більше\&. +defines the number of days after the password exceeded its maximum age where the user is expected to replace this password\&. See +\fBshadow\fR(5)for more information\&. .sp -Цей параметр встановлює значення змінної -\fBНЕАКТИВНИЙ\fR -у +This option sets the +\fBINACTIVE\fR +variable in /etc/default/useradd\&. .RE .PP -\fB\-g\fR, \fB\-\-gid\fR \fIGROUP\fR +\fB\-g\fR, \fB\-\-gid\fR\ \&\fIGROUP\fR .RS 4 Встановлює типову основну групу для новостворених записів користувачів\&. Можна вказати назву групи або числовий ідентифікатор групи\&. Вказана за назвою група має існувати, а GID має бути наявним записом\&. .sp -Цей параметр встановлює значення змінної +This option sets the \fBGROUP\fR -у +variable in /etc/default/useradd\&. .RE .PP -\fB\-s\fR, \fB\-\-shell\fR \fIОБОЛОНКА\fR +\fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 Визначає типову оболонку входу для нових користувачів\&. .sp -Цей параметр встановлює значення змінної -\fBОБОЛОНКА\fR -у +This option sets the +\fBSHELL\fR +variable in /etc/default/useradd\&. .RE .SH "ПРИМІТКИ" .PP -За розташування типових файлів користувача у каталозі +The system administrator is responsible for placing the default user files in the /etc/skel/ -(або будь\-якому іншому каркасному каталозі, який вказано у +directory (or any other skeleton directory specified in /etc/default/useradd -або рядку команди) відповідає адміністратор системи\&. +or on the command line)\&. .SH "ЗАСТЕРЕЖЕННЯ" .PP Не можна додавати користувача до групи NIS або LDAP\&. Для таких груп цю дію має бути виконано на відповідному сервері\&. .PP -Так само, якщо ім\*(Aqя користувача вже існує у зовнішній базі даних користувачів, зокрема NIS або LDAP, +Similarly, if the username already exists in an external user database such as NIS or LDAP, \fBuseradd\fR -відмовить у запиті щодо створення облікового запису користувача\&. +will deny the user account creation request\&. .PP Usernames may contain only lower and upper case letters, digits, underscores, or dashes\&. They can end with a dollar sign\&. Dashes are not allowed at the beginning of the username\&. Fully numeric usernames and usernames \&. or \&.\&. are also disallowed\&. It is not recommended to use usernames beginning with \&. character as their home directories will be hidden in the \fBls\fR output\&. .PP -Довжина імен користувачів не може перевищувати 32 символи\&. +Довжина імен користувачів не може перевищувати 256 символи\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/passwd @@ -491,14 +524,16 @@ output\&. .PP /etc/shadow\-maint/useradd\-pre\&.d/*, /etc/shadow\-maint/useradd\-post\&.d/* .RS 4 -Файли, які буде виконано під час додавання запису користувача\&. Змінну середовища +Run\-part files to execute during user addition\&. The environment variable \fBACTION\fR -буде заповнено командою useradd, а змінну середовища +will be populated with useradd and \fBSUBJECT\fR -\(em -\fBкористувач\fR\&. Перед додаванням запису користувача буде виконано -useradd\-pre\&.d\&. Після додавання запису користувача буде виконано -useradd\-post\&.d\&. Якщо станом виходу зі скрипту буде ненульове значення, виконання дій буде перервано\&. +with the +\fBusername\fR\&. +useradd\-pre\&.d +will be executed prior to any user addition\&. +useradd\-post\&.d +will execute after user addition\&. If a script exits non\-zero then execution will terminate\&. .RE .PP /etc/skel/ @@ -522,39 +557,39 @@ useradd\-post\&.d\&. Якщо станом виходу зі скрипту бу .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBuseradd\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI1\fR .RS 4 -не вдалося оновити файл паролів +can\*(Aqt update password file .RE .PP \fI2\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI3\fR .RS 4 -некоректний аргумент параметра +invalid argument to option .RE .PP \fI4\fR .RS 4 -UID вже використано (і не вказано +UID already in use (and no \fB\-o\fR) .RE .PP \fI6\fR .RS 4 -вказаної групи не існує +specified group doesn\*(Aqt exist .RE .PP \fI9\fR @@ -564,17 +599,17 @@ username or group name already in use .PP \fI10\fR .RS 4 -не вдалося оновити файл груп +can\*(Aqt update group file .RE .PP \fI12\fR .RS 4 -не вдалося створити домашній каталог +can\*(Aqt create home directory .RE .PP \fI14\fR .RS 4 -не вдалося оновити прив\*(Aqязку користувача SELinux +can\*(Aqt update SELinux user mapping .RE .SH "ДИВ\&. ТАКОЖ" .PP diff --git a/man/uk/man8/userdel.8 b/man/uk/man8/userdel.8 index aa40150..014809e 100644 --- a/man/uk/man8/userdel.8 +++ b/man/uk/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "userdel" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "userdel" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,31 +31,33 @@ userdel \- вилучення облікового запису користувача і пов\*(Aqязаних файлів .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [параметри] \fIЗАПИС\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "ОПИС" .PP -Команда +The \fBuserdel\fR -вносить зміни до файлів загальносистемних облікових записів, вилучаючи усі записи, які стосуються імені користувача -\fIЗАПИС\fR\&. Іменований запис користувача має існувати\&. +command modifies the system account files, deleting all entries that refer to the user name +\fILOGIN\fR\&. The named user must exist\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBuserdel\fR, є такими: +The options which apply to the +\fBuserdel\fR +command are: .PP \fB\-f\fR, \fB\-\-force\fR .RS 4 -Цей параметр наказує програмі вилучити обліковий запис користувача, навіть якщо користувач усе ще працює у системі\&. Також він наказує +This option forces the removal of the user account, even if the user is still logged in\&. It also forces \fBuserdel\fR -вилучити домашній каталог користувача і поштовий буфер, навіть якщо цим домашнім каталогом користується інший користувач або якщо власником поштового буфера не є вказаний користувач\&. Якщо для +to remove the user\*(Aqs home directory and mail spool, even if another user uses the same home directory or if the mail spool is not owned by the specified user\&. If \fBUSERGROUPS_ENAB\fR -встановлено значення -\fIтак\fR -у -/etc/login\&.defs, і якщо існує група із тією самою назвою, що і назва облікового запису, цю групу буде вилучено, навіть якщо вона все ще є основною групою іншого користувача\&. +is defined to +\fIyes\fR +in +/etc/login\&.defs +and if a group exists with the same name as the deleted user, then this group will be removed, even if it is still the primary group of another user\&. .sp -\fIЗауваження:\fR -цей параметр є небезпечним і може перевести вашу систему у неузгоджений стан\&. +\fINote:\fR +This option is dangerous and may leave your system in an inconsistent state\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -67,13 +69,14 @@ userdel \- вилучення облікового запису користув .RS 4 Файли у домашньому каталозі користувача буде вилучено разом з самим домашнім каталогом та поштовим буфером користувача\&. Файли у інших файлових системах слід знайти і вилучити вручну\&. .sp -Поштовий буфер визначається змінною +The mail spool is defined by the \fBMAIL_DIR\fR -у файлі -login\&.defs\&. +variable in the +login\&.defs +file\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -82,12 +85,13 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-P\fR, \fB\-\-prefix\fR \fIКАТАЛОГ_ПРЕФІКСА\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR .RS 4 -Застосувати зміни до каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR -і використати файли налаштувань з каталогу -\fIКАТАЛОГ_ПРЕФІКСА\fR\&. Використання цього параметра не змінює кореневої теки\&. Параметр призначено лише для приготування цілі для компіляції коду для іншої операційної системи\&. Обмеження: не буде виконано перевірку користувачів/груп NIS і LDAP\&. При розпізнаванні у PAM буде використано файли основної системи\&. Підтримки SELINUX не передбачено\&. +Apply changes in the +\fIPREFIX_DIR\fR +directory and use the configuration files from the +\fIPREFIX_DIR\fR +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\&. .RE .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR @@ -96,9 +100,9 @@ directory\&. Only absolute paths are supported\&. .RE .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -123,15 +127,17 @@ directory\&. Only absolute paths are supported\&. .PP /etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* .RS 4 -Файли, які буде виконано під час вилучення запису користувача\&. Змінну середовища +Run\-part files to execute during user deletion\&. The environment variable \fBACTION\fR -буде заповнено командами +will be populated with \fBuserdel\fR -і +and \fBSUBJECT\fR -з іменем користувача\&. Перед вилученням запису користувача буде виконано -userdel\-pre\&.d\&. Після додавання запису користувача буде виконано -userdel\-post\&.d\&. Якщо станом виходу зі скрипту буде ненульове значення, виконання дій буде перервано\&. +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. .RE .PP /etc/subgid @@ -145,65 +151,67 @@ userdel\-post\&.d\&. Якщо станом виходу зі скрипту бу .RE .SH "ЗНАЧЕННЯ ВИХОДУ" .PP -Команда +The \fBuserdel\fR -завершує роботу із такими значеннями: +command exits with the following values: .PP \fI0\fR .RS 4 -успіх +success .RE .PP \fI1\fR .RS 4 -не вдалося оновити файл паролів +can\*(Aqt update password file .RE .PP \fI2\fR .RS 4 -некоректний синтаксис команди +invalid command syntax .RE .PP \fI6\fR .RS 4 -вказаного запису користувача не існує +specified user doesn\*(Aqt exist .RE .PP \fI8\fR .RS 4 -поточний користувач системи +user currently logged in .RE .PP \fI10\fR .RS 4 -не вдалося оновити файл груп +can\*(Aqt update group file .RE .PP \fI12\fR .RS 4 -не вдалося вилучити домашній каталог +can\*(Aqt remove home directory .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP \fBuserdel\fR -не дозволить вам вилучити обліковий запис, якщо цьому обліковому запису належать якісь запущені процеси\&. У випадку наявності таких процесів ви можете завершити їх роботу або заблокувати пароль чи обліковий запис користувача і вилучити обліковий запис пізніше\&. Виконати вилучення цього облікового запису у примусовому режимі можна за допомогою параметра -\fB\-f\fR\&. +will not allow you to remove an account if there are running processes which belong to this account\&. In that case, you may have to kill those processes or lock the user\*(Aqs password or account and remove the account later\&. The +\fB\-f\fR +option can force the deletion of this account\&. .PP Вам слід виконати перевірку усіх файлових систем вручну, щоб переконатися, щоб не лишилося жодних файлів, які належать цьому користувачу\&. .PP Ви не зможете вилучити атрибути NIS з клієнта NIS\&. Виконати це завдання можна лише на сервері NIS\&. .PP -Якщо для +If \fBUSERGROUPS_ENAB\fR -встановлено значення -\fIтак\fR -у +is defined to +\fIyes\fR +in /etc/login\&.defs, \fBuserdel\fR -вилучить групу, яка має назву, що збігається із назвою облікового запису користувача\&. Щоб уникнути неузгодженостей у базах даних passwd і груп, +will delete the group with the same name as the user\&. To avoid inconsistencies in the passwd and group databases, \fBuserdel\fR -виконає перевірку того, чи не використовується ця група як основна група іншого користувача\&. Якщо використовується, програма попередить вас без вилучення групи\&. Примусово вилучити цю групу можна за допомогою параметра -\fB\-f\fR\&. +will check that this group is not used as a primary group for another user, and will just warn without deleting the group otherwise\&. The +\fB\-f\fR +option can force the deletion of this group\&. .SH "ДИВ\&. ТАКОЖ" .PP \fBchfn\fR(1), diff --git a/man/uk/man8/usermod.8 b/man/uk/man8/usermod.8 index 40151ca..66e6861 100644 --- a/man/uk/man8/usermod.8 +++ b/man/uk/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "usermod" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "usermod" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,20 +31,23 @@ usermod \- зміна облікового запису користувача .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBusermod\fR\ 'u -\fBusermod\fR [\fIпараметри\fR] \fIЗАПИС\fR +\fBusermod\fR [\fIoptions\fR] \fILOGIN\fR .SH "ОПИС" .PP +The \fBusermod\fR -вносить зміни до файлів загальносистемних облікових записів\&. +command modifies the system account files\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команди -\fBusermod\fR, є такими: +The options which apply to the +\fBusermod\fR +command are: .PP \fB\-a\fR, \fB\-\-append\fR .RS 4 -Додати користувача до допоміжних груп\&. Використовуйте лише у поєднанні з параметром -\fB\-G\fR\&. +Add the user to the supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. .RE .PP \fB\-b\fR, \fB\-\-badname\fR @@ -52,46 +55,51 @@ usermod \- зміна облікового запису користувача Дозволити назви, які не відповідають стандартам\&. .RE .PP -\fB\-c\fR, \fB\-\-comment\fR \fIКОМЕНТАР\fR +\fB\-c\fR, \fB\-\-comment\fR\ \&\fICOMMENT\fR .RS 4 -Оновити поле коментаря для запису користувача у -/etc/passwd, зміни до якого, зазвичай, вносять за допомогою допоміжного засобу -\fBchfn\fR(1)\&. +update the comment field of the user in +/etc/passwd, which is normally modified using the +\fBchfn\fR(1) +utility\&. .RE .PP -\fB\-d\fR, \fB\-\-home\fR \fIДОМАШНІЙ_КАТАЛОГ\fR +\fB\-d\fR, \fB\-\-home\fR\ \&\fIHOME_DIR\fR .RS 4 Новий каталог користувача для облікового запису входу до системи\&. .sp -Якщо вказано параметр -\fB\-m\fR, вміст поточного домашнього каталогу буде пересунуто до нового домашнього каталогу, який буде створено, якщо його ще не існує\&. Якщо поточного домашнього каталогу не існує, новий домашній каталог створено не буде\&. +If the +\fB\-m\fR +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP -\fB\-e\fR, \fB\-\-expiredate\fR \fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR +\fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 -Дата, у яку буде вимкнено обліковий запис користувача\&. Дату вказують у форматі -\fIРРРР\-ММ\-ДД\fR\&. Цілі вхідні числа буде оброблено як дні після 1 січня 1970 року\&. +The date on which the user account will be disabled\&. The date is specified in the format +\fIYYYY\-MM\-DD\fR\&. Integers as input are interpreted as days after 1970\-01\-01\&. .sp Вхідне значення \-1 або порожній рядок призведуть до вилучення вмісту поля строку дії облікового запису у файлі паролів shadow\&. Обліковий запис лишиться доступним, але без обмеження за датами\&. .sp -Цей параметр потребує файла -/etc/shadow\&. Запис +This option requires a +/etc/shadow +file\&. A /etc/shadow -буде створено, якщо такого ще немає\&. +entry will be created if there were none\&. .RE .PP -\fB\-f\fR, \fB\-\-inactive\fR \fIНЕАКТИВНИЙ\fR +\fB\-f\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR .RS 4 -Визначає період у кількості днів після перевищення максимального віку, протягом якого користувач усе ще матиме змогу увійти до системи з негайною зміною пароля\&. Цей період лояльності до того, як обліковий запис стане неактивним, зберігається у файлі прихованих паролів (shadow)\&. Вхідне значення 0 означає негайне вимикання пароля, строк дії якого вичерпано\&. Вхідне значення \-1 призведе до вилучення вмісту відповідного поля у файлі прихованих паролів (shadow)\&. Див\&. -\fBshadow\fR(5), щоб дізнатися більше\&. +defines the number of days after the password exceeded its maximum age during which the user may still login by immediately replacing the password\&. This grace period before the account becomes inactive is stored in the shadow password file\&. An input of 0 will disable an expired password with no delay\&. An input of \-1 will blank the respective field in the shadow password file\&. See +\fBshadow\fR(5) +for more information\&. .sp -Цей параметр потребує файла -/etc/shadow\&. Запис +This option requires a +/etc/shadow +file\&. A /etc/shadow -буде створено, якщо такого ще немає\&. +entry will be created if there were none\&. .RE .PP -\fB\-g\fR, \fB\-\-gid\fR \fIGROUP\fR +\fB\-g\fR, \fB\-\-gid\fR\ \&\fIGROUP\fR .RS 4 Назва або числовий ідентифікатор нової основної групи користувача\&. Група має існувати\&. .sp @@ -99,36 +107,37 @@ usermod \- зміна облікового запису користувача .sp Права власності на файли поза домашнім каталогом користувача має бути виправлено вручну\&. .sp -Зміну групи\-власника для файлів у домашньому каталозі користувача також не буде виконано, якщо uid власника домашнього каталогу відрізняється від ідентифікатора поточного або нового користувача\&. Це захід безпеки для особливих домашніх каталогів, зокрема +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as /\&. .RE .PP -\fB\-G\fR, \fB\-\-groups\fR \fIГРУПА1\fR[\fI,ГРУПА2,\&.\&.\&.\fR[\fI,ГРУПАN\fR]]] +\fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] .RS 4 Список допоміжних груп, учасником яких є користувач\&. Записи у списку слід відокремлювати комами, без проміжного пробілу\&. Групи мають існувати\&. .sp -Якщо користувач у поточний момент є учасником групи, якої немає у списку, його запис буде вилучено з цієї групи\&. Змінити цю поведінку можна за допомогою параметра -\fB\-a\fR, який дописує запис користувача до поточного списку допоміжних груп\&. +If the user is currently a member of a group which is not listed, the user will be removed from the group\&. This behaviour can be changed via the +\fB\-a\fR +option, which appends the user to the current supplementary group list\&. .RE .PP -\fB\-l\fR, \fB\-\-login\fR \fIНОВИЙ_ЗАПИС\fR +\fB\-l\fR, \fB\-\-login\fR\ \&\fINEW_LOGIN\fR .RS 4 -Ім\*(Aqя користувача буде змінено з -\fIЗАПИС\fR -на -\fIНОВИЙ_ЗАПИС\fR\&. Нічого, окрім цього, змінено не буде\&. Зокрема, ймовірно, назву домашнього каталогу користувача та поштового буфера доведеться змінювати вручну, щоб синхронізувати їх із новою назвою облікового запису для входу до системи\&. +The name of the user will be changed from +\fILOGIN\fR +to +\fINEW_LOGIN\fR\&. Nothing else is changed\&. In particular, the user\*(Aqs home directory or mail spool should probably be renamed manually to reflect the new login name\&. .RE .PP \fB\-L\fR, \fB\-\-lock\fR .RS 4 -Заблокувати пароль користувача\&. У відповідь на команду програма допише \(Fo!\(Fc перед зашифрованим паролем, фактично, вимкнувши пароль\&. Цей параметр не можна поєднувати з +Lock a user\*(Aqs password\&. This puts a \*(Aq!\*(Aq in front of the encrypted password, effectively disabling the password\&. You can\*(Aqt use this option with \fB\-p\fR -та +or \fB\-U\fR\&. .sp -Зауваження: якщо ви хочете заблокувати обліковий запис (а не лише доступ за допомогою пароля), вам також слід встановити для -\fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR -значення +Note: if you wish to lock the account (not only access with a password), you should also set the +\fIEXPIRE_DATE\fR +to \fI1\fR\&. .RE .PP @@ -136,41 +145,43 @@ usermod \- зміна облікового запису користувача .RS 4 Пересуває вміст домашнього каталогу користувача у нове місце\&. Якщо поточного домашнього каталогу не існує, буде створено новий домашній каталог\&. .sp -Цей параметр є чинним, лише у поєднанні із параметром +This option is only valid in combination with the \fB\-d\fR -(або -\fB\-\-home\fR)\&. +(or +\fB\-\-home\fR) option\&. .sp \fBusermod\fR -спробує адаптувати права власності на файли і скопіювати режими доступу, ACL та розширені атрибути, але згодом може знадобитися внесення змін вручну\&. +will try to adapt the ownership of the files and to copy the modes, ACL and extended attributes, but manual changes might be needed afterwards\&. .RE .PP \fB\-o\fR, \fB\-\-non\-unique\fR .RS 4 Дозволяє зміну ідентифікатора користувача на неунікальне значення\&. .sp -Цей параметр можна використовувати лише у поєднанні із параметром -\fB\-u\fR\&. Оскільки профіль користувача слугує ключем для прив\*(Aqязки користувачів до прав доступу, прав власності на файли та інших аспектів загальносистемної поведінки, доступ до облікового запису із заданим UID матимуть декілька облікових записів для входу до системи\&. +This option is only valid in combination with the +\fB\-u\fR +option\&. As a user identity serves as key to map between users on one hand and permissions, file ownerships and other aspects that determine the system\*(Aqs behavior on the other hand, more than one login name will access the account of the given UID\&. .RE .PP -\fB\-p\fR, \fB\-\-password\fR \fIПАРОЛЬ\fR +\fB\-p\fR, \fB\-\-password\fR\ \&\fIPASSWORD\fR .RS 4 -Визначає новий пароль до облікового запису користувача\&. ПАРОЛЬ має бути зашифровано у форматі, який повертає -\fBcrypt\fR(3)\&. +defines a new password for the user\&. PASSWORD is expected to be encrypted, as returned by +\fBcrypt \fR(3)\&. .sp -\fBЗауваження:\fR -не рекомендуємо користуватися цим параметром у командному рядку, оскільки пароль (або шифрований пароль) буде видимим для користувачів, які мають доступ до списку процесів\&. +\fBNote:\fR +Avoid this option on the command line because the password (or encrypted password) will be visible by users listing the processes\&. .sp Вам слід переконатися, що пароль відповідає правилам складання паролів системи\&. .RE .PP \fB\-r\fR, \fB\-\-remove\fR .RS 4 -Вилучити користувача з іменованих допоміжних груп\&. Використовуйте лише у поєднанні з параметром -\fB\-G\fR\&. +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -179,146 +190,155 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP -\fB\-P\fR, \fB\-\-prefix\fR \fIКАТАЛОГ_ПРЕФІКСА\fR +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR .RS 4 -Застосувати зміни в ієрархії каталогів, що починається з -\fIКАТАЛОГ_ПРЕФІКСА\fR -і використати також файли налаштувань, які там зберігаються\&. Використання цього параметра не змінює кореневої теки\&. Параметр призначено лише для приготування цілі для компіляції коду для іншої операційної системи\&. Обмеження: не буде виконано перевірку користувачів/груп NIS і LDAP\&. При розпізнаванні у PAM буде використано файли основної системи\&. Підтримки SELINUX не передбачено\&. +Apply changes within the directory tree starting with +\fIPREFIX_DIR\fR +and use as well the configuration files located there\&. 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\&. .RE .PP -\fB\-s\fR, \fB\-\-shell\fR \fIОБОЛОНКА\fR +\fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -Змінює оболонку для входу до системи користувача\&. Визначення порожнього рядка для ОБОЛОНКИ вилучає вміст поля у +changes the user\*(Aqs login shell\&. An empty string for SHELL blanks the field in /etc/passwd -і виконає вхід користувача до типової оболонки системи\&. +and logs the user into the system\*(Aqs default shell\&. .RE .PP -\fB\-u\fR, \fB\-\-uid\fR \fIUID\fR +\fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR .RS 4 Нове значення ідентифікатора користувача\&. .sp -Це значення має бути унікальним, якщо не використано параметр -\fB\-o\fR\&. Значення має бути невід\*(Aqємним\&. +This value must be unique, unless the +\fB\-o\fR +option is used\&. The value must be non\-negative\&. .sp Ідентифікатори користувача файла поштової скриньки користувача і усіх файлів, власником яких є користувач і які зберігаються у домашньому каталозі користувача, буде змінено автоматично\&. .sp Права власності на файли поза домашнім каталогом користувача має бути виправлено вручну\&. .sp -Зміну користувача\-власника для файлів у домашньому каталозі користувача також не буде виконано, якщо uid власника домашнього каталогу відрізняється від ідентифікатора поточного або нового користувача\&. Це захід безпеки для особливих домашніх каталогів, зокрема +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as /\&. .sp -Перевірок щодо +No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, -\fBSYS_UID_MIN\fR -або +\fBSYS_UID_MIN\fR, or \fBSYS_UID_MAX\fR -з -/etc/login\&.defs -виконано не буде\&. +from +/etc/login\&.defs\&. .RE .PP \fB\-U\fR, \fB\-\-unlock\fR .RS 4 -Розблокувати пароль користувача\&. У відповідь на команду програма вилучить \(Fo!\(Fc перед зашифрованим паролем\&. Цей параметр не можна поєднувати з +Unlock a user\*(Aqs password\&. This removes the \*(Aq!\*(Aq in front of the encrypted password\&. You can\*(Aqt use this option with \fB\-p\fR -та +or \fB\-L\fR\&. .sp -Зауваження: якщо ви хочете розблокувати обліковий запис (а не лише доступ за допомогою пароля), вам також слід встановити значення для -\fIДАТА_ЗАВЕРШЕННЯ_СТРОКУ_ДІЇ\fR -(наприклад, -\fI99999\fR -або значення +Note: if you wish to unlock the account (not only access with a password), you should also set the +\fIEXPIRE_DATE\fR +(for example to +\fI99999\fR, or to the \fBEXPIRE\fR -з +value from /etc/default/useradd)\&. .RE .PP -\fB\-v\fR, \fB\-\-add\-subuids\fR \fIПЕРШИЙ\fR\-\fIОСТАННІЙ\fR +\fB\-v\fR, \fB\-\-add\-subuids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 Додати діапазон підлеглих UID до облікового запису користувача\&. .sp Цей параметр можна вказувати декілька разів у одній команді, щоб додати декілька діапазонів до облікового запису користувача\&. .sp -Перевірок щодо +No checks will be performed with regard to \fBSUB_UID_MIN\fR, -\fBSUB_UID_MAX\fR -та +\fBSUB_UID_MAX\fR, or \fBSUB_UID_COUNT\fR -з /etc/login\&.defs не виконуватиметься\&. +from /etc/login\&.defs\&. .RE .PP -\fB\-V\fR, \fB\-\-del\-subuids\fR \fIПЕРШИЙ\fR\-\fIОСТАННІЙ\fR +\fB\-V\fR, \fB\-\-del\-subuids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 Вилучити діапазон підлеглих UID з облікового запису користувача\&. .sp -Цей параметр можна вказати декілька разів, щоб вилучити декілька діапазонів з облікового запису користувача\&. Якщо вказано одразу +This option may be specified multiple times to remove multiple ranges to a user\*(Aqs account\&. When both \fB\-\-del\-subuids\fR -і -\fB\-\-add\-subuids\fR, вилучення усіх підлеглих діапазонів UID станеться до додавання будь\-яких підлеглих UID\&. +and +\fB\-\-add\-subuids\fR +are specified, the removal of all subordinate uid ranges happens before any subordinate uid range is added\&. .sp -Перевірок щодо +No checks will be performed with regard to \fBSUB_UID_MIN\fR, -\fBSUB_UID_MAX\fR -та +\fBSUB_UID_MAX\fR, or \fBSUB_UID_COUNT\fR -з /etc/login\&.defs не виконуватиметься\&. +from /etc/login\&.defs\&. .RE .PP -\fB\-w\fR, \fB\-\-add\-subgids\fR \fIПЕРШИЙ\fR\-\fIОСТАННІЙ\fR +\fB\-w\fR, \fB\-\-add\-subgids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 Додати діапазон підлеглих GID до облікового запису користувача\&. .sp Цей параметр можна вказувати декілька разів у одній команді, щоб додати декілька діапазонів до облікового запису користувача\&. .sp -Перевірок щодо +No checks will be performed with regard to \fBSUB_GID_MIN\fR, -\fBSUB_GID_MAX\fR -та +\fBSUB_GID_MAX\fR, or \fBSUB_GID_COUNT\fR -з /etc/login\&.defs не виконуватиметься\&. +from /etc/login\&.defs\&. .RE .PP -\fB\-W\fR, \fB\-\-del\-subgids\fR \fIПЕРШИЙ\fR\-\fIОСТАННІЙ\fR +\fB\-W\fR, \fB\-\-del\-subgids\fR\ \&\fIFIRST\fR\-\fILAST\fR .RS 4 Вилучити діапазон підлеглих GID з облікового запису користувача\&. .sp -Цей параметр можна вказати декілька разів, щоб вилучити декілька діапазонів з облікового запису користувача\&. Якщо вказано одразу +This option may be specified multiple times to remove multiple ranges to a user\*(Aqs account\&. When both \fB\-\-del\-subgids\fR -і -\fB\-\-add\-subgids\fR, вилучення усіх підлеглих діапазонів GID станеться до додавання будь\-яких підлеглих GID\&. +and +\fB\-\-add\-subgids\fR +are specified, the removal of all subordinate gid ranges happens before any subordinate gid range is added\&. .sp -Перевірок щодо +No checks will be performed with regard to \fBSUB_GID_MIN\fR, -\fBSUB_GID_MAX\fR -та +\fBSUB_GID_MAX\fR, or \fBSUB_GID_COUNT\fR -з /etc/login\&.defs не виконуватиметься\&. +from /etc/login\&.defs\&. .RE .PP -\fB\-Z\fR, \fB\-\-selinux\-user\fR \fISEКОРИСТУВАЧ\fR +\fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -Визначає пов\*(Aqязаного користувача SELinux за допомогою -\fIЗАПИС\fR\&. Якщо вказати порожній рядок (""), відповідний запис (якщо такий був) буде вилучено\&. Зауважте, що система shadow не зберігає користувача selinux, а використовує для цього semanage(8)\&. +defines the SELinux user to be mapped with +\fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SH "ЗАСТЕРЕЖЕННЯ" .PP -Вам слід переконатися, що від імені вказаного користувача не виконується жодних процесів на момент віддання цієї команди, якщо вносяться зміни до числового ідентифікатора користувача, імені користувача або домашнього каталогу користувача\&. У Linux перевірку цього виконує -\fBusermod\fR\&. У інших операційних системах програма використовує лише utmp для перевірки того, чи увійшов користувач до системи\&. +You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. +\fBusermod\fR +checks this on Linux\&. On other operating systems it only uses utmp to check if the user is logged in\&. .PP -Вам слід змінити власника усіх файлів +You must change the owner of any \fBcrontab\fR -або завдань +files or \fBat\fR -вручну\&. +jobs manually\&. .PP Вам слід внести усі зміни щодо NIS на сервері NIS\&. .SH "НАЛАШТУВАННЯ" .PP -Вказані нижче змінні налаштувань у +The following configuration variables in /etc/login\&.defs -змінюють поведінку цього інструмента: +change the behavior of this tool: .SH "ФАЙЛИ" .PP /etc/group @@ -328,7 +348,7 @@ directory\&. Only absolute paths are supported\&. .PP /etc/gshadow .RS 4 -Відомості щодо захищених груп облікових записів\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/uk/man8/vipw.8 b/man/uk/man8/vipw.8 index 9d92de3..d0bb175 100644 --- a/man/uk/man8/vipw.8 +++ b/man/uk/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 08/11/2022 -.\" Manual: Команди керування системою -.\" Source: shadow-utils 4.13 +.\" Date: 21/06/2024 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Ukrainian .\" -.TH "vipw" "8" "08/11/2022" "shadow\-utils 4\&.13" "Команди керування системою" +.TH "vipw" "8" "21/06/2024" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,33 +31,34 @@ vipw, vigr \- редагування файла паролів, груп, прихованих паролів та прихованих груп .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fIпараметри\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fIпараметри\fR] +\fBvigr\fR [\fIoptions\fR] .SH "ОПИС" .PP -Команди +The \fBvipw\fR -і +and \fBvigr\fR -призначено для редагування файлів +commands edit the files /etc/passwd -і -/etc/group, відповідно\&. З прапорцем +and +/etc/group, respectively\&. With the \fB\-s\fR -вони відкриватимуть shadow\-версії цих файлів, +flag, they will edit the shadow versions of those files, /etc/shadow -і -/etc/gshadow, відповідно\&. Ці програми встановлюють відповідні блокування для запобігання пошкодженню файлів\&. При пошуку редактора програми спочатку намагатимуться скористатися вмістом змінної середовища -\fB$VISUAL\fR, потім змінної середовища -\fB$EDITOR\fR, і нарешті, типовим редактором, +and +/etc/gshadow, respectively\&. The programs will set the appropriate locks to prevent file corruption\&. When looking for an editor, the programs will first try the environment variable +\fB$VISUAL\fR, then the environment variable +\fB$EDITOR\fR, and finally the default editor, \fBvi\fR(1)\&. .SH "ПАРАМЕТРИ" .PP -Параметри, які застосовують до команд +The options which apply to the \fBvipw\fR -і -\fBvigr\fR, є такими: +and +\fBvigr\fR +commands are: .PP \fB\-g\fR, \fB\-\-group\fR .RS 4 @@ -79,7 +80,7 @@ vipw, vigr \- редагування файла паролів, груп, при Режим без повідомлень\&. .RE .PP -\fB\-R\fR, \fB\-\-root\fR \fIКАТАЛОГ_CHROOT\fR +\fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the \fICHROOT_DIR\fR @@ -101,8 +102,9 @@ directory\&. Only absolute paths are supported\&. .PP \fBEDITOR\fR .RS 4 -Редактор, яким слід скористатися, що не встановлено значення -\fBVISUAL\fR\&. +Editor to be used if +\fBVISUAL\fR +is not set\&. .RE .SH "ФАЙЛИ" .PP @@ -128,7 +130,7 @@ directory\&. Only absolute paths are supported\&. .SH "ДИВ\&. ТАКОЖ" .PP \fBvi\fR(1), -\fBгрупа\fR(5), +\fBgroup\fR(5), \fBgshadow\fR(5) , \fBpasswd\fR(5), , diff --git a/man/useradd.8.xml b/man/useradd.8.xml index a36db79..001e7d1 100644 --- a/man/useradd.8.xml +++ b/man/useradd.8.xml @@ -263,7 +263,9 @@ intervening whitespace. The groups are subject to the same restrictions as the group given with the option. The default is for the user to belong only to the - initial group. + initial group. In addition to passing in the -G flag, you can + add the option to the file /etc/default/useradd + which in turn will add all users to those supplementary groups. @@ -293,6 +295,11 @@ /etc/default/useradd or, by default, /etc/skel. + + Absolute symlinks that link back to the skel directory will have + the /etc/skel prefix replaced with the user's + home directory. + If possible, the ACLs and extended attributes are copied. @@ -568,13 +575,31 @@ defines the SELinux user for the new account. Without this - option, a SELinux uses the default user. Note that the + option, SELinux uses the default user. Note that the shadow system doesn't store the selinux-user, it uses semanage 8 for that. + + +  SERANGE + + + + defines the SELinux MLS range for the new account. Without this + option, SELinux uses the default range. Note that the + shadow system doesn't store the selinux-range, it uses + semanage + 8 for that. + + + This option is only valid if the (or + ) option is specified. + + + @@ -702,7 +727,7 @@ the ls output. - Usernames may only be up to 32 characters long. + Usernames may only be up to 256 characters long. diff --git a/man/usermod.8.xml b/man/usermod.8.xml index 7e1342c..349248b 100644 --- a/man/usermod.8.xml +++ b/man/usermod.8.xml @@ -510,6 +510,23 @@ + + +  SERANGE + + + + defines the SELinux MLS range for the new account. + Note that the shadow system doesn't store the selinux-range, + it uses semanage + 8 for that. + + + This option is only valid if the (or + ) option is specified. + + + @@ -562,7 +579,7 @@ /etc/gshadow - Secure group account informatio. + Secure group account information diff --git a/man/vipw.8.xml b/man/vipw.8.xml index 4caddcb..fb80582 100644 --- a/man/vipw.8.xml +++ b/man/vipw.8.xml @@ -64,7 +64,7 @@ DESCRIPTION - The vipw and vigr commands edits + The vipw and vigr commands edit the files /etc/passwd and /etc/group, respectively. With the flag, they will edit the shadow versions of those diff --git a/man/zh_CN/Makefile.am b/man/zh_CN/Makefile.am index e9d8f2c..a8b93a5 100644 --- a/man/zh_CN/Makefile.am +++ b/man/zh_CN/Makefile.am @@ -21,7 +21,6 @@ man_MANS = \ man8/grpconv.8 \ man8/grpunconv.8 \ man5/gshadow.5 \ - man8/lastlog.8 \ man1/login.1 \ man5/login.defs.5 \ man8/logoutd.8 \ @@ -44,6 +43,10 @@ man_MANS = \ man8/vigr.8 \ man8/vipw.8 +if ENABLE_LASTLOG +man_MANS += man8/lastlog.8 +endif + man_nopam = \ man5/limits.5 \ man5/login.access.5 \ diff --git a/man/zh_CN/Makefile.in b/man/zh_CN/Makefile.in index 58e4b9d..7f100a7 100644 --- a/man/zh_CN/Makefile.in +++ b/man/zh_CN/Makefile.in @@ -87,8 +87,9 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -@USE_PAM_FALSE@am__append_1 = $(man_nopam) -@USE_PAM_TRUE@am__append_2 = $(man_nopam) +@ENABLE_LASTLOG_TRUE@am__append_1 = man8/lastlog.8 +@USE_PAM_FALSE@am__append_2 = $(man_nopam) +@USE_PAM_TRUE@am__append_3 = $(man_nopam) subdir = man/zh_CN ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ @@ -176,6 +177,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -194,6 +197,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -209,9 +213,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -227,6 +237,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -235,6 +246,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -257,6 +270,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -332,20 +348,22 @@ man_MANS = man1/chage.1 man1/chfn.1 man8/chgpasswd.8 man8/chpasswd.8 \ man1/chsh.1 man1/expiry.1 man5/faillog.5 man8/faillog.8 \ man3/getspnam.3 man1/gpasswd.1 man8/groupadd.8 man8/groupdel.8 \ man8/groupmems.8 man8/groupmod.8 man1/groups.1 man8/grpck.8 \ - man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man8/lastlog.8 \ - man1/login.1 man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 \ - man8/newusers.8 man8/nologin.8 man1/passwd.1 man5/passwd.5 \ - man8/pwck.8 man8/pwconv.8 man8/pwunconv.8 man1/sg.1 \ - man3/shadow.3 man5/shadow.5 man1/su.1 man5/suauth.5 \ - man8/useradd.8 man8/userdel.8 man8/usermod.8 man8/vigr.8 \ - man8/vipw.8 $(am__append_1) + man8/grpconv.8 man8/grpunconv.8 man5/gshadow.5 man1/login.1 \ + man5/login.defs.5 man8/logoutd.8 man1/newgrp.1 man8/newusers.8 \ + man8/nologin.8 man1/passwd.1 man5/passwd.5 man8/pwck.8 \ + man8/pwconv.8 man8/pwunconv.8 man1/sg.1 man3/shadow.3 \ + man5/shadow.5 man1/su.1 man5/suauth.5 man8/useradd.8 \ + man8/userdel.8 man8/usermod.8 man8/vigr.8 man8/vipw.8 \ + $(am__append_1) $(am__append_2) man_nopam = \ man5/limits.5 \ man5/login.access.5 \ man5/porttime.5 -EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_2) +EXTRA_DIST = $(man_MANS) man1/id.1 man8/sulogin.8 $(am__append_3) LANG = $(notdir $(CURDIR)) +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_FALSE@VENDORDIR_COND = without_vendordir +@ENABLE_REGENERATE_MAN_TRUE@@HAVE_VENDORDIR_TRUE@VENDORDIR_COND = with_vendordir @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@PAM_COND = no_pam @ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@PAM_COND = pam @ENABLE_REGENERATE_MAN_TRUE@@SHADOWGRP_FALSE@SHADOWGRP_COND = no_gshadow @@ -354,8 +372,15 @@ LANG = $(notdir $(CURDIR)) @ENABLE_REGENERATE_MAN_TRUE@@WITH_TCB_TRUE@TCB_COND = tcb @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_FALSE@SHA_CRYPT_COND = no_sha_crypt @ENABLE_REGENERATE_MAN_TRUE@@USE_SHA_CRYPT_TRUE@SHA_CRYPT_COND = sha_crypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_FALSE@BCRYPT_COND = no_bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_BCRYPT_TRUE@BCRYPT_COND = bcrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_FALSE@YESCRYPT_COND = no_yescrypt +@ENABLE_REGENERATE_MAN_TRUE@@USE_YESCRYPT_TRUE@YESCRYPT_COND = yescrypt @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_FALSE@SUBIDS_COND = no_subids @ENABLE_REGENERATE_MAN_TRUE@@ENABLE_SUBIDS_TRUE@SUBIDS_COND = subids +@ENABLE_LASTLOG_FALSE@@ENABLE_REGENERATE_MAN_TRUE@LASTLOG_COND = no_lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_FALSE@LASTLOG_COND = lastlog +@ENABLE_LASTLOG_TRUE@@ENABLE_REGENERATE_MAN_TRUE@@USE_PAM_TRUE@LASTLOG_COND = no_lastlog CLEANFILES = messages.mo login.defs.d $(EXTRA_DIST) $(addsuffix .xml,$(EXTRA_DIST)) config.xml all: all-am @@ -739,10 +764,10 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ cp ../config.xml $@ @ENABLE_REGENERATE_MAN_TRUE@messages.mo: ../po/$(LANG).po -@ENABLE_REGENERATE_MAN_TRUE@ msgfmt ../po/$(LANG).po -o messages.mo +@ENABLE_REGENERATE_MAN_TRUE@ msgfmt $< -o messages.mo @ENABLE_REGENERATE_MAN_TRUE@login.defs.d: -@ENABLE_REGENERATE_MAN_TRUE@ ln -sf ../login.defs.d login.defs.d +@ENABLE_REGENERATE_MAN_TRUE@ ln -sf $(srcdir)/../login.defs.d login.defs.d @ENABLE_REGENERATE_MAN_TRUE@%.xml: ../%.xml messages.mo login.defs.d @ENABLE_REGENERATE_MAN_TRUE@ if grep -q SHADOW-CONFIG-HERE $< ; then \ @@ -750,7 +775,7 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ else \ @ENABLE_REGENERATE_MAN_TRUE@ sed -e 's/^\(/\1 [%config;]>/' $< > $@; \ @ENABLE_REGENERATE_MAN_TRUE@ fi -@ENABLE_REGENERATE_MAN_TRUE@ itstool -d -l $(LANG) -m messages.mo -o . $@ +@ENABLE_REGENERATE_MAN_TRUE@ itstool -i $(srcdir)/../its.rules -d -l $(LANG) -m messages.mo -o . $@ @ENABLE_REGENERATE_MAN_TRUE@ sed -i 's:\(^:\1 lang="$(LANG)">:' $@ @ENABLE_REGENERATE_MAN_TRUE@%.xml-config: %.xml @@ -761,11 +786,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \ @ENABLE_REGENERATE_MAN_TRUE@ fi @ENABLE_REGENERATE_MAN_TRUE@man1/% man3/% man5/% man8/%: %.xml-config Makefile config.xml -@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(SUBIDS_COND)" \ +@ENABLE_REGENERATE_MAN_TRUE@ $(XSLTPROC) --stringparam profile.condition "$(PAM_COND);$(SHADOWGRP_COND);$(TCB_COND);$(SHA_CRYPT_COND);$(BCRYPT_COND);$(YESCRYPT_COND);$(SUBIDS_COND);$(VENDORDIR_COND);$(LASTLOG_COND)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.authors.section.enabled" "0" \ @ENABLE_REGENERATE_MAN_TRUE@ --stringparam "man.output.base.dir" "" \ +@ENABLE_REGENERATE_MAN_TRUE@ --stringparam vendordir "$(VENDORDIR)" \ @ENABLE_REGENERATE_MAN_TRUE@ --param "man.output.in.separate.dir" "1" \ -@ENABLE_REGENERATE_MAN_TRUE@ -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/profile-docbook.xsl $< +@ENABLE_REGENERATE_MAN_TRUE@ --path "$(srcdir)/login.defs.d" \ +@ENABLE_REGENERATE_MAN_TRUE@ -nonet $(top_srcdir)/man/shadow-man.xsl $< @ENABLE_REGENERATE_MAN_TRUE@clean-local: @ENABLE_REGENERATE_MAN_TRUE@ rm -rf man1 man3 man5 man8 diff --git a/man/zh_CN/man1/chage.1 b/man/zh_CN/man1/chage.1 index 1383387..88d574a 100644 --- a/man/zh_CN/man1/chage.1 +++ b/man/zh_CN/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "CHAGE" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "CHAGE" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chage \- 更改用户密码过期信息 .SH "大纲" .HP \w'\fBchage\fR\ 'u -\fBchage\fR [\fI选项\fR] \fI登录\fR +\fBchage\fR [\fIoptions\fR] \fILOGIN\fR .SH "描述" .PP The @@ -136,6 +136,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-W\fR, \fB\-\-warndays\fR\ \&\fIWARN_DAYS\fR .RS 4 Set the number of days of warning before a password change is required\&. The diff --git a/man/zh_CN/man1/chfn.1 b/man/zh_CN/man1/chfn.1 index cc5b4bf..17ed971 100644 --- a/man/zh_CN/man1/chfn.1 +++ b/man/zh_CN/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "CHFN" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "CHFN" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chfn \- 更改真名和信息 .SH "大纲" .HP \w'\fBchfn\fR\ 'u -\fBchfn\fR [\fI选项\fR] [\fI登录\fR] +\fBchfn\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "描述" .PP The diff --git a/man/zh_CN/man1/chsh.1 b/man/zh_CN/man1/chsh.1 index f81758c..52c6dee 100644 --- a/man/zh_CN/man1/chsh.1 +++ b/man/zh_CN/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "CHSH" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "CHSH" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chsh \- 更改登录 shell .SH "大纲" .HP \w'\fBchsh\fR\ 'u -\fBchsh\fR [\fI选项\fR] [\fI登录\fR] +\fBchsh\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "描述" .PP The @@ -77,6 +77,12 @@ The only restriction placed on the login shell is that the command name must be in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +.PP +For this reason, placing +/bin/rsh +in +/etc/shells +is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. .SH "配置文件" .PP The following configuration variables in diff --git a/man/zh_CN/man1/expiry.1 b/man/zh_CN/man1/expiry.1 index 3ebd733..e4b528b 100644 --- a/man/zh_CN/man1/expiry.1 +++ b/man/zh_CN/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "EXPIRY" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "EXPIRY" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ expiry \- check and enforce password expiration policy .SH "大纲" .HP \w'\fBexpiry\fR\ 'u -\fBexpiry\fR \fI选项\fR +\fBexpiry\fR \fIoption\fR .SH "描述" .PP The diff --git a/man/zh_CN/man1/gpasswd.1 b/man/zh_CN/man1/gpasswd.1 index 1f4623f..8648209 100644 --- a/man/zh_CN/man1/gpasswd.1 +++ b/man/zh_CN/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GPASSWD" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "GPASSWD" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ gpasswd \- administer /etc/group and /etc/gshadow .SH "大纲" .HP \w'\fBgpasswd\fR\ 'u -\fBgpasswd\fR [\fI选项\fR] \fIgroup\fR +\fBgpasswd\fR [\fIoption\fR] \fIgroup\fR .SH "描述" .PP The diff --git a/man/zh_CN/man1/groups.1 b/man/zh_CN/man1/groups.1 index 3845897..d7b66f9 100644 --- a/man/zh_CN/man1/groups.1 +++ b/man/zh_CN/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GROUPS" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "GROUPS" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groups \- 显示当前组名 .SH "大纲" .HP \w'\fBgroups\fR\ 'u -\fBgroups\fR [\fI用户\fR] +\fBgroups\fR [\fIuser\fR] .SH "描述" .PP The diff --git a/man/zh_CN/man1/id.1 b/man/zh_CN/man1/id.1 index 31ecf86..30f53a7 100644 --- a/man/zh_CN/man1/id.1 +++ b/man/zh_CN/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "ID" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "ID" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/login.1 b/man/zh_CN/man1/login.1 index 5c43d13..03f92b8 100644 --- a/man/zh_CN/man1/login.1 +++ b/man/zh_CN/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "LOGIN" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "LOGIN" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,9 +31,9 @@ login \- 在系统上启动回话 .SH "大纲" .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fI用户名\fR] [\fIENV=VAR\fR...] +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] [\fIusername\fR] [\fIENV=VAR\fR...] .HP \w'\fBlogin\fR\ 'u -\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fI用户名\fR +\fBlogin\fR [\-p] [\-h\ \fIhost\fR] \-f \fIusername\fR .HP \w'\fBlogin\fR\ 'u \fBlogin\fR [\-p] \-r\ \fIhost\fR .SH "描述" diff --git a/man/zh_CN/man1/newgrp.1 b/man/zh_CN/man1/newgrp.1 index a66be46..f34266c 100644 --- a/man/zh_CN/man1/newgrp.1 +++ b/man/zh_CN/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "NEWGRP" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "NEWGRP" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/passwd.1 b/man/zh_CN/man1/passwd.1 index 89e0e07..cfc0016 100644 --- a/man/zh_CN/man1/passwd.1 +++ b/man/zh_CN/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "PASSWD" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "PASSWD" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ passwd \- 更改用户密码 .SH "大纲" .HP \w'\fBpasswd\fR\ 'u -\fBpasswd\fR [\fI选项\fR] [\fI登录\fR] +\fBpasswd\fR [\fIoptions\fR] [\fILOGIN\fR] .SH "描述" .PP The @@ -49,44 +49,9 @@ refuses to change the password and exits\&. .PP 提示用户输入两次新密码。第二次和第一次进行比较,并且需要相同才能更改密码。 .PP -然后,测试密码的负责程度。一般来讲,密码应该包含 6 到 8 位字符,从下边的一个或多个集合中选择: -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -小写字母 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -数字 0 到 9 -.RE -.sp -.RS 4 -.ie n \{\ -\h'-04'\(bu\h'+03'\c -.\} -.el \{\ -.sp -1 -.IP \(bu 2.3 -.\} -标点符号 -.RE -.PP -Care must be taken not to include the system default erase or kill characters\&. +Then, the password is tested for complexity\&. \fBpasswd\fR -will reject any password which is not suitably complex\&. +will reject any password which is not suitably complex\&. Care must be taken not to include the system default erase or kill characters\&. .SS "关于用户密码的提示" .PP The security of a password depends upon the strength of the encryption algorithm and the size of the key space\&. The legacy @@ -96,6 +61,8 @@ System encryption method is based on the NBS DES algorithm\&. More recent method .PP 由于粗心地或处理选择密码,会危及密码的安全。由于这个原因,您不应该选择出现在词典中或者必须要写下来才能记住的密码。密码也不应该是一个名字、许可证号、生日或者街道号。所有这些可以用于猜测来损害系统安全。 .PP +As a general guideline, passwords should be long and random\&. It\*(Aqs fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords\&. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations\&. Being an exponential equation, it\*(Aqs apparent that the exponent (the length) is more important than the base (the size of the character set)\&. +.PP You can find advice on how to choose a strong password on http://en\&.wikipedia\&.org/wiki/Password_strength .SH "选项" .PP @@ -175,6 +142,12 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-S\fR, \fB\-\-status\fR .RS 4 显示账户状态信息。状态信息包含 7 个字段。首个字段是用户的登录名,第二个字段表示用户账户是否已经锁定密码(L)、没有密码 (NP)或者密码可用(P),第三个字段给出最后一次更改密码的日期。接下来的四个字段分别是密码的最小年龄、最大年龄、警告期和禁用期。这些年龄以天为单位计算。 @@ -205,6 +178,11 @@ as \fIMAX_DAYS\fR will remove checking a password\*(Aqs validity\&. .RE +.PP +\fB\-s\fR, \fB\-\-stdin\fR +.RS 4 +This option is used to indicate that passwd should read the new password from standard input, which can be a pipe\&. +.RE .SH "CAVEATS" .PP 密码复杂性检查在每台机器间不同。用户应该选择适合的尽量复杂的密码。 @@ -277,7 +255,10 @@ invalid argument to option .SH "参见" .PP \fBchpasswd\fR(8), +\fBmakepasswd\fR(1), \fBpasswd\fR(5), \fBshadow\fR(5), \fBlogin.defs\fR(5), \fBusermod\fR(8)\&. +.PP +The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: "https://xkcd\&.com/936/" diff --git a/man/zh_CN/man1/sg.1 b/man/zh_CN/man1/sg.1 index daae817..163e0b2 100644 --- a/man/zh_CN/man1/sg.1 +++ b/man/zh_CN/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "SG" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "SG" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/su.1 b/man/zh_CN/man1/su.1 index 91a304f..51cde5c 100644 --- a/man/zh_CN/man1/su.1 +++ b/man/zh_CN/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 用户命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: User Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "SU" "1" "2022-11-08" "shadow\-utils 4\&.13" "用户命令" +.TH "SU" "1" "2024-06-21" "shadow\-utils 4\&.15\&.2" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ su \- 更改用户 ID 或成为超级用户 .SH "大纲" .HP \w'\fBsu\fR\ 'u -\fBsu\fR [\fI选项\fR] [\fI\-\fR] [\fI用户名\fR\ [\ \fIargs\fR\ ]] +\fBsu\fR [\fIoptions\fR] [\fI\-\fR] [\fIusername\fR\ [\ \fIargs\fR\ ]] .SH "描述" .PP The diff --git a/man/zh_CN/man3/shadow.3 b/man/zh_CN/man3/shadow.3 index 57bb8e5..8521b3a 100644 --- a/man/zh_CN/man3/shadow.3 +++ b/man/zh_CN/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 库函数调用 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: Library Calls +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "SHADOW" "3" "2022-11-08" "shadow\-utils 4\&.13" "库函数调用" +.TH "SHADOW" "3" "2024-06-21" "shadow\-utils 4\&.15\&.2" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/faillog.5 b/man/zh_CN/man5/faillog.5 index 5ac8f2b..7603c8e 100644 --- a/man/zh_CN/man5/faillog.5 +++ b/man/zh_CN/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "FAILLOG" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuratio" +.TH "FAILLOG" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/gshadow.5 b/man/zh_CN/man5/gshadow.5 index 04ff51d..3faeb89 100644 --- a/man/zh_CN/man5/gshadow.5 +++ b/man/zh_CN/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GSHADOW" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "GSHADOW" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ contains the shadowed information for group accounts\&. .PP 此文件的每行包含逗号分隔的如下字段: .PP -\fB组名\fR +\fBgroup name\fR .RS 4 必须是系统中已经存在的有效组。 .RE .PP -\fB加密了的密码\fR +\fBencrypted password\fR .RS 4 Refer to \fBcrypt\fR(3) @@ -63,7 +63,7 @@ This password supersedes any password specified in /etc/group\&. .RE .PP -\fB管理员\fR +\fBadministrators\fR .RS 4 必须是一个逗号分隔的用户名列表。 .sp @@ -72,7 +72,7 @@ This password supersedes any password specified in 管理员也有成员一样的权限(请看下边)。 .RE .PP -\fB成员\fR +\fBmembers\fR .RS 4 必须是一个逗号分隔的用户名列表。 .sp diff --git a/man/zh_CN/man5/limits.5 b/man/zh_CN/man5/limits.5 index b2fe040..18aa71e 100644 --- a/man/zh_CN/man5/limits.5 +++ b/man/zh_CN/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "LIMITS" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LIMITS" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/login.access.5 b/man/zh_CN/man5/login.access.5 index 19ccadd..f4aaabd 100644 --- a/man/zh_CN/man5/login.access.5 +++ b/man/zh_CN/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "LOGIN\&.ACCESS" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/login.defs.5 b/man/zh_CN/man5/login.defs.5 index 5db13e4..f53439f 100644 --- a/man/zh_CN/man5/login.defs.5 +++ b/man/zh_CN/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "LOGIN\&.DEFS" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -192,8 +192,7 @@ USERGROUPS_ENAB .PP sulogin .RS 4 -ENV_HZ -ENV_TZ +ENV_HZ ENV_TZ .RE .PP useradd diff --git a/man/zh_CN/man5/passwd.5 b/man/zh_CN/man5/passwd.5 index 13c1853..eeb6262 100644 --- a/man/zh_CN/man5/passwd.5 +++ b/man/zh_CN/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "PASSWD" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PASSWD" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/porttime.5 b/man/zh_CN/man5/porttime.5 index 7a6b29f..3199137 100644 --- a/man/zh_CN/man5/porttime.5 +++ b/man/zh_CN/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "PORTTIME" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "PORTTIME" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/shadow.5 b/man/zh_CN/man5/shadow.5 index 4d4b090..7991081 100644 --- a/man/zh_CN/man5/shadow.5 +++ b/man/zh_CN/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "SHADOW" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SHADOW" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,12 +38,12 @@ is a file which contains the password information for the system\*(Aqs accounts .PP Each line of this file contains 9 fields, separated by colons (\(lq:\(rq), in the following order: .PP -\fB登录名\fR +\fBlogin name\fR .RS 4 必须是有效的账户名,且已经存在于系统中。 .RE .PP -\fB加密了的密码\fR +\fBencrypted password\fR .RS 4 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 /etc/shadow @@ -59,7 +59,7 @@ If the password field contains some string that is not a valid result of \fBcrypt\fR(3), 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)\&. .RE .PP -\fB最后一次更改密码的日期\fR +\fBdate of last password change\fR .RS 4 The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -68,14 +68,14 @@ The value 0 has a special meaning, which is that the user should change her pass 空字段表示密码年龄功能被禁用。 .RE .PP -\fB密码的最小年龄\fR +\fBminimum password age\fR .RS 4 最小密码年龄是指,用户一次更改密码之后,要等多长时间才再次被允许更改密码。 .sp An empty field and value 0 mean that there is no minimum password age\&. .RE .PP -\fB最大密码年龄\fR +\fBmaximum password age\fR .RS 4 最大密码年龄是指,这写天之后,用户必须更改密码。 .sp @@ -86,14 +86,14 @@ An empty field and value 0 mean that there is no minimum password age\&. 如果最大密码年龄小于最小密码年龄,用户将会不能更改密码。 .RE .PP -\fB密码警告时间段\fR +\fBpassword warning period\fR .RS 4 密码过期之前,提前警告用户的的天数(请参考上边的密码的最大年龄)。 .sp 空字段或者 0 表示没有密码警告期。 .RE .PP -\fB密码禁用期\fR +\fBpassword inactivity period\fR .RS 4 密码过期(查看上边的密码最大年龄)后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)。 .sp @@ -102,7 +102,7 @@ After expiration of the password and this expiration period is elapsed, no login 空字段表示没有强制密码过期。 .RE .PP -\fB账户过期日期\fR +\fBaccount expiration date\fR .RS 4 The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp @@ -113,7 +113,7 @@ Note that an account expiration differs from a password expiration\&. In case of 应该避免使用 0,因为它既能理解成永不过期也能理解成在1970年1月1日过期。 .RE .PP -\fB保留字段\fR +\fBreserved field\fR .RS 4 此字段保留作将来使用。 .RE diff --git a/man/zh_CN/man5/suauth.5 b/man/zh_CN/man5/suauth.5 index 55434bf..176649b 100644 --- a/man/zh_CN/man5/suauth.5 +++ b/man/zh_CN/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 +.\" Date: 2024-06-21 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.13 +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "SUAUTH" "5" "2022-11-08" "shadow\-utils 4\&.13" "File Formats and Configuration" +.TH "SUAUTH" "5" "2024-06-21" "shadow\-utils 4\&.15\&.2" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/chgpasswd.8 b/man/zh_CN/man8/chgpasswd.8 index c462a32..29228e1 100644 --- a/man/zh_CN/man8/chgpasswd.8 +++ b/man/zh_CN/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "CHGPASSWD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "CHGPASSWD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chgpasswd \- 批量更新组密码 .SH "大纲" .HP \w'\fBchgpasswd\fR\ 'u -\fBchgpasswd\fR [\fI选项\fR] +\fBchgpasswd\fR [\fIoptions\fR] .SH "描述" .PP The @@ -63,7 +63,12 @@ command are: .RS 4 使用指定的方法加密密码。 .sp -可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512,前提是您的 libc 支持这写方法。 +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .RE .PP \fB\-e\fR, \fB\-\-encrypted\fR @@ -94,14 +99,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 使用指定次数的轮转来加密密码。 .sp -值 0 表示让系统为加密方法选择默认的轮转次数 (5000)。 +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -会强制最小 1,000,最大 9,9999,9999 -.sp -您只可以对 SHA256 或 SHA512 使用此选项。 -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "CAVEATS" .PP diff --git a/man/zh_CN/man8/chpasswd.8 b/man/zh_CN/man8/chpasswd.8 index fa03ab8..3729e51 100644 --- a/man/zh_CN/man8/chpasswd.8 +++ b/man/zh_CN/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "CHPASSWD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "CHPASSWD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ chpasswd \- 批量更新密码 .SH "大纲" .HP \w'\fBchpasswd\fR\ 'u -\fBchpasswd\fR [\fI选项\fR] +\fBchpasswd\fR [\fIoptions\fR] .SH "描述" .PP The @@ -68,7 +68,12 @@ command are: .RS 4 使用指定的方法加密密码。 .sp -可用的方法有 DES, MD5, NONE, and SHA256 或 SHA512,前提是您的 libc 支持这写方法。 +The available methods are +\fIDES\fR, +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR +and +\fINONE\fR +if your libc supports these methods\&. .sp By default (if none of the \fB\-c\fR, @@ -106,22 +111,23 @@ directory and use the configuration files from the directory\&. Only absolute paths are supported\&. .RE .PP +\fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR +.RS 4 +Apply changes to configuration files under the root filesystem found under the directory +\fIPREFIX_DIR\fR\&. 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\&. +.RE +.PP \fB\-s\fR, \fB\-\-sha\-rounds\fR\ \&\fIROUNDS\fR .RS 4 使用指定次数的轮转来加密密码。 .sp -值 0 表示让系统为加密方法选择默认的轮转次数 (5000)。 +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -会强制最小 1,000,最大 9,9999,9999 -.sp -您只可以对 SHA256 或 SHA512 使用此选项。 -.sp -By default, the number of rounds is defined by the -\fBSHA_CRYPT_MIN_ROUNDS\fR -and -\fBSHA_CRYPT_MAX_ROUNDS\fR -variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default number of rounds is 5000\&. .RE .SH "CAVEATS" .PP diff --git a/man/zh_CN/man8/faillog.8 b/man/zh_CN/man8/faillog.8 index 9386374..0151be4 100644 --- a/man/zh_CN/man8/faillog.8 +++ b/man/zh_CN/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "FAILLOG" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "FAILLOG" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ faillog \- 显示登录失败记录或设置登录失败限制 .SH "大纲" .HP \w'\fBfaillog\fR\ 'u -\fBfaillog\fR [\fI选项\fR] +\fBfaillog\fR [\fIoptions\fR] .SH "描述" .PP \fBfaillog\fR diff --git a/man/zh_CN/man8/groupadd.8 b/man/zh_CN/man8/groupadd.8 index dcadcb1..5f846fc 100644 --- a/man/zh_CN/man8/groupadd.8 +++ b/man/zh_CN/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GROUPADD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "GROUPADD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupadd \- 创建一个新组 .SH "大纲" .HP \w'\fBgroupadd\fR\ 'u -\fBgroupadd\fR [\fI选项\fR] \fINEWGROUP\fR +\fBgroupadd\fR [\fIOPTIONS\fR] \fINEWGROUP\fR .SH "描述" .PP The diff --git a/man/zh_CN/man8/groupdel.8 b/man/zh_CN/man8/groupdel.8 index d20b5db..6cd0f67 100644 --- a/man/zh_CN/man8/groupdel.8 +++ b/man/zh_CN/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GROUPDEL" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "GROUPDEL" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupdel \- 删除一个组 .SH "大纲" .HP \w'\fBgroupdel\fR\ 'u -\fBgroupdel\fR [\fI选项\fR] \fIGROUP\fR +\fBgroupdel\fR [\fIoptions\fR] \fIGROUP\fR .SH "描述" .PP The diff --git a/man/zh_CN/man8/groupmems.8 b/man/zh_CN/man8/groupmems.8 index 84a3f7d..8570809 100644 --- a/man/zh_CN/man8/groupmems.8 +++ b/man/zh_CN/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GROUPMEMS" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "GROUPMEMS" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ utility to manage their own group membership list\&. .nf $ groupadd \-r groups $ chmod 2710 groupmems - $ chown root\&.groups groupmems + $ chown root:groups groupmems $ groupmems \-g groups \-a gk4 .fi diff --git a/man/zh_CN/man8/groupmod.8 b/man/zh_CN/man8/groupmod.8 index d0df2e0..79b5648 100644 --- a/man/zh_CN/man8/groupmod.8 +++ b/man/zh_CN/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GROUPMOD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "GROUPMOD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ groupmod \- modify a group definition on the system .SH "大纲" .HP \w'\fBgroupmod\fR\ 'u -\fBgroupmod\fR [\fI选项\fR] \fIGROUP\fR +\fBgroupmod\fR [\fIoptions\fR] \fIGROUP\fR .SH "描述" .PP The diff --git a/man/zh_CN/man8/grpck.8 b/man/zh_CN/man8/grpck.8 index a75388c..38a7a9d 100644 --- a/man/zh_CN/man8/grpck.8 +++ b/man/zh_CN/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "GRPCK" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "GRPCK" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ grpck \- 检查组文件的完整性 .SH "大纲" .HP \w'\fBgrpck\fR\ 'u -\fBgrpck\fR [选项] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] +\fBgrpck\fR [options] [\fIgroup\fR\ [\ \fIshadow\fR\ ]] .SH "描述" .PP The diff --git a/man/zh_CN/man8/lastlog.8 b/man/zh_CN/man8/lastlog.8 index d3bafd0..30ab644 100644 --- a/man/zh_CN/man8/lastlog.8 +++ b/man/zh_CN/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "LASTLOG" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "LASTLOG" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ lastlog \- 报告所有用户的最近登录情况,或者指定用户的最近登录情况 .SH "大纲" .HP \w'\fBlastlog\fR\ 'u -\fBlastlog\fR [\fI选项\fR] +\fBlastlog\fR [\fIoptions\fR] .SH "描述" .PP \fBlastlog\fR @@ -128,5 +128,5 @@ Database times of previous user logins\&. 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)\&. .PP Having high UIDs can create problems when handling the - /var/log/lastlog +/var/log/lastlog with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/zh_CN/man8/logoutd.8 b/man/zh_CN/man8/logoutd.8 index 4481346..bded756 100644 --- a/man/zh_CN/man8/logoutd.8 +++ b/man/zh_CN/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "LOGOUTD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "LOGOUTD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/newusers.8 b/man/zh_CN/man8/newusers.8 index 01242e3..7f31ec0 100644 --- a/man/zh_CN/man8/newusers.8 +++ b/man/zh_CN/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "NEWUSERS" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "NEWUSERS" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ newusers \- 批量更新和创建新用户 .SH "大纲" .HP \w'\fBnewusers\fR\ 'u -\fBnewusers\fR [\fI选项\fR] [\fI文件\fR] +\fBnewusers\fR [\fIoptions\fR] [\fIfile\fR] .SH "描述" .PP The @@ -168,14 +168,13 @@ directory\&. Only absolute paths are supported\&. .RS 4 使用指定次数的轮转来加密密码。 .sp -值 0 表示让系统为加密方法选择默认的轮转次数 (5000)。 +You can only use this option with crypt method: +\fISHA256\fR \fISHA512\fR .sp -会强制最小 1,000,最大 9,9999,9999 -.sp -您只可以对 SHA256 或 SHA512 使用此选项。 -.sp -By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in +By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in /etc/login\&.defs\&. +.sp +A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512\&. The default is 5000\&. .RE .SH "CAVEATS" .PP diff --git a/man/zh_CN/man8/nologin.8 b/man/zh_CN/man8/nologin.8 index 286ba0f..a5cc0d2 100644 --- a/man/zh_CN/man8/nologin.8 +++ b/man/zh_CN/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "NOLOGIN" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "NOLOGIN" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/pwck.8 b/man/zh_CN/man8/pwck.8 index 4bae586..b3088a2 100644 --- a/man/zh_CN/man8/pwck.8 +++ b/man/zh_CN/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "PWCK" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "PWCK" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ pwck \- verify the integrity of password files .SH "大纲" .HP \w'\fBpwck\fR\ 'u -\fBpwck\fR [选项] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] +\fBpwck\fR [options] [\fIPASSWORDFILE\fR\ [\ \fISHADOWFILE\fR\ ]] .SH "描述" .PP The diff --git a/man/zh_CN/man8/pwconv.8 b/man/zh_CN/man8/pwconv.8 index c519a90..cc29def 100644 --- a/man/zh_CN/man8/pwconv.8 +++ b/man/zh_CN/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "PWCONV" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "PWCONV" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,13 +31,13 @@ pwconv, pwunconv, grpconv, grpunconv \- 在影子密码和组以及其它直接转换 .SH "大纲" .HP \w'\fBpwconv\fR\ 'u -\fBpwconv\fR [\fI选项\fR] +\fBpwconv\fR [\fIoptions\fR] .HP \w'\fBpwunconv\fR\ 'u -\fBpwunconv\fR [\fI选项\fR] +\fBpwunconv\fR [\fIoptions\fR] .HP \w'\fBgrpconv\fR\ 'u -\fBgrpconv\fR [\fI选项\fR] +\fBgrpconv\fR [\fIoptions\fR] .HP \w'\fBgrpunconv\fR\ 'u -\fBgrpunconv\fR [\fI选项\fR] +\fBgrpunconv\fR [\fIoptions\fR] .SH "描述" .PP The diff --git a/man/zh_CN/man8/sulogin.8 b/man/zh_CN/man8/sulogin.8 index e7fdf61..555b60d 100644 --- a/man/zh_CN/man8/sulogin.8 +++ b/man/zh_CN/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "SULOGIN" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "SULOGIN" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/useradd.8 b/man/zh_CN/man8/useradd.8 index 580372e..1739175 100644 --- a/man/zh_CN/man8/useradd.8 +++ b/man/zh_CN/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "USERADD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "USERADD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,11 +31,11 @@ useradd \- 创建一个新用户或更新默认新用户信息 .SH "大纲" .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR [\fI选项\fR] \fI登录\fR +\fBuseradd\fR [\fIoptions\fR] \fILOGIN\fR .HP \w'\fBuseradd\fR\ 'u \fBuseradd\fR \-D .HP \w'\fBuseradd\fR\ 'u -\fBuseradd\fR \-D [\fI选项\fR] +\fBuseradd\fR \-D [\fIoptions\fR] .SH "描述" .PP When invoked without the @@ -169,7 +169,11 @@ variable in .RS 4 A list of supplementary groups which the user is also a member of\&. Each group is separated from the next by a comma, with no intervening whitespace\&. The groups are subject to the same restrictions as the group given with the \fB\-g\fR -option\&. The default is for the user to belong only to the initial group\&. +option\&. The default is for the user to belong only to the initial group\&. In addition to passing in the \-G flag, you can add the option +\fBGROUPS\fR +to the file +/etc/default/useradd +which in turn will add all users to those supplementary groups\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -194,6 +198,10 @@ variable in or, by default, /etc/skel\&. .sp +Absolute symlinks that link back to the skel directory will have the +/etc/skel +prefix replaced with the user\*(Aqs home directory\&. +.sp 如果可以,也复制 ACL 和扩展属性。 .RE .PP @@ -380,9 +388,21 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -defines the SELinux user for the new account\&. Without this option, a SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +defines the SELinux user for the new account\&. Without this option, SELinux uses the default user\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses +\fBsemanage\fR(8) +for that\&. +.RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Without this option, SELinux uses the default range\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses \fBsemanage\fR(8) for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. .RE .SS "更改默认值" .PP @@ -469,7 +489,7 @@ Usernames may contain only lower and upper case letters, digits, underscores, or \fBls\fR output\&. .PP -用户名不能超过 32 个字符长。 +用户名不能超过 256 个字符长。 .SH "配置文件" .PP The following configuration variables in diff --git a/man/zh_CN/man8/userdel.8 b/man/zh_CN/man8/userdel.8 index c6700ae..d03dd71 100644 --- a/man/zh_CN/man8/userdel.8 +++ b/man/zh_CN/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "USERDEL" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "USERDEL" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ userdel \- 删除用户账户和相关文件 .SH "大纲" .HP \w'\fBuserdel\fR\ 'u -\fBuserdel\fR [选项] \fI登录\fR +\fBuserdel\fR [options] \fILOGIN\fR .SH "描述" .PP The diff --git a/man/zh_CN/man8/usermod.8 b/man/zh_CN/man8/usermod.8 index 2b5a91d..6bc9f59 100644 --- a/man/zh_CN/man8/usermod.8 +++ b/man/zh_CN/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "USERMOD" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "USERMOD" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ usermod \- 修改一个用户账户 .SH "大纲" .HP \w'\fBusermod\fR\ 'u -\fBusermod\fR [\fI选项\fR] \fI登录\fR +\fBusermod\fR [\fIoptions\fR] \fILOGIN\fR .SH "描述" .PP The @@ -309,6 +309,18 @@ from /etc/login\&.defs\&. defines the SELinux user to be mapped with \fILOGIN\fR\&. An empty string ("") will remove the respective entry (if any)\&. Note that the shadow system doesn\*(Aqt store the selinux\-user, it uses semanage(8) for that\&. .RE +.PP +\fB\-\-selinux\-range\fR\ \&\fISERANGE\fR +.RS 4 +defines the SELinux MLS range for the new account\&. Note that the shadow system doesn\*(Aqt store the selinux\-range, it uses +\fBsemanage\fR(8) +for that\&. +.sp +This option is only valid if the +\fB\-Z\fR +(or +\fB\-\-selinux\-user\fR) option is specified\&. +.RE .SH "CAVEATS" .PP You must make certain that the named user is not executing any processes when this command is being executed if the user\*(Aqs numerical user ID, the user\*(Aqs name, or the user\*(Aqs home directory is being changed\&. @@ -336,7 +348,7 @@ Group account information .PP /etc/gshadow .RS 4 -Secure group account informatio\&. +Secure group account information .RE .PP /etc/login\&.defs diff --git a/man/zh_CN/man8/vipw.8 b/man/zh_CN/man8/vipw.8 index edc156f..c28295d 100644 --- a/man/zh_CN/man8/vipw.8 +++ b/man/zh_CN/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2022-11-08 -.\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.13 +.\" Date: 2024-06-21 +.\" Manual: System Management Commands +.\" Source: shadow-utils 4.15.2 .\" Language: Chinese Simplified .\" -.TH "VIPW" "8" "2022-11-08" "shadow\-utils 4\&.13" "系统管理命令" +.TH "VIPW" "8" "2024-06-21" "shadow\-utils 4\&.15\&.2" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,16 +31,16 @@ vipw, vigr \- 编辑密码、组、影子密码或影子组文件。 .SH "大纲" .HP \w'\fBvipw\fR\ 'u -\fBvipw\fR [\fI选项\fR] +\fBvipw\fR [\fIoptions\fR] .HP \w'\fBvigr\fR\ 'u -\fBvigr\fR [\fI选项\fR] +\fBvigr\fR [\fIoptions\fR] .SH "描述" .PP The \fBvipw\fR and \fBvigr\fR -commands edits the files +commands edit the files /etc/passwd and /etc/group, respectively\&. With the diff --git a/man/zh_TW/Makefile.in b/man/zh_TW/Makefile.in index 65c57b9..aa24541 100644 --- a/man/zh_TW/Makefile.in +++ b/man/zh_TW/Makefile.in @@ -172,6 +172,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -190,6 +192,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,9 +208,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -223,6 +232,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -231,6 +241,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -253,6 +265,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ diff --git a/po/POTFILES.in b/po/POTFILES.in index 61b79db..9ff6100 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,24 +1,65 @@ # List of files which contain translatable strings. +lib/addgrps.c +lib/age.c +lib/audit_help.c +lib/basename.c +lib/chkname.c +lib/chowndir.c +lib/chowntty.c +lib/cleanup.c +lib/cleanup_group.c +lib/cleanup_user.c lib/commonio.c +lib/console.c +lib/copydir.c lib/encrypt.c +lib/env.c +lib/failure.c lib/fields.c +lib/find_new_gid.c +lib/find_new_sub_gids.c +lib/find_new_sub_uids.c +lib/find_new_uid.c lib/fputsx.c -lib/getdef.c lib/get_gid.c -lib/getlong.c lib/get_uid.c +lib/getdef.c +lib/getgr_nam_gid.c +lib/getrange.c lib/groupio.c lib/groupmem.c lib/gshadow.c +lib/hushed.c +lib/idmapping.c +lib/isexpired.c +lib/limits.c +lib/list.c lib/lockpw.c +lib/log.c +lib/loginprompt.c +lib/mail.c +lib/motd.c +lib/myname.c lib/nscd.c +lib/obscure.c +lib/pam_pass.c +lib/pam_pass_non_interactive.c lib/port.c lib/pwauth.c +lib/pwd_init.c +lib/pwd2spwd.c +lib/pwdcheck.c lib/pwio.c lib/pwmem.c +lib/remove_tree.c +lib/rlogin.c +lib/root_flag.c +lib/salt.c lib/selinux.c lib/semanage.c +lib/setugid.c +lib/setupenv.c lib/sgetgrent.c lib/sgetpwent.c lib/sgetspent.c @@ -26,66 +67,20 @@ lib/sgroupio.c lib/shadow.c lib/shadowio.c lib/shadowmem.c +lib/shell.c lib/spawn.c +lib/strtoday.c +lib/sub.c +lib/sulog.c lib/tcbfuncs.c -lib/utent.c -libmisc/addgrps.c -libmisc/age.c -libmisc/audit_help.c -libmisc/basename.c -libmisc/chkname.c -libmisc/chowndir.c -libmisc/chowntty.c -libmisc/cleanup.c -libmisc/cleanup_group.c -libmisc/cleanup_user.c -libmisc/console.c -libmisc/copydir.c -libmisc/date_to_str.c -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 -libmisc/log.c -libmisc/loginprompt.c -libmisc/mail.c -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 -libmisc/remove_tree.c -libmisc/rlogin.c -libmisc/root_flag.c -libmisc/salt.c -libmisc/setugid.c -libmisc/setupenv.c -libmisc/shell.c -libmisc/strtoday.c -libmisc/sub.c -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 -libmisc/xmalloc.c -libmisc/yesno.c +lib/ttytype.c +lib/tz.c +lib/ulimit.c +lib/user_busy.c +lib/utmp.c +lib/valid.c +lib/xgetXXbyYY.c +lib/yesno.c src/chage.c src/chfn.c src/chgpasswd.c diff --git a/po/bs.po b/po/bs.po index 980cb02..e97797c 100644 --- a/po/bs.po +++ b/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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2004-05-09 12:03+0100\n" "Last-Translator: Safir Šećerović \n" "Language-Team: Bosnian \n" @@ -18,544 +18,544 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgid "Warning: unknown group %s\n" msgstr "" -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" +msgid "Warning: too many groups\n" msgstr "" -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" +msgid "Your password has expired." +msgstr "Vaša šifra je istekla." -msgid "Could not allocate space for config info.\n" -msgstr "" +msgid "Your password is inactive." +msgstr "Vaša šifra je neaktivna." -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgid "Your login has expired." +msgstr "Vaš račun je istekao." + +msgid " Contact the system administrator." msgstr "" -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" +msgid " Choose a new password." +msgstr " Izaberite novu šifru." + +msgid "You must change your password." msgstr "" #, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" +msgid "Your password will expire in %ld days.\n" +msgstr "Vaša šifra ističe za in %ld dana.\n" -msgid "Password: " -msgstr "Šifra:" +msgid "Your password will expire tomorrow." +msgstr "Vaša šifra ističe sutra." -#, c-format -msgid "%s's Password: " -msgstr "%s's Šifra: " +msgid "Your password will expire today." +msgstr "Vaša šifra ističe danas." -msgid "Cannot open audit interface.\n" +msgid "Cannot open audit interface - aborting.\n" msgstr "" #, c-format -msgid "%s: can not get previous SELinux process context: %s\n" +msgid "Unable to change owner or mode of tty stdin: %s" msgstr "" #, c-format -msgid "[libsemanage]: %s\n" +msgid "%s: failed to unlock %s\n" msgstr "" #, c-format -msgid "Cannot create SELinux management handle\n" +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" msgstr "" #, c-format -msgid "SELinux policy not managed\n" +msgid "%s: " msgstr "" -#, c-format -msgid "Cannot read SELinux policy store\n" +msgid ": " msgstr "" #, c-format -msgid "Cannot establish SELinux management connection\n" +msgid "crypt method not supported by libcrypt? (%s)\n" msgstr "" #, c-format -msgid "Cannot begin SELinux transaction\n" +msgid "You may not change $%s\n" msgstr "" #, c-format -msgid "Could not query seuser for %s\n" -msgstr "" +msgid "" +"%d failure since last login.\n" +"Last was %s on %s.\n" +msgid_plural "" +"%d failures since last login.\n" +"Last was %s on %s.\n" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "Could not set serange for %s\n" +msgid "" +"%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " +"(%lu)\n" msgstr "" #, c-format -msgid "Could not set sename for %s\n" +msgid "%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n" msgstr "" #, c-format -msgid "Could not modify login mapping for %s\n" +msgid "%s: Encountered error attempting to use preferred GID: %s\n" msgstr "" -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: failed to allocate memory: %s\n" +msgstr "nepoznata grupa: %s\n" #, c-format -msgid "Could not set name for %s\n" +msgid "" +"%s: Can't get unique system GID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Could not set SELinux user for %s\n" +msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Could not add login mapping for %s\n" +msgid "%s: Can't get unique GID (no more available GIDs)\n" msgstr "" #, c-format -msgid "Cannot init SELinux management\n" +msgid "" +"%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " +"SUB_GID_COUNT (%lu)\n" msgstr "" #, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: nepoznat član %s\n" +msgid "%s: Can't get unique subordinate GID range\n" +msgstr "nepoznata grupa: %s\n" + +#, c-format +msgid "" +"%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " +"SUB_UID_COUNT (%lu)\n" +msgstr "" #, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: nepoznat član %s\n" +msgid "%s: Can't get unique subordinate UID range\n" +msgstr "nepoznata grupa: %s\n" #, c-format -msgid "Cannot modify SELinux user mapping\n" +msgid "" +"%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " +"(%lu)\n" msgstr "" #, c-format -msgid "Cannot add SELinux user mapping\n" +msgid "%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n" msgstr "" #, c-format -msgid "Cannot commit SELinux transaction\n" +msgid "%s: Encountered error attempting to use preferred UID: %s\n" msgstr "" #, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgid "" +"%s: Can't get unique system UID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Could not delete login mapping for %s" +msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "" #, c-format -msgid "%s: out of memory\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: nepoznat član %s\n" +msgid "Could not allocate space for config info.\n" +msgstr "" #, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" #, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "nepoznata grupa: %s\n" +#| msgid "%s: Try again later\n" +msgid "%s: Memory allocation failure\n" +msgstr "%s: Pokušajte ponovo kasnije\n" #, c-format -msgid "%s: Suspiciously long symlink: %s\n" +msgid "%s: subuid overflow detected.\n" msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "nepoznata grupa: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "nepoznata grupa: %s\n" +#, c-format +msgid "%s: Invalid map file %s specified\n" +msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "nepoznata grupa: %s\n" +#, c-format +msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" +msgstr "" -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "nepoznata grupa: %s\n" +#, c-format +msgid "%s: Could not seteuid to %d\n" +msgstr "" #, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "nepoznata grupa: %s\n" +msgid "%s: Could not set caps\n" +msgstr "%s: nepoznat član %s\n" #, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" +msgid "%s: stpeprintf failed!\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" +msgid "%s: open of %s failed: %s\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" +msgid "%s: write to %s failed: %s\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" +msgid "%s: closing %s failed: %s\n" msgstr "nepoznata grupa: %s\n" -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: nepoznat član %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: grupa %s postoji\n" +msgid "Too many logins.\n" +msgstr "Previše prijavljivanja.\n" #, c-format msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" +"\n" +"%s login: " msgstr "" -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "nepoznata grupa: %s\n" +msgid "You have new mail." +msgstr "Imate novu poštu." -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: nepoznat član %s\n" +msgid "No mail." +msgstr "Nema pošte." + +msgid "You have mail." +msgstr "Imate poštu." #, c-format -msgid "Warning: unknown group %s\n" +msgid "%s: nscd did not terminate normally (signal %d)\n" msgstr "" -msgid "Warning: too many groups\n" +#, c-format +msgid "%s: nscd exited with status %d\n" msgstr "" -msgid "Your password has expired." -msgstr "Vaša šifra je istekla." - -msgid "Your password is inactive." -msgstr "Vaša šifra je neaktivna." - -msgid "Your login has expired." -msgstr "Vaš račun je istekao." - -msgid " Contact the system administrator." +msgid "no change" msgstr "" -msgid " Choose a new password." -msgstr " Izaberite novu šifru." - -msgid "You must change your password." +msgid "a palindrome" msgstr "" -#, c-format -msgid "Your password will expire in %ld days.\n" -msgstr "Vaša šifra ističe za in %ld dana.\n" +msgid "case changes only" +msgstr "" -msgid "Your password will expire tomorrow." -msgstr "Vaša šifra ističe sutra." +msgid "too similar" +msgstr "" -msgid "Your password will expire today." -msgstr "Vaša šifra ističe danas." +msgid "rotated" +msgstr "" -msgid "Cannot open audit interface - aborting.\n" +msgid "too short" msgstr "" #, c-format -msgid "Unable to change owner or mode of tty stdin: %s" -msgstr "" +msgid "Bad password: %s. " +msgstr "Neispravna šifra: %s. " #, c-format -msgid "%s: failed to unlock %s\n" +msgid "passwd: pam_start() failed, error %d\n" msgstr "" #, c-format -msgid "%s: " +msgid "passwd: %s\n" msgstr "" -msgid ": " -msgstr "" +#, fuzzy +msgid "passwd: password unchanged\n" +msgstr "Šifra:" -msgid "Environment overflow\n" +msgid "passwd: password updated successfully\n" msgstr "" #, c-format -msgid "You may not change $%s\n" +msgid "%s: PAM modules requesting echoing are not supported.\n" msgstr "" #, c-format -msgid "" -"%d failure since last login.\n" -"Last was %s on %s.\n" -msgid_plural "" -"%d failures since last login.\n" -"Last was %s on %s.\n" -msgstr[0] "" -msgstr[1] "" +msgid "%s: conversation type %d not supported.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: grupa %s postoji\n" #, c-format msgid "" -"%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " -"(%lu)\n" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" msgstr "" -#, c-format -msgid "%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n" -msgstr "" +msgid "Password: " +msgstr "Šifra:" #, c-format -msgid "%s: Encountered error attempting to use preferred GID: %s\n" -msgstr "" +msgid "%s's Password: " +msgstr "%s's Šifra: " #, fuzzy, c-format -msgid "%s: failed to allocate memory: %s\n" -msgstr "nepoznata grupa: %s\n" +msgid "Incorrect password for %s.\n" +msgstr "Mijenjam šifru za grupu %s\n" #, c-format -msgid "" -"%s: Can't get unique system GID (%s). Suppressing additional messages.\n" +msgid "%s: multiple --root options\n" msgstr "" #, c-format -msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" +msgid "%s: option '%s' requires an argument\n" msgstr "" #, c-format -msgid "%s: Can't get unique GID (no more available GIDs)\n" +msgid "%s: failed to drop privileges (%s)\n" msgstr "" -#, c-format -msgid "" -"%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " -"SUB_GID_COUNT (%lu)\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: Can't get unique subordinate GID range\n" +msgid "%s: cannot access chroot directory %s: %s\n" msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "" -"%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " -"SUB_UID_COUNT (%lu)\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: Can't get unique subordinate UID range\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" msgstr "nepoznata grupa: %s\n" #, c-format msgid "" -"%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " -"(%lu)\n" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" msgstr "" #, c-format -msgid "%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n" +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" msgstr "" -#, c-format -msgid "%s: Encountered error attempting to use preferred UID: %s\n" +msgid "Cannot open audit interface.\n" msgstr "" #, c-format -msgid "" -"%s: Can't get unique system UID (%s). Suppressing additional messages.\n" +msgid "%s: can not get previous SELinux process context: %s\n" msgstr "" #, c-format -msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" +msgid "[libsemanage]: %s\n" msgstr "" #, c-format -msgid "%s: Can't get unique UID (no more available UIDs)\n" +msgid "Cannot create SELinux management handle\n" msgstr "" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "SELinux policy not managed\n" msgstr "" -#, fuzzy, c-format -#| msgid "%s: Try again later\n" -msgid "%s: Memory allocation failure\n" -msgstr "%s: Pokušajte ponovo kasnije\n" - #, c-format -msgid "%s: subuid overflow detected.\n" +msgid "Cannot read SELinux policy store\n" msgstr "" #, c-format -msgid "%s: Invalid map file %s specified\n" +msgid "Cannot establish SELinux management connection\n" msgstr "" #, c-format -msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" +msgid "Cannot begin SELinux transaction\n" msgstr "" #, c-format -msgid "%s: Could not seteuid to %d\n" +msgid "Could not query seuser for %s\n" msgstr "" #, fuzzy, c-format -msgid "%s: Could not set caps\n" -msgstr "%s: nepoznat član %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "nepoznata grupa: %s\n" #, c-format -msgid "%s: snprintf failed!\n" +msgid "Could not set sename for %s\n" msgstr "" -#, fuzzy, c-format -msgid "%s: open of %s failed: %s\n" -msgstr "nepoznata grupa: %s\n" - -#, fuzzy, c-format -msgid "%s: write to %s failed: %s\n" -msgstr "nepoznata grupa: %s\n" - -msgid "Too many logins.\n" -msgstr "Previše prijavljivanja.\n" - -msgid "You have new mail." -msgstr "Imate novu poštu." +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" -msgid "No mail." -msgstr "Nema pošte." +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "" -msgid "You have mail." -msgstr "Imate poštu." +#, c-format +msgid "Could not set name for %s\n" +msgstr "" -msgid "no change" +#, c-format +msgid "Could not set SELinux user for %s\n" msgstr "" -msgid "a palindrome" +#, c-format +msgid "Could not add login mapping for %s\n" msgstr "" -msgid "case changes only" +#, c-format +msgid "Cannot init SELinux management\n" msgstr "" -msgid "too similar" +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: nepoznat član %s\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: nepoznat član %s\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" msgstr "" -msgid "too simple" +#, c-format +msgid "Cannot add SELinux user mapping\n" msgstr "" -msgid "rotated" +#, c-format +msgid "Cannot commit SELinux transaction\n" msgstr "" -msgid "too short" +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" #, c-format -msgid "Bad password: %s. " -msgstr "Neispravna šifra: %s. " +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" #, c-format -msgid "passwd: pam_start() failed, error %d\n" +msgid "Could not delete login mapping for %s" msgstr "" #, c-format -msgid "passwd: %s\n" +msgid "Unable to cd to '%s'\n" msgstr "" -#, fuzzy -msgid "passwd: password unchanged\n" -msgstr "Šifra:" +msgid "No directory, logging in with HOME=/" +msgstr "" -msgid "passwd: password updated successfully\n" +#, c-format +msgid "Cannot execute %s" msgstr "" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" +msgid "Maximum subsystem depth reached\n" msgstr "" #, c-format -msgid "%s: conversation type %d not supported.\n" +msgid "Invalid root directory '%s'\n" msgstr "" -#, fuzzy, c-format -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: grupa %s postoji\n" +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "" #, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" +msgid "%s: out of memory\n" msgstr "" #, fuzzy, c-format -msgid "Incorrect password for %s.\n" -msgstr "Mijenjam šifru za grupu %s\n" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: nepoznat član %s\n" #, c-format -msgid "%s: multiple --root options\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" msgstr "" -#, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "nepoznata grupa: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" +msgid "%s: Suspiciously long symlink: %s\n" msgstr "" #, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgid "%s: Cannot create directory %s: %s\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" +msgid "%s: Cannot change owner of %s: %s\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" +msgid "%s: unlink: %s: %s\n" msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "Unable to cd to '%s'\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "nepoznata grupa: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "Cannot execute %s" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: nepoznat član %s\n" -#, c-format -msgid "Invalid root directory '%s'\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: grupa %s postoji\n" #, c-format -msgid "Can't change root directory to '%s'\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" msgstr "" +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "nepoznata grupa: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: nepoznat član %s\n" + #, fuzzy, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: grupa %s postoji\n" @@ -613,6 +613,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -638,13 +641,16 @@ msgstr "Šifra neaktivna" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Datum isteka računa (GGGG-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "" - #, fuzzy msgid "never" msgstr "Nikad" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "" + msgid "password must be changed" msgstr "" @@ -814,14 +820,6 @@ msgstr "" msgid "%s: user '%s' does not exist\n" msgstr "%s: grupa %s postoji\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "" - #, c-format msgid "Changing the user information for %s\n" msgstr "" @@ -850,6 +848,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "" @@ -900,6 +902,14 @@ msgstr "" msgid "Login Shell" msgstr "" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "nepoznata grupa: %s\n" + +#, fuzzy, c-format +msgid "Cannot evaluate entries in shell files: %s" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "" @@ -912,6 +922,10 @@ msgstr "" msgid "%s: Invalid entry: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: grupa %s postoji\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: grupa %s postoji\n" @@ -1120,9 +1134,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1134,6 +1145,10 @@ msgstr "" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: grupa %s postoji\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: nepoznat član %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "nepoznata grupa: %s\n" @@ -1176,14 +1191,6 @@ msgstr "" msgid "%s: group '%s' does not exist\n" msgstr "%s: grupa %s postoji\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: grupa %s postoji\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "" @@ -1259,10 +1266,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "" - #, c-format msgid "%s: unknown user %s\n" msgstr "" @@ -1378,7 +1381,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1467,9 +1470,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" - #, c-format msgid "" "\n" @@ -1501,12 +1501,6 @@ msgstr "" msgid "Cannot find user (%s)\n" msgstr "%s: nepoznat član %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" - #, c-format msgid "%s: failure forking: %s" msgstr "" @@ -1540,7 +1534,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1564,17 +1559,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "nepoznata grupa: %s\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "nepoznata grupa: %s\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "nepoznata grupa: %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1608,14 +1599,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "nepoznata grupa: %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1635,6 +1625,10 @@ msgstr "" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "" @@ -1655,6 +1649,10 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: grupa %s postoji\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "" @@ -1675,14 +1673,14 @@ 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: failed to prepare new %s entry\n" +msgstr "nepoznata grupa: %s\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "nepoznata grupa: %s\n" @@ -1741,6 +1739,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Stara šifra:" @@ -1756,6 +1757,10 @@ msgid "" "Please use a combination of upper and lower case letters and numbers.\n" msgstr "" +#, fuzzy +msgid "Password is too long.\n" +msgstr "Vaša šifra je istekla." + msgid "New password: " msgstr "Nova šifra:" @@ -1795,6 +1800,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1938,11 +1947,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2002,6 +2009,10 @@ msgstr "" msgid "No passwd entry for user '%s'\n" msgstr "" +#, c-format +msgid "Overlong user name '%s'\n" +msgstr "" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "" @@ -2045,6 +2056,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "nepoznata grupa: %s\n" @@ -2053,10 +2070,6 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: cannot create directory for defaults file\n" msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "" @@ -2073,10 +2086,6 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: rename: %s: %s\n" msgstr "nepoznata grupa: %s\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: grupa %s postoji\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "" @@ -2186,6 +2195,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "" @@ -2312,6 +2326,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +msgid "Synchronize mailbox file" +msgstr "" + +msgid "Closing mailbox file" +msgstr "" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2424,10 +2444,6 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "nepoznata grupa: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "" @@ -2525,6 +2541,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2607,10 +2627,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "" @@ -2706,7 +2734,7 @@ msgstr "" msgid "failed to stat edited file" msgstr "" -msgid "failed to allocate memory" +msgid "asprintf(3) failed" msgstr "" msgid "failed to create backup file" @@ -2720,14 +2748,22 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "" +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: grupa %s postoji\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: grupa %s postoji\n" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "nepoznata grupa: %s\n" + #, fuzzy, c-format #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Upozorenje o isteku šifre" -#, fuzzy -#~ msgid "Password set to expire." -#~ msgstr "Vaša šifra je istekla." - #, fuzzy #~ msgid "\tRoom Number: %s\n" #~ msgstr "Broj sobe" diff --git a/po/ca.gmo b/po/ca.gmo index 342d852..f55a2eb 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 500db39..87a8d25 100644 --- a/po/ca.po +++ b/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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2012-01-22 18:25+0100\n" "Last-Translator: Innocent De Marchi \n" "Language-Team: Catalan \n" @@ -18,230 +18,6 @@ msgstr "" "X-Poedit-Language: Catalan\n" "X-Poedit-Country: SPAIN\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Diverses entrades de nom «%s» a %s. Corregiu això amb «pwck» o «grpck».\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "el mètode «crypt» no és compatible amb «libcrypt»? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "error en la configuració - no és possible analitzar el valor %s: «%s»" - -msgid "Could not allocate space for config info.\n" -msgstr "No s'ha pogut reservar espai per a la informació de configuració.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"error de configuració - element «%s» desconegut (notifiqueu-ho a " -"l'administrador)\n" - -#, c-format -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\n" -msgstr "%s: «nscd» ha sortit amb l'estat %d" - -msgid "Password: " -msgstr "Contrasenya: " - -#, c-format -msgid "%s's Password: " -msgstr "Contrasenya de l'usuari %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "No es pot obrir la interfície d'auditoria - cancel·lant.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "No es pot generar l'identificador de gestió SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "No és possible gestionar la directiva SELinux\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "No es pot llegir el magatzem de directives de SELinux\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "No es pot establir la connexió de gestió SELinux\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "No es pot iniciar la transacció SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "No es pot consultar el «seuser» per a %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "No s'ha pogut definir el «serange» per a %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "No es pot establir «sename» per a %s.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "No es pot modificar el mapatge d'inici de sessió per a %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "No es pot generar el mapatge d'inici de sessió SELinux per a %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "No s'ha pogut establir el nom per a %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "No s'ha pogut establir l'usuari SELinux per a %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "No s'ha pogut afegir l'assignació de connexió per a %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "No es pot iniciar el gestor SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "No es pot generar la clau SELinux de l'usuari.\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "No es pot verificar l'usuari de SELinux\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "No es pot modificar l'assignació d'usuaris de SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "No es pot afegir l'assignació de l'usuari de SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "No es pot validar la transacció SELinux\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"L'assignació d'inici de sessió per a %s no està definida, seleccionau «OK» " -"si s'utilitzava l'assignació per defecte\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"L'assignació d'inici de sessió per a %s està definida a la directiva de " -"seguretat, no és possible eliminar-la\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "No es pot eliminar el mapatge d'inici de sessió per a %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: s'ha exhaurit la memòria\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: no es pot generar el fitxer %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s no és ni un directori ni un enllaç simbòlic.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: no es pot llegir l'enllaç simbòlic %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: enllaç simbòlic sospitosament llarg: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: no es pot crear el directori %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: no es pot canviar el propietari de %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: no es pot canviar el mode de %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: desvincular: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: no es pot eliminar el directori %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: no es pot reanomenar %s a %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: no es pot eliminar %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: no es pot generar l'enllaç simbòlic %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: no es pot canviar els propietaris de %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: no es pot «lstat» %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: advertència, els usuaris %s no tenen el fitxer «tcb shadow».\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: emergència: el fitxer «tcb sahdow» %s no és un fitxer regular amb " -"st_nlink=1.\n" -"El compte queda bloquejat.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: reanomena: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: no es pot obrir el fitxer %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Avís: el grup %s és desconegut\n" @@ -289,6 +65,12 @@ msgstr "" msgid "%s: failed to unlock %s\n" msgstr "%s: ha fallat el desbloqueig de %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Diverses entrades de nom «%s» a %s. Corregiu això amb «pwck» o «grpck».\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -296,8 +78,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Desbordament d'entorn\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "el mètode «crypt» no és compatible amb «libcrypt»? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -415,8 +198,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: no es pot obtenir un GID únic (no hi ha més GID disponibles)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "error en la configuració - no és possible analitzar el valor %s: «%s»" + +msgid "Could not allocate space for config info.\n" +msgstr "No s'ha pogut reservar espai per a la informació de configuració.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"error de configuració - element «%s» desconegut (notifiqueu-ho a " +"l'administrador)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -448,7 +240,7 @@ msgstr "No s'ha pogut establir el nom per a %s\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: no es pot obrir el fitxer\n" #, fuzzy, c-format @@ -463,9 +255,23 @@ msgid "%s: write to %s failed: %s\n" msgstr "" "%s: línia %d: no s'ha pogut canviar el propietari (ordre «chown») %s: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "" +"%s: línia %d: no s'ha pogut canviar el propietari (ordre «chown») %s: %s\n" + msgid "Too many logins.\n" msgstr "Massa entrades.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s usuari: " + msgid "You have new mail." msgstr "Teniu correu nou." @@ -475,6 +281,14 @@ msgstr "No hi ha correu." msgid "You have mail." msgstr "Teniu correu." +#, c-format +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\n" +msgstr "%s: «nscd» ha sortit amb l'estat %d" + msgid "no change" msgstr "no hi ha canvis" @@ -487,9 +301,6 @@ msgstr "només canvis de majúscules/minúscules" msgid "too similar" msgstr "massa similar" -msgid "too simple" -msgstr "massa senzilla" - msgid "rotated" msgstr "rotada" @@ -528,83 +339,277 @@ msgstr "%s: el dipòsit %s no és admès\n" msgid "%s: (user %s) pam_start failure %d\n" msgstr "%s: pam_start: error %d\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() ha fallat, error %d\n" +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() ha fallat, error %d\n" + +msgid "Password: " +msgstr "Contrasenya: " + +#, c-format +msgid "%s's Password: " +msgstr "Contrasenya de l'usuari %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "La contrasenya és incorrecta per a «%s».\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: múltiples opcions «--root»\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: l'opció '%s' requereix un argument\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: ha fallat la rebaixa de privilegis (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: camí «chroot» incorrecta «%s»\n" + +#, c-format +msgid "%s: cannot access 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" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: no es pot accedir al directori «chroot» %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Valor incorrecta d'ENCRYPT_METHOD: «%s».\n" +"Valor per defecte a DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "No es pot obrir la interfície d'auditoria - cancel·lant.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "No es pot generar l'identificador de gestió SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "No és possible gestionar la directiva SELinux\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "No es pot llegir el magatzem de directives de SELinux\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "No es pot establir la connexió de gestió SELinux\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "No es pot iniciar la transacció SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "No es pot consultar el «seuser» per a %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "No s'ha pogut definir el «serange» per a %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "No es pot establir «sename» per a %s.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "No es pot modificar el mapatge d'inici de sessió per a %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "No es pot generar el mapatge d'inici de sessió SELinux per a %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "No s'ha pogut establir el nom per a %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "No s'ha pogut establir l'usuari SELinux per a %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "No s'ha pogut afegir l'assignació de connexió per a %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "No es pot iniciar el gestor SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "No es pot generar la clau SELinux de l'usuari.\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "No es pot verificar l'usuari de SELinux\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "No es pot modificar l'assignació d'usuaris de SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "No es pot afegir l'assignació de l'usuari de SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "No es pot validar la transacció SELinux\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"L'assignació d'inici de sessió per a %s no està definida, seleccionau «OK» " +"si s'utilitzava l'assignació per defecte\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"L'assignació d'inici de sessió per a %s està definida a la directiva de " +"seguretat, no és possible eliminar-la\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "No es pot eliminar el mapatge d'inici de sessió per a %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "No es pot canviar al directori «%s»\n" + +msgid "No directory, logging in with HOME=/" +msgstr "No hi ha directori, s'està iniciant sessió amb HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "No es pot executar %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "El directori arrel «%s» no és vàlid\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "No es pot canviar el directori arrel a «%s»\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: s'ha exhaurit la memòria\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: no es pot generar el fitxer %s: %s\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "La contrasenya és incorrecta per a «%s».\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s no és ni un directori ni un enllaç simbòlic.\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: múltiples opcions «--root»\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: no es pot llegir l'enllaç simbòlic %s: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: l'opció '%s' requereix un argument\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: enllaç simbòlic sospitosament llarg: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: ha fallat la rebaixa de privilegis (%s)\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: no es pot crear el directori %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: camí «chroot» incorrecta «%s»\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: no es pot canviar el propietari de %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: no es pot accedir al directori «chroot» %s: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: no es pot canviar el mode de %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: unlink: %s: %s\n" +msgstr "%s: desvincular: %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" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: no es pot eliminar el directori %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: no es pot reanomenar %s a %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Valor incorrecta d'ENCRYPT_METHOD: «%s».\n" -"Valor per defecte a DES.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: no es pot eliminar %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: no es pot generar l'enllaç simbòlic %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "No es pot canviar al directori «%s»\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: no es pot canviar els propietaris de %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "No hi ha directori, s'està iniciant sessió amb HOME=/" +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: no es pot «lstat» %s: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "No es pot executar %s" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: advertència, els usuaris %s no tenen el fitxer «tcb shadow».\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "El directori arrel «%s» no és vàlid\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: emergència: el fitxer «tcb sahdow» %s no és un fitxer regular amb " +"st_nlink=1.\n" +"El compte queda bloquejat.\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "No es pot canviar el directori arrel a «%s»\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: reanomena: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: no es pot obrir el fitxer %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -685,6 +690,12 @@ msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" " -R, --root CHROOT_DIR fes «chroot» en el directori CHROOT_DIR \n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" +" -R, --root CHROOT_DIR fes «chroot» en el directori CHROOT_DIR \n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -712,12 +723,15 @@ msgstr "Contrasenya inactiva" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data de caducitat per al compte (AAAA-MM-YY)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Últim canvi de contrasenya\t\t\t\t: " - msgid "never" msgstr "mai" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Últim canvi de contrasenya\t\t\t\t: " + msgid "password must be changed" msgstr "s'ha de canviar la contrasenya" @@ -897,14 +911,6 @@ msgstr "%s: «%s» conté caràcters no permesos\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: l'usuari «%s» no existeix\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: no s'ha pogut canviar l'usuari «%s» al client NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» és el mestre NIS per a aquest client.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "S'està canviant la informació d'usuari per a %s\n" @@ -947,6 +953,11 @@ msgstr "" " -s, --sha-rounds nombre de passos SHA pel\n" " algorisme de xifratge SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: mètode de xifratge no està implementat: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: el senyalador %s només és permet amb el senyalador %s\n" @@ -999,6 +1010,16 @@ msgstr "" msgid "Login Shell" msgstr "Intèrpret d'accés" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: No es pot obtenir la mida de %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "No podeu canviar l'intèrpret («shell») per a «%s».\n" @@ -1011,6 +1032,11 @@ msgstr "S'està canviant l'intèrpret d'accés per a %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: L'entrada no és vàlida: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s no és un intèrpret («shell») vàlid.\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s no és un intèrpret («shell») vàlid.\n" @@ -1265,12 +1291,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system genera un compte del sistema\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" -" -R, --root CHROOT_DIR fes «chroot» en el directori CHROOT_DIR \n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1285,6 +1305,11 @@ msgstr "el nom d'usuari «%s» no és vàlid\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» no és un nom de grup vàlid\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: no es pot obrir el fitxer %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: l'ID de grup «%s» no és vàlid\n" @@ -1330,14 +1355,6 @@ msgstr "%s: no es pot eliminar el grup primari de l'usuari «%s»\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: el grup «%s» no existeix\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: el grup «%s» és un grup NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s és el mestre NIS\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: l'usuari «%s» és membre de %s\n" @@ -1436,10 +1453,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: el nom de grup «%s» no és vàlid\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: el grup %s no és un grup NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: usuari %s desconegut\n" @@ -1567,7 +1580,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all mostra els registres «faillog» per a tots " @@ -1669,10 +1682,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: no es pot treballar sense ésser administrador\n" -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" @@ -1706,14 +1715,6 @@ msgstr "Accés incorrecta" msgid "Cannot find user (%s)\n" msgstr "No es pot trobar l'usuari (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s usuari: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: fallada al fer fork: %s" @@ -1749,7 +1750,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1776,20 +1778,15 @@ msgstr "%s: fallida en eliminar %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: ha fallat el desbloqueig de %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: no es pot trobar el directori «tcb» per %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: no es pot generar el directori «tcb» per a %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1822,14 +1819,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: no es pot generar el directori «tcb» per a %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1852,6 +1849,10 @@ msgstr "%s: l'ID d'usuari «%s» no és vàlid\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: el nom d'usuari «%s» no és vàlid\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: línia %d: la línia no és vàlida\n" @@ -1874,6 +1875,11 @@ msgstr "%s: línia %d: no es pot generar el grup\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: line %d: l'usuari «%s» no existeix a %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: desvincular: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: línia %d: no es pot actualitzar la contrasenya\n" @@ -1898,14 +1904,14 @@ 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: 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 group range\n" msgstr "%s: no es pot actualitzar el fitxer de grups\n" @@ -1981,6 +1987,12 @@ msgstr "" " -x, --maxdays DIES_MÀX estableix els dies màxims abans del canvi\n" " de contrasenya a DIES_MÀX\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list mostra informació d'envelliment del compte\n" + msgid "Old password: " msgstr "Contrasenya antiga: " @@ -2001,6 +2013,11 @@ msgstr "" "Feu servir una combinació de lletres majúscules i minúscules i\n" "números.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: els camps són massa llargs\n" + msgid "New password: " msgstr "Contrasenya nova:" @@ -2044,6 +2061,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: el dipòsit %s no és admès\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s:només l'usuari «root» pot fer servir l'opció -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2200,11 +2222,9 @@ msgstr "%s: senyal de mal funcionament\n" msgid "Session terminated, terminating shell..." msgstr "Sessió acabada, finalitzant el «shell»..." -#, c-format msgid " ...killed.\n" msgstr "...mort.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "...esperant al fill per acabar.\n" @@ -2292,6 +2312,11 @@ msgstr "%s: No estau autoritzat a usar «su» en aquest moment\n" msgid "No passwd entry for user '%s'\n" msgstr "No hi ha entrada de contrasenya per a l'usuari «%s»\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "el nom d'usuari «%s» no és vàlid\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: s'ha d'executar des d'un terminal\n" @@ -2337,6 +2362,13 @@ msgstr "%s: %s va ser generat, però no és possible eliminar-ho\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: la configuració %s a %s serà ignorada\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: la configuració %s a %s serà ignorada\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2347,10 +2379,6 @@ msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: no es pot obrir un fitxer nou de preferències predeterminades\n" @@ -2367,10 +2395,6 @@ msgstr "%s: no es pot generar l'enllaç simbòlic %s: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: reanomena %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: el grup «%s» és un grup NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: s'han especificat massa grups (màx de %d).\n" @@ -2511,6 +2535,17 @@ msgstr "" " -Z, --selinux-user SEUSER utilitzar un «SEUSER» específic per a " "l'assignació d'usuaris «SELinux»\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER utilitzar un «SEUSER» específic per a " +"l'assignació d'usuaris «SELinux»\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: el directori base «%s» no és vàlid\n" @@ -2665,6 +2700,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "S'estan establint els permisos de la bústia de correu" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "S'està creant la bústia de correu" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "S'està creant la bústia de correu" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2800,10 +2845,6 @@ msgstr "%s: no es pot eliminar el contingut de %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: no es pot eliminar els fitxers «tcb» de %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: l'usuari %s és un usuari NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: no s'ha trobat el directori personal (%s) de %s \n" @@ -2933,6 +2974,16 @@ msgstr "" " -Z, --selinux-user SEUSER nova assignació SELinux per al compte " "d'usuari\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER nova assignació SELinux per al compte " +"d'usuari\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3029,12 +3080,26 @@ msgstr "" "%s: ha fallat la còpia de l'entrada del darrer registre de l'usuari %lu al " "usuari %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: ha fallat la còpia de l'entrada del darrer registre de l'usuari %lu al " +"usuari %lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: ha fallat la còpia de l'entrada del registre d'errors del usuari %lu al " "usuari %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: ha fallat la còpia de l'entrada del registre d'errors del usuari %lu al " +"usuari %lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: avís: %s no és propietat de %s\n" @@ -3137,8 +3202,10 @@ msgstr "no s'ha pogut desvincular el fitxer de treball " msgid "failed to stat edited file" msgstr "no s'ha pogut comptabilitzar el fitxer editat" -msgid "failed to allocate memory" -msgstr "no es pot assignar memòria" +#, fuzzy +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: no es pot obrir el fitxer\n" msgid "failed to create backup file" msgstr "no es pot generar el fitxer de còpia de seguretat" @@ -3151,6 +3218,57 @@ msgstr "%s: no es pot restaurar %s: %s (els seus canvis estan a %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: no es pot trobar el directori «tcb» per %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Desbordament d'entorn\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: no s'ha pogut canviar l'usuari «%s» al client NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» és el mestre NIS per a aquest client.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: el grup «%s» és un grup NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s és el mestre NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: el grup %s no és un grup NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: el grup «%s» és un grup NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: l'usuari %s és un usuari NIS\n" + +#~ msgid "too simple" +#~ msgstr "massa senzilla" + +#~ 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" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: no es pot trobar el directori «tcb» per %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "no es pot assignar memòria" + #~ msgid "Usage: id\n" #~ msgstr "Forma d'ús: id\n" @@ -3166,10 +3284,6 @@ msgstr "%s: no es pot trobar el directori «tcb» per %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: la informació de caducitat de la contrasenya ha canviat.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "el nom d'usuari «%s» no és vàlid\n" - #~ msgid "Username Port From Latest" #~ msgstr "Usuari Port Des de Últim" diff --git a/po/cs.gmo b/po/cs.gmo index 856d108..6d012ce 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index b9d48eb..b580859 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2014-08-24 15:07+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -17,228 +17,6 @@ msgstr "" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Zjištěno několik záznamů pojmenovaných „%s“ v souboru %s. Napravte to prosím " -"pomocí pwck nebo grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "typ šifry není knihovnou libcrypt podporován? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "konfigurační chyba - nelze zpracovat hodnotu %s: „%s“" - -msgid "Could not allocate space for config info.\n" -msgstr "Nelze alokovat dostatek místa pro konfigurační údaje.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"konfigurační chyba - neznámá položka „%s“ (informujte správce systému)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd nebyl ukončen normálně (signál %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd skončil se stavem %d\n" - -msgid "Password: " -msgstr "Heslo: " - -#, c-format -msgid "%s's Password: " -msgstr "Heslo uživatele %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Nelze otevřít auditní rozhraní - končím.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Nelze vytvořit spojení k SELinuxovému semanage\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "Politika SELinuxu není řízená\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Nelze číst úložiště SELinux politik\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Nelze navázat spojení k SELinuxovému semanage\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Nelze zahájit SELinux transakci\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Dotaz na „seuser“ uživatele %s selhal\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Nelze nastavit „serange“ uživatele %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Nelze nastavit „sename“ uživatele %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Nelze změnit mapování uživatele %s na SEuživatele\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Nelze vytvořit mapování uživatele %s na SEuživatele\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Nelze nastavit jméno uživatele %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Nelze nastavit SELinux uživatele pro %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Nelze přidat mapování uživatele %s na SEuživatele\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Nelze inicializovat správu SELinuxu\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Nelze vytvořit uživatelský klíč k SELinuxu\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Nelze ověřit SELinux uživatele\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Nelze změnit mapování na SELinuxového uživatele\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Nelze přidat mapování na SELinuxového uživatele\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Nelze dokončit SELinuxovou transakci\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Mapování uživatele %s není definováno, OK, pokud bylo použito výchozí " -"mapování\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "Mapování uživatele %s je definováno v politice, nemůže být smazáno\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Nelze smazat mapování pro uživatele %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: došla paměť\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: nelze zavolat stat %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s není ani adresář, ani symbolický odkaz.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Nelze číst symbolický odkaz %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Podezřele dlouhý symbolický odkaz: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Nelze vytvořit adresář %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Nelze změnit vlastníka %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Nelze změnit oprávnění k %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: smazání: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Nelze odstranit adresář %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Nelze přejmenovat %s na %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Nelze odstranit %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Nelze vytvořit symbolický odkaz %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Nelze změnit vlastníky %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Nelze zavolat lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Varování, uživatel %s nemá v tcb svůj soubor shadow.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Krizový stav: shadow v tcb uživatele %s není běžným souborem " -"(st_nlink=1).\n" -"Účet je ponechán zamknutý.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: vytvoření adresáře: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Nelze otevřít %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Varování: neznámá skupina %s\n" @@ -285,6 +63,13 @@ msgstr "Nelze změnit vlastníka nebo oprávnění k tty stdin: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: nepodařilo se odemknout %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Zjištěno několik záznamů pojmenovaných „%s“ v souboru %s. Napravte to prosím " +"pomocí pwck nebo grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -292,8 +77,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Přetečení prostředí\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "typ šifry není knihovnou libcrypt podporován? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -405,8 +191,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Nelze získat jedinečné UID (volná UID neexistují)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "%s: Nedostatek argumentů pro vytvoření %u mapování\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "konfigurační chyba - nelze zpracovat hodnotu %s: „%s“" + +msgid "Could not allocate space for config info.\n" +msgstr "Nelze alokovat dostatek místa pro konfigurační údaje.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"konfigurační chyba - neznámá položka „%s“ (informujte správce systému)\n" #, c-format msgid "%s: Memory allocation failure\n" @@ -435,8 +229,9 @@ msgstr "Nelze nastavit jméno uživatele %s\n" msgid "%s: Could not set caps\n" msgstr "Nelze nastavit jméno uživatele %s\n" -#, c-format -msgid "%s: snprintf failed!\n" +#, fuzzy, c-format +#| msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: snprintf selhalo!\n" #, c-format @@ -447,9 +242,22 @@ msgstr "%s: otevření %s selhalo: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: zápis do %s selhal: %s\n" +#, fuzzy, c-format +#| msgid "%s: open of %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: otevření %s selhalo: %s\n" + msgid "Too many logins.\n" msgstr "Příliš mnoho přihlášení.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"Přihlašovací jméno na %s: " + msgid "You have new mail." msgstr "Máte novou poštu." @@ -459,6 +267,14 @@ msgstr "Nemáte žádnou poštu." msgid "You have mail." msgstr "Máte poštu." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd nebyl ukončen normálně (signál %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd skončil se stavem %d\n" + msgid "no change" msgstr "beze změny" @@ -471,9 +287,6 @@ msgstr "pouze změna velikosti písmen" msgid "too similar" msgstr "příliš podobné" -msgid "too simple" -msgstr "příliš jednoduché" - msgid "rotated" msgstr "rotované" @@ -508,87 +321,280 @@ msgid "%s: conversation type %d not supported.\n" msgstr "%s: typ konverzace %d není podporován.\n" #, c-format -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: (uživatel %s) chyba pam_start %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: (uživatel %s) chyba pam_start %d\n" + +#, c-format +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "" +"%s: (uživatel %s) volání pam_chauthtok() selhalo, chyba:\n" +"%s\n" + +msgid "Password: " +msgstr "Heslo: " + +#, c-format +msgid "%s's Password: " +msgstr "Heslo uživatele %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Chybné heslo pro %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: násobné použití --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: volba „%s“ vyžaduje argument\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: selhalo odevzdání privilegií (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: neplatná cesta k chrootu „%s“\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: nelze přistoupit k chroot adresáři %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: nelze změnit kořen (chroot) na adresář %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: nelze přejít (chdir) do chroot adresáře %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Neplatná hodnota ENCRYPT_METHOD: „%s“.\n" +"Používám DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Nelze otevřít auditní rozhraní - končím.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Nelze vytvořit spojení k SELinuxovému semanage\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "Politika SELinuxu není řízená\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Nelze číst úložiště SELinux politik\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Nelze navázat spojení k SELinuxovému semanage\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Nelze zahájit SELinux transakci\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Dotaz na „seuser“ uživatele %s selhal\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Nelze nastavit „serange“ uživatele %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Nelze nastavit „sename“ uživatele %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Nelze změnit mapování uživatele %s na SEuživatele\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Nelze vytvořit mapování uživatele %s na SEuživatele\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Nelze nastavit jméno uživatele %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Nelze nastavit SELinux uživatele pro %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Nelze přidat mapování uživatele %s na SEuživatele\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Nelze inicializovat správu SELinuxu\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Nelze vytvořit uživatelský klíč k SELinuxu\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Nelze ověřit SELinux uživatele\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Nelze změnit mapování na SELinuxového uživatele\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Nelze přidat mapování na SELinuxového uživatele\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Nelze dokončit SELinuxovou transakci\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Mapování uživatele %s není definováno, OK, pokud bylo použito výchozí " +"mapování\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "Mapování uživatele %s je definováno v politice, nemůže být smazáno\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Nelze smazat mapování pro uživatele %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Nelze přejít do „%s“\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Žádný adresář, nastavuji HOME na /" + +#, c-format +msgid "Cannot execute %s" +msgstr "%s nelze spustit" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Chybný kořenový adresář „%s“\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Nelze změnit kořenový adresář na „%s“\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: došla paměť\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: nelze zavolat stat %s: %s\n" #, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "" -"%s: (uživatel %s) volání pam_chauthtok() selhalo, chyba:\n" -"%s\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s není ani adresář, ani symbolický odkaz.\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Chybné heslo pro %s.\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Nelze číst symbolický odkaz %s: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: násobné použití --root\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Podezřele dlouhý symbolický odkaz: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: volba „%s“ vyžaduje argument\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: Nelze vytvořit adresář %s: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: selhalo odevzdání privilegií (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Nelze změnit vlastníka %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: neplatná cesta k chrootu „%s“\n" +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Nelze změnit oprávnění k %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: nelze přistoupit k chroot adresáři %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: smazání: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: nelze přejít (chdir) do chroot adresáře %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Nelze odstranit adresář %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: nelze změnit kořen (chroot) na adresář %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Nelze přejmenovat %s na %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Nelze odstranit %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Neplatná hodnota ENCRYPT_METHOD: „%s“.\n" -"Používám DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Nelze vytvořit symbolický odkaz %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Nelze změnit vlastníky %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Nelze přejít do „%s“\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Nelze zavolat lstat %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Žádný adresář, nastavuji HOME na /" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Varování, uživatel %s nemá v tcb svůj soubor shadow.\n" #, c-format -msgid "Cannot execute %s" -msgstr "%s nelze spustit" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Krizový stav: shadow v tcb uživatele %s není běžným souborem " +"(st_nlink=1).\n" +"Účet je ponechán zamknutý.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Chybný kořenový adresář „%s“\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: vytvoření adresáře: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Nelze změnit kořenový adresář na „%s“\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Nelze otevřít %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -662,6 +668,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_ADRESÁŘ adresář, do kterého přejít\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_ADRESÁŘ adresář, do kterého přejít\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -689,12 +700,15 @@ msgstr "Vypnuté heslo" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Vypršení platnosti účtu (RRRR-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Poslední změna hesla\t\t\t\t\t: " - msgid "never" msgstr "nikdy" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Poslední změna hesla\t\t\t\t\t: " + msgid "password must be changed" msgstr "heslo musí být změněno" @@ -866,14 +880,6 @@ msgstr "%s: „%s“ obsahuje nepovolené znaky\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: uživatel „%s“ neexistuje\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: uživatele „%s“ nelze na NIS klientu změnit.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: „%s“ je hlavním NIS serverem pro tohoto klienta.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Měním informace o uživateli %s\n" @@ -911,6 +917,11 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds počet SHA iterací algoritmu SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: nepodporovaný typ šifry: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: přepínač %s je povolen pouze s přepínačem %s\n" @@ -961,6 +972,16 @@ msgstr " -s, --shell SHELL nový přihlašovací shell uživatele\n msgid "Login Shell" msgstr "Přihlašovací shell" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: nelze zjistit velikost %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Nemůžete změnit shell pro „%s“.\n" @@ -973,6 +994,11 @@ msgstr "Měním přihlašovací shell pro %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: chybná položka %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s není platný shell\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s není platný shell\n" @@ -1210,11 +1236,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system vytvoří systémový účet\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_ADRESÁŘ adresář, do kterého přejít\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1229,6 +1250,11 @@ msgstr "chybné uživatelské jméno „%s“\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: „%s“ není platným jménem skupiny\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Nelze otevřít %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: neplatné ID skupiny „%s“\n" @@ -1273,14 +1299,6 @@ msgstr "%s: nelze odstranit primární skupinu uživatele „%s“.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: skupina „%s“ neexistuje\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: skupina „%s“ je NIS skupinou\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s je hlavním NIS serverem\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: uživatel „%s“ je již členem „%s“\n" @@ -1374,10 +1392,6 @@ msgstr " -p, --password HESLO změní heslo na (šifrované) HESLO\n" msgid "%s: invalid group name '%s'\n" msgstr "%s: neplatné jméno skupiny „%s“\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: skupina %s je NIS skupinou\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: neznámý uživatel %s\n" @@ -1504,7 +1518,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all zobrazí záznamy faillogu o všech " @@ -1605,9 +1619,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Bez efektivních oprávnění uživatele root nelze pracovat\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "utmp záznam neexistuje. Musíte spustit „login“ z nejnižšího „sh“" - #, c-format msgid "" "\n" @@ -1641,14 +1652,6 @@ msgstr "Chybné přihlášení" msgid "Cannot find user (%s)\n" msgstr "Nelze nalézt uživatele (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"Přihlašovací jméno na %s: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: chyba rozdvojení: %s" @@ -1682,9 +1685,13 @@ msgstr "Použití: logoutd\n" msgid "%s: gid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgstr "%s: rozsah gid [%lu-%lu) -> [%lu-%lu) není povolen\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "usage: %s [ " +#| " ] ... \n" msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" "použití: %s [ " " ] ...\n" @@ -1713,18 +1720,15 @@ msgstr "%s: selhalo odstranění %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: nepodařilo se odemknout %s\n" -#, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: Nelze otevřít proc adresář cílového procesu %u\n" - -#, c-format -msgid "%s: Could not stat directory for target %u\n" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Nelze zavolat stat na adresář cílového procesu %u\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1755,18 +1759,21 @@ msgstr "příliš mnoho skupin\n" msgid "%s: uid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgstr "%s: rozsah uid [%lu-%lu) -> [%lu-%lu) není povolen\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "usage: %s [ " +#| " ] ... \n" msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" "použití: %s [ " " ] ...\n" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Nelze zavolat stat na adresář cílového procesu %u\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1789,6 +1796,10 @@ msgstr "%s: chybné uživatelské ID „%s“\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: chybné uživatelské jméno „%s“\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: řádek %d: chybný řádek\n" @@ -1810,6 +1821,11 @@ msgstr "%s: řádek %d: nelze vytvořit skupinu\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: řádek %d: uživatel „%s“ v %s neexistuje\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: smazání: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: řádek %d: heslo nelze aktualizovat\n" @@ -1831,14 +1847,14 @@ msgstr "%s: řádek %d: volání chown %s selhalo: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: řádek %d: položku nelze aktualizovat\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: příprava nového záznamu %s selhala\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: nelze nalézt rozsah podřízených uživatelů\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: příprava nového záznamu %s selhala\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: nelze nalézt rozsah podřízených skupin\n" @@ -1907,6 +1923,11 @@ msgstr "" " -x, --maxdays MAX_DNŮ nastaví maximální počet dnů před změnou\n" " hesla na MAX_DNŮ\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list zobrazí informace o účtu\n" + msgid "Old password: " msgstr "Staré heslo: " @@ -1926,6 +1947,11 @@ msgstr "" "Zadejte nové heslo (počet znaků v intervalu %d až %d).\n" "Použijte kombinaci velkých a malých písmen s číslicemi.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: položka je příliš dlouhá\n" + msgid "New password: " msgstr "Nové heslo: " @@ -1969,6 +1995,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: úložna %s není podporována\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: volbu -g/--group může používat pouze root\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2122,11 +2153,9 @@ msgstr "%s: chyba signálu\n" msgid "Session terminated, terminating shell..." msgstr "Sezení skončeno, ukončuji shell..." -#, c-format msgid " ...killed.\n" msgstr " ...zabit.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...čeká na ukončení potomka.\n" @@ -2213,6 +2242,11 @@ msgstr "%s: Toto času nejste oprávněni používat su\n" msgid "No passwd entry for user '%s'\n" msgstr "V databázi není záznam pro uživatele „%s“\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "chybné uživatelské jméno „%s“\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: musí být spuštěno z terminálu\n" @@ -2258,6 +2292,13 @@ msgstr "%s: %s byl vytvořen, ale nemůže být odstraněn\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: nastavení %s v %s bude ignorováno\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: nastavení %s v %s bude ignorováno\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2268,10 +2309,6 @@ msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nelze otevřít nový soubor s výchozími hodnotami\n" @@ -2288,10 +2325,6 @@ msgstr "%s: Nelze vytvořit záložní soubor (%s): %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: přejmenovat: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: skupina „%s“ je NIS skupinou.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: zadáno příliš mnoho skupin (max %d).\n" @@ -2428,6 +2461,17 @@ msgstr "" " -Z, --selinux-user SEUŽIVATEL pro mapování na SELinuxového uživatele\n" " použije SEUŽIVATELe\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUŽIVATEL pro mapování na SELinuxového uživatele\n" +" použije SEUŽIVATELe\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: chybný základní adresář „%s“\n" @@ -2571,6 +2615,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Nastavuji oprávnění k poštovní schránce" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Vytvářím poštovní schránku" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Vytvářím poštovní schránku" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2704,10 +2758,6 @@ msgstr "%s: Nelze odstranit obsah %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Nelze odstranit tcb soubory uživatele %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: uživatel %s je NIS uživatelem\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: domovský adresář uživatele %s (%s) nebyl nalezen\n" @@ -2830,6 +2880,16 @@ msgstr "" " -Z, --selinux-user SEUŽIVATEL nové mapování uživatelského účtu na\n" " uživatele SELinuxu\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUŽIVATEL nové mapování uživatelského účtu na\n" +" uživatele SELinuxu\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2924,12 +2984,26 @@ msgstr "" "%s: nepodařilo se zkopírovat lastlog záznamy uživatele %lu uživateli %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: nepodařilo se zkopírovat lastlog záznamy uživatele %lu uživateli %lu: " +"%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: nepodařilo se zkopírovat faillog záznamy uživatele %lu uživateli %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: nepodařilo se zkopírovat faillog záznamy uživatele %lu uživateli %lu: " +"%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: varování: vlastníkem %s není %s\n" @@ -3030,8 +3104,10 @@ msgstr "dočasný soubor se nepodařilo smazat" msgid "failed to stat edited file" msgstr "na upravovaný soubor se nepodařilo zavolat stat()" -msgid "failed to allocate memory" -msgstr "nepodařilo se alokovat paměť" +#, fuzzy +#| msgid "%s: snprintf failed!\n" +msgid "asprintf(3) failed" +msgstr "%s: snprintf selhalo!\n" msgid "failed to create backup file" msgstr "vytvoření záložního souboru selhalo" @@ -3044,6 +3120,58 @@ msgstr "%s: %s nelze obnovit: %s (změny jsou v %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: nepodařilo se nalézt tcb adresář uživatele %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Přetečení prostředí\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: uživatele „%s“ nelze na NIS klientu změnit.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: „%s“ je hlavním NIS serverem pro tohoto klienta.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: skupina „%s“ je NIS skupinou\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s je hlavním NIS serverem\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: skupina %s je NIS skupinou\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: skupina „%s“ je NIS skupinou.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: uživatel %s je NIS uživatelem\n" + +#, c-format +#~ msgid "%s: Not enough arguments to form %u mappings\n" +#~ msgstr "%s: Nedostatek argumentů pro vytvoření %u mapování\n" + +#~ msgid "too simple" +#~ msgstr "příliš jednoduché" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "utmp záznam neexistuje. Musíte spustit „login“ z nejnižšího „sh“" + +#, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: Nelze otevřít proc adresář cílového procesu %u\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "nepodařilo se alokovat paměť" + #~ msgid "Usage: id\n" #~ msgstr "Použití: id\n" @@ -3059,10 +3187,6 @@ msgstr "%s: nepodařilo se nalézt tcb adresář uživatele %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: informace o vypršení platnosti hesla byly změněny.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "chybné uživatelské jméno „%s“\n" - #~ msgid "Username Port From Latest" #~ msgstr "Uživatel Port Z Naposledy" diff --git a/po/da.gmo b/po/da.gmo index 3666a6a..e515ea3 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 4a76795..cba6dc0 100644 --- a/po/da.po +++ b/po/da.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2012-01-26 23:57+0100\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -30,226 +30,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Flere punkter med navnet »%s« i %s. Ret venligst dette med pwck eller " -"grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "cryptmetode er ikke understøttet af libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "konfigurationsfejl - kan ikke fortolke %s-værdi: »%s«" - -msgid "Could not allocate space for config info.\n" -msgstr "Kunne ikke frigøre plads til opsætningsoplysninger.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "opsætningsfejl - ukendt punkt »%s« (informer administrator)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd afsluttedes ikke normalt (signal %d)\n" - -#, fuzzy, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd afsluttede med status %d" - -msgid "Password: " -msgstr "Adgangskode: " - -#, c-format -msgid "%s's Password: " -msgstr "%s's adgangskode: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Kan ikke åbne overvågningsbrugerflade (audit) - afbryder.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Kan ikke oprette SELinux-håndteringshåndtag\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux-politik ikke håndteret\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Kan ikke læse SELinux-politiklageret\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Kan ikke etablere SELinux-håndteringsforbindelse\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Kan ikke begynde SELinux-transaktion\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Kunne ikke forespørge seuser for %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Kunne ikke angive serange for %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Kunne ikke angive sename for %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Kunne ikke ændre logingkortlægningen for %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Kan ikke oprette SELinux-logindkortlægning for %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Kunne ikke angive navn for %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Kunne ikke angive SELinux-bruger for %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Kunne ikke tilføje logindkortlægning for %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Kan ikke initialisere SELinux-håntering\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Kan ikke oprette SELinux-brugernøgle\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Kan ikke verificere SELinux-brugeren\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Kan ikke ændre SELinux-brugerkortlægning\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Kan ikke tilføje SELinux-brugerkortlægning\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Kan ikke indsende SELinux-transaktion\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Logindkortlægning for %s er ikke defineret, o.k. hvis standardkortlægning " -"blev brugt\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "Logindkortlægning for %s er defineret i politik, kan ikke slettes\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Kunne ikke slette logindkortlægning for %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: Hukommelse opbrugt\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: Kan ikke stat %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s er hverken en mappe eller en symbolsk henvisning.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Kan ikke omdøbe symbolsk henvisning %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Mistænkelig lang symbolsk henvisning: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Kan ikke oprette mappen %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Kan ikke ændre ejer af %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Kan ikke ændre tilstand for %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: Fjern henvisning: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Kan ikke fjerne mappen %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Kan ikke omdøbe %s til %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Kan ikke fjerne %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Kan ikke oprette symbolsk henvisning %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Kan ibkke ændre ejere af %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Kan ikke lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Advarsel, bruger %s har ingen tcb-skyggefil.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Nødsituation: %s's tcb-skygge er ikke en regulær fil med st_nlink=1.\n" -"Kontoen forbliver låst.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Kan ikke åbne %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Advarsel: Ukendt gruppe %s\n" @@ -296,6 +76,13 @@ msgstr "Kan ikke ændre ejer eller tilstand af tty stdin: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: Kunne ikke åbne %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Flere punkter med navnet »%s« i %s. Ret venligst dette med pwck eller " +"grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -303,8 +90,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Miljøoverløb\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "cryptmetode er ikke understøttet af libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -419,8 +207,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Kan ikke indhente unik UID (ikke flere tilgængelige UID'er)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "konfigurationsfejl - kan ikke fortolke %s-værdi: »%s«" + +msgid "Could not allocate space for config info.\n" +msgstr "Kunne ikke frigøre plads til opsætningsoplysninger.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "opsætningsfejl - ukendt punkt »%s« (informer administrator)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -450,9 +245,10 @@ msgstr "Kunne ikke angive navn for %s\n" msgid "%s: Could not set caps\n" msgstr "Kunne ikke angive navn for %s\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: Linje %d: chown %s fejlede: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -464,9 +260,22 @@ msgstr "%s: Linje %d: chown %s fejlede: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: Linje %d: chown %s fejlede: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: Linje %d: chown %s fejlede: %s\n" + msgid "Too many logins.\n" msgstr "Logget på for mange gange.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s logind: " + msgid "You have new mail." msgstr "Du har ny post." @@ -476,6 +285,14 @@ msgstr "Ingen post." msgid "You have mail." msgstr "Du har post." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd afsluttedes ikke normalt (signal %d)\n" + +#, fuzzy, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd afsluttede med status %d" + msgid "no change" msgstr "ingen ændring" @@ -488,9 +305,6 @@ msgstr "kun versalændringer" msgid "too similar" msgstr "for ens" -msgid "too simple" -msgstr "for simpelt" - msgid "rotated" msgstr "omrokeret" @@ -519,93 +333,284 @@ msgstr "passwd: adgangskoden blev opdateret\n" msgid "%s: PAM modules requesting echoing are not supported.\n" msgstr "" -#, fuzzy, c-format -#| msgid "%s: repository %s not supported\n" -msgid "%s: conversation type %d not supported.\n" -msgstr "%s: Arkiv %s understøttes ikke\n" +#, fuzzy, c-format +#| msgid "%s: repository %s not supported\n" +msgid "%s: conversation type %d not supported.\n" +msgstr "%s: Arkiv %s understøttes ikke\n" + +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: Fejl %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() mislykkedes, fejl %d\n" + +msgid "Password: " +msgstr "Adgangskode: " + +#, c-format +msgid "%s's Password: " +msgstr "%s's adgangskode: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Ugyldig adgangskode for %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: flere tilvalg for --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: tilvalg »%s« kræver et argument\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: Kunne ikke afgive rettigheder (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: Ugyldig chroot-sti »%s«\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: Kan ikke chroot til mappe %s: %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Ugyldig ENCRYPT_METHOD-værdi: »%s«.\n" +"Vælger standard DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Kan ikke åbne overvågningsbrugerflade (audit) - afbryder.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Kan ikke oprette SELinux-håndteringshåndtag\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux-politik ikke håndteret\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Kan ikke læse SELinux-politiklageret\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Kan ikke etablere SELinux-håndteringsforbindelse\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Kan ikke begynde SELinux-transaktion\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Kunne ikke forespørge seuser for %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Kunne ikke angive serange for %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Kunne ikke angive sename for %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Kunne ikke ændre logingkortlægningen for %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Kan ikke oprette SELinux-logindkortlægning for %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Kunne ikke angive navn for %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Kunne ikke angive SELinux-bruger for %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Kunne ikke tilføje logindkortlægning for %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Kan ikke initialisere SELinux-håntering\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Kan ikke oprette SELinux-brugernøgle\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Kan ikke verificere SELinux-brugeren\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Kan ikke ændre SELinux-brugerkortlægning\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Kan ikke tilføje SELinux-brugerkortlægning\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Kan ikke indsende SELinux-transaktion\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Logindkortlægning for %s er ikke defineret, o.k. hvis standardkortlægning " +"blev brugt\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "Logindkortlægning for %s er defineret i politik, kan ikke slettes\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Kunne ikke slette logindkortlægning for %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Kunne ikke skifte mappe til »%s«\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Ingen mappe, logger på med HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Kan ikke udføre %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Ugyldig rodmappe »%s«\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Kan ikke ændre rodmappen til »%s«\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: Hukommelse opbrugt\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: Fejl %d\n" +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: Kan ikke stat %s: %s\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() mislykkedes, fejl %d\n" +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s er hverken en mappe eller en symbolsk henvisning.\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Ugyldig adgangskode for %s.\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Kan ikke omdøbe symbolsk henvisning %s: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: flere tilvalg for --root\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Mistænkelig lang symbolsk henvisning: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: tilvalg »%s« kræver et argument\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: Kan ikke oprette mappen %s: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: Kunne ikke afgive rettigheder (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Kan ikke ændre ejer af %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: Ugyldig chroot-sti »%s«\n" +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Kan ikke ændre tilstand for %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: Fjern henvisning: %s: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n" +#, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Kan ikke fjerne mappen %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: Kan ikke chroot til mappe %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Kan ikke omdøbe %s til %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Kan ikke fjerne %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Ugyldig ENCRYPT_METHOD-værdi: »%s«.\n" -"Vælger standard DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Kan ikke oprette symbolsk henvisning %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Kan ibkke ændre ejere af %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Kunne ikke skifte mappe til »%s«\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Kan ikke lstat %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Ingen mappe, logger på med HOME=/" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Advarsel, bruger %s har ingen tcb-skyggefil.\n" #, c-format -msgid "Cannot execute %s" -msgstr "Kan ikke udføre %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Nødsituation: %s's tcb-skygge er ikke en regulær fil med st_nlink=1.\n" +"Kontoen forbliver låst.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Ugyldig rodmappe »%s«\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Kan ikke ændre rodmappen til »%s«\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Kan ikke åbne %s: %s\n" #, fuzzy, c-format #| msgid "%s: user '%s' does not exist in %s\n" @@ -681,6 +686,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_MAPPE mappe at chroote ind i\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_MAPPE mappe at chroote ind i\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -708,12 +718,15 @@ msgstr "Adgangskode inaktiv" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Udløbsdato for konto (ÅÅÅÅ-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Sidste ændring af adgangskode\t\t\t\t\t: " - msgid "never" msgstr "aldrig" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Sidste ændring af adgangskode\t\t\t\t\t: " + msgid "password must be changed" msgstr "adgangskoden skal ændres" @@ -885,14 +898,6 @@ msgstr "%s: »%s« indeholder ugyldige tegn\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: Brugeren »%s« findes ikke\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: Kan ikke ændre brugeren »%s« på NIS-klienten.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: »%s« er NIS-masteren for denne klient.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Ændrer brugeroplysninger for %s\n" @@ -933,6 +938,11 @@ msgstr "" " -s, --sha-rounds antal SHA-runder for SHA*\n" " crypt-algoritmerne\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: Crypt-metode er ikke understøttet: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: Flaget %s er kun tilladt med flaget %s\n" @@ -983,6 +993,16 @@ msgstr " -s, --shell SKAL ny logindskal for brugerkontoen\n" msgid "Login Shell" msgstr "Logindskal" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Kan ikke indhente størrelsen for %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: Kan ikke oprette ny standardværdifil\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Du kan ikke ændre skallen for »%s«.\n" @@ -995,6 +1015,11 @@ msgstr "Ændrer logindskallen for %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Ugyldigt punkt: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s er en ugyldig skal\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s er en ugyldig skal\n" @@ -1234,11 +1259,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system opret en systemkonto\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_MAPPE mappe at chroote ind i\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1253,6 +1273,11 @@ msgstr "ugyldigt brugernavn »%s«\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: »%s« er ikke et gyldigt gruppenavn\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Kan ikke åbne %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: Ugyldigt gruppe-id »%s«\n" @@ -1297,14 +1322,6 @@ msgstr "%s: Kan ikke fjerne den primære gruppe for bruger »%s«.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: Gruppe »%s« findes ikke\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: Gruppe »%s« er en NIS-gruppe.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s er NIS-masteren\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: Bruger »%s« er allerede medlem af »%s«\n" @@ -1405,10 +1422,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: Ugyldigt gruppenavn »%s«\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: Gruppen %s er en NIS-gruppe\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: Ukendt bruger %s\n" @@ -1536,7 +1549,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr " -a, --all vis faillog-poster for alle brugere\n" @@ -1635,9 +1648,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Kan umuligt arbejde uden effektiv root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Intet utmp-punkt. Du skal køre »login« fra det laveste »sh-niveau«" - #, c-format msgid "" "\n" @@ -1671,14 +1681,6 @@ msgstr "Forkert logind" msgid "Cannot find user (%s)\n" msgstr "Kan ikke finde bruger (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s logind: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: Fejl under forgrening: %s" @@ -1714,7 +1716,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1740,20 +1743,15 @@ msgstr "%s: Kunne ikke fjerne %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: Kunne ikke åbne %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: Kunne ikke finde tcb-mappe for %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Kan ikke oprette tcv-mappe for %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1786,14 +1784,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Kan ikke oprette tcv-mappe for %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1816,6 +1814,10 @@ msgstr "%s: Ugyldigt bruger-id »%s«\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: Ugyldigt brugernavn »%s«\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: Linje %d: Ugyldig linje\n" @@ -1837,6 +1839,11 @@ msgstr "%s: Linje %d: Kan ikke oprette gruppe\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: Linje %d: Bruger »%s« findes ikke i %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: Fjern henvisning: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: Linje %d: Kan ikke opdatere adgangskode\n" @@ -1858,14 +1865,14 @@ msgstr "%s: Linje %d: chown %s fejlede: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: Linje %d: Kan ikke opdatere punktet\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: Kunne ikke forberede det nye %s-punkt »%s«\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: Kan ikke oprette bruger\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: Kunne ikke forberede det nye %s-punkt »%s«\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: Kan ikke oprette gruppe\n" @@ -1938,6 +1945,11 @@ msgstr "" " -x, --maxdays MAKS_DAGE sæt det maksimale antal dage inden skift af\n" " adgangskode til MAKS_DAGE\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list vis forældelsesoplysninger for konto\n" + msgid "Old password: " msgstr "Gammel adgangskode: " @@ -1957,6 +1969,11 @@ msgstr "" "Angiv ny adgangskode (mindst %d, højst %d tegn)\n" "Brug en kombination af små og store bogstaver samt tal.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: Felter for lange\n" + msgid "New password: " msgstr "Ny adgangskode: " @@ -2000,6 +2017,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: Arkiv %s understøttes ikke\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: Kun root kan bruge tilvalget -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2152,11 +2174,9 @@ msgstr "%s: Forkert signal\n" msgid "Session terminated, terminating shell..." msgstr "Session termineret, terminerer skal..." -#, c-format msgid " ...killed.\n" msgstr " ...dræbt.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...venter på at underproces termineres.\n" @@ -2243,6 +2263,11 @@ msgstr "%s: Du er ikke autoriseret til at su på det tidspunkt\n" msgid "No passwd entry for user '%s'\n" msgstr "Intet adgangskodepunkt for bruger »%s«\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ugyldigt brugernavn »%s«\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: Skal køres fra en terminal\n" @@ -2288,6 +2313,13 @@ msgstr "%s: %s blev oprettet, men kunne ikke fjernes\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: Konfigurationen %s i %s vil blive ignoreret\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: Konfigurationen %s i %s vil blive ignoreret\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2298,10 +2330,6 @@ msgstr "%s: Kan ikke oprette ny standardværdifil\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: Kan ikke oprette ny standardværdifil\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: Kan ikke oprette ny standardværdifil\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: Kan ikke åbne ny standardværdifil\n" @@ -2318,10 +2346,6 @@ msgstr "%s: Kan ikke oprette symbolsk henvisning %s: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: Omdøb: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: Gruppen »%s« er en NIS-gruppe.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Der er angivet for mange grupper (højst %d).\n" @@ -2462,6 +2486,17 @@ msgstr "" " -Z, --selinux-user SE_BRUGER brug en specifik SE_BRUGER for " "kortlægningen af SELinux-brugere\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SE_BRUGER brug en specifik SE_BRUGER for " +"kortlægningen af SELinux-brugere\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: Ugyldig basismappe »%s«\n" @@ -2604,6 +2639,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Indstiller postboksfilens rettigheder" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Opretter postboksfil" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Opretter postboksfil" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2736,10 +2781,6 @@ msgstr "%s: Kan ikke fjerne indholdet af %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Kan ikke fjerne tcb-filer for %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: Brugeren %s er en NIS-bruger\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s hjemmemappe (%s) er ikke fundet\n" @@ -2871,6 +2912,16 @@ msgstr "" " -Z, --selinux-user SEUSER ny SELinux-brugerkortlægning for " "brugerkontoen\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER ny SELinux-brugerkortlægning for " +"brugerkontoen\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2965,11 +3016,23 @@ msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" "%s: Kunne ikke kopiere lastlog-punktet for bruger %lu til bruger %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: Kunne ikke kopiere lastlog-punktet for bruger %lu til bruger %lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: Kunne ikke kopiere faillog-punktet for bruger %lu til bruger %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: Kunne ikke kopiere faillog-punktet for bruger %lu til bruger %lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: Advarsel: %s ejes ikke af %s\n" @@ -3070,8 +3133,8 @@ msgstr "kunne ikke fjerne henvisning for scratch-fil" msgid "failed to stat edited file" msgstr "kunne ikke stat redigeret fil" -msgid "failed to allocate memory" -msgstr "kunne ikke tildele hukommelse" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "kunne ikke oprette sikkerhedskopifil" @@ -3084,6 +3147,55 @@ msgstr "%s: Kan ikke gendanne %s: %s (dine ændringer er i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: Kunne ikke finde tcb-mappe for %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Miljøoverløb\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: Kan ikke ændre brugeren »%s« på NIS-klienten.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: »%s« er NIS-masteren for denne klient.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: Gruppe »%s« er en NIS-gruppe.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s er NIS-masteren\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: Gruppen %s er en NIS-gruppe\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: Kan ikke oprette ny standardværdifil\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: Gruppen »%s« er en NIS-gruppe.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: Brugeren %s er en NIS-bruger\n" + +#~ msgid "too simple" +#~ msgstr "for simpelt" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "Intet utmp-punkt. Du skal køre »login« fra det laveste »sh-niveau«" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: Kunne ikke finde tcb-mappe for %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "kunne ikke tildele hukommelse" + #~ msgid "Usage: id\n" #~ msgstr "Brug: id\n" @@ -3099,9 +3211,5 @@ msgstr "%s: Kunne ikke finde tcb-mappe for %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: Information om udløb af adgangskode blev ændret.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ugyldigt brugernavn »%s«\n" - #~ msgid "Username Port From Latest" #~ msgstr "Brugernavn Port Fra Seneste" diff --git a/po/de.gmo b/po/de.gmo index 761fe57..cf7dcbd 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 63ff245..fdf8c34 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.2-2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2020-09-22 15:10+0200\n" "Last-Translator: Björn Esser \n" "Language-Team: German \n" @@ -19,232 +19,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Mehrere Einträge namens »%s« in %s. Bitte beheben Sie dies mit pwck oder " -"grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "Verschlüsselungsmethode von libcrypt nicht unterstützt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "Konfigurationsfehler - Wert für %s kann nicht ausgewertet werden: »%s«" - -msgid "Could not allocate space for config info.\n" -msgstr "" -"Es konnte kein Speicherplatz für Konfigurationsinformationen reserviert " -"werden.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"Konfigurationsfehler - Element »%s« unbekannt (Administrator verständigen).\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd wurde nicht normal beendet (Signal %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd wurde mit Status %d beendet\n" - -msgid "Password: " -msgstr "Passwort: " - -#, c-format -msgid "%s's Password: " -msgstr "Passwort von %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Audit-Schnittstelle konnte nicht geöffnet werden - Abbruch.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "SELinux-Management-Handhabung kann nicht erstellt werden\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux-Richtlinie nicht verwaltet\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "SELinux-Richtlinien-Speicher kann nicht gelesen werden\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "SELinux-Management-Verbindung kann nicht aufgebaut werden\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "SELinux-Vorgang kann nicht gestartet werden\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "seuser für %s konnte nicht abgefragt werden\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "serange für %s konnte nicht gesetzt werden\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "sename für %s konnte nicht gesetzt werden\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Login-Zuordnung für %s konnte nicht verändert werden\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "SELinux-Login-Zuordnung für %s kann nicht erstellt werden\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Name für %s konnte nicht gesetzt werden\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "SELinux-Benutzer für %s konnte nicht gesetzt werden\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Login-Zuordnung für %s konnte nicht hinzugefügt werden\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "SELinux-Management kann nicht initialisiert werden\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "SELinux-Benutzerschlüssel kann nicht erstellt werden\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "SELinux-Benutzer kann nicht verifiziert werden\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "SELinux-Benutzer-Zuordnung kann nicht verändert werden\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "SELinux-Benutzer-Zuordnung kann nicht hinzugefügt werden\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "SELinux-Vorgang kann nicht eingepflegt werden\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Login-Zuordnung für %s ist nicht definiert; dies ist OK, falls die Standard-" -"Zuordnung verwendet wurde\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"Login-Zuordnung für %s ist in der Richtlinie definiert, kann nicht gelöscht " -"werden\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Login-Zuordnung für %s konnte nicht gelöscht werden" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: Speicher erschöpft\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: %s kann nicht mit stat abgefragt werden: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s ist weder ein Verzeichnis noch eine symbolische Verknüpfung.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Symbolische Verknüpfung %s kann nicht gelesen werden: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Verdächtig lange symbolische Verknüpfung: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Verzeichnis %s kann nicht erstellt werden: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Eigentümer von %s kann nicht geändert werden: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Berechtigungen von %s können nicht geändert werden: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: Löschen (unlink): %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Verzeichnis %s kann nicht entfernt werden: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: %s kann nicht in %s umbenannt werden: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: %s kann nicht entfernt werden: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Symbolische Verknüpfung %s kann nicht erstellt werden: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Eigentümer von %s können nicht geändert werden: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: %s kann nicht mit lstat abgefragt werden: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Warnung: Benutzer %s hat keine tcb-shadow-Datei.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Ernstes Problem: %ss tcb-shadow ist keine reguläre Datei mit " -"st_nlink=1.\n" -"Der Benutzerzugang bleibt gesperrt.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir (Verzeichnis erstellen): %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s kann nicht geöffnet werden: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Warnung: unbekannte Gruppe %s\n" @@ -291,6 +65,13 @@ msgstr "Eigentümer oder Modus von tty stdin kann nicht geändert werden: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: Entsperren von %s fehlgeschlagen\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Mehrere Einträge namens »%s« in %s. Bitte beheben Sie dies mit pwck oder " +"grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -298,8 +79,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Umgebungsüberlauf\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "Verschlüsselungsmethode von libcrypt nicht unterstützt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -416,8 +198,18 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Keine einmalige UID bekommen (keine UIDs mehr verfügbar)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "Konfigurationsfehler - Wert für %s kann nicht ausgewertet werden: »%s«" + +msgid "Could not allocate space for config info.\n" msgstr "" +"Es konnte kein Speicherplatz für Konfigurationsinformationen reserviert " +"werden.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"Konfigurationsfehler - Element »%s« unbekannt (Administrator verständigen).\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -447,9 +239,10 @@ msgstr "Name für %s konnte nicht gesetzt werden\n" msgid "%s: Could not set caps\n" msgstr "Name für %s konnte nicht gesetzt werden\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -461,9 +254,22 @@ msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" + msgid "Too many logins.\n" msgstr "Zu viele Anmeldungen.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s Login: " + msgid "You have new mail." msgstr "Neue E-Mails vorhanden." @@ -473,6 +279,14 @@ msgstr "Keine E-Mails vorhanden." msgid "You have mail." msgstr "E-Mails vorhanden." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd wurde nicht normal beendet (Signal %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd wurde mit Status %d beendet\n" + msgid "no change" msgstr "keine Änderungen" @@ -485,9 +299,6 @@ msgstr "nur Änderungen bei Groß-/Kleinschreibung" msgid "too similar" msgstr "zu ähnlich" -msgid "too simple" -msgstr "zu einfach" - msgid "rotated" msgstr "rotiert" @@ -526,86 +337,280 @@ msgstr "%s: Repository %s nicht unterstützt\n" msgid "%s: (user %s) pam_start failure %d\n" msgstr "%s: pam_start: Fehler %d\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() fehlgeschlagen, Fehler %d\n" +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() fehlgeschlagen, Fehler %d\n" + +msgid "Password: " +msgstr "Passwort: " + +#, c-format +msgid "%s's Password: " +msgstr "Passwort von %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Falsches Passwort für %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: mehrfache »--root«-Optionen\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: Option »%s« erfordert ein Argument\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: Fehler beim Entfernen der Privilegien (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: Ungültiger chroot-Pfad »%s«\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: chroot-Wechsel in Verzeichnis %s nicht möglich: %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Ungültiger Wert für ENCRYPT_METHOD: »%s«.\n" +"Standard DES wird gewählt.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" +"Kann kein Salt für das Präfix \"%s\" generieren. Bitte die Einstellungen für " +"ENCRYPT_METHOD und den zugehörigen Konfigurationen der gewählten Hash-" +"Methode überprüfen.\n" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Audit-Schnittstelle konnte nicht geöffnet werden - Abbruch.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "SELinux-Management-Handhabung kann nicht erstellt werden\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux-Richtlinie nicht verwaltet\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "SELinux-Richtlinien-Speicher kann nicht gelesen werden\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "SELinux-Management-Verbindung kann nicht aufgebaut werden\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "SELinux-Vorgang kann nicht gestartet werden\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "seuser für %s konnte nicht abgefragt werden\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "serange für %s konnte nicht gesetzt werden\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "sename für %s konnte nicht gesetzt werden\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Login-Zuordnung für %s konnte nicht verändert werden\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "SELinux-Login-Zuordnung für %s kann nicht erstellt werden\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Name für %s konnte nicht gesetzt werden\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "SELinux-Benutzer für %s konnte nicht gesetzt werden\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Login-Zuordnung für %s konnte nicht hinzugefügt werden\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "SELinux-Management kann nicht initialisiert werden\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "SELinux-Benutzerschlüssel kann nicht erstellt werden\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "SELinux-Benutzer kann nicht verifiziert werden\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "SELinux-Benutzer-Zuordnung kann nicht verändert werden\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "SELinux-Benutzer-Zuordnung kann nicht hinzugefügt werden\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "SELinux-Vorgang kann nicht eingepflegt werden\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Login-Zuordnung für %s ist nicht definiert; dies ist OK, falls die Standard-" +"Zuordnung verwendet wurde\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"Login-Zuordnung für %s ist in der Richtlinie definiert, kann nicht gelöscht " +"werden\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Login-Zuordnung für %s konnte nicht gelöscht werden" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Es konnte nicht in das Verzeichnis »%s« gewechselt werden.\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Kein Verzeichnis, Anmeldung mit HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "%s konnte nicht ausgeführt werden" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Ungültiges root-Verzeichnis »%s«\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "root-Verzeichnis kann nicht auf »%s« geändert werden.\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: Speicher erschöpft\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: %s kann nicht mit stat abgefragt werden: %s\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Falsches Passwort für %s.\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s ist weder ein Verzeichnis noch eine symbolische Verknüpfung.\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: mehrfache »--root«-Optionen\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Symbolische Verknüpfung %s kann nicht gelesen werden: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: Option »%s« erfordert ein Argument\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Verdächtig lange symbolische Verknüpfung: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: Fehler beim Entfernen der Privilegien (%s)\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: Verzeichnis %s kann nicht erstellt werden: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: Ungültiger chroot-Pfad »%s«\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Eigentümer von %s kann nicht geändert werden: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Berechtigungen von %s können nicht geändert werden: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n" +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: Löschen (unlink): %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: chroot-Wechsel in Verzeichnis %s nicht möglich: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Verzeichnis %s kann nicht entfernt werden: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "Kann keine zufälligen Bytes beziehen.\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: %s kann nicht in %s umbenannt werden: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Ungültiger Wert für ENCRYPT_METHOD: »%s«.\n" -"Standard DES wird gewählt.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: %s kann nicht entfernt werden: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" -"Kann kein Salt für das Präfix \"%s\" generieren. Bitte die Einstellungen für " -"ENCRYPT_METHOD und den zugehörigen Konfigurationen der gewählten Hash-" -"Methode überprüfen.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Symbolische Verknüpfung %s kann nicht erstellt werden: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Es konnte nicht in das Verzeichnis »%s« gewechselt werden.\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Eigentümer von %s können nicht geändert werden: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Kein Verzeichnis, Anmeldung mit HOME=/" +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: %s kann nicht mit lstat abgefragt werden: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "%s konnte nicht ausgeführt werden" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Warnung: Benutzer %s hat keine tcb-shadow-Datei.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Ungültiges root-Verzeichnis »%s«\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Ernstes Problem: %ss tcb-shadow ist keine reguläre Datei mit " +"st_nlink=1.\n" +"Der Benutzerzugang bleibt gesperrt.\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "root-Verzeichnis kann nicht auf »%s« geändert werden.\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir (Verzeichnis erstellen): %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s kann nicht geöffnet werden: %s\n" #, fuzzy, c-format #| msgid "%s: user '%s' does not exist in %s\n" @@ -683,6 +688,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_VERZ Verzeichnis für chroot\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_VERZ Verzeichnis für chroot\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -711,12 +721,15 @@ msgstr "Passwort inaktiv" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Ablaufdatum des Benutzerzugangs (JJJJ-MM-TT)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Letzte Passwortänderung\t\t\t\t\t: " - msgid "never" msgstr "nie" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Letzte Passwortänderung\t\t\t\t\t: " + msgid "password must be changed" msgstr "Passwort muss geändert werden" @@ -894,14 +907,6 @@ msgstr "%s: »%s« enthält ungültige Zeichen.\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: Benutzer »%s« ist nicht vorhanden.\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: Benutzer »%s« auf dem NIS-Client konnte nicht geändert werden.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: »%s« ist der NIS-Master für diesen Client.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Benutzerinformationen für %s werden geändert.\n" @@ -944,6 +949,11 @@ msgstr "" " -s, --sha-rounds Anzahl der SHA-Runden für den SHA*-,\n" " BCRYPT oder YESCRYPT Hash-Methode.\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: Nicht unterstützte Verschlüsselungsmethode: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: %s ist nur zusammen mit %s erlaubt.\n" @@ -995,6 +1005,16 @@ msgstr "" msgid "Login Shell" msgstr "Login-Shell" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Auslesen der Größe von %s fehlgeschlagen: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Sie dürfen die Shell für »%s« nicht ändern.\n" @@ -1007,6 +1027,11 @@ msgstr "Login-Shell für %s wird geändert.\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Ungültiger Eintrag: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s ist eine ungültige Shell\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s ist eine ungültige Shell\n" @@ -1257,11 +1282,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system Ein Systemkonto erstellen\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_VERZ Verzeichnis für chroot\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1276,6 +1296,11 @@ msgstr "Ungültiger Benutzername »%s«\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: »%s« ist kein gültiger Gruppenname.\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s kann nicht geöffnet werden: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: Ungültige Gruppen-ID »%s«\n" @@ -1321,14 +1346,6 @@ msgstr "%s: Primäre Gruppe des Benutzers »%s« konnte nicht entfernt werden.\n msgid "%s: group '%s' does not exist\n" msgstr "%s: Gruppe »%s« existiert nicht.\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: Gruppe »%s« ist eine NIS-Gruppe.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s ist der NIS-Master.\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: Benutzer »%s« ist bereits ein Mitglied von »%s«.\n" @@ -1432,10 +1449,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: Ungültiger Gruppenname »%s«\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: Gruppe %s ist eine NIS-Gruppe.\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: Unbekannter Benutzer %s\n" @@ -1566,7 +1579,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all Aufzeichnungen fehlgeschlagener Anmeldungen\n" @@ -1667,11 +1680,7 @@ msgstr "" #, c-format msgid "%s: Cannot possibly work without effective root\n" -msgstr "%s: Arbeit ohne effektive root-Rechte eventuell nicht möglich\n" - -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Kein utmp-Eintrag. Sie müssen »login« vom niedrigsten »sh«-Level ausführen." +msgstr "%s: Arbeit ohne effektive root-Rechte unmöglich\n" #, c-format msgid "" @@ -1707,14 +1716,6 @@ msgstr "Login fehlerhaft" msgid "Cannot find user (%s)\n" msgstr "Benutzer kann nicht gefunden werden (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s Login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: Fehler bei Prozessaufspaltung (fork): %s" @@ -1750,7 +1751,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1776,20 +1778,15 @@ msgstr "%s: Entfernen von %s fehlgeschlagen\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: Entsperren von %s fehlgeschlagen\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: tcb-Verzeichnis für %s konnte nicht gefunden werden\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Erstellen des tcb-Verzeichnisses für %s fehlgeschlagen\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1822,14 +1819,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Erstellen des tcb-Verzeichnisses für %s fehlgeschlagen\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1853,6 +1850,10 @@ msgstr "%s: Ungültige Benutzer-ID »%s«\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: Ungültiger Benutzername »%s«\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: Zeile %d: Ungültige Zeile\n" @@ -1875,6 +1876,11 @@ msgstr "%s: Zeile %d: Gruppe kann nicht erstellt werden.\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: Zeile %d: Benutzer »%s« existiert nicht in %s.\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: Löschen (unlink): %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: Zeile %d: Passwort kann nicht aktualisiert werden.\n" @@ -1896,14 +1902,14 @@ msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: Zeile %d: Eintrag kann nicht aktualisiert werden.\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: Benutzer kann nicht erstellt werden\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: Vorbereiten des neuen %s-Eintrags »%s« fehlgeschlagen.\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: Gruppe kann nicht erzeugt werden\n" @@ -1977,6 +1983,12 @@ msgstr "" " -x, --maxdays MAX_TAGE Maximale Anzahl der Tage vor\n" " Passwortänderung auf MAX_TAGE setzen\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list Informationen zu Ablaufdaten usw. anzeigen\n" + msgid "Old password: " msgstr "Altes Passwort: " @@ -1998,6 +2010,11 @@ msgstr "" "Bitte benutzen Sie eine Kombination aus Groß- und Kleinbuchstaben\n" "sowie Ziffern.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: Felder zu lang\n" + msgid "New password: " msgstr "Neues Passwort: " @@ -2042,6 +2059,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: Repository %s nicht unterstützt\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: Nur root kann die Option -g/--group nutzen.\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2196,11 +2218,9 @@ msgstr "%s: Signal-Fehlfunktion\n" msgid "Session terminated, terminating shell..." msgstr "Sitzung abgebrochen, Shell wird beendet ..." -#, c-format msgid " ...killed.\n" msgstr " ... abgeschossen.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ... Warten auf Beendigung des Kindprozesses.\n" @@ -2287,6 +2307,11 @@ msgstr "%s: su ist Ihnen derzeit nicht erlaubt.\n" msgid "No passwd entry for user '%s'\n" msgstr "Kein Passworteintrag für Benutzer »%s«\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "Ungültiger Benutzername »%s«\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: Muss von einem Terminal gestartet werden.\n" @@ -2332,6 +2357,13 @@ msgstr "%s: %s wurde erstellt, konnte aber nicht entfernt werden\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: die %s-Konfiguration in %s wird ignoriert.\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: die %s-Konfiguration in %s wird ignoriert.\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2342,10 +2374,6 @@ msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: Neue defaults-Datei kann nicht geöffnet werden.\n" @@ -2362,10 +2390,6 @@ msgstr "%s: Sicherungsdatei kann nicht erstellt werden (%s): %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: Umbenennen: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: Die Gruppe »%s« ist eine NIS-Gruppe.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Zu viele Gruppen angegeben (max. %d).\n" @@ -2518,6 +2542,18 @@ msgstr "" "SELinux-\n" " Benutzer-Zuordnung verwenden\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEBENUTZER Den Benutzernamen SEBENUTZER für die " +"SELinux-\n" +" Benutzer-Zuordnung verwenden\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: Ungültiges Basis-Verzeichnis »%s«\n" @@ -2660,6 +2696,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Zugriffsrechte der Mailboxdatei werden gesetzt" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Erzeugen der Mailbox-Datei" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Erzeugen der Mailbox-Datei" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2798,10 +2844,6 @@ msgstr "%s: Inhalt von %s kann nicht gelöscht werden: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: tcb-Dateien für %s können nicht gelöscht werden: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: Benutzer %s ist ein NIS-Benutzer.\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s-Home-Verzeichnis (%s) nicht gefunden\n" @@ -2936,6 +2978,16 @@ msgstr "" " -Z, --selinux-user SEUSER neue SELinux-Benutzer-Zuordnung für den\n" " Benutzerzugang\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER neue SELinux-Benutzer-Zuordnung für den\n" +" Benutzerzugang\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3032,12 +3084,26 @@ msgstr "" "%s: Kopieren des lastlog-Eintrags von Benutzer %lu zu Benutzer %lu " "fehlgeschlagen: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: Kopieren des lastlog-Eintrags von Benutzer %lu zu Benutzer %lu " +"fehlgeschlagen: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: Kopieren des faillog-Eintrags von Benutzer %lu zu Benutzer %lu " "fehlgeschlagen: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: Kopieren des faillog-Eintrags von Benutzer %lu zu Benutzer %lu " +"fehlgeschlagen: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: Warnung: %s nicht im Besitz von %s.\n" @@ -3139,8 +3205,8 @@ msgstr "Löschen (unlink) der scratch-Datei fehlgeschlagen" msgid "failed to stat edited file" msgstr "stat-Abfrage der editierten Datei fehlgeschlagen" -msgid "failed to allocate memory" -msgstr "Speicherreservierung fehlgeschlagen" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "Erzeugen der Sicherungsdatei fehlgeschlagen" @@ -3155,6 +3221,62 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: tcb-Verzeichnis für %s konnte nicht gefunden werden\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Umgebungsüberlauf\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "" +#~ "%s: Benutzer »%s« auf dem NIS-Client konnte nicht geändert werden.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: »%s« ist der NIS-Master für diesen Client.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: Gruppe »%s« ist eine NIS-Gruppe.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s ist der NIS-Master.\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: Gruppe %s ist eine NIS-Gruppe.\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: Die Gruppe »%s« ist eine NIS-Gruppe.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: Benutzer %s ist ein NIS-Benutzer.\n" + +#~ msgid "too simple" +#~ msgstr "zu einfach" + +#, c-format +#~ msgid "Unable to obtain random bytes.\n" +#~ msgstr "Kann keine zufälligen Bytes beziehen.\n" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Kein utmp-Eintrag. Sie müssen »login« vom niedrigsten »sh«-Level " +#~ "ausführen." + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: tcb-Verzeichnis für %s konnte nicht gefunden werden\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "Speicherreservierung fehlgeschlagen" + #~ msgid "Usage: id\n" #~ msgstr "Aufruf: id\n" @@ -3170,9 +3292,5 @@ msgstr "%s: tcb-Verzeichnis für %s konnte nicht gefunden werden\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: Passwortablauf-Informationen geändert.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "Ungültiger Benutzername »%s«\n" - #~ msgid "Username Port From Latest" #~ msgstr "Benutzername Port Von Letzter" diff --git a/po/dz.gmo b/po/dz.gmo index a7de752..96279ba 100644 Binary files a/po/dz.gmo and b/po/dz.gmo differ diff --git a/po/dz.po b/po/dz.po index e40d19b..16c7923 100644 --- a/po/dz.po +++ b/po/dz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2006-06-01 15:28+0530\n" "Last-Translator: Jurmey Rabgay \n" "Language-Team: dzongkha \n" @@ -20,220 +20,6 @@ msgstr "" "X-Poedit-Country: bhutan\n" "X-Poedit-SourceCharset: utf-8\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོན་ལུ་ བར་སྟོང་སྤྲོད་མ་ཚུགས།\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "རིམ་སྒྲིག་འཚོལ་བ་-མ་ཤེས་པའི་རྣམ་གྲངས་ '%s'(བདག་སྐྱོང་པ་བརྡ་བསྐུལ་འབད་)།\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "ཆོག་ཡིག་:" - -#, c-format -msgid "%s's Password: " -msgstr "%s's ཆོག་ཡིག་:" - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "ཆོག་ཡིག་ཡིག་སྣོད་ ཁ་ཕྱེ་མི་ཚུགས།\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོན་ལུ་ བར་སྟོང་སྤྲོད་མ་ཚུགས།\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s གི་དོན་ལུ་ རྒས་པའི་བརྡ་དོན་བསྒྱུར་བཅོས་འབད་དོ།\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: ཁྱོད་ཀྱི་ལག་ལེན་པའི་མིང་ གཏན་འབེབས་བཟོ་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: གྲལ་ཐིག་ %d:ལག་ལེན་པ་ %sའཚོལ་མི་ཚུགས།\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: དྲན་ཚད་ལས་བརྒལ་བ།\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: ནུས་མེད་ཁྱིམ་གྱི་སྣོད་ཐོ་ '%s'།\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: བསྐྱར་མིང་བཏགས་:%s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: གྱིབ་མའི་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: བསྐྱར་མིང་བཏགས་:%s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "ཉེན་བརྡ་:མ་ཤེས་པའི་སྡེ་ཚན་%s\n" @@ -280,6 +66,11 @@ msgstr "ཊི་ཊི་ཝའི་ %s བསྒྱུར་བཅོས་ msgid "%s: failed to unlock %s\n" msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -287,8 +78,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "མཐའ་འཁོར་ལུད་སོང་བ།\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -389,9 +181,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: ཐུན་མོང་ ཡུ་ཨའི་ཌི་འཐོབ་མི་ཚུགས།\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོན་ལུ་ བར་སྟོང་སྤྲོད་མ་ཚུགས།\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "རིམ་སྒྲིག་འཚོལ་བ་-མ་ཤེས་པའི་རྣམ་གྲངས་ '%s'(བདག་སྐྱོང་པ་བརྡ་བསྐུལ་འབད་)།\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: པི་ཨེ་ཨེམ་ བདེན་བཤད་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" @@ -419,7 +218,7 @@ msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོ #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: ཡིག་སྣོད་ཁ་ཕྱེ་མི་ཚུགས།\n" #, fuzzy, c-format @@ -430,9 +229,21 @@ msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱ msgid "%s: write to %s failed: %s\n" msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" + msgid "Too many logins.\n" msgstr "ནང་བསྐྱོད་མང་དྲགས་པ།\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s ནང་བསྐྱོད་: " + msgid "You have new mail." msgstr "ཁྱོད་ལུ་ཡིག་འཕྲིན་གསརཔ་ཅིག་འདུག" @@ -442,6 +253,14 @@ msgstr "ཡིག་འཕྲིན་མེད།" msgid "You have mail." msgstr "ཁྱོད་ལུ་ཡིག་འཕྲིན་འདུག" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "བསྒྱུར་བཅོས་མེད།" @@ -454,9 +273,6 @@ msgstr "ཡི་གུ་རྐྱངམ་ཅིག་བསྒྱུར་བ msgid "too similar" msgstr "ཤིན་ཏུ་ཆ་འདྲ་བ།" -msgid "too simple" -msgstr "ཤིན་ཏུ་འཇམ་སམ།" - msgid "rotated" msgstr "བསྒྱིར་ཡོདཔ།" @@ -503,6 +319,13 @@ msgid "" "%s\n" msgstr "ཆོག་ཡིག་:པམ་སི་ཊཊི་()འཐུས་ཤོར་བྱུང་ཡོདཔ་(_s) འཛོལ་བ་ %d\n" +msgid "Password: " +msgstr "ཆོག་ཡིག་:" + +#, c-format +msgid "%s's Password: " +msgstr "%s's ཆོག་ཡིག་:" + #, c-format msgid "Incorrect password for %s.\n" msgstr "%s གི་དོན་ལུ་ བདེན་མེད་ཀྱི་ཆོག་ཡིག\n" @@ -528,28 +351,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "ཆོག་ཡིག་ཡིག་སྣོད་ ཁ་ཕྱེ་མི་ཚུགས།\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོན་ལུ་ བར་སྟོང་སྤྲོད་མ་ཚུགས།\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "རིམ་སྒྲིག་བརྡ་དོན་གྱི་དོན་ལུ་ བར་སྟོང་སྤྲོད་མ་ཚུགས།\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s གི་དོན་ལུ་ རྒས་པའི་བརྡ་དོན་བསྒྱུར་བཅོས་འབད་དོ།\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: ཁྱོད་ཀྱི་ལག་ལེན་པའི་མིང་ གཏན་འབེབས་བཟོ་མི་ཚུགས།\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: གྲལ་ཐིག་ %d:ལག་ལེན་པ་ %sའཚོལ་མི་ཚུགས།\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -563,6 +483,10 @@ msgstr "སྣོད་ཐོ་མེད་ ཁྱིམ་དང་བཅས msgid "Cannot execute %s" msgstr "%sལག་ལེན་འཐབ་མི་ཚུགས།" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "ནུས་མེད་རྩ་བའི་སྣོད་ཐོ་ '%s'\n" @@ -571,6 +495,84 @@ msgstr "ནུས་མེད་རྩ་བའི་སྣོད་ཐོ་ '% msgid "Can't change root directory to '%s'\n" msgstr " '%s'ལུ་ རྩ་བའི་སྣོད་ཐོ་བསྒྱུར་བཅོས་འབད་མི་ཚུགས།\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: དྲན་ཚད་ལས་བརྒལ་བ།\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: ནུས་མེད་ཁྱིམ་གྱི་སྣོད་ཐོ་ '%s'།\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: བསྐྱར་མིང་བཏགས་:%s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: ཉེན་བརྡ་:རྩ་བསྐྲད་གཏང་མི་ཚུགས།" + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: གྱིབ་མའི་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: བསྐྱར་མིང་བཏགས་:%s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: ལག་ལེན་པ་ %sའདི་ ད་ལྟོ་རང་ནང་བསྐྱོད་འབད་ཡི།\n" @@ -630,6 +632,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -655,12 +660,15 @@ msgstr "ཆོག་ཡིག་ནུས་མེད།" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "རྩིས་ཐོའི་དུས་ཡོལ་ཚེས་གྲངས་(ཝའི་ཝའི་ཝའི་ཝའི་-ཨེམ་ཨེམ་-ཌི་ཌི་)།" -msgid "Last password change\t\t\t\t\t: " -msgstr "མཇུག་གི་ཆོག་ཡིག་བསྒྱུར་བཅོས་\t\t\t\t\t: " - msgid "never" msgstr "ནམ་ཡང་" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "མཇུག་གི་ཆོག་ཡིག་བསྒྱུར་བཅོས་\t\t\t\t\t: " + msgid "password must be changed" msgstr "ཆོག་ཡིག་འདི་བསྒྱུར་བཅོས་འབད་དགོ" @@ -828,14 +836,6 @@ msgstr "%s: '%s' ནང་ལུ་ ཁྲིམས་འགལ་ཡིག་ msgid "%s: user '%s' does not exist\n" msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: ཨེན་ཨའི་ཨེསི་ ཞབས་ཏོག་སྤྱོད་མི་གུ་ ལག་ལེན་པ་ '%s' བསྒྱུར་བཅོས་འབད་མི་ཚུགས།\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' འདི་ ཞབས་ཏོག་སྤྱོད་མི་འདི་གི་དོན་ལུ་ ཨེན་ཨའི་ཨེསི་ ཨམ་ཨིན།\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%sགི་དོན་ལུ་ ལག་ལེན་པའི་བརྡ་དོན་ བསྒྱུར་བཅོས་འབད་དོ།\n" @@ -864,6 +864,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: -a ཟུར་རྟགས་འདི་ -Gཟུར་རྟགས་དང་གཅིག་ཁར་རྐྱངམ་ཅིག་ཆོག\n" @@ -914,6 +918,15 @@ msgstr "" msgid "Login Shell" msgstr "ནང་བསྐྱོད་ཀྱི་ཤལ།" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "ཁྱོད་ཀྱིས་ %sགི་དོན་ལུ་ ཤལ་བསྒྱུར་བཅོས་མི་འབདཝ་འོང་།\n" @@ -926,6 +939,10 @@ msgstr "%sགི་དོན་ལུ་ ནང་བསྐྱོད་ཤལ་ msgid "%s: Invalid entry: %s\n" msgstr "%s: ནུས་མེད་ཀྱི་ཐོ་བཀོད་:%s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s འདི་ནུས་མེད་ཀྱི་ཤལ་ཨིན།\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s འདི་ནུས་མེད་ཀྱི་ཤལ་ཨིན།\n" @@ -1136,9 +1153,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1151,6 +1165,10 @@ msgstr "ནུས་མེད་ལག་ལེན་པའི་མིང་ '% msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s འདི་ ནུས་ཅན་གྱི་སྡེ་ཚན་མིང་མེན་པས།\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "ནུས་མེད་སྡེཚན་གྱི་མིང་ '%s'\n" @@ -1193,14 +1211,6 @@ msgstr "%s: ཨེན་ཨའི་ཨེསི་ ཞབས་ཏོག་ས msgid "%s: group '%s' does not exist\n" msgstr "%s: སྡེ་ཚན་ %sམེད།\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: སྡེ་ཚན་ '%s' འདི་ ཨེན་ཨའི་ཨེསི་སྡེ་ཚན་ཨིན།\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %sའདི་ ཨེན་ཇི་ཨེསི་ ཨམ་ཨིན།\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: ལག་ལེན་པ་ %sའདི་ ཨེན་ཨའི་ཨེསི་ ལག་ལེན་པ་ཅིག་ཨིན།\n" @@ -1276,10 +1286,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "ནུས་མེད་སྡེཚན་གྱི་མིང་ '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: སྡེ་ཚན་ %s འདི་ ཨེན་ཇི་ཨེསི་ སྡེ་ཚན་ཨིན།\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: མ་ཤེས་པའི་ལག་ལེན་པ་%s\n" @@ -1394,7 +1400,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1488,10 +1494,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"utmpཐོ་བཀོད་མིན་འདུག ཁྱོད་ཀྱིས་ གནས་རིམ་དམའ་ཤོས་\"sh\"གི་ནང་ལས་ \"login\"ལག་ལེན་འཐབ་དགོ" - #, fuzzy, c-format msgid "" "\n" @@ -1525,14 +1527,6 @@ msgstr "ནང་བསྐྱོད་བདེན་མེད།" msgid "Cannot find user (%s)\n" msgstr "%s: གྲལ་ཐིག་ %d:ལག་ལེན་པ་ %sའཚོལ་མི་ཚུགས།\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s ནང་བསྐྱོད་: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: ཁ་སྤེལ་བ་འཐུས་ཤོར་:%s" @@ -1569,7 +1563,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1594,17 +1589,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ཐོ་'%s'།\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1638,14 +1629,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1666,6 +1656,10 @@ msgstr "%s: ནུས་མེད་ལག་ལེན་པའི་མིང msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'།\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s:གྲལ་ཐིག་%d: ནུས་མེད་གྲལ་ཐིག་\n" @@ -1686,6 +1680,10 @@ msgstr "%s: གྲལ་ཐིག་ %d: ཇི་ཨའི་ཌི་ གས msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: བསྐྱར་མིང་བཏགས་:%s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: གྲལ་ཐིག་ %d: ཆོག་ཡིག་དུས་མཐུན་བཟོ་མི་ཚུགས།\n" @@ -1706,14 +1704,14 @@ msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱ msgid "%s: line %d: can't update entry\n" msgstr "%s: གྲལ་ཐིག་ %d: ཐོ་བཀོད་དུས་མཐུན་བཟོ་མི་ཚུགས།\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: %sགསར་བསྐྲུན་འབད་མི་ཚུགས།\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: ཁེ་དབང་(%s)ཚུ་བཀོག་ནིའི་འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: སྡེ་ཚན་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མི་ཚུགས།\n" @@ -1772,6 +1770,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "ཆོག་ཡིག་རྙིངམ་:" @@ -1787,6 +1788,11 @@ msgid "" "Please use a combination of upper and lower case letters and numbers.\n" msgstr "ཆོག་ཡིག་གསརཔ་བཙུགས་(%d གི་ཉུང་མཐའ་ %dཡིག་འབྲུའི་མང་མཐའ་)།\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n" + msgid "New password: " msgstr "ཆོག་ཡིག་གསརཔ་:" @@ -1828,6 +1834,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: མཛོད་གནས་ %sའདི་ རྒྱབ་སྐྱོར་མ་འབད་བས།\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1971,11 +1981,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2048,6 +2056,11 @@ msgstr "ཁྱོད་ ཟླ་%sལུ་ དབང་སྤྲོད་མ msgid "No passwd entry for user '%s'\n" msgstr "'རྩ་བ་'གི་དོན་ལུ་ ཆོག་ཡིག་ཐོ་བཀོད་མེད།" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: ཊར་མི་ནཱལ་ལས་གཡོག་བཀོལ་དགོ\n" @@ -2093,6 +2106,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2103,10 +2122,6 @@ msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གས msgid "%s: cannot create directory for defaults file\n" msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ ཁ་ཕྱེ་མི་ཚུགས།\n" @@ -2123,10 +2138,6 @@ msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབ msgid "%s: rename: %s: %s\n" msgstr "%s: བསྐྱར་མིང་བཏགས་:%s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: སྡེ་ཚན་ '%s' འདི་ ཨེན་ཨའི་ཨེསི་སྡེ་ཚན་ཨིན།\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: སྡེ་ཚན་མང་རབས་ཅིག་གསལ་བཀོད་འབད་ཡོདཔ་(མང་མཐའ་ %d)།\n" @@ -2236,6 +2247,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ཐོ་'%s'།\n" @@ -2366,6 +2382,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "ཡིག་སྒྲོམ་ཡིག་སྣོད་གྱི་གནང་བ་ གཞི་སྒྲིག་འབད་དོ།" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "ཡིག་སྒྲོམ་ཡིག་སྣོད་ གསར་བསྐྲུན་འབད་དོ།" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "ཡིག་སྒྲོམ་ཡིག་སྣོད་ གསར་བསྐྲུན་འབད་དོ།" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2486,10 +2512,6 @@ msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱ msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: སྣོད་ཐོ་ %s འདི་ %s ལུ་ བསྐྱར་མིང་བཏགས་མི་ཚུགས།\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: ལག་ལེན་པ་ %sའདི་ ཨེན་ཨའི་ཨེསི་ ལག་ལེན་པ་ཅིག་ཨིན།\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: ནུས་མེད་ཁྱིམ་གྱི་སྣོད་ཐོ་ '%s'།\n" @@ -2588,6 +2610,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2671,10 +2697,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: ཆོག་ཡིག་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མ་ཚུགས།\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: ཉེན་བརྡ་: %s འདི་ %s གིས་ བདག་དབང་བཟུངམ་མེན།\n" @@ -2780,8 +2814,9 @@ msgid "failed to stat edited file" msgstr "ཡིག་སྒྲོམ་གྱི་བསྐྱར་མིང་བཏགས་ནི་ལུ་ འཛོལ་བ།" #, fuzzy -msgid "failed to allocate memory" -msgstr "ཡིག་སྒྲོམ་བདག་པོ་སོར་ནི་ལུ་ འཐུས་ཤོར་བྱུང་ཡོདཔ།" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: ཡིག་སྣོད་ཁ་ཕྱེ་མི་ཚུགས།\n" #, fuzzy msgid "failed to create backup file" @@ -2795,6 +2830,56 @@ msgstr "%s: %sསོར་ཆུད་འབད་མ་ཚུགས་: %s (ཁ msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ཐོ་'%s'།\n" +#~ msgid "Environment overflow\n" +#~ msgstr "མཐའ་འཁོར་ལུད་སོང་བ།\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: ཨེན་ཨའི་ཨེསི་ ཞབས་ཏོག་སྤྱོད་མི་གུ་ ལག་ལེན་པ་ '%s' བསྒྱུར་བཅོས་འབད་མི་ཚུགས།\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' འདི་ ཞབས་ཏོག་སྤྱོད་མི་འདི་གི་དོན་ལུ་ ཨེན་ཨའི་ཨེསི་ ཨམ་ཨིན།\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: སྡེ་ཚན་ '%s' འདི་ ཨེན་ཨའི་ཨེསི་སྡེ་ཚན་ཨིན།\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %sའདི་ ཨེན་ཇི་ཨེསི་ ཨམ་ཨིན།\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: སྡེ་ཚན་ %s འདི་ ཨེན་ཇི་ཨེསི་ སྡེ་ཚན་ཨིན།\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: སྡེ་ཚན་ '%s' འདི་ ཨེན་ཨའི་ཨེསི་སྡེ་ཚན་ཨིན།\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: ལག་ལེན་པ་ %sའདི་ ཨེན་ཨའི་ཨེསི་ ལག་ལེན་པ་ཅིག་ཨིན།\n" + +#~ msgid "too simple" +#~ msgstr "ཤིན་ཏུ་འཇམ་སམ།" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "utmpཐོ་བཀོད་མིན་འདུག ཁྱོད་ཀྱིས་ གནས་རིམ་དམའ་ཤོས་\"sh\"གི་ནང་ལས་ \"login\"ལག་ལེན་འཐབ་དགོ" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ཐོ་'%s'།\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "ཡིག་སྒྲོམ་བདག་པོ་སོར་ནི་ལུ་ འཐུས་ཤོར་བྱུང་ཡོདཔ།" + #~ msgid "Usage: id\n" #~ msgstr "ལག་ལེན་པ་: id\n" @@ -2810,10 +2895,6 @@ msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ #~ msgid "%s: password expiry information changed.\n" #~ msgstr "ཆོག་ཡིག་དུས་ཡོལ་ཉེན་བརྡ།" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "ལག་ལེན་པའི་མིང་ འདྲེན་ལམ་ ལས་ མཇུག་མཐའ།" diff --git a/po/el.gmo b/po/el.gmo index a80aa79..cd53fce 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index 9de273b..c1e8ee8 100644 --- a/po/el.po +++ b/po/el.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow_po_el\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2012-01-21 00:22+0200\n" "Last-Translator: Thomas Vasileiou \n" "Language-Team: Greek \n" @@ -21,230 +21,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.10.2\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "η μέθοδος κρυπτογράφησης δεν υποστηρίζεται από το libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "λάθος διαμόρφωση - δεν μπορεί να αναλυθεί η τιμή %s : '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Αδυναμία δέσμευσης χώρου για πληροφορίες διαμόρφωσης.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"σφάλμα διαμόρφωσης - άγνωστο αντικείμενο '%s' (ειδοποιήστε το διαχειριστή)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: το nscd δεν τερμάτισε κανονικά (σήμα %d)\n" - -#, fuzzy, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: το ncsd τερμάτισε με κατάσταση εξόδου %d" - -msgid "Password: " -msgstr "Συνθηματικό: " - -#, c-format -msgid "%s's Password: " -msgstr "Του %s το Συνθηματικό: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Αδυναμία εγκαθίδρυσης διεπαφής ελέγχου - ματαίωσης.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Δεν μπορώ να δημιουργήσω διαχειριστή του SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "Η πολιτική του SELinux δεν διαχειρίζεται\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Αδυναμία ανάγνωσης της αποθηκευμένης πολιτικής του SELinux\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Αδυναμία δημιουργίας σύνδεση διαχείρισης του SELinux\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Αδυναμία εκκίνησης συναλλαγής SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Αδυναμία ανάκτησης του χρήστη SE για το %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Αδυναμία ρύθμισης του πεδίου SE για το %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Αδυναμία ρύθμισης του ονόματος SE για το χρήστη %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Αδυναμία τροποποίησης της χαρτογράφησης σύνδεσης για το χρήστη %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Αδυναμία δημιουργίας χαρτογράφησης σύνδεσης SELinux για το χρήστη %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Αδυναμία ρύθμισης του ονόματος χρήστη %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Αδυναμία ρύθμισης του SELinux χρήστη %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Αδυναμία προσθήκης χαρτογράφηση σύνδεσης για το χρήστη %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Αδυναμία εκκίνησης της διαχείρισης SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Αδυναμία δημιουργίας κλειδιού για το χρήστη SELinux\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Ο SELinux χρήστης δεν μπορεί να επαληθευτεί\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Αδυναμία τροποποίησης της χαρτογράφησης χρήστη SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Αδυναμία προσθήκης της χαρτογράφησης χρήστη SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Αδυναμία παράδοσης της συναλλαγής SELinux\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Δεν έχει οριστεί χαρτογράφηση σύνδεσης για τον χρήστη %s, είναι ΟΚ εάν " -"χρησιμοποιηθεί η προκαθορισμένη χαρτογράφηση\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"Η χαρτογράφηση σύνδεσης για το χρήστη %s καθορίζεται από το πλαίσιο της " -"πολιτική και δεν μπορεί να διαγραφεί\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Αδυναμία διαγραφής της χαρτογράφησης σύνδεσης για το χρήστη %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: δεν υπάρχει ελεύθερη μνήμη\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: Αδυναμία εκτέλεσης του stat %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: το %s δεν είναι ούτε κατάλογος ούτε συμβολικός σύνδεσμος\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Αδυναμία ανάγνωσης του συμβολικού συνδέσμου %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Ύποπτα μεγάλος συμβολικός σύνδεσμος: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Αδυναμία δημιουργίας καταλόγου %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Αδυναμία αλλαγής ιδιοκτήτη του %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Αδυναμία αλλαγής τρόπο λειτουργίας του %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: αποσύνδεση: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Αδυναμία διαγραφής του καταλόγου %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Αδυναμία μετονομασίας του %s σε %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Αδυναμία διαγραφής %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Αδυναμία δημιουργίας συμβολικού συνδέσμου %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Αδυναμία αλλαγή ιδιοκτητών του %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Αδυναμία εκτέλεσης του lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "" -"%s: Προειδοποίηση, δεν υπάρχει tcb αρχείο σκιωδών συνθηματικών για το χρήστη " -"%s.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Επείγον: το tcb αρχείο σκιωδών συνθηματικών του %s δεν φέρει το σύνηθες " -"st_nlink=1.\n" -"Ο λογαριασμός θα παραμείνει κλειδωμένος.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Αδυναμία ανοίγματος αρχείου %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Προειδοποίηση: άγνωστη ομάδα %s\n" @@ -291,6 +67,11 @@ msgstr "Αδυναμία αλλαγής ιδιοκτήτη ή τρόπο λει msgid "%s: failed to unlock %s\n" msgstr "%s: Αποτυχία ξεκλειδώματος %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, c-format msgid "%s: " msgstr "%s: " @@ -298,8 +79,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Υπερχείλιση περιβάλλοντος\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "η μέθοδος κρυπτογράφησης δεν υποστηρίζεται από το libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -418,8 +200,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: αδυναμία λήψης μοναδικού UID (δεν υπάρχουν διαθέσιμα UID)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "λάθος διαμόρφωση - δεν μπορεί να αναλυθεί η τιμή %s : '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Αδυναμία δέσμευσης χώρου για πληροφορίες διαμόρφωσης.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"σφάλμα διαμόρφωσης - άγνωστο αντικείμενο '%s' (ειδοποιήστε το διαχειριστή)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -451,7 +241,7 @@ msgstr "Αδυναμία ρύθμισης του ονόματος χρήστη % #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: αδυναμία ανοίγματος του αρχείου\n" #, fuzzy, c-format @@ -464,9 +254,22 @@ msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη msgid "%s: write to %s failed: %s\n" msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη %s (chown): %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη %s (chown): %s\n" + msgid "Too many logins.\n" msgstr "Πολλές είσοδοι στο σύστημα.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "Έχετε νέα γράμματα." @@ -476,6 +279,14 @@ msgstr "Κανένα γράμμα." msgid "You have mail." msgstr "Έχετε γράμματα." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: το nscd δεν τερμάτισε κανονικά (σήμα %d)\n" + +#, fuzzy, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: το ncsd τερμάτισε με κατάσταση εξόδου %d" + msgid "no change" msgstr "καμιά αλλαγή" @@ -488,9 +299,6 @@ msgstr "αλλαγές κεφαλαίων/πεζών μόνο" msgid "too similar" msgstr "αρκετά παρόμοιο" -msgid "too simple" -msgstr "πολύ απλό" - msgid "rotated" msgstr "κυλιόμενο" @@ -536,77 +344,273 @@ msgid "" "%s\n" msgstr "συνθηματικό: pam_start() απέτυχε, σφάλμα %d\n" +msgid "Password: " +msgstr "Συνθηματικό: " + +#, c-format +msgid "%s's Password: " +msgstr "Του %s το Συνθηματικό: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Εσφαλμένο συνθηματικό για %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: πολλαπλές επιλογές --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: η επιλογή '%s' απαιτεί μία τιμή\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: αποτυχία απόρριψης προνομίων (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: διαδρομή chroot μη έγκυρη '%s'\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: αδυναμία προσπέλαση του καταλόγου chroot %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "" +"%s: αδυναμία αλλαγής του φαινομενικού γονικού καταλόγου (chroot) %s: %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: αδυναμία προσπέλαση του καταλόγου chroot %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Μη έγκυρη τιμή για το ENCRYPT_METHOD: '%s'.\n" +"Επιλέγεται η προκαθορισμένη DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Αδυναμία εγκαθίδρυσης διεπαφής ελέγχου - ματαίωσης.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Δεν μπορώ να δημιουργήσω διαχειριστή του SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "Η πολιτική του SELinux δεν διαχειρίζεται\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Αδυναμία ανάγνωσης της αποθηκευμένης πολιτικής του SELinux\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Αδυναμία δημιουργίας σύνδεση διαχείρισης του SELinux\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Αδυναμία εκκίνησης συναλλαγής SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Αδυναμία ανάκτησης του χρήστη SE για το %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Αδυναμία ρύθμισης του πεδίου SE για το %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Αδυναμία ρύθμισης του ονόματος SE για το χρήστη %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Αδυναμία τροποποίησης της χαρτογράφησης σύνδεσης για το χρήστη %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Αδυναμία δημιουργίας χαρτογράφησης σύνδεσης SELinux για το χρήστη %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Αδυναμία ρύθμισης του ονόματος χρήστη %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Αδυναμία ρύθμισης του SELinux χρήστη %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Αδυναμία προσθήκης χαρτογράφηση σύνδεσης για το χρήστη %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Αδυναμία εκκίνησης της διαχείρισης SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Αδυναμία δημιουργίας κλειδιού για το χρήστη SELinux\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Ο SELinux χρήστης δεν μπορεί να επαληθευτεί\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Αδυναμία τροποποίησης της χαρτογράφησης χρήστη SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Αδυναμία προσθήκης της χαρτογράφησης χρήστη SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Αδυναμία παράδοσης της συναλλαγής SELinux\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Δεν έχει οριστεί χαρτογράφηση σύνδεσης για τον χρήστη %s, είναι ΟΚ εάν " +"χρησιμοποιηθεί η προκαθορισμένη χαρτογράφηση\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"Η χαρτογράφηση σύνδεσης για το χρήστη %s καθορίζεται από το πλαίσιο της " +"πολιτική και δεν μπορεί να διαγραφεί\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Αδυναμία διαγραφής της χαρτογράφησης σύνδεσης για το χρήστη %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Αδυναμία αλλαγής καταλόγου στον '%s'\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Χωρίς κατάλογο, εισαγωγή με ΜΗΤΡΙΚΟ_ΚΑΤΑΛΟΓΟ=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Αδυναμία εκτέλεσης %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Μη έγκυρος πρωταρχικός κατάλογος '%s'\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Αδυναμία αλλαγής του πρωταρχικού καταλόγου σε '%s'\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: δεν υπάρχει ελεύθερη μνήμη\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: Αδυναμία εκτέλεσης του stat %s: %s\n" + #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Εσφαλμένο συνθηματικό για %s.\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: το %s δεν είναι ούτε κατάλογος ούτε συμβολικός σύνδεσμος\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: πολλαπλές επιλογές --root\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Αδυναμία ανάγνωσης του συμβολικού συνδέσμου %s: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: η επιλογή '%s' απαιτεί μία τιμή\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Ύποπτα μεγάλος συμβολικός σύνδεσμος: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: αποτυχία απόρριψης προνομίων (%s)\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: Αδυναμία δημιουργίας καταλόγου %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: διαδρομή chroot μη έγκυρη '%s'\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Αδυναμία αλλαγής ιδιοκτήτη του %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: αδυναμία προσπέλαση του καταλόγου chroot %s: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Αδυναμία αλλαγής τρόπο λειτουργίας του %s: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: αδυναμία προσπέλαση του καταλόγου chroot %s: %s\n" +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: αποσύνδεση: %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "" -"%s: αδυναμία αλλαγής του φαινομενικού γονικού καταλόγου (chroot) %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Αδυναμία διαγραφής του καταλόγου %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Αδυναμία μετονομασίας του %s σε %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Μη έγκυρη τιμή για το ENCRYPT_METHOD: '%s'.\n" -"Επιλέγεται η προκαθορισμένη DES.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Αδυναμία διαγραφής %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Αδυναμία δημιουργίας συμβολικού συνδέσμου %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Αδυναμία αλλαγής καταλόγου στον '%s'\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Αδυναμία αλλαγή ιδιοκτητών του %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Χωρίς κατάλογο, εισαγωγή με ΜΗΤΡΙΚΟ_ΚΑΤΑΛΟΓΟ=/" +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Αδυναμία εκτέλεσης του lstat %s: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "Αδυναμία εκτέλεσης %s" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "" +"%s: Προειδοποίηση, δεν υπάρχει tcb αρχείο σκιωδών συνθηματικών για το χρήστη " +"%s.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Μη έγκυρος πρωταρχικός κατάλογος '%s'\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Επείγον: το tcb αρχείο σκιωδών συνθηματικών του %s δεν φέρει το σύνηθες " +"st_nlink=1.\n" +"Ο λογαριασμός θα παραμείνει κλειδωμένος.\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Αδυναμία αλλαγής του πρωταρχικού καταλόγου σε '%s'\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Αδυναμία ανοίγματος αρχείου %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -689,6 +693,13 @@ msgstr "" " -R, --root ΚΑΤΑΛΟΓΟΣ_CHROOT κατάλογος στον οποίο να εφαρμοστεί " "chroot\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" +" -R, --root ΚΑΤΑΛΟΓΟΣ_CHROOT κατάλογος στον οποίο να εφαρμοστεί " +"chroot\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -716,12 +727,15 @@ msgstr "Ανενεργό συνθηματικό" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Ημερομηνία Λήξης Λογαριασμού (ΧΧΧΧ-ΜΜ-ΗΗ)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Τελευταία αλλαγή συνθηματικού \t\t\t\t\t: " - msgid "never" msgstr "Ποτέ" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Τελευταία αλλαγή συνθηματικού \t\t\t\t\t: " + msgid "password must be changed" msgstr "το συνθηματικό πρέπει να αλλαχθεί" @@ -900,14 +914,6 @@ msgstr "%s: '%s' περιέχει μη έγκυρους χαρακτήρες\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: Ο χρήστης '%s' δεν υπάρχει\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: αδυναμία αλλαγής χρήστη '%s' στον εξυπηρετητή NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' είναι ο κύριος διακομιστής NIS γι'αυτόν τον εξυπηρετούμενο.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Αλλαγή πληροφοριών χρήστη για τον %s\n" @@ -949,6 +955,11 @@ msgstr "" " -s, --sha-rounds αριθμός κύκλων SHA για τους \n" " αλγόριθμους κρυπτογράφησης SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: η μέθοδος κρυπτογράφησης δεν υποστηρίζεται: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: η σημαία %s επιτρέπεται μόνο με τη σημαία %s\n" @@ -1001,6 +1012,16 @@ msgstr "" msgid "Login Shell" msgstr "Κέλυφος Εισόδου" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Αδυναμία ανάκτησης μεγέθους του %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Δεν μπορείτε να αλλάξετε το φλοιό για το(ν) '%s'.\n" @@ -1013,6 +1034,11 @@ msgstr "Αλλαγή του φλοιού για τον %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Μη έγκυρη καταχώρηση: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: ο %s δεν είναι έγκυρος φλοιός.\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: ο %s δεν είναι έγκυρος φλοιός.\n" @@ -1262,13 +1288,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system δημιουργία λογαριασμού συστήματος\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" -" -R, --root ΚΑΤΑΛΟΓΟΣ_CHROOT κατάλογος στον οποίο να εφαρμοστεί " -"chroot\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1283,6 +1302,11 @@ msgstr "Μη έγκυρο όνομα χρήστη '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: Το '%s' δεν είναι έγκυρο όνομα ομάδας\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Αδυναμία ανοίγματος αρχείου %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: Μη έγκυρο ID ομάδας '%s'\n" @@ -1327,14 +1351,6 @@ msgstr "%s: αδυναμία απομάκρυνσης της πρωταρχικ msgid "%s: group '%s' does not exist\n" msgstr "%s: Η ομάδα '%s' δεν υπάρχει\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: Η ομάδα '%s' είναι NIS ομάδα.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: Ο %s είναι ο κύριος διακομιστής NIS\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: Ο χρήστης '%s' είναι ήδη μέλος του '%s'\n" @@ -1434,10 +1450,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: μη έγκυρο όνομα ομάδας '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: Η ομάδα %s είναι NIS ομάδα\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: άγνωστος χρήστης %s\n" @@ -1565,7 +1577,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all προβολή των εγγραφών του faillog για όλους " @@ -1668,11 +1680,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Μάλλον δεν είναι δυνατή η λειτουργία χωρίς ενεργό χρήστη root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Δεν υπάρχει καταχώριση utmp. Πρέπει να εκτελέσετε \"login\" από το \"sh\" " -"του πιο χαμηλού επιπέδου" - #, c-format msgid "" "\n" @@ -1706,14 +1713,6 @@ msgstr "Διαδικασία εισόδου απέτυχε" msgid "Cannot find user (%s)\n" msgstr "Αδυναμία εύρεσης χρήστη (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: αποτυχία διχάλωσης: %s" @@ -1750,7 +1749,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1777,20 +1777,15 @@ msgstr "%s: αποτυχία απομάκρυνσης του %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: Αποτυχία ξεκλειδώματος %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: αποτυχία εύρεσης καταλόγου tcb %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Αδυναμία δημιουργίας tcb καταλόγου για το χρήστη %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1823,14 +1818,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Αδυναμία δημιουργίας tcb καταλόγου για το χρήστη %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1854,6 +1849,10 @@ msgstr "%s: μη έγκυρο ID χρήστη '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: μη έγκυρο όνομα χρήστη '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: γραμμή %d: μη έγκυρη γραμμή\n" @@ -1876,6 +1875,11 @@ msgstr "%s: γραμμή %d: αδυναμία δημιουργίας ομάδα msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: γραμμή %d: Ο χρήστης '%s' δεν υπάρχει στο %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: αποσύνδεση: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: γραμμή %d: αδυναμία ανανέωση συνθηματικού\n" @@ -1897,14 +1901,14 @@ msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη msgid "%s: line %d: can't update entry\n" msgstr "%s: γραμμή %d: αδυναμία ανανέωσης καταχώρησης\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: αποτυχία προετοιμασίας της νέας εγγραφής %s '%s'\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: αδυναμία δημιουργίας του χρήστη\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: αποτυχία προετοιμασίας της νέας εγγραφής %s '%s'\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: αδυναμία ανανέωσης για το αρχείο ομάδων\n" @@ -1990,6 +1994,12 @@ msgstr "" "πριν\n" " την αλλαγή του συνθηματικού σε ΜΕΓ_ΗΜΕΡΕΣ\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list προβολή πληροφοριών ηλικίας λογαριασμών\n" + msgid "Old password: " msgstr "Παλιό Συνθηματικό: " @@ -2011,6 +2021,11 @@ msgstr "" "Παρακαλώ χρησιμοποιήστε ένα συνδυασμό από κεφαλαία και μικρά γράμματα\n" "καθώς και αριθμούς.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: Πολύ μακριά πεδία\n" + msgid "New password: " msgstr "Νέο Συνθηματικό: " @@ -2055,6 +2070,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: η αποθήκη %s δεν υποστηρίζεται\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: μόνο ο root μπορεί να χρησιμοποιήσει την επιλογή -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2213,11 +2233,9 @@ msgstr "%s: δυσλειτουργία σήματος\n" msgid "Session terminated, terminating shell..." msgstr "Συνεδρία τερματίστηκε, τερματισμός φλοιού..." -#, c-format msgid " ...killed.\n" msgstr " ...σκοτώθηκε.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2305,6 +2323,11 @@ msgstr "%s: Δεν έχετε άδεια για su τη δεδομένη στι msgid "No passwd entry for user '%s'\n" msgstr "Δεν υπάρχει καταχώρηση συνθηματικού για το χρήστη '%s'\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "Μη έγκυρο όνομα χρήστη '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: πρέπει να εκτελεστεί από τερματικό\n" @@ -2350,6 +2373,13 @@ msgstr "%s: το %s δημιουργήθηκε, αλλά δεν μπορεί ν msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: η %s διαμόρφωση στο %s θα αγνοηθεί\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: η %s διαμόρφωση στο %s θα αγνοηθεί\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2360,10 +2390,6 @@ msgstr "%s: αδυναμία δημιουργίας νέου αρχείου πρ msgid "%s: cannot create directory for defaults file\n" msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: αδυναμία ανοίγματος νέου αρχείου προκαθορισμένων ρυθμίσεων\n" @@ -2380,10 +2406,6 @@ msgstr "%s: Αδυναμία δημιουργίας συμβολικού συν msgid "%s: rename: %s: %s\n" msgstr "%s: μετονομασία: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: Η ομάδα '%s' είναι NIS ομάδα.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Προσδιορίστηκαν υπερβολικές ομάδες (μεγ. %d).\n" @@ -2530,6 +2552,17 @@ msgstr "" " -Z, --selinux-user ΧΡΗΣΤΗΣ_SE χρήση συγκεκριμένου ΧΡΗΣΤΗΣ_SE για την " "χαρτογράφηση χρήστη SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user ΧΡΗΣΤΗΣ_SE χρήση συγκεκριμένου ΧΡΗΣΤΗΣ_SE για την " +"χαρτογράφηση χρήστη SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: Μη έγκυρος κατάλογος βάσης '%s'\n" @@ -2672,6 +2705,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Ρύθμιση αδειών του αρχείου mailbox" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Δημιουργία αρχείου mailbox" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Δημιουργία αρχείου mailbox" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2809,10 +2852,6 @@ msgstr "%s: Αδυναμία διαγραφής των περιεχομένων msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Αδυναμία διαγραφής των αρχείων tcb για το χρήστη %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: Ο χρήστης %s είναι NIS χρήστης\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s ο αρχικός κατάλογος χρήστη (%s) δεν βρέθηκε\n" @@ -2948,6 +2987,16 @@ msgstr "" " -Z, --selinux-user ΧΡΗΣΤΗΣ_SE νέα χαρτογράφηση χρήστη SELinux για το " "λογαριασμό του χρήστη\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user ΧΡΗΣΤΗΣ_SE νέα χαρτογράφηση χρήστη SELinux για το " +"λογαριασμό του χρήστη\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3047,12 +3096,26 @@ msgstr "" "%s: αποτυχία αντιγραφής της εγγραφής του lastlog από το χρήστη %lu στο " "χρήστη %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: αποτυχία αντιγραφής της εγγραφής του lastlog από το χρήστη %lu στο " +"χρήστη %lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: αποτυχία αντιγραφής της εγγραφής του faillog από το χρήστη %lu στο " "χρήστη %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: αποτυχία αντιγραφής της εγγραφής του faillog από το χρήστη %lu στο " +"χρήστη %lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: προειδοποίηση: Το %s δεν ανήκει στον %s\n" @@ -3155,8 +3218,10 @@ msgstr "αποτυχία αποσύνδεσης του προσωρινού αρ msgid "failed to stat edited file" msgstr "αποτυχία εκτέλεσης της εφαρμογής stat για το επεξεργασμένο αρχείο" -msgid "failed to allocate memory" -msgstr "αποτυχία κατανομής μνήμης" +#, fuzzy +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: αδυναμία ανοίγματος του αρχείου\n" msgid "failed to create backup file" msgstr "αποτυχία δημιουργίας αντίγραφου ασφαλείας" @@ -3169,6 +3234,58 @@ msgstr "%s: αδυναμία επαναφοράς %s: %s (οι αλλαγές ε msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: αποτυχία εύρεσης καταλόγου tcb %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Υπερχείλιση περιβάλλοντος\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: αδυναμία αλλαγής χρήστη '%s' στον εξυπηρετητή NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "" +#~ "%s: '%s' είναι ο κύριος διακομιστής NIS γι'αυτόν τον εξυπηρετούμενο.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: Η ομάδα '%s' είναι NIS ομάδα.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: Ο %s είναι ο κύριος διακομιστής NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: Η ομάδα %s είναι NIS ομάδα\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: Η ομάδα '%s' είναι NIS ομάδα.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: Ο χρήστης %s είναι NIS χρήστης\n" + +#~ msgid "too simple" +#~ msgstr "πολύ απλό" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Δεν υπάρχει καταχώριση utmp. Πρέπει να εκτελέσετε \"login\" από το " +#~ "\"sh\" του πιο χαμηλού επιπέδου" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: αποτυχία εύρεσης καταλόγου tcb %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "αποτυχία κατανομής μνήμης" + #~ msgid "Usage: id\n" #~ msgstr "Χρήση: id\n" @@ -3184,10 +3301,6 @@ msgstr "%s: αποτυχία εύρεσης καταλόγου tcb %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: αλλαγή πληροφοριών λήξης συνθηματικού.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "Μη έγκυρο όνομα χρήστη '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Όνομα_Χρήστη Θύρα Από Τελευταία" diff --git a/po/es.gmo b/po/es.gmo index 4db21f5..802fd08 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 58f8775..b03242f 100644 --- a/po/es.po +++ b/po/es.po @@ -32,7 +32,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.4.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2011-11-23 23:56+0100\n" "Last-Translator: Francisco Javier Cuadrado \n" "Language-Team: Debian l10n Spanish \n" @@ -42,226 +42,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Hay varias entradas con el nombre «%s» en %s. Por favor, corríjalo " -"utilizando pwck o grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "¿libcrypt no permite utilizar el método de cifrado? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "error de configuración, no se pudo procesar el valor %s: «%s»" - -msgid "Could not allocate space for config info.\n" -msgstr "No se pudo reservar espacio para la información de configuración.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"error de configuración, elemento «%s» desconocido (informe al " -"administrador)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Contraseña: " - -#, c-format -msgid "%s's Password: " -msgstr "Contraseña de %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "No se pudo abrir la interfaz de auditoría, abortando.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "No se pudo reservar espacio para la información de configuración.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Cambiando la información de la edad para %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: no se pudo determinar su nombre de usuario.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: línea %d: no se puede encontrar el usuario %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: sin memoria\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: no se pudo realizar «stat» a %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s no es ni un directorio ni un enlace simbólico.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: no se pudo leer el enlace simbólico %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: enlace simbólico sospechosamente largo: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: no se pudo crear el directorio %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: no se pudo cambiar el dueño de %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: no se pudo cambiar el modo de %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: unlink: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: no se pudo eliminar el directorio %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: no se pudo renombrar %s a %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: no se pudo eliminar %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s no se pudo crear el enlace simbólico %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: no se pudieron cambiar los dueños de %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: no se pudo realizar «lstat» a %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: aviso, el usuario %s no tiene un fichero «tcb shadow».\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: emergencia: el tcb oculto de %s no es un fichero normal con st_nlink=1.\n" -"La cuenta se queda bloqueada.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: no se pudo abrir %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Aviso: grupo %s desconocido\n" @@ -310,6 +90,13 @@ msgstr "" msgid "%s: failed to unlock %s\n" msgstr "%s: se produjo un fallo al desbloquear %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Hay varias entradas con el nombre «%s» en %s. Por favor, corríjalo " +"utilizando pwck o grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -317,8 +104,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Desbordamiento de entorno\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "¿libcrypt no permite utilizar el método de cifrado? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -439,8 +227,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: no se pudo obtener un UID único (no hay más UID disponibles)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "error de configuración, no se pudo procesar el valor %s: «%s»" + +msgid "Could not allocate space for config info.\n" +msgstr "No se pudo reservar espacio para la información de configuración.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"error de configuración, elemento «%s» desconocido (informe al " +"administrador)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -470,7 +267,7 @@ msgstr "No se pudo reservar espacio para la información de configuración.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: no se puede abrir el fichero\n" #, fuzzy, c-format @@ -483,9 +280,22 @@ msgstr "%s: línea %d: chown %s falló: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: línea %d: chown %s falló: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: línea %d: chown %s falló: %s\n" + msgid "Too many logins.\n" msgstr "Demasiados accesos.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s nombre: " + msgid "You have new mail." msgstr "Tiene correo nuevo." @@ -495,6 +305,14 @@ msgstr "Sin correo." msgid "You have mail." msgstr "Tiene correo." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "sin cambios" @@ -507,9 +325,6 @@ msgstr "sólo cambios de mayúsculas/minúsculas" msgid "too similar" msgstr "demasiado similar" -msgid "too simple" -msgstr "demasiado simple" - msgid "rotated" msgstr "rotada" @@ -555,75 +370,263 @@ msgid "" "%s\n" msgstr "passwd: pam_start() falló, error %d\n" +msgid "Password: " +msgstr "Contraseña: " + +#, c-format +msgid "%s's Password: " +msgstr "Contraseña de %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Contraseña incorrecta para %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: se produjo un fallo al desprenderse de los privilegios (%s)\n" + +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: teléfono de casa incorrecto: «%s»\n" + +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: no se pudo crear el directorio %s: %s\n" + +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: se produjo un fallo al crear el directorio tcb para %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: no se pudo crear el directorio %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"El valor de ENCRYPT_METHOD no es válido: «%s».\n" +"Se usará DES, el valor predeterminado.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "No se pudo abrir la interfaz de auditoría, abortando.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "No se pudo reservar espacio para la información de configuración.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "No se pudo reservar espacio para la información de configuración.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Cambiando la información de la edad para %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: no se pudo determinar su nombre de usuario.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: línea %d: no se puede encontrar el usuario %s\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Incapaz de cambiar el directorio a «%s»\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Sin directorio, accediendo con HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "No se puede ejecutar %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Directorio raíz «%s» incorrecto\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "No se pudo cambiar el directorio raíz a «%s»\n" + #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Contraseña incorrecta para %s.\n" +msgid "%s: out of memory\n" +msgstr "%s: sin memoria\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: no se pudo realizar «stat» a %s: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s no es ni un directorio ni un enlace simbólico.\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: se produjo un fallo al desprenderse de los privilegios (%s)\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: no se pudo leer el enlace simbólico %s: %s\n" -#, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: teléfono de casa incorrecto: «%s»\n" +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: enlace simbólico sospechosamente largo: %s\n" -#, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" +#, c-format +msgid "%s: Cannot create directory %s: %s\n" msgstr "%s: no se pudo crear el directorio %s: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: no se pudo crear el directorio %s: %s\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: no se pudo cambiar el dueño de %s: %s\n" -#, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: se produjo un fallo al crear el directorio tcb para %s\n" +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: no se pudo cambiar el modo de %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: unlink: %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"El valor de ENCRYPT_METHOD no es válido: «%s».\n" -"Se usará DES, el valor predeterminado.\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: no se pudo eliminar el directorio %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: no se pudo renombrar %s a %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Incapaz de cambiar el directorio a «%s»\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: no se pudo eliminar %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Sin directorio, accediendo con HOME=/" +#, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s no se pudo crear el enlace simbólico %s: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "No se puede ejecutar %s" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: no se pudieron cambiar los dueños de %s: %s\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Directorio raíz «%s» incorrecto\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: no se pudo realizar «lstat» a %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "No se pudo cambiar el directorio raíz a «%s»\n" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: aviso, el usuario %s no tiene un fichero «tcb shadow».\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: emergencia: el tcb oculto de %s no es un fichero normal con st_nlink=1.\n" +"La cuenta se queda bloqueada.\n" + +#, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: no se pudo abrir %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -706,6 +709,13 @@ msgstr "" " -R, --root DIR_CHROOT establece DIR_CHROOT como el directorio\n" " al cual hacer chroot\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" +" -R, --root DIR_CHROOT establece DIR_CHROOT como el directorio\n" +" al cual hacer chroot\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -734,12 +744,15 @@ msgstr "Contraseña inactiva" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Fecha de caducidad de la cuenta (AAAA-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Último cambio de contraseña\t\t\t\t\t:" - msgid "never" msgstr "nunca" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Último cambio de contraseña\t\t\t\t\t:" + msgid "password must be changed" msgstr "se debe cambiar la contraseña" @@ -912,14 +925,6 @@ msgstr "%s: «%s» contiene caracteres ilegales\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: el usuario «%s» no existe\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: no se pudo cambiar el usuario «%s» en el cliente NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» es el NIS maestro para este cliente.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Cambiando la información de usuario para %s\n" @@ -960,6 +965,11 @@ msgstr "" " -s, --sha-rounds número de rondas SHA para los algoritmos\n" " de cifrado SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: método de cifrado no compatible: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: la opción %s sólo está permitida junto a la opción %s\n" @@ -1013,6 +1023,17 @@ msgstr "" msgid "Login Shell" msgstr "Consola de acceso" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: no se pudo conseguir el tamaño de %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "" +"%s: no se puede crear un nuevo fichero de preferencias predeterminadas\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "No debería cambiar la consola para «%s».\n" @@ -1025,6 +1046,11 @@ msgstr "Cambiando la consola de acceso para %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: entrada incorrecta: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s es una consola incorrecta.\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s es una consola incorrecta.\n" @@ -1270,9 +1296,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system crea una cuenta del sistema\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1287,6 +1310,11 @@ msgstr "nombre de usuario «%s» incorrecto\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» no es un nombre de grupo válido\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: no se pudo abrir %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: identificador de grupo «%s» incorrecto\n" @@ -1331,14 +1359,6 @@ msgstr "%s: no se pudo eliminar el grupo primario del usuario «%s»\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: el grupo «%s» no existe\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: el grupo «%s» es un grupo NIS\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s es el NIS maestro\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: el usuario «%s» ya es un miembro de «%s»\n" @@ -1434,10 +1454,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: nombre del grupo «%s» incorrecto\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: el grupo %s es un grupo NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: usuario desconocido %s\n" @@ -1564,7 +1580,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all muestra los registros de faillog para\n" @@ -1667,9 +1683,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: posiblemente no se puede trabajar sin el administrador\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Sin entrada utmp. Debe ejecutar «login» desde el nivel «sh» más bajo" - #, c-format msgid "" "\n" @@ -1703,14 +1716,6 @@ msgstr "Identificación incorrecta" msgid "Cannot find user (%s)\n" msgstr "%s: línea %d: no se puede encontrar el usuario %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s nombre: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: se produjo un fallo en la llamada a fork: %s" @@ -1746,7 +1751,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1773,20 +1779,15 @@ msgstr "%s: se produjo un fallo al eliminar %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: se produjo un fallo al desbloquear %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: se produjo un fallo al buscar el directorio tcb de %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: se produjo un fallo al crear el directorio tcb para %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1819,14 +1820,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: se produjo un fallo al crear el directorio tcb para %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1849,6 +1850,10 @@ msgstr "%s: identificador de usuario «%s» incorrecto\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: nombre de usuario «%s» incorrecto\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: línea %d: línea incorrecta\n" @@ -1871,6 +1876,11 @@ msgstr "%s: línea %d: no se pudo crear el grupo\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: línea %d: el usuario «%s» no existe en %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: unlink: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: línea %d: no se puede actualizar la contraseña\n" @@ -1892,14 +1902,14 @@ msgstr "%s: línea %d: chown %s falló: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: línea %d: no se puede actualizar la entrada\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: se produjo un fallo al preparar la nueva %s entrada «%s»\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: no se pudo crear el usuario\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: se produjo un fallo al preparar la nueva %s entrada «%s»\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: no se puede actualizar el fichero de grupo\n" @@ -1980,6 +1990,13 @@ msgstr "" "días\n" " antes de cambiar la contraseña\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list muestra la información de la edad de la " +"cuenta\n" + msgid "Old password: " msgstr "Contraseña antigua: " @@ -2000,6 +2017,11 @@ msgstr "" "de %d)\n" "Por favor, use una combinación de letras mayúsculas, minúsculas y números.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: campos demasiado largos\n" + msgid "New password: " msgstr "Nueva contraseña: " @@ -2043,6 +2065,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: repositorio %s no soportado\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: sólo el administrador puede utilizar la opción -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2199,11 +2226,9 @@ msgstr "%s: funcionamiento incorrecto de la señal\n" msgid "Session terminated, terminating shell..." msgstr "Sesión finalizada, parando la consola ..." -#, c-format msgid " ...killed.\n" msgstr " ... finalizado.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ... esperando a que el hijo finalice.\n" @@ -2291,6 +2316,11 @@ msgstr "%s: no está autorizado a usar su en este momento\n" msgid "No passwd entry for user '%s'\n" msgstr "Sin entrada de contraseña para el administrador («root»)" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nombre de usuario «%s» incorrecto\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: debe ejecutarse desde un terminal\n" @@ -2337,6 +2367,13 @@ msgstr "%s: se creó %s, pero no se pudo eliminar\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: se ignorará la configuración %s en %s\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: se ignorará la configuración %s en %s\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2349,11 +2386,6 @@ msgid "%s: cannot create directory for defaults file\n" msgstr "" "%s: no se puede crear un nuevo fichero de preferencias predeterminadas\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "" -"%s: no se puede crear un nuevo fichero de preferencias predeterminadas\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "" @@ -2371,10 +2403,6 @@ msgstr "%s no se pudo crear el enlace simbólico %s: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: renombrar: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: el grupo «%s» es un grupo NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: demasiados grupos especificados (el máximo es %d).\n" @@ -2524,6 +2552,18 @@ msgstr "" "usuario\n" " de SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user USUARIO_SE utiliza el usuario indicado para el " +"usuario\n" +" de SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: directorio base «%s» incorrecto\n" @@ -2673,6 +2713,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Estableciendo los permisos del fichero del buzón de correo" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Creando el fichero del buzón de correo" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Creando el fichero del buzón de correo" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2805,10 +2855,6 @@ msgstr "%s: no se pudo eliminar el contenido de %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: no se pudieron eliminar los ficheros tcb para %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: el usuario %s es un usuario NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s directorio personal (%s) no encontrado\n" @@ -2935,6 +2981,13 @@ msgstr "" " -Z, --selinux-user nuevo usuario de SELinux para la cuenta del\n" " usuario\n" +#, fuzzy +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user nuevo usuario de SELinux para la cuenta del\n" +" usuario\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3030,12 +3083,26 @@ msgstr "" "%s: se produjo un fallo al copiar la entrada de lastlog del usuario %lu al " "usuario %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: se produjo un fallo al copiar la entrada de lastlog del usuario %lu al " +"usuario %lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: se produjo un fallo al copiar la entrada de faillog del usuario %lu al " "usuario %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: se produjo un fallo al copiar la entrada de faillog del usuario %lu al " +"usuario %lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: aviso: %s no pertenece a %s\n" @@ -3138,8 +3205,10 @@ msgstr "se produjo un fallo al borrar el fichero temporal" msgid "failed to stat edited file" msgstr "se produjo un fallo al realizar el «stat» del fichero editado" -msgid "failed to allocate memory" -msgstr "se produjo un fallo al reservar memoria" +#, fuzzy +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: no se puede abrir el fichero\n" msgid "failed to create backup file" msgstr "se produjo un fallo al crear la copia de seguridad del fichero" @@ -3152,6 +3221,57 @@ msgstr "%s: no se puede restaurar %s: %s (sus cambios están en %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: se produjo un fallo al buscar el directorio tcb de %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Desbordamiento de entorno\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: no se pudo cambiar el usuario «%s» en el cliente NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» es el NIS maestro para este cliente.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: el grupo «%s» es un grupo NIS\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s es el NIS maestro\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: el grupo %s es un grupo NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "" +#~ "%s: no se puede crear un nuevo fichero de preferencias predeterminadas\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: el grupo «%s» es un grupo NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: el usuario %s es un usuario NIS\n" + +#~ msgid "too simple" +#~ msgstr "demasiado simple" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Sin entrada utmp. Debe ejecutar «login» desde el nivel «sh» más bajo" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: se produjo un fallo al buscar el directorio tcb de %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "se produjo un fallo al reservar memoria" + #~ msgid "Usage: id\n" #~ msgstr "Modo de uso: id\n" @@ -3167,10 +3287,6 @@ msgstr "%s: se produjo un fallo al buscar el directorio tcb de %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: información de caducidad de la contraseña cambiada.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nombre de usuario «%s» incorrecto\n" - #~ msgid "Username Port From Latest" #~ msgstr "Nombre Puerto De Último" diff --git a/po/eu.gmo b/po/eu.gmo index feb2c34..5c35de3 100644 Binary files a/po/eu.gmo and b/po/eu.gmo differ diff --git a/po/eu.po b/po/eu.po index 9c0558c..127e09b 100644 --- a/po/eu.po +++ b/po/eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: eu\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2011-11-26 19:42+0100\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" @@ -18,224 +18,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Pootle 1.2.1\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"'%s' izeneko sarrera anitz %s-en. Mesedez konpondu pwck edo grpck " -"erabiliaz.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "libcrypt-ek onartzen ez duen kriptografia metodoa? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "konfigurazio errorea - ezin da %s balioa analizatu: '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"konfigurazio errorea - %s item ezezaguna (eman honen berri " -"administratzaileari)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Pasahitza: " - -#, c-format -msgid "%s's Password: " -msgstr "%s (r)en pasahitza: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Ezin da auditatzeko interfazea ireki - uzten.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s(r)en data informazioa aldatzen\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: memoriarik ez\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: ezin da %s ezabatu\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s etxe-direktorioa (%s) ez dago\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: ezin da '%s' sarrera %s-tik kendu\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: ezin da %s direktorioa sortu\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: abisua: ezin da %s ezabatu: %s\n" - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: berrizendatu: %s: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: ezin da %s direktorioa %s gisa izenez aldatu\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: ezin da %s direktorioa %s gisa izenez aldatu\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: abisua: ezin da %s ezabatu: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: ezin da %s direktorioa sortu\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: ezin da %s ezabatu\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: `(%d lerroa, %s erabiltzailea) pasahitza ez da aldatu\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: berrizendatu: %s: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: ezin da %s ireki\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Abisua: %s talde ezezaguna\n" @@ -282,6 +64,13 @@ msgstr "Ezin da tty sarrera-estandar modu edo jabea aldatu: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: huts %s desblokeatzean\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"'%s' izeneko sarrera anitz %s-en. Mesedez konpondu pwck edo grpck " +"erabiliaz.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -289,8 +78,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Inguruneak gainezka egin du\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "libcrypt-ek onartzen ez duen kriptografia metodoa? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -394,8 +184,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: ezin da UID bakarra lortu (ez dago UID erabilgarri gehiago)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "konfigurazio errorea - ezin da %s balioa analizatu: '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"konfigurazio errorea - %s item ezezaguna (eman honen berri " +"administratzaileari)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -423,9 +222,10 @@ msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" msgid "%s: Could not set caps\n" msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -437,9 +237,22 @@ msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" + msgid "Too many logins.\n" msgstr "Gehiegizko saio hasierak.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s izena: " + msgid "You have new mail." msgstr "Mezu berria duzu." @@ -449,6 +262,14 @@ msgstr "Mezurik ez." msgid "You have mail." msgstr "Mezua duzu." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "aldaketarik gabe" @@ -461,9 +282,6 @@ msgstr "Maiuskulak/minuskula bakarrik aldatu da" msgid "too similar" msgstr "antzekoegia" -msgid "too simple" -msgstr "sinpleegia" - msgid "rotated" msgstr "aldirokoa" @@ -509,6 +327,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() huts egin du, errorea: %d\n" +msgid "Password: " +msgstr "Pasahitza: " + +#, c-format +msgid "%s's Password: " +msgstr "%s (r)en pasahitza: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "%s(r)en pasahitz okerra.\n" @@ -534,30 +359,127 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: ezin da %s direktorioa sortu\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: ezin da %s direktorioa sortu\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" msgstr "%s: ezin da %s direktorioa sortu\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"ENCRYPT_METHOD balio baliogabea: '%s'.\n" +"DES-era lehenesten.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Ezin da auditatzeko interfazea ireki - uzten.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Ezin izan da lekua esleitu, konfigurazioaren informaziorako.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s(r)en data informazioa aldatzen\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot commit SELinux transaction\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" -"ENCRYPT_METHOD balio baliogabea: '%s'.\n" -"DES-era lehenesten.\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -571,6 +493,10 @@ msgstr "Direktoriorik ez, HOME=/ erabiliz saioa hasiko da" msgid "Cannot execute %s" msgstr "Ezin izan da %s exekutatu" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Baliogabeko erro direktorioa '%s'\n" @@ -579,6 +505,84 @@ msgstr "Baliogabeko erro direktorioa '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "Ezin da erro direktorioa '%s'-ra aldatu\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: memoriarik ez\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: ezin da %s ezabatu\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s etxe-direktorioa (%s) ez dago\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: ezin da '%s' sarrera %s-tik kendu\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: ezin da %s direktorioa sortu\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: abisua: ezin da %s ezabatu: %s\n" + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: berrizendatu: %s: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: ezin da %s direktorioa %s gisa izenez aldatu\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: ezin da %s direktorioa %s gisa izenez aldatu\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: abisua: ezin da %s ezabatu: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: ezin da %s direktorioa sortu\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: ezin da %s ezabatu\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: `(%d lerroa, %s erabiltzailea) pasahitza ez da aldatu\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: berrizendatu: %s: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: ezin da %s ireki\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: une honetan %s erabiltzaileak saioan sartuta dago\n" @@ -653,6 +657,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +#, fuzzy +#| msgid " -Q, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -r, --remove-password TALDEaren pasahitaz kendu\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -679,12 +688,15 @@ msgstr "Pasahitza ezgaitua" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Kontuaren iraungitze data (UUUU-HH-EE)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Azken pasahitz aldaketa\t\t\t\t\t: " - msgid "never" msgstr "Inoiz ere ez" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Azken pasahitz aldaketa\t\t\t\t\t: " + msgid "password must be changed" msgstr "Pasahitza aldatu egin behar da" @@ -856,14 +868,6 @@ msgstr "%s: '%s'(e)k karaktere baliogabeak ditu\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: '%s' erabiltzailea ez da existitzen\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: ezin da NIS bezeroko '%s' erabiltzailea aldatu.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' da bezero honen NIS nagusia.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s(r)en erabiltzaile informazioa aldatzen\n" @@ -903,6 +907,11 @@ msgstr "" " -s, --sha-rounds SHA* kriptografia algoritmoentzako\n" " SHA erronda kopurua\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: onartzen ez den kriptografia metodoa: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: %s bandera bakarrik %s banderarekin onartzen da\n" @@ -954,6 +963,16 @@ msgstr "" msgid "Login Shell" msgstr "Saio-hasierako shell-a" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Ezinda %s-ren tamaina eskuratu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Ez zenuke '%s'-(r)en shell-a aldatu behar.\n" @@ -966,6 +985,11 @@ msgstr "%s(r)en saio-hasierako shell-a aldatzen\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: baliogabeko sarrera: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s shell baliogabea da\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s shell baliogabea da\n" @@ -1205,11 +1229,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system sistema kontu bat sortu\n" -#, fuzzy -#| msgid " -Q, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -r, --remove-password TALDEaren pasahitaz kendu\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1224,6 +1243,10 @@ msgstr "%s erabiltzaile-izen baliogabea\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' ez da baliozko talde-izena\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: ezin da %s ireki\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: '%s' talde ID baliogabea\n" @@ -1269,14 +1292,6 @@ msgstr "%s: Ezin da '%s' erabiltzailearen talde nagusia kendu\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: '%s' taldea ez da existitzen\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: '%s' taldea NIS talde bat da\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s NIS nagusia da\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: '%s' erabiltzailea '%s' taldeko partaide da dagoeneko\n" @@ -1373,10 +1388,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: '%s' talde izen baliogabea\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: %s taldea NIS talde bat da\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: %s erabiltzaile ezezaguna\n" @@ -1502,7 +1513,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all erabiltzaile guztien faillog-en\n" @@ -1605,11 +1616,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Ezingo du ziurrenik funtzionatu erro efektibo bat gabe\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Ez dago utmp sarrerarik. \"login\" \"sh\" maila baxuenetik exekutatu beharko " -"zenuke" - #, c-format msgid "" "\n" @@ -1643,14 +1649,6 @@ msgstr "Izen okerra" msgid "Cannot find user (%s)\n" msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s izena: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: huts zatitzerakoan: %s" @@ -1687,7 +1685,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1714,17 +1713,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: huts %s desblokeatzean\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: oinarrizko '%s' direktorio baliogabea\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: ezin da %s direktorioa sortu\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1757,14 +1752,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: ezin da %s direktorioa sortu\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1787,6 +1781,10 @@ msgstr "%s: '%s' erabiltzaile ID baliogabea\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: '%s' erabiltzaile-izen baliogabea\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: %d lerroa: lerro baliogabea\n" @@ -1809,6 +1807,10 @@ msgstr "%s: %d lerroa: ezin da taldea sortu\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: %d lerroa: `%s' erabiltzailea ez da existitzen %s-en\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: berrizendatu: %s: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: %d lerroa: ezin da pasahitza eguneratu\n" @@ -1830,14 +1832,14 @@ msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: %d lerroa: ezin da sarrera eguneratu\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: huts %s sarrera berria prestatzean '%s'\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: ezin da erabiltzailea sortu\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: huts %s sarrera berria prestatzean '%s'\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: ezin da taldea sortu\n" @@ -1913,6 +1915,11 @@ msgstr "" " -x, --maxdays GEHI_EGUN ezarri pasahitz aldatu aurretik gehienezko\n" " egun kopurua GEHI_EGUN-era\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list kontu denbora informazioa bistarazi\n" + msgid "Old password: " msgstr "Pasahitz zaharra: " @@ -1932,6 +1939,11 @@ msgstr "" "Sartu pasahitz berria (gutxienez %d eta gehienez %d karaktere)\n" "Erabili maiuskulen, minuskulen eta zenbakien arteko konbinazioa.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: eremu luzegiak\n" + msgid "New password: " msgstr "Pasahitz berria: " @@ -1975,6 +1987,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: %s biltegia ez da onartzen\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: root-ek bakarrik erabili dezake -g/--group aukera\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2128,11 +2145,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2219,6 +2234,11 @@ msgstr "%s: Ez duzu orain su erabiltzeko baimenik\n" msgid "No passwd entry for user '%s'\n" msgstr "Ez dago 'root'-en pasahitzik" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "%s erabiltzaile-izen baliogabea\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: terminal batetik exekutatu behar da\n" @@ -2264,6 +2284,13 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: %s konfigurazioa %s-n dagoena alde batetara utziko da\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: %s konfigurazioa %s-n dagoena alde batetara utziko da\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2274,10 +2301,6 @@ msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: ezin da lehenespen fitxategi berria ireki\n" @@ -2294,10 +2317,6 @@ msgstr "%s: ezin da %s direktorioa sortu\n" msgid "%s: rename: %s: %s\n" msgstr "%s: berrizendatu: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: taldea '%s' NIS talde bat da.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: talde gehiegi zehaztu dira (geh. %d).\n" @@ -2420,6 +2439,17 @@ msgstr "" " -Z, --selinux-user SEERAB erabili SEUSER zehatz bat SELinux " "erabiltzaile mapatzearentzat\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEERAB erabili SEUSER zehatz bat SELinux " +"erabiltzaile mapatzearentzat\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: oinarrizko '%s' direktorio baliogabea\n" @@ -2559,6 +2589,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Postakutxa fitxategi baimenak ezartzen" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Postakutxa fitxategia sortzen" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Postakutxa fitxategia sortzen" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2691,10 +2731,6 @@ msgstr "lastlog: Ezinda %s-ren tamaina eskuratu: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: ezin da '%s' sarrera %s-tik kendu\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: %s erabiltzailea NIS erabiltzaile bat da\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s etxe-direktorioa (%s) ez dago\n" @@ -2825,6 +2861,13 @@ msgstr "" " -Z, --selinux-user SELinux erabiltzaile mapatze berria " "erabiltzailearen kontuarentzat\n" +#, fuzzy +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SELinux erabiltzaile mapatze berria " +"erabiltzailearen kontuarentzat\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2913,12 +2956,26 @@ msgstr "" "%s: huts %lu erabiltzailearen lastlog sarrera %lu erabiltzailera kopiatzean: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: huts %lu erabiltzailearen lastlog sarrera %lu erabiltzailera kopiatzean: " +"%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: huts %lu erabiltzailearen faillog sarrera %lu erabiltzailera kopiatzean: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: huts %lu erabiltzailearen faillog sarrera %lu erabiltzailera kopiatzean: " +"%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: abisua: %s ez dago %s(r)en jabegoan\n" @@ -3022,9 +3079,8 @@ msgstr "%s: huts %s desblokeatzean\n" msgid "failed to stat edited file" msgstr "huts egin du postontzia izenez aldatzean" -#, fuzzy -msgid "failed to allocate memory" -msgstr "huts egin du postontzia jabez aldatzean" +msgid "asprintf(3) failed" +msgstr "" #, fuzzy msgid "failed to create backup file" @@ -3038,6 +3094,57 @@ msgstr "%s: ezin da %s leheneratu: %s (zure aldaketak %s(e)n daude)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: oinarrizko '%s' direktorio baliogabea\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Inguruneak gainezka egin du\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: ezin da NIS bezeroko '%s' erabiltzailea aldatu.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' da bezero honen NIS nagusia.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: '%s' taldea NIS talde bat da\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s NIS nagusia da\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: %s taldea NIS talde bat da\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: taldea '%s' NIS talde bat da.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: %s erabiltzailea NIS erabiltzaile bat da\n" + +#~ msgid "too simple" +#~ msgstr "sinpleegia" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Ez dago utmp sarrerarik. \"login\" \"sh\" maila baxuenetik exekutatu " +#~ "beharko zenuke" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: oinarrizko '%s' direktorio baliogabea\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "huts egin du postontzia jabez aldatzean" + #~ msgid "Usage: id\n" #~ msgstr "Erabilera: id\n" @@ -3053,10 +3160,6 @@ msgstr "%s: oinarrizko '%s' direktorio baliogabea\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: pasahitz iraungitzea informazioa aldatua.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "%s erabiltzaile-izen baliogabea\n" - #~ msgid "Username Port From Latest" #~ msgstr "Erabiltzaile-izena Ataka Nondik Azkena" diff --git a/po/fi.gmo b/po/fi.gmo index 1130e2b..69b441e 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 9da8b18..2514406 100644 --- a/po/fi.po +++ b/po/fi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2007-11-24 22:54+0100\n" "Last-Translator: Tommi Vainikainen \n" "Language-Team: Finnish \n" @@ -16,222 +16,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Asetustiedoille ei voi varata tilaa.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "asetusvirhe - tuntematon kohta \"%s\" (kerro ylläpidolle)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Salasana: " - -#, c-format -msgid "%s's Password: " -msgstr "Käyttäjän %s salasana: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Salasanatiedostoa ei voi avata.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Asetustiedoille ei voi varata tilaa.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Muutetaan käyttäjän %s vanhenemistietoja\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Käyttäjätunnusta ei voi selvittää.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: rivi %d: käyttäjää %s ei löydy\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: muisti loppui\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: tiedostoa %s ei voi päivittää\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: virheellinen kotihakemisto \"%s\"\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: hakemistoa %s ei voi luoda\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: varoitus: ei voi poistaa tiedostoa " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: varoitus: ei voi poistaa tiedostoa " - -# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon... -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: rename: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: varoitus: ei voi poistaa tiedostoa " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: hakemistoa %s ei voi luoda\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: varoitus: ei voi poistaa tiedostoa " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: tiedostoa %s ei voi päivittää\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: varjotiedostoa ei voi päivittää\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon... -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: rename: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: tiedostoa %s ei voi lukita\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Varoitus: tuntematon ryhmä %s\n" @@ -278,6 +62,11 @@ msgstr "Päätettä %s ei voi vaihtaa" msgid "%s: failed to unlock %s\n" msgstr "%s: kentät liian pitkiä\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -285,8 +74,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Ympäristön ylivuoto\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -385,9 +175,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: ei saa ainutkertaista UID:tä\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "Asetustiedoille ei voi varata tilaa.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "asetusvirhe - tuntematon kohta \"%s\" (kerro ylläpidolle)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: PAM-todennus epäonnistui\n" @@ -415,7 +212,7 @@ msgstr "Asetustiedoille ei voi varata tilaa.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: tiedosta ei voi avata\n" #, fuzzy, c-format @@ -426,9 +223,21 @@ msgstr "%s: rivi %d: chown epäonnistui\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: rivi %d: chown epäonnistui\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: rivi %d: chown epäonnistui\n" + msgid "Too many logins.\n" msgstr "Liian monta sisäänkirjautumista.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s-tunnus: " + msgid "You have new mail." msgstr "Sinulle on uutta postia." @@ -438,6 +247,14 @@ msgstr "Ei postia." msgid "You have mail." msgstr "Sinulle on postia." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "ei muutoksia" @@ -450,9 +267,6 @@ msgstr "vain kirjainkoon muutoksia" msgid "too similar" msgstr "liian samankaltainen" -msgid "too simple" -msgstr "liian yksinkertainen" - msgid "rotated" msgstr "pyöräytetty" @@ -499,6 +313,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() epäonnistui, virhe %d\n" +msgid "Password: " +msgstr "Salasana: " + +#, c-format +msgid "%s's Password: " +msgstr "Käyttäjän %s salasana: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Väärä salasana käyttäjälle \"%s\".\n" @@ -524,28 +345,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: hakemistoa %s ei voi luoda\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: hakemistoa %s ei voi luoda\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Salasanatiedostoa ei voi avata.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Asetustiedoille ei voi varata tilaa.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Asetustiedoille ei voi varata tilaa.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Muutetaan käyttäjän %s vanhenemistietoja\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Käyttäjätunnusta ei voi selvittää.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: hakemistoa %s ei voi luoda\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: rivi %d: käyttäjää %s ei löydy\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -559,6 +477,10 @@ msgstr "Ei hakemistoa, sisäänkirjaudutaan siten, että HOME=/" msgid "Cannot execute %s" msgstr "Ei voi suorittaa %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Virheellinen juurihakemisto \"%s\"\n" @@ -567,6 +489,86 @@ msgstr "Virheellinen juurihakemisto \"%s\"\n" msgid "Can't change root directory to '%s'\n" msgstr "Ei voi vaihtaa juurihakemistoksi \"%s\"\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: muisti loppui\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: tiedostoa %s ei voi päivittää\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: virheellinen kotihakemisto \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: varoitus: ei voi poistaa tiedostoa " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: varoitus: ei voi poistaa tiedostoa " + +# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon... +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: rename: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: varoitus: ei voi poistaa tiedostoa " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: varoitus: ei voi poistaa tiedostoa " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: tiedostoa %s ei voi päivittää\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: varjotiedostoa ei voi päivittää\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon... +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: rename: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: tiedostoa %s ei voi lukita\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: käyttäjä %s on nyt sisäänkirjautuneena\n" @@ -626,6 +628,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -651,12 +656,15 @@ msgstr "Salasana pois käytöstä" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Tunnuksen vanhenemispäiväys (VVVV-KK-PP)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Edellinen salasanan vaihto\t\t\t\t\t: " - msgid "never" msgstr "ei koskaan" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Edellinen salasanan vaihto\t\t\t\t\t: " + msgid "password must be changed" msgstr "salasana täytyy vaihtaa" @@ -824,14 +832,6 @@ msgstr "%s: \"%s\" sisältää ei-sallittuja merkkejä\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: käyttäjää %s ei ole olemassa\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: ei voi vaihtaa käyttäjää \"%s\" NIS-asiakkaalla.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: \"%s\" on NIS-palvelin tälle asiakkaalle.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Muutetaan käyttäjän %s tietoja\n" @@ -860,6 +860,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: Valitsinta -a voi käyttää VAIN yhdessä valitsimen -G kanssa\n" @@ -910,6 +914,15 @@ msgstr "" msgid "Login Shell" msgstr "Sisäänkirjautumiskuori" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Et voi muuttaa käyttäjän %s kuorta.\n" @@ -922,6 +935,10 @@ msgstr "Muutetaan käyttäjän %s sisäänkirjautumiskuorta\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Virheellinen tietue: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s on virheellinen kuori.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s on virheellinen kuori.\n" @@ -1132,9 +1149,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1147,6 +1161,10 @@ msgstr "virheellinen käyttäjätunnus \"%s\"\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s ei ole kelpo ryhmänimi\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: tiedostoa %s ei voi lukita\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "virheellinen ryhmänimi \"%s\"\n" @@ -1189,14 +1207,6 @@ msgstr "%s: ei voi vaihtaa käyttäjää \"%s\" NIS-asiakkaalla.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: ryhmää %s ei ole olemassa\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: ryhmä \"%s\" on NIS-ryhmä.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: isäntä %s on NIS-palvelin\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: käyttäjä %s on NIS-käyttäjä\n" @@ -1272,10 +1282,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "virheellinen ryhmänimi \"%s\"\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: ryhmä %s on NIS-ryhmä\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: Tuntematon käyttäjä %s\n" @@ -1390,7 +1396,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1484,9 +1490,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Ei utmp-tietuetta. Suorita \"login\" alimman tason kuoresta" - #, fuzzy, c-format msgid "" "\n" @@ -1520,14 +1523,6 @@ msgstr "Sisäänkirjautuminen epäonnistui" msgid "Cannot find user (%s)\n" msgstr "%s: rivi %d: käyttäjää %s ei löydy\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s-tunnus: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: fork-kutsu epäonnistui: %s" @@ -1565,7 +1560,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1590,17 +1586,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: kentät liian pitkiä\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: virheellinen perushakemisto \"%s\"\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: hakemistoa %s ei voi luoda\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1634,14 +1626,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1662,6 +1653,10 @@ msgstr "%s: virheellinen käyttäjätunnus \"%s\"\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: virheellinen käyttäjätunnus \"%s\"\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: rivi %d: virheellinen rivi\n" @@ -1682,6 +1677,11 @@ msgstr "%s: rivi %d: GIDiä ei voi luoda\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: käyttäjää %s ei ole olemassa\n" +# Kannattaako tuota kääntää, siinä viitataan rename()-funktioon... +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: rename: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: rivi %d: salasanaa ei voi päivittää\n" @@ -1702,14 +1702,14 @@ msgstr "%s: rivi %d: chown epäonnistui\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: rivi %d: tietuetta ei voi päivittää\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: tiedostoa %s ei voi luoda\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: Oikeuksien pudottaminen epäonnistui (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: ryhmätiedostoa ei voi päivittää\n" @@ -1768,6 +1768,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Vanha salasana: " @@ -1787,6 +1790,11 @@ msgstr "" "Syötä uusi salasana (vähintään %d ja korkeintaan %d merkkiä)\n" "Käytäthän salasanassa numeroita sekä pien- ja suuraakkosia.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: kentät liian pitkiä\n" + msgid "New password: " msgstr "Uusi salasana: " @@ -1827,6 +1835,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: tietolähdettä %s ei tueta\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1970,11 +1982,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2061,6 +2071,11 @@ msgstr "Sinulla ei ole lupaa asettua käyttäjäksi %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Ei salasanatietuetta pääkäyttäjälle (\"root\")" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "virheellinen käyttäjätunnus \"%s\"\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: täytyy suorittaa päätteessä\n" @@ -2106,6 +2121,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2116,10 +2137,6 @@ msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: uutta defaults-tiedostoa ei voi avata\n" @@ -2137,10 +2154,6 @@ msgstr "%s: hakemistoa %s ei voi luoda\n" msgid "%s: rename: %s: %s\n" msgstr "%s: rename: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: ryhmä \"%s\" on NIS-ryhmä.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: liian monta ryhmää määritelty (korkeintaan %d).\n" @@ -2250,6 +2263,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: virheellinen perushakemisto \"%s\"\n" @@ -2381,6 +2399,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Asetetaan postilaatikkotiedoston oikeudet" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Luodaan postilaatikkotiedosto" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Luodaan postilaatikkotiedosto" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2502,10 +2530,6 @@ msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: hakemistoa %s ei voi uudelleennimetä hakemistoksi %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: käyttäjä %s on NIS-käyttäjä\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: virheellinen kotihakemisto \"%s\"\n" @@ -2605,6 +2629,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2688,10 +2716,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: salasanatiedostoa ei voi päivittää\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: varoitus: tiedoston %s omistaja ei ole %s\n" @@ -2797,8 +2833,9 @@ msgid "failed to stat edited file" msgstr "postilaatikon uudelleennimeäminen epäonnistui" #, fuzzy -msgid "failed to allocate memory" -msgstr "postilaatikon omistajan vaihtaminen epäonnistui" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: tiedosta ei voi avata\n" #, fuzzy msgid "failed to create backup file" @@ -2813,6 +2850,55 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: virheellinen perushakemisto \"%s\"\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Ympäristön ylivuoto\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: ei voi vaihtaa käyttäjää \"%s\" NIS-asiakkaalla.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: \"%s\" on NIS-palvelin tälle asiakkaalle.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: ryhmä \"%s\" on NIS-ryhmä.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: isäntä %s on NIS-palvelin\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: ryhmä %s on NIS-ryhmä\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: ryhmä \"%s\" on NIS-ryhmä.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: käyttäjä %s on NIS-käyttäjä\n" + +#~ msgid "too simple" +#~ msgstr "liian yksinkertainen" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "Ei utmp-tietuetta. Suorita \"login\" alimman tason kuoresta" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: virheellinen perushakemisto \"%s\"\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "postilaatikon omistajan vaihtaminen epäonnistui" + #~ msgid "Usage: id\n" #~ msgstr "Käyttö: id\n" @@ -2828,10 +2914,6 @@ msgstr "%s: virheellinen perushakemisto \"%s\"\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Salasanan vanhenemisvaroitus" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "virheellinen käyttäjätunnus \"%s\"\n" - #~ msgid "Username Port From Latest" #~ msgstr "Käyttäjä Portti Mistä Viimeksi" diff --git a/po/fr.gmo b/po/fr.gmo index 06252de..49f574e 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index 0df42e3..528d407 100644 --- a/po/fr.po +++ b/po/fr.po @@ -17,13 +17,13 @@ # useradd: Frédéric Delanoy, 2000. # Christian Perrier , 2009, 2012. # Thomas Blein , 2011, 2012, 2013, 2015. -# bubu , 2022 +# bubu , 2022, 2023 msgid "" msgstr "" "Project-Id-Version: shadow-man-pages 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" -"PO-Revision-Date: 2022-01-04 11:11+0100\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" +"PO-Revision-Date: 2023-04-26 20:04+0200\n" "Last-Translator: bubu \n" "Language-Team: French \n" "Language: fr\n" @@ -31,237 +31,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" - -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Plusieurs entrées nommées '%s' dans %s. Merci de réparer cela avec pwck ou " -"grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" -"la méthode de chiffrement n'est pas prise en charge par libcrypt ? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "erreur de paramétrage - imposible d'analyser la valeur de %s : '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Impossible d'allouer de l'espace pour l'information de paramétrage.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"erreur de paramétrage - objet inconnu '%s' (avertir l'administrateur)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s : nscd ne s'est pas terminé normalement (signal %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s : nscd a fini avec le statut %d\n" - -msgid "Password: " -msgstr "Mot de passe :" - -#, c-format -msgid "%s's Password: " -msgstr "Mot de passe de %s :" - -msgid "Cannot open audit interface.\n" -msgstr "Impossible d'ouvrir l'interface d'inspection.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" -"%s : ne peut pas récupérer le contexte du processus SELinux précédent : %s\n" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage] : %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Impossible de créer la prise en charge de la gestion par SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "La politique SELinux n'est pas prise en charge\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Impossible de lire le dépot de politique de SELinux\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" -"Impossible d'établir la connexion avec la gestion de SELinux\n" -" \n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Impossible de commencer la transaction SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Impossible d'interroger seuser pour %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Impossible de définir serange pour %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Impossible de définir sename pour %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Impossible de modifier le mappage de connexion pour %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Impossible de créer de mappage de connexion SELinux pour %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Impossible de définir un nom pour %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Impossible de définir un utilisateur SELinux pour %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Impossible d'ajouter un mappage de connexion pour %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Impossible d'initialiser la gestion SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Impossible de créer la clé d'utilisateur SELinux\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Impossible de vérifier l'utilisateur SELinux\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Impossible de modifier le mappage d'utilisateur SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Impossible d'ajouter le mappage d'utilisateur SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" -"Impossible de valider une transaction SELinux\n" -"\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Le mappage de connexion n'est pas défini pour %s, OK si le mappage par " -"défaut a été utilisé\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"Le mappage de connexion pour %s est défini dans la politique et ne peut pas " -"être effacé\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Impossible d'effacer le mappage de connexion pour %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "" -"%s : plus de mémoire\n" -"\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s : L'appel de stat sur %s a échoué : %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s : %s n'est ni un répertoire, ni un lien symbolique.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s : Impossible de lire le lien symbolique %s : %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s : Lien symbolique suspicieusement long : %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s : Impossible de créer le répertoire %s : %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s : Impossible de changer le propriétaire de %s : %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s : Impossible de changer le mode de %s : %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s : délier : %s : %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s : Impossible de supprimer le répertoire %s : %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s : Impossible de renommer %s en %s : %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s : Impossible de supprimer %s : %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s : Impossible de créer de lien symbolique %s : %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s : Impossible de changer les propriétaires de %s : %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s : lstat impossible %s : %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s : Attention, l'utilisateur %s n'a pas de fichier caché tcb.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s : Urgence : le fichier caché tcb de %s n'est pas un fichier régulier avec " -"st_nlink=1\n" -"Le compte est laissé vérouillé.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s : mkdir : %s : %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s : Impossible d'ouvrir %s : %s\n" +"X-Generator: Poedit 2.4.2\n" #, c-format msgid "Warning: unknown group %s\n" @@ -309,6 +79,13 @@ msgstr "Impossible de changer le propriétaire ou le mode d'entrée tty : %s" msgid "%s: failed to unlock %s\n" msgstr "%s : échec au déverrouillage de %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Plusieurs entrées nommées '%s' dans %s. Merci de réparer cela avec pwck ou " +"grpck.\n" + #, c-format msgid "%s: " msgstr "%s : " @@ -316,8 +93,10 @@ msgstr "%s : " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Débordement de l'environnement\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" +"la méthode de chiffrement n'est pas prise en charge par libcrypt ? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -440,8 +219,16 @@ msgstr "" "Utilisateur disponibles)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "%s : Pas assez d'arguments pour former %u mappages\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "erreur de paramétrage - imposible d'analyser la valeur de %s : '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Impossible d'allouer de l'espace pour l'information de paramétrage.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"erreur de paramétrage - objet inconnu '%s' (avertir l'administrateur)\n" #, c-format msgid "%s: Memory allocation failure\n" @@ -469,8 +256,9 @@ msgstr "" msgid "%s: Could not set caps\n" msgstr "%s : Impossible de définir les plafonds\n" -#, c-format -msgid "%s: snprintf failed!\n" +#, fuzzy, c-format +#| msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s : échec de snprintf !\n" #, c-format @@ -481,9 +269,22 @@ msgstr "%s : échec de l'ouverture de %s : %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s : échec de l'écriture sur %s : %s\n" +#, fuzzy, c-format +#| msgid "%s: open of %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s : échec de l'ouverture de %s : %s\n" + msgid "Too many logins.\n" msgstr "Trop de connexions.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login : " + msgid "You have new mail." msgstr "Vous avez un nouveau courriel." @@ -493,6 +294,14 @@ msgstr "Aucun courriel." msgid "You have mail." msgstr "Vous avez un courriel." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s : nscd ne s'est pas terminé normalement (signal %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s : nscd a fini avec le statut %d\n" + msgid "no change" msgstr "aucun changement" @@ -505,9 +314,6 @@ msgstr "changements de casse seulement" msgid "too similar" msgstr "trop similaire" -msgid "too simple" -msgstr "trop simple" - msgid "rotated" msgstr "pivoté" @@ -553,6 +359,13 @@ msgstr "" "%s : (utilisateur %s) pam_chauthtok() échec, erreur :\n" "%s\n" +msgid "Password: " +msgstr "Mot de passe :" + +#, c-format +msgid "%s's Password: " +msgstr "Mot de passe de %s :" + #, c-format msgid "Incorrect password for %s.\n" msgstr "Mot de passe incorrect pour %s.\n" @@ -569,26 +382,24 @@ msgstr "%s : l'option '%s' nécessite un argument\n" msgid "%s: failed to drop privileges (%s)\n" msgstr "%s : échec de la diminution de privilèges (%s)\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" +#, c-format msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s : chemin de chroot non valable '%s'\n" +msgstr "" +"%s : chemin de chroot non valable '%s', seuls les chemins absolus sont pris " +"en charge.\n" #, c-format msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s : Impossible d'accéder au répertoire chroot %s : %s\n" -#, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s : chdir impossible sur répertoire chroot %s : %s\n" - #, c-format msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s : chroot impossible sur répertoire %s : %s\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s : chdir impossible sur répertoire chroot %s : %s\n" #, c-format msgid "" @@ -604,6 +415,118 @@ msgid "" "ENCRYPT_METHOD and the corresponding configuration for your selected hash " "method.\n" msgstr "" +"Impossible de générer un « sel » à partir du réglage \"%s\", vérifiez vos " +"réglages dans ENCRYPT_METHOD et la configuration correspondante à votre " +"méthode de hachage choisie.\n" + +msgid "Cannot open audit interface.\n" +msgstr "Impossible d'ouvrir l'interface d'inspection.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" +"%s : ne peut pas récupérer le contexte du processus SELinux précédent : %s\n" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage] : %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Impossible de créer la prise en charge de la gestion par SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "La politique SELinux n'est pas prise en charge\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Impossible de lire le dépot de politique de SELinux\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" +"Impossible d'établir la connexion avec la gestion de SELinux\n" +" \n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Impossible de commencer la transaction SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Impossible d'interroger seuser pour %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Impossible de définir serange pour %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Impossible de définir sename pour %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Impossible de modifier le mappage de connexion pour %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Impossible de créer de mappage de connexion SELinux pour %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Impossible de définir un nom pour %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Impossible de définir un utilisateur SELinux pour %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Impossible d'ajouter un mappage de connexion pour %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Impossible d'initialiser la gestion SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Impossible de créer la clé d'utilisateur SELinux\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Impossible de vérifier l'utilisateur SELinux\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Impossible de modifier le mappage d'utilisateur SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Impossible d'ajouter le mappage d'utilisateur SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" +"Impossible de valider une transaction SELinux\n" +"\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Le mappage de connexion n'est pas défini pour %s, OK si le mappage par " +"défaut a été utilisé\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"Le mappage de connexion pour %s est défini dans la politique et ne peut pas " +"être effacé\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Impossible d'effacer le mappage de connexion pour %s" #, c-format msgid "Unable to cd to '%s'\n" @@ -618,6 +541,10 @@ msgstr "Pas de réperoire, connexion avec HOME=/" msgid "Cannot execute %s" msgstr "Impossible d'exécuter %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Répertoire root '%s' non valable\n" @@ -626,6 +553,89 @@ msgstr "Répertoire root '%s' non valable\n" msgid "Can't change root directory to '%s'\n" msgstr "Impossible de changer le répertoire root pour '%s'\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "" +"%s : plus de mémoire\n" +"\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s : L'appel de stat sur %s a échoué : %s\n" + +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s : %s n'est ni un répertoire, ni un lien symbolique.\n" + +#, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s : Impossible de lire le lien symbolique %s : %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s : Lien symbolique suspicieusement long : %s\n" + +#, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s : Impossible de créer le répertoire %s : %s\n" + +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s : Impossible de changer le propriétaire de %s : %s\n" + +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s : Impossible de changer le mode de %s : %s\n" + +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s : délier : %s : %s\n" + +#, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s : Impossible de supprimer le répertoire %s : %s\n" + +#, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s : Impossible de renommer %s en %s : %s\n" + +#, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s : Impossible de supprimer %s : %s\n" + +#, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s : Impossible de créer de lien symbolique %s : %s\n" + +#, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s : Impossible de changer les propriétaires de %s : %s\n" + +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s : lstat impossible %s : %s\n" + +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s : Attention, l'utilisateur %s n'a pas de fichier caché tcb.\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s : Urgence : le fichier caché tcb de %s n'est pas un fichier régulier avec " +"st_nlink=1\n" +"Le compte est laissé vérouillé.\n" + +#, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s : mkdir : %s : %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s : Impossible d'ouvrir %s : %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s : l'utilisateur %s est actuellement connecté\n" @@ -704,6 +714,11 @@ msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" " -R, --root CHROOT_DIR répertoire dans lequel faire un chroot\n" +#, fuzzy +#| msgid " -P, --prefix PREFIX_DI directory prefix\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -P, --prefix PREFIX_DI préfixe de répertoire\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -729,15 +744,18 @@ msgstr "Avertissement d'expiration du mot de passe " msgid "Password Inactive" msgstr "Mot de passe inactif" -msgid "Account Expiration Date (YYYY-MM-DD)" -msgstr "Date de fin de validité du compte (YYYY-MM-DD)" +msgid "Account Expiration Date (YYYY-MM-DD)" +msgstr "Date de fin de validité du compte (YYYY-MM-DD)" + +msgid "never" +msgstr "jamais" + +msgid "future" +msgstr "" msgid "Last password change\t\t\t\t\t: " msgstr "Dernière modification du mot de passe\t\t\t\t\t :" -msgid "never" -msgstr "jamais" - msgid "password must be changed" msgstr "le mot de passe doit être changé" @@ -921,14 +939,6 @@ msgstr "%s : '%s' contient des caractères illégaux\n" msgid "%s: user '%s' does not exist\n" msgstr "%s : l'utilisateur '%s' n'existe pas\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s : impossible de changer l'utilisateur '%s' sur le client NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s : '%s' est le NIS maître pour ce client.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Modifier les informations associées à un utilisateur pour %s\n" @@ -959,17 +969,18 @@ msgstr "" " -m, --md5 chiffrer le mot de passe en clair avec\n" " l'algorithme MD5\n" -#, fuzzy -#| msgid "" -#| " -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -#| " crypt algorithms\n" msgid "" " -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" " or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds nombre de tours pour les algorithmes de " "chiffrement\n" -" SHA ou BCRYPT\n" +" SHA ou BCRYPT ou YESCRYPT\n" + +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s : la méthode de chiffrement n'est pas prise en charge : %s\n" #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" @@ -1024,6 +1035,17 @@ msgstr "" msgid "Login Shell" msgstr "Interpréteur de commandes de connexion" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s : Impossible d'obtenir la taille de %s : %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file: %s\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "" +"%s : impossible de créer le nouveau fichier des valeurs par défaut : %s\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Vous ne devriez pas changer le shell pour '%s'.\n" @@ -1036,6 +1058,13 @@ msgstr "Changer l'interpréteur de commandes de connexion pour %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s : Entrée non valable : %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "" +"%s : %s est un interpréteur de commandes non valable\n" +"\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "" @@ -1291,25 +1320,23 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system créer un compte système\n" -#, fuzzy -#| msgid " -P, --prefix PREFIX_DIR directory prefix\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -P, --prefix PREFIX_DIR préfixe de répertoire\n" - -#, fuzzy -#| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" -msgstr " -l, --list lister les membres du groupe\n" +msgstr "" +" -U, --users USERS liste des utilisateurs membres de ce groupe\n" -#, fuzzy, c-format -#| msgid "invalid user name '%s'\n" +#, c-format msgid "Invalid member username %s\n" -msgstr "Nom d'utilisateur '%s' non valable\n" +msgstr "Nom de membre utilisateur '%s' non valable\n" #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s : '%s' n'est pas un nom de groupe valable\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s : Impossible d'ouvrir %s : %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s : IDentifiant de groupe '%s' non valable\n" @@ -1357,16 +1384,6 @@ msgstr "" msgid "%s: group '%s' does not exist\n" msgstr "%s : le groupe '%s' n'existe pas\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s : le groupe '%s' est un groupe NIS\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "" -"%s : %s est le NIS maître\n" -"\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s : l'utilisateur '%s' est déjà membre de '%s'\n" @@ -1427,23 +1444,16 @@ msgstr "%s : votre nom de groupe ne correspond pas à votre nom utilisateur\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s : seul root peut utiliser l'option -g/--group\n" -#, fuzzy -#| msgid "" -#| " -a, --append append the user to the supplemental " -#| "GROUPS\n" -#| " mentioned by the -G option without " -#| "removing\n" -#| " the user from other groups\n" msgid "" " -a, --append append the users mentioned by -U option to " "the group \n" " without removing existing user members\n" msgstr "" -" -a, --append ajouter l'utilisateur au GROUPS " -"supplémentaire\n" -" mentionné par l'option -G sans " -"supprimer\n" -" l'utilisateur des autres groupes\n" +" -a, --append ajouter les utilisateurs mentionnés par " +"l'option -U dans le groupe \n" +" sans supprimer les membres utilisateurs " +"existant\n" +"\n" msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID changer l'IDentifiant de groupe en GID\n" @@ -1468,10 +1478,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s : nom de groupe '%s' non valable\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s : le groupe %s est un groupe NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s : utilisateur inconnu %s\n" @@ -1509,6 +1515,8 @@ msgstr " -s, --sort trier les entrées par UID\n" msgid "" " -S, --silence-warnings silence controversial/paranoid warnings\n" msgstr "" +" -S, --silence-warnings silence controversé/avertissements " +"paranoïaques\n" #, c-format msgid "%s: -s and -r are incompatible\n" @@ -1597,8 +1605,12 @@ msgstr "" " -b, --before DAYS afficher uniquement les enregistrements de " "journaux plus vieux que DAYS\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear nettoyer l'enregistrement du dernier journal " @@ -1624,10 +1636,9 @@ msgstr "" " -u, --user LOGIN afficher le dernier enregistrement de " "journal du LOGIN spécifié\n" -#, fuzzy, c-format -#| msgid "Username Port Latest" +#, c-format msgid "Username Port From%*sLatest\n" -msgstr "Nom d'utilisateur Port Dernier" +msgstr "Nom d'utilisateur Port Provenance%*sDernier\n" msgid "Username Port Latest" msgstr "Nom d'utilisateur Port Dernier" @@ -1707,11 +1718,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s : Ne pourra peut-être pas fonctionner sans racine effective\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Pas d'entrée utmp. Vous devez exécuter (exec) \"login\" depuis le plus bas " -"niveau \"sh\"" - #, c-format msgid "" "\n" @@ -1745,14 +1751,6 @@ msgstr "Login incorrect" msgid "Cannot find user (%s)\n" msgstr "Impossible de trouver l'utilisateur (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login : " - #, c-format msgid "%s: failure forking: %s" msgstr "%s : échec de la création d'un processus enfant : %s" @@ -1786,9 +1784,13 @@ msgstr "Utilisation : logoutd\n" msgid "%s: gid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgstr "%s : éventail de GID [%lu-%lu)-> [%lu-%lu) non autorisé\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "usage: %s [ " +#| " ] ... \n" msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" "utilisation : %s [ " " ] ... \n" @@ -1815,21 +1817,21 @@ msgstr "" "%s : Echec de la politique %s setgroups : %s\n" " \n" -#, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s : Impossible d'ouvrir le répertoire proc de la cible %u\n" - -#, c-format -msgid "%s: Could not stat directory for target %u\n" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s : Impossible de statuer sur le répertoire de la cible %u\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " +#| "st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" -"%s : La cible %u appartient à un utilisateur différent : uid :%lu pw_uid :" -"%lu st_uid :%lu, gid :%lu pw_gid :%lu st_gid :%lu\n" +"%s : Le processus cible %u appartient à un utilisateur différent : uid :%lu " +"pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgid "Usage: newgrp [-] [group]\n" msgstr "Utilisation : newgrp [-] [group]\n" @@ -1860,24 +1862,24 @@ msgstr "trop de groupes\n" msgid "%s: uid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgstr "%s : gamme d'uid [%lu-%lu) -> [%lu-%lu) non autorisés\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "usage: %s [ " +#| " ] ... \n" msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" "utilisation : %s [ " " ] ... \n" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" -"%s : Le processus cible %u appartient à un utilisateur différent : uid :%lu " -"pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s : Impossible de statuer sur le répertoire de la cible %u\n" -#, fuzzy msgid " -b, --badname allow bad names\n" -msgstr " -b, --badname autoriser de mauvais noms\n" +msgstr " -b, --badname autoriser les mauvais noms\n" msgid " -r, --system create system accounts\n" msgstr " -r, --system créer des comptes système\n" @@ -1891,10 +1893,14 @@ msgstr "" msgid "%s: invalid user ID '%s'\n" msgstr "%s : IDentification d'utilisateur '%s' non valable\n" -#, fuzzy, c-format -#| msgid "%s: invalid user name '%s'\n" +#, c-format msgid "%s: invalid user name '%s': use --badname to ignore\n" -msgstr "%s : nom d'utilisateur '%s' non valable\n" +msgstr "" +"%s : nom d'utilisateur '%s' non valable ; utilisez --badname pour l'ignorer\n" + +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" #, c-format msgid "%s: line %d: invalid line\n" @@ -1918,16 +1924,20 @@ msgstr "%s : ligne %d : impossible de créer le groupe\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s : ligne %d : l'utilisateur '%s' n'existe pas dans %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s : délier : %s : %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "" "%s : ligne %d : impossible de mettre à jour le fichier des mots de passe - " "password -\n" -#, fuzzy, c-format -#| msgid "%s: line %d: mkdir %s failed: %s\n" +#, c-format msgid "%s: line %d: homedir must be an absolute path\n" -msgstr "%s : ligne %d : échec mkdir %s : %s\n" +msgstr "%s : ligne %d : homedir doit être un chemin absolu\n" #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" @@ -1941,14 +1951,14 @@ msgstr "%s : ligne %d : échec de chown %s : %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s : ligne %d : impossible de mettre à jour l'entrée\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s : la préparation de la nouvelle entrée %s a échoué\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s : impossible de trouver une gamme utilisateur subordonnée\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s : la préparation de la nouvelle entrée %s a échoué\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s : impossible de trouver la gamme de groupe subordonné\n" @@ -2034,6 +2044,13 @@ msgstr "" "de changer le mot de passe\n" " à MAX_DAYS\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list afficher les informations sur l'âge des " +"comptes\n" + msgid "Old password: " msgstr "Ancien mot de passe :" @@ -2056,6 +2073,11 @@ msgstr "" "Utilisez une combinaison de lettres minuscules et majuscules et des " "chiffres.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s : champs trop longs\n" + msgid "New password: " msgstr "Nouveau mot de passe :" @@ -2081,10 +2103,10 @@ msgstr "Le mot de passe de %s ne peut pas être changé.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Le mot de passe de %s ne peut pas encore être changé.\n" -#, fuzzy, c-format -#| msgid "%s: shadow passwords required for -e\n" +#, c-format msgid "%s: malformed password data obtained for user %s\n" -msgstr "%s : mots de passe cachés « shadow passwords » nécessaires pour -e\n" +msgstr "" +"%s : données incorrectes de mot de passe obtenues pour l'utilisateur %s\n" #, c-format msgid "" @@ -2102,6 +2124,11 @@ msgstr "" "%s : le dépot %s n'est pas pris en charge\n" " \n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s : seul root peut utiliser l'option -g/--group\n" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -2161,10 +2188,10 @@ msgstr "entrée de fichier de mots de passe non valable " msgid "duplicate password entry" msgstr "entrée de mot de passe dupliqué" -#, fuzzy, c-format -#| msgid "invalid user name '%s'\n" +#, c-format msgid "invalid user name '%s': use --badname to ignore\n" -msgstr "Nom d'utilisateur '%s' non valable\n" +msgstr "" +"Nom d'utilisateur '%s' non valable ; utilisez --badname pour l'ignorer\n" #, c-format msgid "invalid user ID '%lu'\n" @@ -2262,11 +2289,9 @@ msgstr "%s : dysfonctionnement du signal\n" msgid "Session terminated, terminating shell..." msgstr "Session terminée, fin de l'interpréteur de commande ...." -#, c-format msgid " ...killed.\n" msgstr " ... tué.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ... attente de la fin du processus enfant.\n" @@ -2317,10 +2342,13 @@ msgstr "" #, c-format msgid "Password field is empty, this is forbidden for all accounts.\n" msgstr "" +"Le champ Mot de Passe est vide, cela est interdit pour tous les comptes.\n" #, c-format msgid "Password field is empty, this is forbidden for super-user.\n" msgstr "" +"Le champ Mot de Passe est vide, cela est interdit pour le super-" +"utilisateur.\n" #, c-format msgid "You are not authorized to su %s\n" @@ -2343,6 +2371,11 @@ msgstr "%s : Vous n'avez pas les autorisations superutilisateur\n" msgid "No passwd entry for user '%s'\n" msgstr "Pas d'entrée de mot de passe pour l'utilisateur '%s'\n" +#, fuzzy, c-format +#| msgid "Invalid member username %s\n" +msgid "Overlong user name '%s'\n" +msgstr "Nom de membre utilisateur '%s' non valable\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s : doit être lancé depuis un terminal\n" @@ -2388,19 +2421,21 @@ msgstr "%s : %s a été créé, mais n'a pas pu être supprimé\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s : le paramétrage %s dans %s sera ignoré \n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s : le paramétrage %s dans %s sera ignoré \n" + #, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "" "%s : impossible de créer le nouveau fichier des valeurs par défaut : %s\n" -#, fuzzy, c-format -#| msgid "%s: cannot create new defaults file\n" -msgid "%s: cannot create directory for defaults file\n" -msgstr "%s : impossible de créer un nouveau fichier des valeurs par défaut\n" - #, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s : impossible de créer un nouveau fichier des valeurs par défaut\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s : impossible de créer répertoire pour les fichiers par défaut\n" #, c-format msgid "%s: cannot open new defaults file\n" @@ -2418,18 +2453,13 @@ msgstr "%s : Impossible de créer un fichier de sauvegarde (%s) : %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s : renommer : %s : %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s : le groupe '%s' est un groupe NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s : trop de groupes sont spécifiés (max %d).\n" -#, fuzzy, c-format -#| msgid "%s: Out of memory. Cannot update %s.\n" +#, c-format msgid "%s: Out of memory. Cannot find group '%s'.\n" -msgstr "%s : Plus de mémoire libre. Mise à niveau impossible %s.\n" +msgstr "%s : Plus de mémoire libre. Impossible de trouver le groupe.'%s'.\n" #, c-format msgid "" @@ -2445,7 +2475,6 @@ msgstr "" "\n" "Options :\n" -#, fuzzy msgid " --badname do not check for bad names\n" msgstr " --badname ne pas vérifier les mauvais noms\n" @@ -2491,6 +2520,8 @@ msgid "" " -F, --add-subids-for-system add entries to sub[ud]id even when adding a " "system user\n" msgstr "" +" -F, --add-subids-for-system ajouter des entrées comme sous-[ud]id même " +"lors de l'ajout d'un utilisateur système\n" msgid "" " -g, --gid GROUP name or ID of the primary group of the new\n" @@ -2573,6 +2604,17 @@ msgstr "" " -Z, --selinux-user SEUSER utiliser un SEUSER spécifique pour le " "mappage de l'utilisateur SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER utiliser un SEUSER spécifique pour le " +"mappage de l'utilisateur SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s : répertoire de base '%s' non valable\n" @@ -2615,39 +2657,31 @@ msgstr "%s : -Z ne peut pas être utilisé avec --prefix\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s : -Z nécessite un noyau avec SELinux activé\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to open the faillog file for UID %lu: %s\n" -msgstr "" -"%s : échec de la réinitialisation de l'entrée de faillog de l'UID %lu : %s\n" +msgstr "%s : échec d'ouverture du fichier faillog de l'UID %lu : %s\n" #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" "%s : échec de la réinitialisation de l'entrée de faillog de l'UID %lu : %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to close the faillog file for UID %lu: %s\n" -msgstr "" -"%s : échec de la réinitialisation de l'entrée de faillog de l'UID %lu : %s\n" +msgstr "%s : échec de la fermeture du fichier faillog de l'UID %lu : %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to open the lastlog file for UID %lu: %s\n" -msgstr "" -"%s : échec de la réinitialisation de l'entrée de lastlog de l'UID %lu:%s\n" +msgstr "%s : échec d'ouveture du fichier lastlog de l'UID %lu:%s\n" #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" "%s : échec de la réinitialisation de l'entrée de lastlog de l'UID %lu:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to close the lastlog file for UID %lu: %s\n" -msgstr "" -"%s : échec de la réinitialisation de l'entrée de lastlog de l'UID %lu:%s\n" +msgstr "%s : échec de fermeture du fichier lastlog de l'UID %lu:%s\n" #, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2696,8 +2730,7 @@ msgstr "%s : attention  : échec de chown sur '%s' : %m\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s : attention : échec de chmod sur '%s' : %m\n" -#, fuzzy, c-format -#| msgid "%s: warning: chown on `%s' failed: %m\n" +#, c-format msgid "%s: warning: chown on '%s' failed: %m\n" msgstr "%s : attention  : échec de chown sur '%s' : %m\n" @@ -2706,12 +2739,11 @@ msgid "%s: cannot reset SELinux file creation context\n" msgstr "" "%s : impossible de réinitialiser le contexte de création du fichier SELinux\n" -#, fuzzy, c-format -#| msgid "%s: cannot set SELinux context for home directory %s\n" +#, c-format msgid "%s: cannot set SELinux context for mailbox file %s\n" msgstr "" -"%s : impossible de définir le contexte SELinux pour le répertoire personnel " -"%s\n" +"%s : impossible de définir le contexte SELinux pour le fichier boîte à " +"lettre %s\n" msgid "Creating mailbox file" msgstr "Création du fichier mailbox - boîte au lettres" @@ -2725,14 +2757,28 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Indiquez les permissions du fichier mailbox" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Création du fichier mailbox - boîte au lettres" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Création du fichier mailbox - boîte au lettres" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" +"%s attention: l'uid de %s, %d, est plus grand que SYS_UID_MAX %d\n" +"\n" #, c-format msgid "" "%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" msgstr "" +"%s attention: l'uid de %s, %d, est en dehors de la plage UID_MIN %d et " +"UID_MAX %d .\n" #, c-format msgid "%s: user '%s' already exists\n" @@ -2783,18 +2829,16 @@ msgstr "" "%s: attention : le répertoire personnel %s existe déjà.\n" "%s: Aucun fichier du répertoire skel n'y sera copié.\n" -#, fuzzy -#| msgid "" -#| " -f, --force force removal of files,\n" -#| " even if not owned by user\n" msgid "" " -f, --force force some actions that would fail " "otherwise\n" " e.g. removal of user still logged in\n" " or files, even if not owned by the user\n" msgstr "" -" -f, --force forcer la suppression de fichiers,\n" -" même ceux qui n'appartiennent pas à " +" -f, --force forcer des actions qui échoueraient sinon\n" +" par exemple, supprimer un utilisateur encore " +"connecté\n" +" ou des fichiers, même si n'appartenant pas à " "l'utilisateur\n" msgid " -r, --remove remove home directory and mail spool\n" @@ -2861,10 +2905,6 @@ msgstr "%s : Impossible de supprimer le contenu de %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s : Impossible de supprimer les fichiers tcb de %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s : l'utilisateur %s est un utilisateur NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s : %s le répertoire personnel (%s) n'a pas été trouvé\n" @@ -2963,21 +3003,14 @@ msgstr "" " -p, --password PASSWORD utiliser un mot de passe chiffré pour le " "nouveau mot de passe\n" -#, fuzzy -#| msgid "" -#| " -a, --append append the user to the supplemental " -#| "GROUPS\n" -#| " mentioned by the -G option without " -#| "removing\n" -#| " the user from other groups\n" msgid "" " -r, --remove remove the user from only the supplemental " "GROUPS\n" " mentioned by the -G option without removing\n" " the user from other groups\n" msgstr "" -" -a, --append ajouter l'utilisateur au GROUPS " -"supplémentaire\n" +" -r, --remove supprimer l'utilisateur uniquement du " +"GROUPS supplémentaire\n" " mentionné par l'option -G sans " "supprimer\n" " l'utilisateur des autres groupes\n" @@ -3009,6 +3042,16 @@ msgstr "" " -Z, --selinux-user SEUSER nouveau mappage d'utilisateur SELinux pour le " "compte utilisateur\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER nouveau mappage d'utilisateur SELinux pour le " +"compte utilisateur\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3023,10 +3066,9 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s : l'utilisateur '%s' existe déjà dans %s\n" -#, fuzzy, c-format -#| msgid "%s: home directory \"%s\" must be mounted on BTRFS\n" +#, c-format msgid "%s: homedir must be an absolute path\n" -msgstr "%s : le répertoire home \"%s\" doit être monté en BTRFS\n" +msgstr "%s : homedir doit être un chemin absolu\n" #, c-format msgid "%s: invalid subordinate uid range '%s'\n" @@ -3042,7 +3084,7 @@ msgstr "%s : pas d'options\n" #, c-format msgid "%s: %s and %s are mutually exclusive flags\n" -msgstr "" +msgstr "%s: %s et %s sont des drapeaux mutuellement exclusifs\n" #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" @@ -3095,16 +3137,13 @@ msgstr "" msgid "%s: cannot rename directory %s to %s\n" msgstr "%s : impossible de renommer le répertoire %s en %s\n" -#, fuzzy, c-format -#| msgid "" -#| "%s: The previous home directory (%s) was not a directory. It is not " -#| "removed and no home directories are created.\n" +#, c-format msgid "" "%s: The previous home directory (%s) does not exist or is inaccessible. Move " "cannot be completed.\n" msgstr "" -"%s : Le répertoire personnel (%s) précédent n'était pas un répertoire. Il " -"n'est pas supprimé et aucun répertoire personnel ne sera créé. \n" +"%s : Le répertoire personnel (%s) précédent n'existe pas ou est " +"inaccessible. Aucun transfert ne peut aboutir. \n" #, c-format msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" @@ -3112,12 +3151,26 @@ msgstr "" "%s : la copie de l'entrée lastlog de l'utilisateur %lu à l'utilisateur %lu a " "échoué : %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s : la copie de l'entrée lastlog de l'utilisateur %lu à l'utilisateur %lu a " +"échoué : %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s : échec à copier l'entrée de faillog de l'utilisateur %lu vers " "l'utilisateur %lu : %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s : échec à copier l'entrée de faillog de l'utilisateur %lu vers " +"l'utilisateur %lu : %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s : avertissement : %s n'appartient pas à %s\n" @@ -3223,8 +3276,10 @@ msgstr "impossible de délier le fichier scratch" msgid "failed to stat edited file" msgstr "impossible de statuer sur le fichier édité" -msgid "failed to allocate memory" -msgstr "impossible d'allouer de la mémoire" +#, fuzzy +#| msgid "%s: snprintf failed!\n" +msgid "asprintf(3) failed" +msgstr "%s : échec de snprintf !\n" msgid "failed to create backup file" msgstr "échec à la création d'un fichier de sauvegarde" @@ -3239,6 +3294,75 @@ msgstr "" "%s : impossible de trouver le répertoire tcb pour %s\n" "\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Débordement de l'environnement\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s : impossible de changer l'utilisateur '%s' sur le client NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s : '%s' est le NIS maître pour ce client.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s : le groupe '%s' est un groupe NIS\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "" +#~ "%s : %s est le NIS maître\n" +#~ "\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s : le groupe %s est un groupe NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "" +#~ "%s : impossible de créer un nouveau fichier des valeurs par défaut\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s : le groupe '%s' est un groupe NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s : l'utilisateur %s est un utilisateur NIS\n" + +#, c-format +#~ msgid "%s: Not enough arguments to form %u mappings\n" +#~ msgstr "%s : Pas assez d'arguments pour former %u mappages\n" + +#~ msgid "too simple" +#~ msgstr "trop simple" + +#, c-format +#~ msgid "Unable to obtain random bytes.\n" +#~ msgstr "Impossible d'avoir des octets aléatoires.\n" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Pas d'entrée utmp. Vous devez exécuter (exec) \"login\" depuis le plus " +#~ "bas niveau \"sh\"" + +#, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s : Impossible d'ouvrir le répertoire proc de la cible %u\n" + +#, c-format +#~ msgid "" +#~ "%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +#~ "%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +#~ msgstr "" +#~ "%s : La cible %u appartient à un utilisateur différent : uid :%lu pw_uid :" +#~ "%lu st_uid :%lu, gid :%lu pw_gid :%lu st_gid :%lu\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "impossible d'allouer de la mémoire" + #~ msgid "Usage: id\n" #~ msgstr "Utilisation : id\n" diff --git a/po/gl.gmo b/po/gl.gmo index 3ac54b8..55b30c0 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 598f69b..ae9d92e 100644 --- a/po/gl.po +++ b/po/gl.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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2006-07-18 23:27+0200\n" "Last-Translator: Jacobo Tarrio \n" "Language-Team: Galician \n" @@ -16,222 +16,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Non se puido reservar espacio para a información de configuración.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"erro de configuración - elemento \"%s\" descoñecido (avise ao " -"administrador)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Contrasinal: " - -#, c-format -msgid "%s's Password: " -msgstr "Contrasinal de %s: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Non se pode abrir o ficheiro de contrasinais.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Non se puido reservar espacio para a información de configuración.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "A cambiar a información de caducidade de %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Non se pode determinar o seu nome de usuario.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: liña %d: non se pode atopar o usuario %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: memoria esgotada\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: non se pode actualizar o ficheiro %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: directorio inicial \"%s\" non válido\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: non se pode crear o directorio %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: aviso: non se pode eliminar " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: aviso: non se pode eliminar " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: rename: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: aviso: non se pode eliminar " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: non se pode crear o directorio %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: aviso: non se pode eliminar " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: non se pode actualizar o ficheiro %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: non se pode actualizar o ficheiro shadow\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: rename: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: non se pode abrir o ficheiro %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Aviso: grupo %s descoñecido\n" @@ -278,6 +62,11 @@ msgstr "Non se puido cambiar o tty %s" msgid "%s: failed to unlock %s\n" msgstr "%s: campos longos de máis\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -285,8 +74,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Desbordamento nas variables de ambiente\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -385,8 +175,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: non se pode obter un UID único\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" + +msgid "Could not allocate space for config info.\n" +msgstr "Non se puido reservar espacio para a información de configuración.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"erro de configuración - elemento \"%s\" descoñecido (avise ao " +"administrador)\n" #, fuzzy, c-format msgid "%s: Memory allocation failure\n" @@ -415,7 +214,7 @@ msgstr "Non se puido reservar espacio para a información de configuración.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: non se pode abrir o ficheiro\n" #, fuzzy, c-format @@ -426,9 +225,21 @@ msgstr "%s: liña %d: a chamada a chown fallou\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: liña %d: a chamada a chown fallou\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: liña %d: a chamada a chown fallou\n" + msgid "Too many logins.\n" msgstr "Entrou demasiadas veces.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "Ten novo correo." @@ -438,6 +249,14 @@ msgstr "Non hai correo." msgid "You have mail." msgstr "Ten correo." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "ningún cambio" @@ -450,9 +269,6 @@ msgstr "só cambia maiúsculas/minúsculas" msgid "too similar" msgstr "semellantes de máis" -msgid "too simple" -msgstr "simple de máis" - msgid "rotated" msgstr "rotado" @@ -499,6 +315,13 @@ msgid "" "%s\n" msgstr "passwd: a chamada a pam_start() fallou, erro %d\n" +msgid "Password: " +msgstr "Contrasinal: " + +#, c-format +msgid "%s's Password: " +msgstr "Contrasinal de %s: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Contrasinal incorrecto para %s.\n" @@ -524,28 +347,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: non se pode crear o directorio %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: non se pode crear o directorio %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Non se pode abrir o ficheiro de contrasinais.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Non se puido reservar espacio para a información de configuración.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Non se puido reservar espacio para a información de configuración.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "A cambiar a información de caducidade de %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Non se pode determinar o seu nome de usuario.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: non se pode crear o directorio %s\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: liña %d: non se pode atopar o usuario %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -559,6 +479,10 @@ msgstr "Non hai un directorio, éntrase con HOME=/" msgid "Cannot execute %s" msgstr "Non se pode executar %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Directorio raíz \"%s\" non válido\n" @@ -567,6 +491,84 @@ msgstr "Directorio raíz \"%s\" non válido\n" msgid "Can't change root directory to '%s'\n" msgstr "Non se pode cambiar o directorio raíz a \"%s\"\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: memoria esgotada\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: non se pode actualizar o ficheiro %s\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: directorio inicial \"%s\" non válido\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: aviso: non se pode eliminar " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: aviso: non se pode eliminar " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: rename: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: aviso: non se pode eliminar " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: aviso: non se pode eliminar " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: non se pode actualizar o ficheiro %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: non se pode actualizar o ficheiro shadow\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: rename: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: non se pode abrir o ficheiro %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: o usuario %s está conectado\n" @@ -626,6 +628,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -651,12 +656,15 @@ msgstr "Contrasinal inactivo" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data de caducidade da conta (AAAA-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Último cambio de contrasinal\t\t\t\t: " - msgid "never" msgstr "nunca" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Último cambio de contrasinal\t\t\t\t: " + msgid "password must be changed" msgstr "debe cambiarse o contrasinal" @@ -824,14 +832,6 @@ msgstr "%s: \"%s\" contén caracteres non válidos\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: o usuario %s non existe\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: non se pode cambiar o usuario \"%s\" no cliente NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: \"%s\" é o mestre NIS deste cliente.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "A cambiar a información de usuario de %s\n" @@ -860,6 +860,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: o modificador -a SÓ se admite co modificador -G\n" @@ -910,6 +914,15 @@ msgstr "" msgid "Login Shell" msgstr "Intérprete de ordes" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Non pode cambiar o intérprete de ordes de %s.\n" @@ -922,6 +935,10 @@ msgstr "A cambiar o intérprete de ordes de %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Entrada non válida: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s non é un intérprete de ordes válido.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s non é un intérprete de ordes válido.\n" @@ -1132,9 +1149,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1147,6 +1161,10 @@ msgstr "nome de usuario \"%s\" non válido\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s non é un nome de grupo válido\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: non se pode abrir o ficheiro %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "nome de grupo \"%s\" non válido\n" @@ -1189,14 +1207,6 @@ msgstr "%s: non se pode cambiar o usuario \"%s\" no cliente NIS.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: o grupo %s non existe\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: o grupo \"%s\" é un grupo NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s é o mestre NIS\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: o usuario %s é un usuario NIS\n" @@ -1272,10 +1282,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "nome de grupo \"%s\" non válido\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: o grupo %s é un grupo NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: usuario %s descoñecido\n" @@ -1390,7 +1396,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1484,11 +1490,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Non hai unha entrada en utmp. Debe executar \"login\" dende o \"sh\" de " -"nivel máis baixo" - #, fuzzy, c-format msgid "" "\n" @@ -1522,14 +1523,6 @@ msgstr "Entrada incorrecta" msgid "Cannot find user (%s)\n" msgstr "%s: liña %d: non se pode atopar o usuario %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: fallo ao lanzar o proceso: %s" @@ -1566,7 +1559,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1591,17 +1585,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: campos longos de máis\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: directorio base \"%s\" non válido\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: non se pode crear o directorio %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1635,14 +1625,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: non se pode crear o directorio %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1663,6 +1652,10 @@ msgstr "%s: nome de usuario \"%s\" non válido\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: nome de usuario \"%s\" non válido\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: liña %d: liña non válida\n" @@ -1683,6 +1676,10 @@ msgstr "%s: liña %d: non se pode crear o GID\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: o usuario %s non existe\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: rename: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: liña %d: non se pode actualizar o contrasinal\n" @@ -1703,14 +1700,14 @@ msgstr "%s: liña %d: a chamada a chown fallou\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: liña %d: non se pode actualizar a entrada\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: non se puido deixar os privilexios (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: non se pode crear %s\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: non se puido deixar os privilexios (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: non se pode actualizar o ficheiro de grupos\n" @@ -1769,6 +1766,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Contrasinal antigo: " @@ -1788,6 +1788,11 @@ msgstr "" "Introduza o novo contrasinal (mínimo de %d, máximo de %d caracteres)\n" "Empregue unha combinación de maiúsculas, minúsculas e números.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: campos longos de máis\n" + msgid "New password: " msgstr "Novo contrasinal: " @@ -1828,6 +1833,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: non se soporta o repositorio %s\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1971,11 +1980,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2048,6 +2055,11 @@ msgstr "Non está autorizado para facer su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Non hai unha entrada de contrasinal para \"root\"" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nome de usuario \"%s\" non válido\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: débese executar dende un terminal\n" @@ -2093,6 +2105,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2103,10 +2121,6 @@ msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: non se pode abrir o novo ficheiro de valores por defecto\n" @@ -2123,10 +2137,6 @@ msgstr "%s: non se pode crear o directorio %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: rename: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: o grupo \"%s\" é un grupo NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: especificáronse grupos de máis (máximo %d).\n" @@ -2236,6 +2246,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: directorio base \"%s\" non válido\n" @@ -2367,6 +2382,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "A estabrecer os permisos do ficheiro da caixa do correo" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "A crear o ficheiro da caixa do correo" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "A crear o ficheiro da caixa do correo" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2488,10 +2513,6 @@ msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: non se pode cambiar o nome do directorio %s a %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: o usuario %s é un usuario NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: directorio inicial \"%s\" non válido\n" @@ -2592,6 +2613,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2675,10 +2700,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: non se pode actualizar o ficheiro de contrasinais\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: aviso: %s non pertence a %s\n" @@ -2784,8 +2817,9 @@ msgid "failed to stat edited file" msgstr "non se puido cambiar o nome da caixa do correo" #, fuzzy -msgid "failed to allocate memory" -msgstr "non se puido cambiar o propietario da caixa do correo" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: non se pode abrir o ficheiro\n" #, fuzzy msgid "failed to create backup file" @@ -2799,6 +2833,57 @@ msgstr "%s: non se pode restaurar %s: %s (os seus cambios están en %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: directorio base \"%s\" non válido\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Desbordamento nas variables de ambiente\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: non se pode cambiar o usuario \"%s\" no cliente NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: \"%s\" é o mestre NIS deste cliente.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: o grupo \"%s\" é un grupo NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s é o mestre NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: o grupo %s é un grupo NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: o grupo \"%s\" é un grupo NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: o usuario %s é un usuario NIS\n" + +#~ msgid "too simple" +#~ msgstr "simple de máis" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Non hai unha entrada en utmp. Debe executar \"login\" dende o \"sh\" de " +#~ "nivel máis baixo" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: directorio base \"%s\" non válido\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "non se puido cambiar o propietario da caixa do correo" + #~ msgid "Usage: id\n" #~ msgstr "Emprego: id\n" @@ -2814,10 +2899,6 @@ msgstr "%s: directorio base \"%s\" non válido\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Aviso de caducidade de contrasinal" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nome de usuario \"%s\" non válido\n" - #~ msgid "Username Port From Latest" #~ msgstr "Usuario Porto Desde Última" diff --git a/po/he.gmo b/po/he.gmo index 75d74a4..61b8e66 100644 Binary files a/po/he.gmo and b/po/he.gmo differ diff --git a/po/he.po b/po/he.po index 6c819f5..4e31a7c 100644 --- a/po/he.po +++ b/po/he.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2004-07-21 23:59+0300\n" "Last-Translator: Lior Kaplan \n" "Language-Team: Hebrew \n" @@ -18,220 +18,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "לא יכול להקצות מקום בשביל מידע על הקונפיגורציה.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "שגיאת הגדרות - רכיב לא ידוע '%s' (הודע למנהל)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "סיסמה: " - -#, c-format -msgid "%s's Password: " -msgstr "הסיסמה של %s: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "לא יכול לפתוח את קובץ הסיסמאות.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "לא יכול להקצות מקום בשביל מידע על הקונפיגורציה.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "שנה מידע הזדקות בשביל %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: לא יכול לנעול קובץ צל\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "ספרית שורש לא חוקית \"%s\"\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: לא יכול לנעול קובץ צל\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: לא יכול לנעול קובץ צל\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: לא יכול לפתוח קובץ צל\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "אזהרה: קבוצה לא מוכרת %s\n" @@ -278,6 +64,11 @@ msgstr "לא יכול לשנות tty %s" msgid "%s: failed to unlock %s\n" msgstr "%s: שדות ארוכים מידי\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "passwd: %s\n" @@ -285,8 +76,9 @@ msgstr "passwd: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "הצפת סביבה\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -381,9 +173,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: שם לא חוקי: \"%s\"\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "לא יכול להקצות מקום בשביל מידע על הקונפיגורציה.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "שגיאת הגדרות - רכיב לא ידוע '%s' (הודע למנהל)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: זיהוי PAM נכשל\n" @@ -408,9 +207,9 @@ msgstr "לא יכול להקצות מקום בשביל מידע על הקונפ msgid "%s: Could not set caps\n" msgstr "לא יכול להקצות מקום בשביל מידע על הקונפיגורציה.\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: stpeprintf failed!\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" #, fuzzy, c-format msgid "%s: open of %s failed: %s\n" @@ -420,9 +219,19 @@ msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" + msgid "Too many logins.\n" msgstr "יותר מידי כניסות למערכת.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" + msgid "You have new mail." msgstr "יש לך דואר חדש." @@ -432,6 +241,14 @@ msgstr "אין דואר." msgid "You have mail." msgstr "יש לך דואר." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "" @@ -444,119 +261,302 @@ msgstr "" msgid "too similar" msgstr "" -msgid "too simple" +msgid "rotated" +msgstr "" + +msgid "too short" +msgstr "" + +#, c-format +msgid "Bad password: %s. " +msgstr "סיסמה לא טובה: %s. " + +#, c-format +msgid "passwd: pam_start() failed, error %d\n" +msgstr "" + +#, c-format +msgid "passwd: %s\n" +msgstr "passwd: %s\n" + +#, fuzzy +msgid "passwd: password unchanged\n" +msgstr "סיסמה: " + +msgid "passwd: password updated successfully\n" +msgstr "" + +#, c-format +msgid "%s: PAM modules requesting echoing are not supported.\n" +msgstr "" + +#, c-format +msgid "%s: conversation type %d not supported.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: שורה %d: משתמש לא מוכר %s\n" + +#, c-format +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "" + +msgid "Password: " +msgstr "סיסמה: " + +#, c-format +msgid "%s's Password: " +msgstr "הסיסמה של %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: מספר טלפון בבית לא חוקי: \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" + +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "לא יכול לפתוח את קובץ הסיסמאות.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "לא יכול להקצות מקום בשביל מידע על הקונפיגורציה.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "לא יכול להקצות מקום בשביל מידע על הקונפיגורציה.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "שנה מידע הזדקות בשביל %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" msgstr "" -msgid "rotated" +#, c-format +msgid "Cannot add SELinux user mapping\n" msgstr "" -msgid "too short" +#, c-format +msgid "Cannot commit SELinux transaction\n" msgstr "" #, c-format -msgid "Bad password: %s. " -msgstr "סיסמה לא טובה: %s. " +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" #, c-format -msgid "passwd: pam_start() failed, error %d\n" +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" msgstr "" #, c-format -msgid "passwd: %s\n" -msgstr "passwd: %s\n" +msgid "Could not delete login mapping for %s" +msgstr "" -#, fuzzy -msgid "passwd: password unchanged\n" -msgstr "סיסמה: " +#, fuzzy, c-format +msgid "Unable to cd to '%s'\n" +msgstr "לא יכול לבצע cd ל-\"%s\"\n" -msgid "passwd: password updated successfully\n" -msgstr "" +msgid "No directory, logging in with HOME=/" +msgstr "אין ספריה, נכנס למערכת עם HOME=/" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" -msgstr "" +msgid "Cannot execute %s" +msgstr "לא יכול להריץ %s" #, c-format -msgid "%s: conversation type %d not supported.\n" +msgid "Maximum subsystem depth reached\n" msgstr "" #, fuzzy, c-format -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: שורה %d: משתמש לא מוכר %s\n" +msgid "Invalid root directory '%s'\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" -#, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "" +#, fuzzy, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "לא יכול לשנות ספרית שורש ל-\"%s\"\n" #, c-format -msgid "Incorrect password for %s.\n" +msgid "%s: out of memory\n" msgstr "" -#, c-format -msgid "%s: multiple --root options\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: לא יכול לנעול קובץ צל\n" -#, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" +msgid "%s: Suspiciously long symlink: %s\n" msgstr "" #, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: מספר טלפון בבית לא חוקי: \"%s\"\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" #, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "ספרית שורש לא חוקית \"%s\"\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" -#, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" -#, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" #, fuzzy, c-format -msgid "Unable to cd to '%s'\n" -msgstr "לא יכול לבצע cd ל-\"%s\"\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: לא יכול לנעול קובץ צל\n" -msgid "No directory, logging in with HOME=/" -msgstr "אין ספריה, נכנס למערכת עם HOME=/" +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: לא יכול לנעול קובץ צל\n" #, c-format -msgid "Cannot execute %s" -msgstr "לא יכול להריץ %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" #, fuzzy, c-format -msgid "Invalid root directory '%s'\n" -msgstr "ספרית שורש לא חוקית \"%s\"\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" #, fuzzy, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "לא יכול לשנות ספרית שורש ל-\"%s\"\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: לא יכול לפתוח קובץ צל\n" #, fuzzy, c-format msgid "%s: user %s is currently logged in\n" @@ -616,6 +616,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -641,14 +644,17 @@ msgstr "סיסמה לא פעילה" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "תאריך תוקף חשבון (YYYY-MM-DD)" -#, fuzzy -msgid "Last password change\t\t\t\t\t: " -msgstr "שינוי סיסמה אחרון (YYYY-MM-DD)" - #, fuzzy msgid "never" msgstr "אף פעם" +msgid "future" +msgstr "" + +#, fuzzy +msgid "Last password change\t\t\t\t\t: " +msgstr "שינוי סיסמה אחרון (YYYY-MM-DD)" + msgid "password must be changed" msgstr "" @@ -819,14 +825,6 @@ msgstr "%s: \"%s\" מכיל תווים לא חוקיים\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: שם לא חוקי: \"%s\"\n" -#, fuzzy, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "" - #, c-format msgid "Changing the user information for %s\n" msgstr "משנה מידע בשביל המשתמש %s\n" @@ -855,6 +853,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "" @@ -905,6 +907,14 @@ msgstr "" msgid "Login Shell" msgstr "מעטפת כניסה למערכת" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" + +#, fuzzy, c-format +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "אינך רשאי לשנות את המעטפת בשביל %s.\n" @@ -917,6 +927,10 @@ msgstr "משנה מעטפת כניסה למערכת בשביל %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: רשומה לא חוקית: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s היא מעטפת לא חוקית.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s היא מעטפת לא חוקית.\n" @@ -1125,9 +1139,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1139,6 +1150,10 @@ msgstr "%s: שם לא חוקי: \"%s\"\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: שם לא חוקי: \"%s\"\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: לא יכול לפתוח קובץ צל\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: שם לא חוקי: \"%s\"\n" @@ -1181,14 +1196,6 @@ msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: שם לא חוקי: \"%s\"\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: שם לא חוקי: \"%s\"\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "" @@ -1264,10 +1271,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: שם לא חוקי: \"%s\"\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "" - #, c-format msgid "%s: unknown user %s\n" msgstr "" @@ -1386,7 +1389,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1475,9 +1478,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" - #, c-format msgid "" "\n" @@ -1509,12 +1509,6 @@ msgstr "" msgid "Cannot find user (%s)\n" msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" - #, c-format msgid "%s: failure forking: %s" msgstr "" @@ -1549,7 +1543,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1573,17 +1568,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: שדות ארוכים מידי\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "ספרית שורש לא חוקית \"%s\"\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1617,14 +1608,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1644,6 +1634,10 @@ msgstr "%s: שם לא חוקי: \"%s\"\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: שם לא חוקי: \"%s\"\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "" @@ -1664,6 +1658,10 @@ msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: שורה %d: משתמש לא מוכר %s\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "" @@ -1684,14 +1682,14 @@ msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" msgid "%s: line %d: can't update entry\n" msgstr "" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: לא יכול לנעול קובץ צל\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: לא יכול לנעול קובץ צל\n" @@ -1750,6 +1748,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "" @@ -1765,6 +1766,11 @@ msgid "" "Please use a combination of upper and lower case letters and numbers.\n" msgstr "" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: שדות ארוכים מידי\n" + msgid "New password: " msgstr "" @@ -1802,6 +1808,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1948,11 +1958,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2011,6 +2019,10 @@ msgstr "" msgid "No passwd entry for user '%s'\n" msgstr "" +#, fuzzy, c-format +msgid "Overlong user name '%s'\n" +msgstr "%s: שם לא חוקי: \"%s\"\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "" @@ -2054,6 +2066,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" @@ -2062,10 +2080,6 @@ msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "" @@ -2082,10 +2096,6 @@ msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" msgid "%s: rename: %s: %s\n" msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "" @@ -2195,6 +2205,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid base directory '%s'\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" @@ -2322,6 +2337,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +msgid "Synchronize mailbox file" +msgstr "" + +msgid "Closing mailbox file" +msgstr "" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2434,10 +2455,6 @@ msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" @@ -2535,6 +2552,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2617,10 +2638,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: לא יכול לעדכן קובץ סיסמאות\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "" @@ -2718,7 +2747,7 @@ msgstr "%s: שדות ארוכים מידי\n" msgid "failed to stat edited file" msgstr "" -msgid "failed to allocate memory" +msgid "asprintf(3) failed" msgstr "" msgid "failed to create backup file" @@ -2732,6 +2761,21 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" +#~ msgid "Environment overflow\n" +#~ msgstr "הצפת סביבה\n" + +#, fuzzy, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: שם לא חוקי: \"%s\"\n" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "ספרית שורש לא חוקית \"%s\"\n" + #~ msgid "Usage: id\n" #~ msgstr "שימוש: id\n" diff --git a/po/hu.gmo b/po/hu.gmo index f3ff5f4..251636d 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index 2f658bf..c2a2cda 100644 --- a/po/hu.po +++ b/po/hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2007-11-25 20:56+0100\n" "Last-Translator: SZERVÁC Attila \n" "Language-Team: Hungarian \n" @@ -16,220 +16,6 @@ msgstr "" "X-Poedit-Country: HUNGARY\n" "X-Generator: KBabel 1.11.2\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Sikertelen helyfoglalás a beállítási infónak.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "beállítási hiba - ismeretlen '%s' elem (értesítsd a rendszergazdát)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Jelszó: " - -#, c-format -msgid "%s's Password: " -msgstr "%s jelszava: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "A jelszófájl nem nyitható meg.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Sikertelen helyfoglalás a beállítási infónak.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s elévülési információinak módosítása\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: A felhasználóneved megállapítása sikertelen\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: %d. sor: nem találom e felhasználót: %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: a memória elfogyott\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: %s fájl nem frissíthető\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: érvénytelen saját könyvtár: \"%s\"\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: %s könyvtár nem hozható létre\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: figyelem: nem törölhető: " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: figyelem: nem törölhető: " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: átnevezés: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: figyelem: nem törölhető: " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: %s könyvtár nem hozható létre\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: figyelem: nem törölhető: " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: %s fájl nem frissíthető\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: nem tudom frissíteni a \"shadow\" fájlt\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: átnevezés: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s fájl nem nyitható meg\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Figyelem: ismeretlen %s csoport\n" @@ -276,6 +62,11 @@ msgstr "Nem lehet a következő terminálra váltani: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: túl hosszú mezők\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -283,8 +74,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Környezeti túlcsordulás\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -380,9 +172,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: nem kérhető le egyedi felhasználói azonosító\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "Sikertelen helyfoglalás a beállítási infónak.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "beállítási hiba - ismeretlen '%s' elem (értesítsd a rendszergazdát)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: PAM hitelesítési hiba\n" @@ -410,7 +209,7 @@ msgstr "Sikertelen helyfoglalás a beállítási infónak.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: nem tudom megnyitni a fájlt\n" #, fuzzy, c-format @@ -421,9 +220,21 @@ msgstr "%s: %d. sor: chown sikertelen\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: %d. sor: chown sikertelen\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: %d. sor: chown sikertelen\n" + msgid "Too many logins.\n" msgstr "Túl sok bejelentkezés\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s bejelentkezés: " + msgid "You have new mail." msgstr "Új leveled érkezett" @@ -433,6 +244,14 @@ msgstr "Nincs leveled" msgid "You have mail." msgstr "Levelek kiolvasva" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "nem változott" @@ -445,9 +264,6 @@ msgstr "csak változások esetén" msgid "too similar" msgstr "túl hasonló" -msgid "too simple" -msgstr "túl egyszerű" - msgid "rotated" msgstr "fordított" @@ -494,6 +310,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() sikertelen, hibakód: %d\n" +msgid "Password: " +msgstr "Jelszó: " + +#, c-format +msgid "%s's Password: " +msgstr "%s jelszava: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Hibás jelszó ehhez: %s.\n" @@ -519,28 +342,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: %s könyvtár nem hozható létre\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: %s könyvtár nem hozható létre\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "A jelszófájl nem nyitható meg.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Sikertelen helyfoglalás a beállítási infónak.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Sikertelen helyfoglalás a beállítási infónak.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s elévülési információinak módosítása\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: A felhasználóneved megállapítása sikertelen\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: %s könyvtár nem hozható létre\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: %d. sor: nem találom e felhasználót: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -554,6 +474,10 @@ msgstr "Ismeretlen könyvtár, bejelentkezés így: HOME=/" msgid "Cannot execute %s" msgstr "%s nem futtatható" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Érvénytelen gyökérkönyvtár: \"%s\"\n" @@ -562,6 +486,84 @@ msgstr "Érvénytelen gyökérkönyvtár: \"%s\"\n" msgid "Can't change root directory to '%s'\n" msgstr "Nem lehet a gyökérkönyvtárba váltani: \"%s\"\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: a memória elfogyott\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: %s fájl nem frissíthető\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: érvénytelen saját könyvtár: \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: figyelem: nem törölhető: " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: figyelem: nem törölhető: " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: átnevezés: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: figyelem: nem törölhető: " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: figyelem: nem törölhető: " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: %s fájl nem frissíthető\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: nem tudom frissíteni a \"shadow\" fájlt\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: átnevezés: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s fájl nem nyitható meg\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: %s felhasználó most be van jelentkezve\n" @@ -621,6 +623,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -646,12 +651,15 @@ msgstr "Inaktív jelszó" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Hozzáférés elévülési dátum (ÉÉÉÉ-HH-NN)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Utolsó jelszóváltás\t\t\t\t\t: " - msgid "never" msgstr "soha" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Utolsó jelszóváltás\t\t\t\t\t: " + msgid "password must be changed" msgstr "jelszóváltás kötelező" @@ -819,14 +827,6 @@ msgstr "%s: \"%s\" illegális karaktereket tartalmaz\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: %s felhasználó nem létezik\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: `%s' felhasználó nem módosítható NIS kliensen.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: `%s' a NIS mester ehhez a klienshez.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s felhasználói információinak cseréje\n" @@ -855,6 +855,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: -a kapcsoló CSAK -G-vel megy\n" @@ -905,6 +909,15 @@ msgstr "" msgid "Login Shell" msgstr "Bejelentkező héj" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Nem módosíthatod %s parancsértelmezőjét.\n" @@ -917,6 +930,10 @@ msgstr "Bejelentkező héj ehhez: %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Érvénytelen bejegyzés: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s érvénytelen héj.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s érvénytelen héj.\n" @@ -1127,9 +1144,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1142,6 +1156,10 @@ msgstr "érvénytelen '%s' felhasználó név\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s rossz csoport név\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s fájl nem nyitható meg\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "érvénytelen csoportnév: `%s'\n" @@ -1184,14 +1202,6 @@ msgstr "%s: `%s' felhasználó nem módosítható NIS kliensen.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: %s csoport nem létezik\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: a(z) \"%s\" csoport egy NIS csoport.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s a NIS mester\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: %s egy NIS felhasználó\n" @@ -1267,10 +1277,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "érvénytelen csoportnév: `%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: %s egy NIS csoport\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: ismeretlen %s felhasználó\n" @@ -1385,7 +1391,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1479,11 +1485,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Nincs utmp bejegyzés. Futtasd a \"login\"-t a legalacsonyabb szintű \"sh\"-" -"ból." - #, fuzzy, c-format msgid "" "\n" @@ -1517,14 +1518,6 @@ msgstr "Hibás bejelentkezés" msgid "Cannot find user (%s)\n" msgstr "%s: %d. sor: nem találom e felhasználót: %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s bejelentkezés: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: hiba a következő indításakor: %s" @@ -1561,7 +1554,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1586,17 +1580,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: túl hosszú mezők\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: %s könyvtár nem hozható létre\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1630,14 +1620,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: %s könyvtár nem hozható létre\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1658,6 +1647,10 @@ msgstr "%s: érvénytelen '%s' felhasználónév\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: érvénytelen '%s' felhasználónév\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: %d. sor: érvénytelen sor\n" @@ -1678,6 +1671,10 @@ msgstr "%s: %d. sor: GID létrehozása sikertelen\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: %s felhasználó nem létezik\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: átnevezés: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: %d. sor: jelszó frissítése sikertelen\n" @@ -1698,14 +1695,14 @@ msgstr "%s: %d. sor: chown sikertelen\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: %d. sor: nem tudom frissíteni a bejegyzést\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: a jogosultságok eldobása meghiúsult (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: %s létrehozása sikertelen\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: a jogosultságok eldobása meghiúsult (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: nem tudom frissíteni a csoport fájlt\n" @@ -1764,6 +1761,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Régi jelszó: " @@ -1783,6 +1783,11 @@ msgstr "" "Add meg az új jelszót (minimum %d, maximum %d karakter)\n" "Biztonság: kérlek használj vegyesen Nagy és kisbetűket és számokat.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: túl hosszú mezők\n" + msgid "New password: " msgstr "Új jelszó: " @@ -1823,6 +1828,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: %s tár nem támogatott\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1966,11 +1975,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2058,6 +2065,11 @@ msgstr "Nem vagy jogosult ehhez: su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Nincs 'root' jelszó bejegyzés" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "érvénytelen '%s' felhasználó név\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: terminálból kell futnia\n" @@ -2103,6 +2115,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2113,10 +2131,6 @@ msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nem tudom megnyitni az új defaults fájlt\n" @@ -2133,10 +2147,6 @@ msgstr "%s: %s könyvtár nem hozható létre\n" msgid "%s: rename: %s: %s\n" msgstr "%s: átnevezés: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: a(z) \"%s\" csoport egy NIS csoport.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: túl sok csoport van megadva (max %d).\n" @@ -2246,6 +2256,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n" @@ -2377,6 +2392,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "A postafiókfájl jogosultságainak beállítása" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Postafiókfájl létrehozása" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Postafiókfájl létrehozása" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2498,10 +2523,6 @@ msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: nem tudom átnevezni %s könyvtárat erre: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: %s egy NIS felhasználó\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: érvénytelen saját könyvtár: \"%s\"\n" @@ -2600,6 +2621,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2682,10 +2707,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: a jelszófájl frissítése sikertelen\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: figyelem: %s tulajdonosa nem %s\n" @@ -2791,8 +2824,9 @@ msgid "failed to stat edited file" msgstr "a postafiók átnevezése sikertelen" #, fuzzy -msgid "failed to allocate memory" -msgstr "a postafiók tulajdonosának váltása sikertelen" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: nem tudom megnyitni a fájlt\n" #, fuzzy msgid "failed to create backup file" @@ -2806,6 +2840,57 @@ msgstr "%s: nem tudom visszaállítani %s-t: %s (módosításaid itt vannak: %s) msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Környezeti túlcsordulás\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: `%s' felhasználó nem módosítható NIS kliensen.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: `%s' a NIS mester ehhez a klienshez.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: a(z) \"%s\" csoport egy NIS csoport.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s a NIS mester\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: %s egy NIS csoport\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: a(z) \"%s\" csoport egy NIS csoport.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: %s egy NIS felhasználó\n" + +#~ msgid "too simple" +#~ msgstr "túl egyszerű" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Nincs utmp bejegyzés. Futtasd a \"login\"-t a legalacsonyabb szintű " +#~ "\"sh\"-ból." + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "a postafiók tulajdonosának váltása sikertelen" + #~ msgid "Usage: id\n" #~ msgstr "Használat: id\n" @@ -2821,10 +2906,6 @@ msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Jelszó elévülési figyelmeztetés" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "érvénytelen '%s' felhasználó név\n" - #~ msgid "Username Port From Latest" #~ msgstr "Felhasználónév Port Innen Legutóbb" diff --git a/po/id.gmo b/po/id.gmo index e97d8d1..773b1d1 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index 3647e18..5cb0af8 100644 --- a/po/id.po +++ b/po/id.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2007-11-25 20:58+0100\n" "Last-Translator: Parlin Imanuel Toh \n" "Language-Team: Debian Indonesia \n" @@ -15,221 +15,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Tidak dapat mengalokasikan ruang untuk informasi konfigurasi.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"Kesalahan konfigurasi - item tidak dikenal '%s' (beritahu administrator)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Kata sandi:" - -#, c-format -msgid "%s's Password: " -msgstr "Kata sandi dari %s:" - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Tidak dapat membuka berkas kata sandi.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Tidak dapat mengalokasikan ruang untuk informasi konfigurasi.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Mengubah informasi umur akun untuk %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Tidak dapat menentukan nama pengguna anda.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: baris %d: tak menemukan pengguna %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: kehabisan memori\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: tidak dapat memperbaharui berkas %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: direktori rumah `%s' tak sah\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: tak dapat membuat direktori %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: perhatian: tak dapat menghapus " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: perhatian: tak dapat menghapus " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: ubah nama: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: perhatian: tak dapat menghapus " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: tak dapat membuat direktori %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: perhatian: tak dapat menghapus " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: tidak dapat memperbaharui berkas %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: tak dapat memperbaharui berkas shadow\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: ubah nama: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: tidak dapat membuka berkas %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Peringatan: grup tidak dikenal %s\n" @@ -276,6 +61,11 @@ msgstr "Tidak dapat mengubah tts %s" msgid "%s: failed to unlock %s\n" msgstr "%s: ruas terlalu panjang\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -283,8 +73,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Lingkungan overflow\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -380,9 +171,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: tidak bisa mendapatkan UID yang unik\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "Tidak dapat mengalokasikan ruang untuk informasi konfigurasi.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"Kesalahan konfigurasi - item tidak dikenal '%s' (beritahu administrator)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: Otentikasi PAM gagal\n" @@ -409,7 +208,7 @@ msgstr "Tidak dapat mengalokasikan ruang untuk informasi konfigurasi.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: tidak dapat membuka berkas\n" #, fuzzy, c-format @@ -420,9 +219,21 @@ msgstr "%s: baris %d: chown gagal\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: baris %d: chown gagal\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: baris %d: chown gagal\n" + msgid "Too many logins.\n" msgstr "Terlalu banyak login.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "Anda memiliki surat baru." @@ -432,6 +243,14 @@ msgstr "Tidak ada surat." msgid "You have mail." msgstr "Anda memiliki surat." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "tak ada perubahan" @@ -444,9 +263,6 @@ msgstr "hanya perubahan huruf besar/kecil" msgid "too similar" msgstr "terlalu mirip" -msgid "too simple" -msgstr "terlalu sederhana" - msgid "rotated" msgstr "pernah dipakai" @@ -462,104 +278,290 @@ msgid "passwd: pam_start() failed, error %d\n" msgstr "passwd: pam_start() gagal, kesalahan nomor %d\n" #, c-format -msgid "passwd: %s\n" -msgstr "passwd: %s\n" +msgid "passwd: %s\n" +msgstr "passwd: %s\n" + +#, fuzzy +msgid "passwd: password unchanged\n" +msgstr "Password telah diubah." + +msgid "passwd: password updated successfully\n" +msgstr "passwd: kata sandi diperbaharui dengan sukses\n" + +#, c-format +msgid "%s: PAM modules requesting echoing are not supported.\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "%s: repository %s not supported\n" +msgid "%s: conversation type %d not supported.\n" +msgstr "%s: repositori %s tidak didukung\n" + +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: kesalahan %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() gagal, kesalahan nomor %d\n" + +msgid "Password: " +msgstr "Kata sandi:" + +#, c-format +msgid "%s's Password: " +msgstr "Kata sandi dari %s:" + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Kata sandi tidak tepat untuk %s\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: gagal membuang hak (%s)\n" + +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: telepon rumah tidak sah: \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Tidak dapat membuka berkas kata sandi.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Tidak dapat mengalokasikan ruang untuk informasi konfigurasi.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Tidak dapat mengalokasikan ruang untuk informasi konfigurasi.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Mengubah informasi umur akun untuk %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Tidak dapat menentukan nama pengguna anda.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: baris %d: tak menemukan pengguna %s\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "" + +#, fuzzy, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Tidak dapat cd ke \"%s\"\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Tidak terdapat direktori, masuk dengan HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Tidak dapat menjalankan %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" -#, fuzzy -msgid "passwd: password unchanged\n" -msgstr "Password telah diubah." +#, fuzzy, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Direktori root tidak sah \"%s\"\n" -msgid "passwd: password updated successfully\n" -msgstr "passwd: kata sandi diperbaharui dengan sukses\n" +#, fuzzy, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Tidak dapat mengubah direktori root ke \"%s\"\n" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" -msgstr "" +msgid "%s: out of memory\n" +msgstr "%s: kehabisan memori\n" #, fuzzy, c-format -#| msgid "%s: repository %s not supported\n" -msgid "%s: conversation type %d not supported.\n" -msgstr "%s: repositori %s tidak didukung\n" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: tidak dapat memperbaharui berkas %s\n" #, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: kesalahan %d\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: direktori rumah `%s' tak sah\n" #, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() gagal, kesalahan nomor %d\n" - -#, c-format -msgid "Incorrect password for %s.\n" -msgstr "Kata sandi tidak tepat untuk %s\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" #, c-format -msgid "%s: multiple --root options\n" +msgid "%s: Suspiciously long symlink: %s\n" msgstr "" -#, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" -#, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: gagal membuang hak (%s)\n" +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: perhatian: tak dapat menghapus " #, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: telepon rumah tidak sah: \"%s\"\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: perhatian: tak dapat menghapus " #, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: tak dapat membuat direktori %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: ubah nama: %s" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: tak dapat membuat direktori %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: tak dapat membuat direktori %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: perhatian: tak dapat menghapus " -#, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" -#, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: perhatian: tak dapat menghapus " #, fuzzy, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Tidak dapat cd ke \"%s\"\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: tidak dapat memperbaharui berkas %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Tidak terdapat direktori, masuk dengan HOME=/" +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: tak dapat memperbaharui berkas shadow\n" #, c-format -msgid "Cannot execute %s" -msgstr "Tidak dapat menjalankan %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" #, fuzzy, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Direktori root tidak sah \"%s\"\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: ubah nama: %s" #, fuzzy, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Tidak dapat mengubah direktori root ke \"%s\"\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: tidak dapat membuka berkas %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -620,6 +622,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -645,12 +650,15 @@ msgstr "Kata Sandi Tak-aktif" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Waktu Kadaluarsa Akun (TTTT-MM-HH)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Penggantian kata sandi terakhir\t\t\t\t\t: " - msgid "never" msgstr "tak pernah" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Penggantian kata sandi terakhir\t\t\t\t\t: " + msgid "password must be changed" msgstr "password mesti diubah" @@ -818,14 +826,6 @@ msgstr "%s: \"%s\" berisi karakter-karakter ilegal\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: pengguna %s tak ada\n" -#, fuzzy, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: tidak dapat mengubah pengguna '%s' pada klien NIS.\n" - -#, fuzzy, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: `%s' merupakan master NIS untuk klien ini.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Mengubah informasi pengguna dari %s\n" @@ -854,6 +854,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: -a hanya diperbolehkan dengan -G\n" @@ -904,6 +908,15 @@ msgstr "" msgid "Login Shell" msgstr "Login Shell" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Anda tidak boleh mengubah shell untuk %s.\n" @@ -916,6 +929,10 @@ msgstr "Mengubah login shell untuk %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Entri tidak sah: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s merupakan shell yang tidak sah.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s merupakan shell yang tidak sah.\n" @@ -1126,9 +1143,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1141,6 +1155,10 @@ msgstr "nama pengguna tak sah '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: nama grup %s tidak sah\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: tidak dapat membuka berkas %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "nama grup `%s' tidak sah\n" @@ -1183,14 +1201,6 @@ msgstr "%s: tidak dapat mengubah pengguna '%s' pada klien NIS.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: grup %s tidak ada\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: grup `%s' merupakan grup NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s merupakan master NIS\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: pengguna %s merupakan pengguna NIS\n" @@ -1266,10 +1276,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "nama grup `%s' tidak sah\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: grup %s merupakan sebuah grup NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: pengguna %s tak dikenal\n" @@ -1384,7 +1390,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1478,10 +1484,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Tanpa entri utmp. Anda mesti menjalankan \"login\" dari level terendah \"sh\"" - #, fuzzy, c-format msgid "" "\n" @@ -1515,14 +1517,6 @@ msgstr "Login tidak tepat" msgid "Cannot find user (%s)\n" msgstr "%s: baris %d: tak menemukan pengguna %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: gagal membuat proses: %s" @@ -1559,7 +1553,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1584,17 +1579,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: ruas terlalu panjang\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: direktori awal `%s' tak sah\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: tak dapat membuat direktori %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1628,14 +1619,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: tak dapat membuat direktori %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1656,6 +1646,10 @@ msgstr "%s: nama pengguna `%s' tak sah\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: nama pengguna `%s' tak sah\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: baris %d: baris tidak sah\n" @@ -1676,6 +1670,10 @@ msgstr "%s: baris %d: tak dapat membuat GID\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: pengguna %s tak ada\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: ubah nama: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: baris %d: tak dapat memperbaharui kata sandi\n" @@ -1696,14 +1694,14 @@ msgstr "%s: baris %d: chown gagal\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: baris %d: tak dapat memperbaharui entri\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: gagal membuang hak (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: tak dapat membuat %s\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: gagal membuang hak (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: tidak dapat memperbaharui berkas grup\n" @@ -1762,6 +1760,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Kata sandi lama: " @@ -1781,6 +1782,11 @@ msgstr "" "Masukkan password baru (minimim %d, maksimum %d karakter)\n" "Mohon gunakan kombinasi huruf besar, huruf kecil dan angka.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: ruas terlalu panjang\n" + msgid "New password: " msgstr "kata sandi baru: " @@ -1821,6 +1827,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: repositori %s tidak didukung\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1964,11 +1974,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2043,6 +2051,11 @@ msgstr "Anda tak diperbolehkan untuk su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Tak ada entri kata sandi untuk 'root'" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nama pengguna tak sah '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: mesti dijalankan dari sebuah terminal\n" @@ -2088,6 +2101,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2098,10 +2117,6 @@ msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: tak dapat membuka berkas-berkas bawaan yang baru\n" @@ -2118,10 +2133,6 @@ msgstr "%s: tak dapat membuat direktori %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: ubah nama: %s" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: grup `%s' merupakan grup NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: grup yang diberikan terlalu banyak (maks %d).\n" @@ -2231,6 +2242,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: direktori awal `%s' tak sah\n" @@ -2360,6 +2376,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +msgid "Synchronize mailbox file" +msgstr "" + +msgid "Closing mailbox file" +msgstr "" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2480,10 +2502,6 @@ msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: tak dapat mengubah nama direktori %s menjadi %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: pengguna %s merupakan pengguna NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: direktori rumah `%s' tak sah\n" @@ -2582,6 +2600,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2664,10 +2686,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: tidak dapat memperbaharui berkas kata sandi\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: perhatian %s tak dimiliki oleh %s\n" @@ -2773,8 +2803,9 @@ msgid "failed to stat edited file" msgstr "gagal mengubah nama kotak-surat" #, fuzzy -msgid "failed to allocate memory" -msgstr "gagal mengganti pemilik kotak-surat" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: tidak dapat membuka berkas\n" #, fuzzy msgid "failed to create backup file" @@ -2788,6 +2819,57 @@ msgstr "%s: tidak dapat mengembalikan %s: %s (perubahan ada dalam %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: direktori awal `%s' tak sah\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Lingkungan overflow\n" + +#, fuzzy, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: tidak dapat mengubah pengguna '%s' pada klien NIS.\n" + +#, fuzzy, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: `%s' merupakan master NIS untuk klien ini.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: grup `%s' merupakan grup NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s merupakan master NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: grup %s merupakan sebuah grup NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: grup `%s' merupakan grup NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: pengguna %s merupakan pengguna NIS\n" + +#~ msgid "too simple" +#~ msgstr "terlalu sederhana" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Tanpa entri utmp. Anda mesti menjalankan \"login\" dari level terendah " +#~ "\"sh\"" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: direktori awal `%s' tak sah\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "gagal mengganti pemilik kotak-surat" + #~ msgid "Usage: id\n" #~ msgstr "Penggunaan: id\n" @@ -2803,10 +2885,6 @@ msgstr "%s: direktori awal `%s' tak sah\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Peringatan Kadaluarsanya Kata Sandi" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nama pengguna tak sah '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Nama pengguna Port Dari Terakhir" diff --git a/po/it.gmo b/po/it.gmo index 7b883cd..eafc748 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index f54f087..28eaa85 100644 --- a/po/it.po +++ b/po/it.po @@ -25,7 +25,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2008-03-27 14:40+0100\n" "Last-Translator: Danilo Piazzalunga \n" "Language-Team: Italian \n" @@ -35,224 +35,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Più di una voce chiamata «%s» in %s. Correggere il problema con pwck o " -"grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "metodo di cifratura non supportato da libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Impossibile allocare spazio per le informazioni di configurazione.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"errore di configurazione: oggetto «%s» sconosciuto (avvisare " -"l'amministratore)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Password: " - -#, c-format -msgid "%s's Password: " -msgstr "Password di %s: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Impossibile aprire il file delle password.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Impossibile allocare spazio per le informazioni di configurazione.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Modifica delle informazioni sulla durata dell'account di %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: impossibile determinare il proprio nome utente.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: riga %d: impossibile trovare l'utente %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: memoria esaurita\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: impossibile aggiornare il file %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: directory home «%s» non valida\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: impossibile rinominare la directory %s in %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: impossibile creare la directory %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: attenzione: impossibile rimuovere " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: attenzione: impossibile rimuovere " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: rename: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: impossibile rinominare la directory %s in %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: impossibile rinominare la directory %s in %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: attenzione: impossibile rimuovere " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: impossibile creare la directory %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: attenzione: impossibile rimuovere " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: impossibile aggiornare il file %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: impossibile aggiornare il file shadow\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: rename: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: impossibile aprire il file %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Attenzione: gruppo «%s» sconosciuto\n" @@ -299,6 +81,13 @@ msgstr "Impossibile cambiare i permessi al device %s" msgid "%s: failed to unlock %s\n" msgstr "%s: lunghezza dei campi eccessiva\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Più di una voce chiamata «%s» in %s. Correggere il problema con pwck o " +"grpck.\n" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -306,8 +95,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Dimensione dell'ambiente eccessiva\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "metodo di cifratura non supportato da libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -406,8 +196,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "Impossibile ottenere un UID univoco (nessun UID disponibile)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" + +msgid "Could not allocate space for config info.\n" +msgstr "Impossibile allocare spazio per le informazioni di configurazione.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"errore di configurazione: oggetto «%s» sconosciuto (avvisare " +"l'amministratore)\n" #, fuzzy, c-format msgid "%s: Memory allocation failure\n" @@ -436,7 +235,7 @@ msgstr "Impossibile allocare spazio per le informazioni di configurazione.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: impossibile aprire il file\n" #, fuzzy, c-format @@ -447,10 +246,22 @@ msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" + # NdT: Riferito al numero massimo di accessi concorrenti per un utente. msgid "Too many logins.\n" msgstr "Troppi accessi.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "C'è nuova posta." @@ -460,6 +271,14 @@ msgstr "Nessun messaggio di posta." msgid "You have mail." msgstr "C'è la solita posta." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "nessuna modifica" @@ -472,9 +291,6 @@ msgstr "cambiano solo maiuscole/minuscole" msgid "too similar" msgstr "simile alla precedente" -msgid "too simple" -msgstr "troppo semplice" - msgid "rotated" msgstr "rotazione" @@ -521,6 +337,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() ha restituito l'errore %d\n" +msgid "Password: " +msgstr "Password: " + +#, c-format +msgid "%s's Password: " +msgstr "Password di %s: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Password sbagliata per %s\n" @@ -546,30 +369,127 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: impossibile creare la directory %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: impossibile creare la directory %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Valore di ENCRYPT_METHOD «%s» non valido.\n" +"Viene usato il valore predefinito, DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Impossibile aprire il file delle password.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Impossibile allocare spazio per le informazioni di configurazione.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Impossibile allocare spazio per le informazioni di configurazione.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Modifica delle informazioni sulla durata dell'account di %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: impossibile determinare il proprio nome utente.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: impossibile creare la directory %s\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: riga %d: impossibile trovare l'utente %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" -"Valore di ENCRYPT_METHOD «%s» non valido.\n" -"Viene usato il valore predefinito, DES.\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -583,6 +503,10 @@ msgstr "Directory non presente, accesso con HOME=/" msgid "Cannot execute %s" msgstr "Impossibile eseguire %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Directory root «%s» non valida\n" @@ -591,6 +515,84 @@ msgstr "Directory root «%s» non valida\n" msgid "Can't change root directory to '%s'\n" msgstr "Impossibile cambiare la directory root in «%s»\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: memoria esaurita\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: impossibile aggiornare il file %s\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: directory home «%s» non valida\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: impossibile rinominare la directory %s in %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: attenzione: impossibile rimuovere " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: attenzione: impossibile rimuovere " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: rename: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: impossibile rinominare la directory %s in %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: impossibile rinominare la directory %s in %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: attenzione: impossibile rimuovere " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: attenzione: impossibile rimuovere " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: impossibile aggiornare il file %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: impossibile aggiornare il file shadow\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: rename: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: impossibile aprire il file %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: l'utente %s è attualmente collegato\n" @@ -658,6 +660,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -683,12 +688,15 @@ msgstr "Inattività della password" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data di scadenza dell'account (AAAA-MM-GG)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Ultimo cambio della password\t\t\t\t: " - msgid "never" msgstr "mai" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Ultimo cambio della password\t\t\t\t: " + msgid "password must be changed" msgstr "la password deve essere cambiata" @@ -857,14 +865,6 @@ msgstr "%s: «%s» contiene caratteri non ammessi\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: l'utente «%s» non esiste\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: impossibile modificare l'utente «%s» sul client NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» è il NIS master per questo client.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Modifica delle informazioni relative all'utente %s\n" @@ -902,6 +902,11 @@ msgstr "" " -s, --sha-rounds il numero di passaggi SHA per gli\n" " algoritmi di cifratura SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: metodo di cifratura «%s» non supportato\n" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: è permesso usare il flag %s solo con il flag %s\n" @@ -952,6 +957,15 @@ msgstr "" msgid "Login Shell" msgstr "Shell di login" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: impossibile rinominare la directory %s in %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Non è permesso cambiare la shell di %s.\n" @@ -964,6 +978,10 @@ msgstr "Cambio della shell di login di %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: voce «%s» non valida\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s non è una shell valida.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s non è una shell valida.\n" @@ -1187,9 +1205,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1202,6 +1217,10 @@ msgstr "nome utente «%s» non valido\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s non è un nome di gruppo valido\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: impossibile aprire il file %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: nome di gruppo «%s» non valido\n" @@ -1246,14 +1265,6 @@ msgstr "" msgid "%s: group '%s' does not exist\n" msgstr "%s: gruppo «%s» inesistente\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: il gruppo «%s» è un gruppo NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s è il NIS master\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: l'utente %s è un utente NIS\n" @@ -1335,10 +1346,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: nome di gruppo «%s» non valido\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: il gruppo «%s» è un gruppo NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: utente «%s» sconosciuto\n" @@ -1456,7 +1463,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1551,9 +1558,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Nessuna voce utmp. Eseguire «login» dalla shell di livello più basso" - #, fuzzy, c-format msgid "" "\n" @@ -1587,14 +1591,6 @@ msgstr "Login non corretto" msgid "Cannot find user (%s)\n" msgstr "%s: riga %d: impossibile trovare l'utente %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: impossibile eseguire fork(): %s" @@ -1632,7 +1628,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1657,17 +1654,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: lunghezza dei campi eccessiva\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: directory di base «%s» non valida\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: impossibile creare la directory %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1700,14 +1693,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: impossibile creare la directory %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1728,6 +1720,10 @@ msgstr "%s: nome utente «%s» non valido\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: nome utente «%s» non valido\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: riga %d: riga non valida\n" @@ -1750,6 +1746,10 @@ msgstr "%s: riga %d: impossibile creare il gruppo\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: l'utente «%s» non esiste\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: rename: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: riga %d: impossibile aggiornare la password\n" @@ -1770,14 +1770,14 @@ msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: riga %d: impossibile aggiornare la voce\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: impossibile abbandonare i privilegi (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: impossibile creare l'utente\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: impossibile abbandonare i privilegi (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: impossibile aggiornare il file dei gruppi\n" @@ -1845,6 +1845,9 @@ msgstr "" " -s, --sha-rounds il numero di passaggi SHA per gli\n" " algoritmi di cifratura SHA*\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Vecchia password: " @@ -1864,6 +1867,11 @@ msgstr "" "Inserire la nuova password (minimo %d caratteri, massimo %d)\n" "Utilizzare una combinazione di lettere maiuscole, minuscole e numeri.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: lunghezza dei campi eccessiva\n" + msgid "New password: " msgstr "Nuova password: " @@ -1907,6 +1915,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: repository %s non supportato\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -2051,11 +2063,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2142,6 +2152,11 @@ msgstr "Non si è autorizzati a diventare %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Manca una voce per «root» nel file delle password" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nome utente «%s» non valido\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: si deve avviare da un terminale\n" @@ -2187,6 +2202,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2197,10 +2218,6 @@ msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: impossibile aprire il nuovo file dei valori predefiniti\n" @@ -2217,10 +2234,6 @@ msgstr "%s: impossibile creare la directory %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: rename: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: il gruppo «%s» è un gruppo NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: troppi gruppi specificati (max %d).\n" @@ -2348,6 +2361,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: directory di base «%s» non valida\n" @@ -2479,6 +2497,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Impostazione dei permessi del file della casella di posta" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Creazione del file della casella di posta" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Creazione del file della casella di posta" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2605,10 +2633,6 @@ msgstr "%s: impossibile rinominare la directory %s in %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: impossibile rinominare la directory %s in %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: l'utente %s è un utente NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: directory home «%s» non valida\n" @@ -2724,6 +2748,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, fuzzy, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2811,10 +2839,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: impossibile aggiornare il file delle password\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: attenzione: %s non appartiene a %s\n" @@ -2923,8 +2959,9 @@ msgid "failed to stat edited file" msgstr "impossibile rinominare la casella di posta" #, fuzzy -msgid "failed to allocate memory" -msgstr "impossibile cambiare il proprietario della casella di posta" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: impossibile aprire il file\n" #, fuzzy msgid "failed to create backup file" @@ -2939,6 +2976,56 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: directory di base «%s» non valida\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Dimensione dell'ambiente eccessiva\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: impossibile modificare l'utente «%s» sul client NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» è il NIS master per questo client.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: il gruppo «%s» è un gruppo NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s è il NIS master\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: il gruppo «%s» è un gruppo NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: il gruppo «%s» è un gruppo NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: l'utente %s è un utente NIS\n" + +#~ msgid "too simple" +#~ msgstr "troppo semplice" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Nessuna voce utmp. Eseguire «login» dalla shell di livello più basso" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: directory di base «%s» non valida\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "impossibile cambiare il proprietario della casella di posta" + #~ msgid "Usage: id\n" #~ msgstr "Uso: id\n" @@ -2954,10 +3041,6 @@ msgstr "%s: directory di base «%s» non valida\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Avviso di scadenza della password" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nome utente «%s» non valido\n" - #~ msgid "Username Port From Latest" #~ msgstr "Nome utente Porta Da Ultimo accesso" diff --git a/po/ja.gmo b/po/ja.gmo index ad97665..4726f5a 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 0baf30b..a047a8a 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.5\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2012-05-21 02:52+0900\n" "Last-Translator: NAKANO Takeo \n" "Language-Team: Japanese \n" @@ -17,225 +17,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"'%s' というエントリが %s に複数あります。pwck か grpck で修正してください。\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "暗号化手法が libcrypt によってサポートされていない? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "設定エラー - %s の値 '%s' を正しく解釈できません" - -msgid "Could not allocate space for config info.\n" -msgstr "設定情報用の空き容量が確保できませんでした。\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "設定エラー: 不明な項目 '%s' (管理者に連絡してください)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd は正常に終了しませんでした (シグナル %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd はステータス %d で終了しました\n" - -msgid "Password: " -msgstr "パスワード: " - -#, c-format -msgid "%s's Password: " -msgstr "%s のパスワード: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "audit インターフェースを開けません - 終了します。\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "SELinux の管理ハンドルを作成できません\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux ポリシーが管理されていません\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "SELinux のポリシー保存領域を読めません\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "SELinux の管理接続が確立できません\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "SELinux のトランザクションを開始できません\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "%s の seuser の問い合わせができません\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "%s の serange を設定できません\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "%s の sename を設定できません\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "%s のログインマッピングを修正できません\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s の SELinux ログインマッピングを生成できません\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "%s の名前を設定できません\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "%s の SELinux ユーザを設定できません\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "%s のログインマッピングを追加できません\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "SELinux の管理を初期化できません\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "SELinux のユーザキーを生成できません\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "この SELinux ユーザを検証できません\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "SELinux のユーザマッピングを修正できません\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "SELinux のユーザマッピングを追加できません\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "SELinux のトランザクションをコミットできません\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"%s のログインマッピングが定義されていません。デフォルトのマッピングを\n" -"用いたならば OK です。\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "%s のログインマッピングはポリシーで定義されており、削除できません\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "%s のログインマピングを削除できません" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: メモリが足りません\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: %s の状態を取得できません: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s はディレクトリでもシンボリックリンクでもありません\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: シンボリックリンク %s を読めません: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: シンボリックリンクが長すぎるようです: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: ディレクトリ %s を作成できません: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: %s の所有者を変更できません: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: : %s のモードを変更できません: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: アンリンク: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: ディレクトリ %s を削除できません: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: %s の名前を %s に変更できません: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: %s を削除できません: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: シンボリックリンク %s を作成できません: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: %s の所有者を変更できません: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: %s を lstat できません: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: 警告: ユーザ %s には tcb shadow ファイルがありません\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: 緊急事態: %s の tcb shadow が st_nlink=1 の通常ファイルではありません。\n" -"アカウントはロックされたままになります。\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s を開けません: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "警告: 不明なグループ %s\n" @@ -282,6 +63,12 @@ msgstr "tty stdin の所有者かモードを変更できません: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: %s がアンロックできませんでした\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"'%s' というエントリが %s に複数あります。pwck か grpck で修正してください。\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -289,8 +76,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "環境変数領域のオーバーフロー\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "暗号化手法が libcrypt によってサポートされていない? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -406,8 +194,15 @@ msgstr "" "%s: 他と重ならないユーザ ID を取得できません (利用できる UID がありません)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "設定エラー - %s の値 '%s' を正しく解釈できません" + +msgid "Could not allocate space for config info.\n" +msgstr "設定情報用の空き容量が確保できませんでした。\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "設定エラー: 不明な項目 '%s' (管理者に連絡してください)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -437,9 +232,10 @@ msgstr "%s の名前を設定できません\n" msgid "%s: Could not set caps\n" msgstr "%s の名前を設定できません\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: %d 行: chown %s が失敗しました: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -451,9 +247,22 @@ msgstr "%s: %d 行: chown %s が失敗しました: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: %d 行: chown %s が失敗しました: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: %d 行: chown %s が失敗しました: %s\n" + msgid "Too many logins.\n" msgstr "ログイン試行数が制限を越えました。\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "新しいメールがあります。" @@ -463,6 +272,14 @@ msgstr "メールはありません。" msgid "You have mail." msgstr "メールがあります。" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd は正常に終了しませんでした (シグナル %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd はステータス %d で終了しました\n" + msgid "no change" msgstr "変更されていません" @@ -475,9 +292,6 @@ msgstr "大文字小文字しか変更されていません" msgid "too similar" msgstr "似すぎています" -msgid "too simple" -msgstr "単純すぎます" - msgid "rotated" msgstr "循環になっています" @@ -511,88 +325,279 @@ msgstr "" msgid "%s: conversation type %d not supported.\n" msgstr "%s: レポジトリ %s はサポートしていません\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: エラー %d\n" +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: エラー %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() にエラー %d で失敗しました\n" + +msgid "Password: " +msgstr "パスワード: " + +#, c-format +msgid "%s's Password: " +msgstr "%s のパスワード: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "%s のパスワードが正しくありません。\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: --root オプションが複数あります\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: オプション '%s' には引き数を指定してください\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: 特権を落とせませんでした (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: chroot のパス'%s' が不正です\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: chroot ディレクトリ%s にアクセスできません: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: ディレクトリ %s に chroot できませんでした: %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: chroot ディレクトリ%s にアクセスできません: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"ENCRYPT_METHOD の値が正しくありません: '%s'\n" +"デフォルトの DES を用います。\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "audit インターフェースを開けません - 終了します。\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "SELinux の管理ハンドルを作成できません\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux ポリシーが管理されていません\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "SELinux のポリシー保存領域を読めません\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "SELinux の管理接続が確立できません\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "SELinux のトランザクションを開始できません\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "%s の seuser の問い合わせができません\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "%s の serange を設定できません\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "%s の sename を設定できません\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "%s のログインマッピングを修正できません\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s の SELinux ログインマッピングを生成できません\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "%s の名前を設定できません\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "%s の SELinux ユーザを設定できません\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "%s のログインマッピングを追加できません\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "SELinux の管理を初期化できません\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "SELinux のユーザキーを生成できません\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "この SELinux ユーザを検証できません\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "SELinux のユーザマッピングを修正できません\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "SELinux のユーザマッピングを追加できません\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "SELinux のトランザクションをコミットできません\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"%s のログインマッピングが定義されていません。デフォルトのマッピングを\n" +"用いたならば OK です。\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "%s のログインマッピングはポリシーで定義されており、削除できません\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "%s のログインマピングを削除できません" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "'%s' へディレクトリを変更できません\n" + +msgid "No directory, logging in with HOME=/" +msgstr "ディレクトリがありません。HOME=/ としてログインします" + +#, c-format +msgid "Cannot execute %s" +msgstr "%s を実行できません" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "ルートディレクトリ '%s' は不正です\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "ルートディレクトリを '%s' へ変更できません\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: メモリが足りません\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() にエラー %d で失敗しました\n" +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: %s の状態を取得できません: %s\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "%s のパスワードが正しくありません。\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s はディレクトリでもシンボリックリンクでもありません\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: --root オプションが複数あります\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: シンボリックリンク %s を読めません: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: オプション '%s' には引き数を指定してください\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: シンボリックリンクが長すぎるようです: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: 特権を落とせませんでした (%s)\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: ディレクトリ %s を作成できません: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: chroot のパス'%s' が不正です\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: %s の所有者を変更できません: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: chroot ディレクトリ%s にアクセスできません: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: : %s のモードを変更できません: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: chroot ディレクトリ%s にアクセスできません: %s\n" +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: アンリンク: %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: ディレクトリ %s に chroot できませんでした: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: ディレクトリ %s を削除できません: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: %s の名前を %s に変更できません: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"ENCRYPT_METHOD の値が正しくありません: '%s'\n" -"デフォルトの DES を用います。\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: %s を削除できません: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: シンボリックリンク %s を作成できません: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "'%s' へディレクトリを変更できません\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: %s の所有者を変更できません: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "ディレクトリがありません。HOME=/ としてログインします" +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: %s を lstat できません: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "%s を実行できません" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: 警告: ユーザ %s には tcb shadow ファイルがありません\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "ルートディレクトリ '%s' は不正です\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: 緊急事態: %s の tcb shadow が st_nlink=1 の通常ファイルではありません。\n" +"アカウントはロックされたままになります。\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "ルートディレクトリを '%s' へ変更できません\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s を開けません: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -666,6 +671,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_DIR chroot するディレクトリ\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_DIR chroot するディレクトリ\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -693,12 +703,15 @@ msgstr "パスワード無効日数" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "アカウント期限切れ日付 (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "最終パスワード変更日\t\t\t\t:" - msgid "never" msgstr "なし" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "最終パスワード変更日\t\t\t\t:" + msgid "password must be changed" msgstr "パスワードは変更しなければなりません" @@ -869,14 +882,6 @@ msgstr "%s: '%s' には利用できない文字が含まれています\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: ユーザ '%s' は存在しません\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: NIS クライアントではユーザ '%s' を変更できません。\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' がこのクライアントの NIS マスターです。\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s のユーザ情報を変更中\n" @@ -915,6 +920,11 @@ msgid "" msgstr "" " -s, --sha-rounds SHA* 暗号化アルゴリズムの SHA ラウンド回数\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: サポートされていない暗号化手法です: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: %s フラグは %s フラグと共に指定する必要があります\n" @@ -965,6 +975,16 @@ msgstr " -s, --shell SHELL ユーザのシェルを新たに SHELL msgid "Login Shell" msgstr "ログインシェル" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: %s のサイズを取得できませんでした: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: 新しいデフォルトファイルを作れません\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "あなたは '%s' のシェルを変更できません。\n" @@ -977,6 +997,11 @@ msgstr "%s のログインシェルを変更中\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: 不正なエントリ: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s はシェルに指定できません\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s はシェルに指定できません\n" @@ -1216,11 +1241,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system システムアカウントを作成します\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_DIR chroot するディレクトリ\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1235,6 +1255,11 @@ msgstr "ユーザ名 '%s' は不正です\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' はグループ名として正しくありません\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s を開けません: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: '%s' はグループ ID として正しくありません\n" @@ -1278,14 +1303,6 @@ msgstr "%s: ユーザ '%s' のプライマリグループは削除できませ msgid "%s: group '%s' does not exist\n" msgstr "%s: グループ '%s' は存在しません\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: グループ '%s' は NIS グループです\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s が NIS マスターです\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: ユーザ '%s' はすでに '%s' のメンバーです\n" @@ -1381,10 +1398,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s '%s' はグループ名として正しくありません\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: グループ %s は NIS のグループです\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: ユーザ %s は不明です\n" @@ -1512,7 +1525,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr " -a, --all 全ユーザの faillog 記録を表示する\n" @@ -1609,11 +1622,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: おそらく実効 root がないと動作できません\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"utmp にエントリがありません。\"login\" を \"sh\" の最低レベルから行う必要があ" -"ります" - #, c-format msgid "" "\n" @@ -1647,14 +1655,6 @@ msgstr "ログインが違います" msgid "Cannot find user (%s)\n" msgstr "ユーザが見つかりません (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: fork に失敗しました: %s" @@ -1691,7 +1691,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1717,20 +1718,15 @@ msgstr "%s: %s を削除できませんでした\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: %s がアンロックできませんでした\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: %s の tcb ディレクトリが見付かりませんでした\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: %s の tcb ディレクトリの作成に失敗しました\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1763,14 +1759,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: %s の tcb ディレクトリの作成に失敗しました\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1794,6 +1790,10 @@ msgstr "%s: '%s' はユ−ザ ID に使えません\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: '%s' はユーザ名に使えません\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: %d 行: 不正な行です\n" @@ -1816,6 +1816,11 @@ msgstr "%s: %d 行: グループを作成できません\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: %d 行: ユーザ '%s' は %s に存在しません\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: アンリンク: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: %d 行: パスワードを更新できません\n" @@ -1837,14 +1842,14 @@ msgstr "%s: %d 行: chown %s が失敗しました: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: %d 行: エントリを更新できません\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: %s の新しいエントリ '%s' を準備できませんでした。\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: ユーザを作成できません\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: %s の新しいエントリ '%s' を準備できませんでした。\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: グループを作成できません\n" @@ -1916,6 +1921,11 @@ msgstr "" " -x, --maxdays MAX_DAYS パスワードが変更できる期間の最長日数を\n" " MAX_DAYS に変更する\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list アカウントの経時情報を表示する\n" + msgid "Old password: " msgstr "古いパスワード: " @@ -1935,6 +1945,11 @@ msgstr "" "新しいパスワードを入れてください (最低 %d 文字、最高 %d 文字)\n" "大文字・小文字・数字を混ぜて使うようにしてください。\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: 入力内容が長過ぎます\n" + msgid "New password: " msgstr "新しいパスワード: " @@ -1978,6 +1993,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: レポジトリ %s はサポートしていません\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: -g/--group オプションは root のみが指定できます\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2130,11 +2150,9 @@ msgstr "%s: シグナルが異常です\n" msgid "Session terminated, terminating shell..." msgstr "セッションが終了しました。シェルを終了しています..." -#, c-format msgid " ...killed.\n" msgstr " ...kill されました。\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...子プロセスの終了を待ちます。\n" @@ -2220,6 +2238,11 @@ msgstr "%s: あなたは現時点では su する権限がありません\n" msgid "No passwd entry for user '%s'\n" msgstr "ユーザ '%s' のパスワードエントリがありません\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ユーザ名 '%s' は不正です\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: 端末から実行してください\n" @@ -2265,6 +2288,13 @@ msgstr "%s: %s を作成しましたが、削除できません\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%1$s: %3$s 中の設定 %2$s は無視されます\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%1$s: %3$s 中の設定 %2$s は無視されます\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2275,10 +2305,6 @@ msgstr "%s: 新しいデフォルトファイルを作れません\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: 新しいデフォルトファイルを作れません\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: 新しいデフォルトファイルを作れません\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: 新しいデフォルトファイルを開けません\n" @@ -2295,10 +2321,6 @@ msgstr "%s: バックアップファイル (%s) を作成できません: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: ファイル名変更: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: グループ '%s' は NIS グループです。\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: 指定したグループ数が多すぎます (最大 %d 個)。\n" @@ -2425,6 +2447,17 @@ msgstr "" " -Z, --selinux-user SEUSER SELinux のユーザマッピングに指定した\n" " SEUSER を使う\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER SELinux のユーザマッピングに指定した\n" +" SEUSER を使う\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: ベースディレクトリ '%s' は不正です\n" @@ -2567,6 +2600,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "メールボックスファイルの許可属性を設定します" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "メールボックスファイルを作成します" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "メールボックスファイルを作成します" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2697,10 +2740,6 @@ msgstr "%s: %s の内容を削除できませんでした: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: %s の tcb ファイルを削除できません: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: ユーザ %s は NIS ユーザです\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s のホームディレクトリ (%s) がありません\n" @@ -2827,6 +2866,16 @@ msgstr "" " -Z, --selinux-user このユーザアカウントへの新規 SELinux\n" " ユーザマッピング\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user このユーザアカウントへの新規 SELinux\n" +" ユーザマッピング\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2921,11 +2970,23 @@ msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" "%s: ユーザ %lu の lastlog エントリをユーザ %lu にコピーできませんでした: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: ユーザ %lu の lastlog エントリをユーザ %lu にコピーできませんでした: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: ユーザ %lu の faillog エントリをユーザ %lu にコピーできませんでした: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: ユーザ %lu の faillog エントリをユーザ %lu にコピーできませんでした: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: 警告: %s は %s の所有ではありません\n" @@ -3024,8 +3085,8 @@ msgstr "スクラッチファイルを削除できませんでした" msgid "failed to stat edited file" msgstr "編集したファイルの状態を取得できませんでした" -msgid "failed to allocate memory" -msgstr "メモリ割当に失敗しました" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "バックアップファイルを作成できませんでした" @@ -3038,6 +3099,57 @@ msgstr "%s: %s を復旧できませんでした: %s (あなたの変更は %s msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: %s の tcb ディレクトリが見付かりませんでした\n" +#~ msgid "Environment overflow\n" +#~ msgstr "環境変数領域のオーバーフロー\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: NIS クライアントではユーザ '%s' を変更できません。\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' がこのクライアントの NIS マスターです。\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: グループ '%s' は NIS グループです\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s が NIS マスターです\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: グループ %s は NIS のグループです\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: 新しいデフォルトファイルを作れません\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: グループ '%s' は NIS グループです。\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: ユーザ %s は NIS ユーザです\n" + +#~ msgid "too simple" +#~ msgstr "単純すぎます" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "utmp にエントリがありません。\"login\" を \"sh\" の最低レベルから行う必要" +#~ "があります" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: %s の tcb ディレクトリが見付かりませんでした\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "メモリ割当に失敗しました" + #~ msgid "Usage: id\n" #~ msgstr "使い方: id\n" @@ -3053,10 +3165,6 @@ msgstr "%s: %s の tcb ディレクトリが見付かりませんでした\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: パスワード期限切れ情報を変更しました\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ユーザ名 '%s' は不正です\n" - #~ msgid "Username Port From Latest" #~ msgstr "ユーザ名 ポート 場所 最近のログイン" diff --git a/po/ka.gmo b/po/ka.gmo index 69e7f5e..98fc7b9 100644 Binary files a/po/ka.gmo and b/po/ka.gmo differ diff --git a/po/ka.po b/po/ka.po index ab04107..3fb1915 100644 --- a/po/ka.po +++ b/po/ka.po @@ -1,14 +1,14 @@ # Shadow-utils translation to Georgian. -# Copyright (C) YEAR Free Software Foundation, Inc. +# Copyright (C) 2024 Free Software Foundation, Inc. # This file is distributed under the same license as the shadow-utils package. -# Temuri Doghonadze , 2022. +# Temuri Doghonadze , 2022-2024. # msgid "" msgstr "" "Project-Id-Version: shadow-utils\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" -"PO-Revision-Date: 2022-08-22 02:33+0200\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" +"PO-Revision-Date: 2024-02-08 06:13+0100\n" "Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian <(nothing)>\n" "Language: ka\n" @@ -16,226 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.1.1\n" - -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "%s ბევრჯერაა ნახსენები %s-ში. ჩაასწორეთ pwck-ით ან grpck-ით.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "crypt-ის მეთოდი არაა მხარდაჭერილი libcrypt-ის მიერ? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" -"კონფიგურაციის შეცდომა - %s-ის მნიშვნელობის დამუშავება შეუძლებელია: '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "კონფიგურაციის ინფორმაციისთვის სივრცის გამოყოფა შეუძლებელია.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"კონფიგურაციის შეცდომა - უცნობი ჩანაწერი '%s' (შეატყობინეთ ადმინისტრატორს)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd ნორმალურად არ დასრულებულა (სიგნალი %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd გამოვიდა სტატუსით %d\n" - -msgid "Password: " -msgstr "პაროლი: " - -#, c-format -msgid "%s's Password: " -msgstr "%s-ის პაროლი: " - -msgid "Cannot open audit interface.\n" -msgstr "აუდიტის ინტერფეისის გახსნის შეცდომა.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "%s: SELinux-ის პროცესის წინა კონტექსტის მიღების შეცდომა: %s\n" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "SELinux-ის მართვის დამმუშავებლის შექმნა შეუძლებელია\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux-ის პოლიტიკა მართული არაა\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "SELinux-ის პოლიტიკის საცავის წაკითხვა შეუძლებელია\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "SELinux-ის მართვის შეერთების შექმნა შეუძლებელია\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "SELinux-ის ტრანზაქციის დაწყების შეცდომა\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "%s-ის გამოთხოვა seuser-დან შეუძლებელია\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "%s-სთვის serange-ის დაყენება შეუძლებელია\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "%s-სთვის sename-ის დაყენება შეუძლებელია\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "მომხმარებლის სახელის ბმების ჩასწორება %s-სთვის შეუძლებელია\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s-ზე SELinux-ის მომხმარებლის სახელის ბმის შექმნა შეუძლებელია\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "%s-სთვის სახელის დაყენების შეცდომა\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "%s-სთვის SELinux-ის მომხმარებლის დაყენების შეცდომა\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "%s-სთვის მომხმარებლის სახელის ბმის შექმნის შეცდომა\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "SELinux-ის მართვის ინიციალიზაციის შეცდომა\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "SELinux-ის მომხმარებლის გასაღების შექმნის შეცდომა\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "SELinux-ის მომხმარებლის შემოწმების შეცდომა\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "SELinux-ის მოხმარებლების ბმების შეცვლს შეცდომა\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "SELinux-ის მომხმარებლის ბმის დამატების შეცდომა\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "SELinux-ის ტრანზაქციის გადაცემის შეცდომა\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"მომხმარებლის სახელის ბმა %s-თვის განსაზღვრული არაა. OK, თუ ნაგულისხმები ბმა " -"იქნა გამოყენებული\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "მომხმარებლის სახელი %s პოლიტიკაშია გაწერილი. მისი წაშლა შეუძლებელია\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "მომხმარებლის სახელის ბმის წაშლა %s-სთვის შეუძლებელია" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: არასაკმარისი მეხსიერება\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: %s-ის აღმოჩენის შეცდომა: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s არც საქაღალდეა, არც სიმბმული.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: სიმბმულის წაკითხვის შეცდომა %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: საეჭვოდ გრძელი სიმბმული %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s საქაღალდის (%s) შექმნის შეცდომა: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: %s-ის მფლობელის შეცვლის შეცდომა: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: %s-ის რეჟიმის შეცვლის შეცდომა: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: წაშლა: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: საქაღალდის (%s) წაშლის შეცდომა: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: %s-ის სახელის %s-მდე გადარქმევა შეუძლებელია: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: %s-ის წაშლა შეუძლებელია: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: სიმბმულის (%s) შექმნის შეცდომა: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: %s-ის მფლობელების შეცვლის შეცდომა: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: %s-ის lstat-ის შეცდომა: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: გაფრთხილება: მომხმარებელს (%s) tcb shadow ფაილი არ გააჩნია.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: გადაუდებელი შემთხვევა: %s tcb ჩრდილი არ არის რეგულარული ფაილი st_nlink=1-" -"ით.\n" -"ანგარიში ჩაკეტილია.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s-ის გახსნის შეცდომა: %s\n" +"X-Generator: Poedit 3.3.2\n" #, c-format msgid "Warning: unknown group %s\n" @@ -283,6 +64,11 @@ msgstr "TTY-იდან stdin-ის მფლობელისა და რ msgid "%s: failed to unlock %s\n" msgstr "%s: %s-ის განბლოკვის შეცდომა\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "%s ბევრჯერაა ნახსენები %s-ში. ჩაასწორეთ pwck-ით ან grpck-ით.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -290,8 +76,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "გარემო გადავსებულია\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "crypt-ის მეთოდი არაა მხარდაჭერილი libcrypt-ის მიერ? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -406,8 +193,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: უნიკალური UID-ის მიღების შეცდომა (ხელმისაწვდომი UID-ების გარეშე)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "%s: არასაკმარისი არგუმენტები %u ბმის ჩამოსაყალიბებლად\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" +"კონფიგურაციის შეცდომა - %s-ის მნიშვნელობის დამუშავება შეუძლებელია: '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "კონფიგურაციის ინფორმაციისთვის სივრცის გამოყოფა შეუძლებელია.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"კონფიგურაციის შეცდომა - უცნობი ჩანაწერი '%s' (შეატყობინეთ ადმინისტრატორს)\n" #, c-format msgid "%s: Memory allocation failure\n" @@ -434,8 +230,8 @@ msgid "%s: Could not set caps\n" msgstr "%s: caps-ების დაყენების შედომა\n" #, c-format -msgid "%s: snprintf failed!\n" -msgstr "%s: snprintf -ის შეცდომა!\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: stpeprintf ჩავარდა!\n" #, c-format msgid "%s: open of %s failed: %s\n" @@ -445,9 +241,21 @@ msgstr "%s: %s -ის გახსნის შეცდომა: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: %s-ში ჩაწერის შეცდომა: %s\n" +#, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: %s-ის დახურვა ჩავარდა: %s\n" + msgid "Too many logins.\n" msgstr "მეტისმეტად ბევრი შესვლა.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s მომხმარებლის სახელი: " + msgid "You have new mail." msgstr "თქვენთვის წერილია." @@ -457,6 +265,14 @@ msgstr "ახალი ელფოსტის გარეშე." msgid "You have mail." msgstr "თქვენ გაქვთ ფოსტა." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd ნორმალურად არ დასრულებულა (სიგნალი %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd გამოვიდა სტატუსით %d\n" + msgid "no change" msgstr "ცვლილებების გარეშე" @@ -469,127 +285,313 @@ msgstr "მხოლოდ სიმბოლოების ზომა" msgid "too similar" msgstr "ძალიან ჰგავს" -msgid "too simple" -msgstr "ძალიან მარტივია" - msgid "rotated" msgstr "შემობრუნებული" -msgid "too short" -msgstr "ძალიან მოკლეა" +msgid "too short" +msgstr "ძალიან მოკლეა" + +#, c-format +msgid "Bad password: %s. " +msgstr "ცუდი პაროლი: %s. " + +#, c-format +msgid "passwd: pam_start() failed, error %d\n" +msgstr "passwd: pam_start() -ის შეცდომა: %d\n" + +#, c-format +msgid "passwd: %s\n" +msgstr "passwd: %s\n" + +msgid "passwd: password unchanged\n" +msgstr "passwd: პაროლი არ შეცვლილა\n" + +msgid "passwd: password updated successfully\n" +msgstr "passwd: პაროლი წარმატებით განახლდა\n" + +#, c-format +msgid "%s: PAM modules requesting echoing are not supported.\n" +msgstr "" +"%s: PAM მოდულები, რომლებიც ითხოვენ გამოტანის უფლებას, მხარდაუჭერილია.\n" + +#, c-format +msgid "%s: conversation type %d not supported.\n" +msgstr "%s: საუბრის მხარდაუჭერელი ტიპი: %d.\n" + +#, c-format +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: (მომხმარებელი %s) pam_start -ის შეცდომა %d\n" + +#, c-format +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "" +"%s: (მომხმარებელი %s) pam_chauthtok() -ის შეცდომა:\n" +"%s\n" + +msgid "Password: " +msgstr "პაროლი: " + +#, c-format +msgid "%s's Password: " +msgstr "%s-ის პაროლი: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "არასწორი პაროლი %s-სთვის.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: ერთზე მეტი --root პარამეტრი\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: პარამეტრს ('%s') არგუმენტი ესაჭიროება\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: პრივილეგიების მოცილების შეცდომა (%s)\n" + +#, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "" +"%s: '%s'-ზე chroot-ის შეცდომა. მხარდაჭერილია მხოლოდ აბსოლუტური ბილიკები.\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: chroot საქაღალდის (%s) წვდომის შეცდომა: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: საქაღალდეზე (%s) chroot-ი შეუძლებელია: %s\n" + +#, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: chroot საქაღალდეში (%s) chdir-ის შეცდომა: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"ENCRYPT_METHOD-ის არასწორი მნიშვნელობა: %s.\n" +"ვიყენებ ნაგულისხმებ მნიშვნელობას: DES\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" +"პარამეტრისგან \"%s\" მარილის გენერაციის შეცდომა. შეამოწმეთ თქვენი " +"პარამეტრები ENCRYPT_METHOD-ში და შესაბამის კონფიგურაციაში თქვენს მიერ " +"არჩეული ჰეშის მეთოდისთვის.\n" + +msgid "Cannot open audit interface.\n" +msgstr "აუდიტის ინტერფეისის გახსნის შეცდომა.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "%s: SELinux-ის პროცესის წინა კონტექსტის მიღების შეცდომა: %s\n" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "SELinux-ის მართვის დამმუშავებლის შექმნა შეუძლებელია\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux-ის პოლიტიკა მართული არაა\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "SELinux-ის პოლიტიკის საცავის წაკითხვა შეუძლებელია\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "SELinux-ის მართვის შეერთების შექმნა შეუძლებელია\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "SELinux-ის ტრანზაქციის დაწყების შეცდომა\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "%s-ის გამოთხოვა seuser-დან შეუძლებელია\n" + +#, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "%s-სთვის serange-ის %s-ზე დაყენება შეუძლებელია\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "%s-სთვის sename-ის დაყენება შეუძლებელია\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "მომხმარებლის სახელის ბმების ჩასწორება %s-სთვის შეუძლებელია\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s-ზე SELinux-ის მომხმარებლის სახელის ბმის შექმნა შეუძლებელია\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "%s-სთვის სახელის დაყენების შეცდომა\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "%s-სთვის SELinux-ის მომხმარებლის დაყენების შეცდომა\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "%s-სთვის მომხმარებლის სახელის ბმის შექმნის შეცდომა\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "SELinux-ის მართვის ინიციალიზაციის შეცდომა\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "SELinux-ის მომხმარებლის გასაღების შექმნის შეცდომა\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "SELinux-ის მომხმარებლის შემოწმების შეცდომა\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "SELinux-ის მოხმარებლების ბმების შეცვლს შეცდომა\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "SELinux-ის მომხმარებლის ბმის დამატების შეცდომა\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "SELinux-ის ტრანზაქციის გადაცემის შეცდომა\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"მომხმარებლის სახელის ბმა %s-თვის განსაზღვრული არაა. OK, თუ ნაგულისხმები ბმა " +"იქნა გამოყენებული\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "მომხმარებლის სახელი %s პოლიტიკაშია გაწერილი. მისი წაშლა შეუძლებელია\n" #, c-format -msgid "Bad password: %s. " -msgstr "ცუდი პაროლი: %s. " +msgid "Could not delete login mapping for %s" +msgstr "მომხმარებლის სახელის ბმის წაშლა %s-სთვის შეუძლებელია" #, c-format -msgid "passwd: pam_start() failed, error %d\n" -msgstr "passwd: pam_start() -ის შეცდომა: %d\n" +msgid "Unable to cd to '%s'\n" +msgstr "საქაღალდის %s-ზე შეცვლა შეუძლებელია\n" + +msgid "No directory, logging in with HOME=/" +msgstr "საქაღალდე არ არსებობს. შევდივარ HOME=/-ით" #, c-format -msgid "passwd: %s\n" -msgstr "passwd: %s\n" +msgid "Cannot execute %s" +msgstr "%s-ის შესრულების შეცდომა" -msgid "passwd: password unchanged\n" -msgstr "passwd: პაროლი არ შეცვლილა\n" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "მიღწეულია ქვესისტემის მაქსიმალური სიღრმე\n" -msgid "passwd: password updated successfully\n" -msgstr "passwd: პაროლი წარმატებით განახლდა\n" +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "%s არასწორი root საქაღალდეა\n" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" -msgstr "" -"%s: PAM მოდულები, რომლებიც ითხოვენ გამოტანის უფლებას, მხარდაუჭერილია.\n" +msgid "Can't change root directory to '%s'\n" +msgstr "Root საქაღალდის %s-ზე შეცვლა შეუძლებელია\n" #, c-format -msgid "%s: conversation type %d not supported.\n" -msgstr "%s: საუბრის მხარდაუჭერელი ტიპი: %d.\n" +msgid "%s: out of memory\n" +msgstr "%s: არასაკმარისი მეხსიერება\n" #, c-format -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: (მომხმარებელი %s) pam_start -ის შეცდომა %d\n" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: %s-ის აღმოჩენის შეცდომა: %s\n" #, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "" -"%s: (მომხმარებელი %s) pam_chauthtok() -ის შეცდომა:\n" -"%s\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s არც საქაღალდეა, არც სიმბმული.\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "არასწორი პაროლი %s-სთვის.\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: სიმბმულის წაკითხვის შეცდომა %s: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: ერთზე მეტი --root პარამეტრი\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: საეჭვოდ გრძელი სიმბმული %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: პარამეტრს ('%s') არგუმენტი ესაჭიროება\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s საქაღალდის (%s) შექმნის შეცდომა: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: პრივილეგიების მოცილების შეცდომა (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: %s-ის მფლობელის შეცვლის შეცდომა: %s\n" #, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "" -"%s: '%s'-ზე chroot-ის შეცდომა. მხარდაჭერილია მხოლოდ აბსოლუტური ბილიკები.\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: %s-ის რეჟიმის შეცვლის შეცდომა: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: chroot საქაღალდის (%s) წვდომის შეცდომა: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: წაშლა: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: chroot საქაღალდეზე (%s) chdir-ის შეცდომა: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: საქაღალდის (%s) წაშლის შეცდომა: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: საქაღალდეზე (%s) chroot-ი შეუძლებელია: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: %s-ის სახელის %s-მდე გადარქმევა შეუძლებელია: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "შემთხვევითი ბაიტების მიღების შეცდომა.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: %s-ის წაშლა შეუძლებელია: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"ENCRYPT_METHOD-ის არასწორი მნიშვნელობა: %s.\n" -"ვიყენებ ნაგულისხმებ მნიშვნელობას: DES\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: სიმბმულის (%s) შექმნის შეცდომა: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" -"პარამეტრისგან \"%s\" მარილის გენერაციის შეცდომა. შეამოწმეთ თქვენი " -"პარამეტრები ENCRYPT_METHOD-ში და შესაბამის კონფიგურაციაში თქვენს მიერ " -"არჩეული ჰეშის მეთოდისთვის.\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: %s-ის მფლობელების შეცვლის შეცდომა: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "საქაღალდის %s-ზე შეცვლა შეუძლებელია\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: %s-ის lstat-ის შეცდომა: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "საქაღალდე არ არსებობს. შევდივარ HOME=/-ით" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: გაფრთხილება: მომხმარებელს (%s) tcb shadow ფაილი არ გააჩნია.\n" #, c-format -msgid "Cannot execute %s" -msgstr "%s-ის შესრულების შეცდომა" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: გადაუდებელი შემთხვევა: %s tcb ჩრდილი არ არის რეგულარული ფაილი st_nlink=1-" +"ით.\n" +"ანგარიში ჩაკეტილია.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "%s არასწორი root საქაღალდეა\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Root საქაღალდის %s-ზე შეცვლა შეუძლებელია\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s-ის გახსნის შეცდომა: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -661,6 +663,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_DIR საქაღალდე chroot-ისთვის\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -P, --prefix PREFIX_DIR პრეფიქსი საქაღალდე\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -689,12 +694,15 @@ msgstr "პაროლი არააქტიურია" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "ანგარიშის ვადის თარიღი (წწწწ-თთ-დდ)" -msgid "Last password change\t\t\t\t\t: " -msgstr "პაროლის ბოლო ცვლილება\t\t\t\t\t: " - msgid "never" msgstr "არასოდეს" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "პაროლის ბოლო ცვლილება\t\t\t\t\t: " + msgid "password must be changed" msgstr "საჭიროა პაროლის შეცვლა" @@ -870,14 +878,6 @@ msgstr "%s: '%s' არასწორ სიმბოლოებს შეი msgid "%s: user '%s' does not exist\n" msgstr "%s: მომხმარებელი \"%s\" არ არსებობს\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: მომხმარებლის '%s' შეცვლა NIS კლიენტზე შეუძლებელია.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' NIS-ის მთავარი სერვერია ამ კლიენტისთვის.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s-ის მომხმარებლის ინფორმაციის ცვლილება\n" @@ -913,6 +913,10 @@ msgstr "" " -s, --sha-rounds წრეების რიცხვი SHA, BCRYPT\n" " და YESCRYPT დაშიფვრის ალგორითმებისთვის\n" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "%s: დაშიფვრის მეთოდი აღწერილი არაა\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: ალამი %s მხოლოდ ალამ %s -სთან ერთადაა ნებადართული\n" @@ -965,6 +969,14 @@ msgstr "" msgid "Login Shell" msgstr "შესვლს გარსი" +#, c-format +msgid "Cannot parse shell files: %s" +msgstr "ვერ დავამუშავე გარსის ფაილები: %s" + +#, c-format +msgid "Cannot evaluate entries in shell files: %s" +msgstr "გარსის ფაილების ჩანაწერების შეფასება შეუძლებელია: %s" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "%s-ის გარსის შეცვლა არ შეგიძლიათ.\n" @@ -977,6 +989,10 @@ msgstr "%s-ის გარსის შეცვლა\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: არასწორი ჩანაწერი: %s\n" +#, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: გაფრთხილება: %s არასწორი გარსია\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s არასწორი გარსია\n" @@ -1222,9 +1238,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system სისტემური ანგარიშის შექმნა\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -P, --prefix PREFIX_DI პრეფიქსი საქაღალდე\n" - msgid " -U, --users USERS list of user members of this group\n" msgstr " -U, --users USERS ამ ჯგუფის წევრების სია\n" @@ -1236,6 +1249,10 @@ msgstr "წევრის არასწორი მომხმარებ msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s ჯგუფის სწორ სახელს არ წარმოადგენს\n" +#, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s-ის გახსნის შეცდომა: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: ჯგუფის არასწორი ID '%s'\n" @@ -1281,14 +1298,6 @@ msgstr "%s: მომხმარებელის '%s' ძირითად msgid "%s: group '%s' does not exist\n" msgstr "%s: ჯგუფი '%s' არ არსებობს\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: ჯგუფი '%s' NIS ჯგუფია\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s NIS-ის მთავარია\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: მომხმარებელი '%s' უკვე წარმოადგენს '%s'-ის წევრს\n" @@ -1384,10 +1393,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: არასწორი ჯგუფის სახელი \"%s\"\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: ჯგუფი '%s' NIS ჯგუფია\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: უცნობი მომხმარებელი %s\n" @@ -1516,7 +1521,7 @@ msgstr "" "ჩანაწერების ჩვენება\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear მომხმარებლის lastlog ჩანაწერის გასუფთავება " @@ -1622,11 +1627,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: root-ის უფლებებით ალბათ ვერ ვიმუშავებ\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"\"utmp\"-ის ჩანაწერი არ არსებობს. \"login\"-ი \"sh\"-ის უმდაბლესი დონიდან " -"უნდა გაუშვათ" - #, c-format msgid "" "\n" @@ -1660,14 +1660,6 @@ msgstr "მომხმარებლის სახელი არასწ msgid "Cannot find user (%s)\n" msgstr "მომხმარებლის (%s) პოვნა შეუძლებელია\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s მომხმარებლის სახელი: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: განტოტვის შეცდომა: %s" @@ -1704,10 +1696,11 @@ msgstr "%s: gid -ის დიაპაზონი [%lu-%lu) -> [%lu-%lu) დ #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" -"გამოყენება: %s <რაოდენობა> [ " -"<რაოდენობა> ] ... \n" +"გამოყენება: %s [] <რაოდენობა> [ " +" <რაოდენობა> ] ... \n" #, c-format msgid "%s: kernel doesn't support setgroups restrictions\n" @@ -1730,20 +1723,16 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: setgroups-ის შეცდომა %s პოლიტიკა: %s\n" #, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: proc საქაღალდის გახსნის შეცდომა სამიზნისთვის %u\n" - -#, c-format -msgid "%s: Could not stat directory for target %u\n" -msgstr "%s: საქაღალდის აღმოჩენის შეცდომა სამიზნისთვის: %u\n" +msgid "%s: Could not stat directory for process\n" +msgstr "%s: საქაღალდის აღმოჩენის შეცდომა პროცესისთვის\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" -"%s: სამიზნე %u სხვა მომხმარებლისაა: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu " -"pw_gid:%lu st_gid:%lu\n" +"%s: სამიზნე პროცესის მფლობელი სხვა მომხმარებელია: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgid "Usage: newgrp [-] [group]\n" msgstr "გამოყენება: newgrp [-] [ჯგუფი]\n" @@ -1775,18 +1764,15 @@ msgstr "%s: uid -ის დიაპაზონი [%lu-%lu) -> [%lu-%lu) დ #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -"გამოყენება: %s <რაოდენობა> [ " -"<რაოდენობა> ] ... \n" +"გამოყენება: %s [|fd:] <რაოდენობა> [ " +" <რაოდენობა> ] ... \n" #, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" -"%s: სამიზნე პროცესი %u სხვა მომხმარებლითაა გაშვებული: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: საქაღალდის აღმოჩენის შეცდომა სამიზნე პროცესისთვის\n" msgid " -b, --badname allow bad names\n" msgstr " -b, --badname სახელების სისწორე არ შემოწმდება\n" @@ -1807,6 +1793,10 @@ msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "" "%s: მომხმარებლის არასწორი სახელი '%s': დასაიგნორებლად გამოიყენეთ --badname\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "%s: მიაწოდეთ '--crypt-method', წრეების რაოდენობამდე\n" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: ხაზი %d: არასწორი ხაზი\n" @@ -1829,6 +1819,10 @@ msgstr "%s: ხაზი %d: ჯგუფის შექმნა შეუძ msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: ხაზი %d: მომხმარებელი '%s' %s-ში არ არსებობს\n" +#, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: ხაზი %d: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: ხაზი %d: პაროლის განახლება შეუძლებელია\n" @@ -1849,14 +1843,14 @@ msgstr "%s: ხაზი %d: chown %s -ის შეცდომა: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: ხაზი %d: ჩანაწერის განახლების შეცდომა\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: ახალი %s ჩანაწერის მომზადების შეცდომა\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: დაქვემდებარებული მომხმარებლის დიაპაზონის პოვნა შეუძლებელია\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: ახალი %s ჩანაწერის მომზადების შეცდომა\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: დაქვემდებარებული ჯგუფის დიაპაზონის პოვნა შეუძლებელია\n" @@ -1934,6 +1928,9 @@ msgstr "" "რაოდენობის \n" " MAX_DAYS-ზე დაყენება\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -s, --stdin ახალი კოდების stdin-დან წაკითხვა\n" + msgid "Old password: " msgstr "ძველი პაროლი: " @@ -1953,6 +1950,11 @@ msgstr "" "შეიყვანეთ ახალი პაროლი (მინიმუმ %d, მაქსიმუმ %d სიმბოლო)\n" "გამოიყენეთ დიდი და პატარა ასოებისა და რიცხვების კომბინაცია.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: ველები ძალიან გრძელია\n" + msgid "New password: " msgstr "ახალი პაროლი: " @@ -1995,6 +1997,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: მხარდაუჭერელი რეპოზიტორია: %s\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" +"%s: --stdin/-s პარამეტრის გამოყენება, მხოლოდ, root მომხმარებელს შეუძლია\n" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -2148,11 +2155,9 @@ msgstr "%s: სიგნალის გაუმართაობა\n" msgid "Session terminated, terminating shell..." msgstr "სესია გაწყდა. გარსის დასრულება...." -#, c-format msgid " ...killed.\n" msgstr " ...მოკლულია.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ... ველოდები შვილი პროცესების დასრულებას.\n" @@ -2229,6 +2234,10 @@ msgstr "%s: su-ის ავტორიზაცია ამჟამად msgid "No passwd entry for user '%s'\n" msgstr "Passwd ფაილში მომხმარებლისთვის \"%s\" ჩანაწერი არ არსებობს\n" +#, c-format +msgid "Overlong user name '%s'\n" +msgstr "მეტისმეტად გრძელი მომხმარებლის სახელი '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: ტერმინალიდან გაშვება აუცილებელია\n" @@ -2274,6 +2283,15 @@ msgstr "%s: %s შეიქმნა, მაგრამ ვერ ვშლი\ msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: %s-ის კონფიგურაცია %s-ში იგნორირებული იქნება\n" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" +"%s: '%s'-ის კონფიგურაციას %s-ში არასწორი ჯგუფი აქვს. არასწორი ჯგუფების " +"გამოტოვება\n" +"\n" + #, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: ნაგულისხმები მნიშვნელობების შემცველი ფაილის შექმნის შეცდომა; %s\n" @@ -2284,10 +2302,6 @@ msgstr "" "%s: ნაგულისხმები მნიშვნელობების შემცველი ფაილისთვის საქაღალდის შექმნა " "შეუძლებელია\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: ნაგულისხმები მნიშვნელობების შემცველი ფაილის შექმნის შეცდომა\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: ნაგულისხმები მნიშვნელობების შემცველი ფაილის გახსნის შეცდომა\n" @@ -2304,10 +2318,6 @@ msgstr "%s: მარქაფის ფაილის (%s) შექმნი msgid "%s: rename: %s: %s\n" msgstr "%s: გადარქმევა: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: ჯგუფი '%s' NIS ჯგუფია.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: მითითებულია მეტისმეტად ბევრი ჯგუფი (მაქს %d).\n" @@ -2374,6 +2384,8 @@ msgid "" " -F, --add-subids-for-system add entries to sub[ud]id even when adding a " "system user\n" msgstr "" +" -F, --add-subids-for-system ჩანაწერების დამატება sub[ud]id-ში სისტემური " +"მომხმარებლის დამატების დროსაც კი\n" msgid "" " -g, --gid GROUP name or ID of the primary group of the new\n" @@ -2442,8 +2454,15 @@ msgid "" " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user " "mapping\n" msgstr "" -" -Z, --selinux-user SEUSER SELinux -ის მომხმარებელთან ბმისთვის " -"მითითებული SEUSER -ის გამოყენება\n" +" -Z, --selinux-user SEUSER მითითებული SEUSER -ის გამოყენება SELinux-ის " +"მომხმარებლის ასახვისთვის\n" + +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" --selinux-user SERANGE მითითებული MLS შუალედის გამოყენება SELinux-ის " +"მომხმარებლის ასახვისთვის\n" #, c-format msgid "%s: invalid base directory '%s'\n" @@ -2576,6 +2595,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "საფოსტო ყუთის ფაილის წვდომების დაყენება" +msgid "Synchronize mailbox file" +msgstr "საფოსტო ყუთის ფაილის სინქრონიზაცია" + +msgid "Closing mailbox file" +msgstr "საფოსტო ყუთის ფაილის დახურვა" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2706,10 +2731,6 @@ msgstr "%s: %s-ის შემცველობის წაშლის შ msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: %s-ის tcb ფაილების წაშლის შეცდომა: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: მომხმარებელი %s NIS მომხმარებელია\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s -ის საწყისი საქაღალდე (%s) ვერ ვიპოვე\n" @@ -2841,6 +2862,12 @@ msgstr "" " -Z, --selinux-user SEUSER ანგარიშის SELinux -ის მითითებულ " "მომხმარებელზე მიბმა\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" --selinux-range SERANGE ახალი SELinux MLS შუალედი მომხმარებლის " +"ანგარიშისთვის\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2919,16 +2946,13 @@ msgstr "%s: ძველი საწყისი საქაღალდის msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: საქაღალდის სახელის %s-დან %s-ზე გადარქმევის შეცდომა\n" -#, fuzzy, c-format -#| msgid "" -#| "%s: The previous home directory (%s) was not a directory. It is not " -#| "removed and no home directories are created.\n" +#, c-format msgid "" "%s: The previous home directory (%s) does not exist or is inaccessible. Move " "cannot be completed.\n" msgstr "" -"%s: წინა საწყისი საქაღალდე (%s) საქაღალდეს არ წარმოადგენდა, ამიტომ ის არ " -"წაშლილა და არც საქაღალდე შექმნილა.\n" +"%s: წინა საწყისი საქაღალდე (%s) არ არსებობს ან ხელმისაწვდომი არაა. გადატანის " +"დასრულება შეუძლებელია.\n" #, c-format msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" @@ -2936,12 +2960,24 @@ msgstr "" "%s: lastlog-ის ჩანაწერის ერთი მომხმარებლიდან (%lu) მეორეზე (%lu) კოპირების " "შეცდომა: %s\n" +#, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: lastlog-ის ჩანაწერის ერთი მომხმარებლიდან (%ju) მეორეზე (%ju) კოპირების " +"შეცდომა: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: faillog -ის ჩანაწერის ერთი მომხმარებლიდან (%lu) მეორეზე (%lu) კოპირების " "შეცდომა: %s\n" +#, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: faillog -ის ჩანაწერის ერთი მომხმარებლიდან (%ju) მეორეზე (%ju) კოპირების " +"შეცდომა: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: გაფრთხილება: %s-ის მფლობელი %s არაა\n" @@ -3042,8 +3078,8 @@ msgstr "მონახაზის ფაილის წაშლის შე msgid "failed to stat edited file" msgstr "რედაქტირებული ფაილის აღმოჩენა შეუძლებელია" -msgid "failed to allocate memory" -msgstr "მეხსიერების გამოყოფის შეცდომა" +msgid "asprintf(3) failed" +msgstr "asprintf(3) ჩავარდა" msgid "failed to create backup file" msgstr "მარქაფის ფაილის შექმნის შეცდომა" @@ -3055,3 +3091,69 @@ msgstr "%s: %s-ის აღდგენის შეცდომა: %s (თქ #, c-format msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: %s-სთვის tcb საქაღალდის პოვნის შეცდომა\n" + +#~ msgid "Environment overflow\n" +#~ msgstr "გარემო გადავსებულია\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: მომხმარებლის '%s' შეცვლა NIS კლიენტზე შეუძლებელია.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' NIS-ის მთავარი სერვერია ამ კლიენტისთვის.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: ჯგუფი '%s' NIS ჯგუფია\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s NIS-ის მთავარია\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: ჯგუფი '%s' NIS ჯგუფია\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: ნაგულისხმები მნიშვნელობების შემცველი ფაილის შექმნის შეცდომა\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: ჯგუფი '%s' NIS ჯგუფია.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: მომხმარებელი %s NIS მომხმარებელია\n" + +#, c-format +#~ msgid "%s: Not enough arguments to form %u mappings\n" +#~ msgstr "%s: არასაკმარისი არგუმენტები %u ბმის ჩამოსაყალიბებლად\n" + +#~ msgid "too simple" +#~ msgstr "ძალიან მარტივია" + +#, c-format +#~ msgid "Unable to obtain random bytes.\n" +#~ msgstr "შემთხვევითი ბაიტების მიღების შეცდომა.\n" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "\"utmp\"-ის ჩანაწერი არ არსებობს. \"login\"-ი \"sh\"-ის უმდაბლესი " +#~ "დონიდან უნდა გაუშვათ" + +#, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: proc საქაღალდის გახსნის შეცდომა სამიზნისთვის %u\n" + +#, c-format +#~ msgid "" +#~ "%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +#~ "%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +#~ msgstr "" +#~ "%s: სამიზნე %u სხვა მომხმარებლისაა: uid:%lu pw_uid:%lu st_uid:%lu, gid:" +#~ "%lu pw_gid:%lu st_gid:%lu\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "მეხსიერების გამოყოფის შეცდომა" diff --git a/po/kk.gmo b/po/kk.gmo index fd80ba3..ccf7c73 100644 Binary files a/po/kk.gmo and b/po/kk.gmo differ diff --git a/po/kk.po b/po/kk.po index c7129d4..eb67d72 100644 --- a/po/kk.po +++ b/po/kk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadowutils\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2017-02-07 17:09+0500\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh \n" @@ -18,226 +18,6 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.11\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"'%s' атындағы %s ішінде бірнеше жазба бар. Оны pwck не grpck көмегімен " -"дұрыстаңыз.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "шифрлеу тәсіліне libcrypt-тан қолдау жоқ па? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "баптаулар қатесі - %s мәнін талдау мүмкін емес: '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Баптауларды жүктеу үшін орын жоқ.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "баптау қатесі - белгісіз элемент '%s' (администраторға хабарласыңыз)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd өз жұмысын дұрыс аяқтаған жоқ (%d сигналымен)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd %d қалып-күймен өз жұмысын аяқтады\n" - -msgid "Password: " -msgstr "Пароль: " - -#, c-format -msgid "%s's Password: " -msgstr "%s пайдаланушының паролі: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Аудит интерфейсін ашу мүмкін емес - шығу.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "SELinux басқарушы ұстағышын жасау мүмкін емес\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux саясаты басқарылып жатқан жоқ\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "SELinux саясаттарын сақтау қорын оқу сәтсіз\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "SELinux басқарушы байланысын орнату мүмкін емес\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "SELinux әрекетін бастау мүмкін емес\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "seuser %s үшін сұрау сәтсіз\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "%s үшін serange орнату мүмкін емес\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "%s үшін sename орнату мүмкін емес\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "%s үшін тіркелгі сәйкестігін түзету мүмкін емес\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s үшін SELinux тіркелгі сәйкестігін жасау мүмкін емес\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "%s үшін атын орнату мүмкін емес\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "%s үшін SELinux пайдаланушысын орнату мүмкін емес\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "%s үшін тіркелгі сәйкестігін қосу мүмкін емес\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "SELinux басқаруын іске қосу мүмкін емес\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "SELinux пайд.-шы кілтін жасау мүмкін емес\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "SELinux пайдаланушысын тексеру мүмкін емес\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "SELinux пайд. сәйкестігін түзету мүмкін емес\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "SELinux пайд. сәйкестігін қосу мүмкін емес\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "SELinux әрекетін іске асыру мүмкін емес\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"%s үшін тіркелгі сәйкестігі анықталмаған, бастапқы сәйкестк қолданылған " -"болса ОК\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "%s үшін тіркелгі сәйкестігі саясатта анықталған, өшіруге мүмкін емес\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "%s үшін тіркелгі сәйкестігін өшіру мүмкін емес" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: жады жеткіліксіз\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: %s табылмады: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s бума да, сілтеме де емес.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: %s символдық сілтемесін оқу мүмкін емес: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Күдіктілі ұзын символдық сілтеме: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: %s бумасын жасау мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: %s үшін иені ауыстыру мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: %s үшін режимді ауыстыру мүмкін емес: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: unlink: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: %s бумасын өшіру мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: %s атын %s етіп орнату мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: %s өшіру мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: %s символдық сілтемесін жасау мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: %s үшін иелерді өзгерту мүмкін емес: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: lstat %s мүмкін емес: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Ескерту, %s пайдаланушысында tcb shadow файлы жоқ.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Төтенше жағдай: %s үшін tcb shadow қалыпты, st_nlink=1, файл емес.\n" -"Тіркелгі блокталған күйінде қалдырылады.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s ашу мүмкін емес: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Ескерту: белгісіз топ %s\n" @@ -284,6 +64,13 @@ msgstr "Терминал иесін не рұқстатын өзгерту мү msgid "%s: failed to unlock %s\n" msgstr "%s: %s босату сәтсіз\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"'%s' атындағы %s ішінде бірнеше жазба бар. Оны pwck не grpck көмегімен " +"дұрыстаңыз.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -291,8 +78,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Орындалу орта айнымалыларының шектен көп саны\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "шифрлеу тәсіліне libcrypt-тан қолдау жоқ па? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -404,8 +192,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Ерекше жүйелік UID алу мүмкін емес (бос UID-тар қалмады)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "баптаулар қатесі - %s мәнін талдау мүмкін емес: '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Баптауларды жүктеу үшін орын жоқ.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "баптау қатесі - белгісіз элемент '%s' (администраторға хабарласыңыз)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -435,9 +230,10 @@ msgstr "%s үшін атын орнату мүмкін емес\n" msgid "%s: Could not set caps\n" msgstr "%s үшін атын орнату мүмкін емес\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: жол %d: chown %s сәтсіз: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -449,9 +245,22 @@ msgstr "%s: жол %d: chown %s сәтсіз: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: жол %d: chown %s сәтсіз: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: жол %d: chown %s сәтсіз: %s\n" + msgid "Too many logins.\n" msgstr "Жүйеге кірудің шектен көп талап саны.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s пайдаланушы аты: " + msgid "You have new mail." msgstr "Сізде жаңа пошта бар." @@ -461,6 +270,14 @@ msgstr "Пошта жоқ." msgid "You have mail." msgstr "Сізде пошта бар." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd өз жұмысын дұрыс аяқтаған жоқ (%d сигналымен)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd %d қалып-күймен өз жұмысын аяқтады\n" + msgid "no change" msgstr "өзгерістер жоқ" @@ -473,9 +290,6 @@ msgstr "өзгерістер тек таңбалардың регистрінд msgid "too similar" msgstr "өте ұқсас" -msgid "too simple" -msgstr "өте оңай" - msgid "rotated" msgstr "аударылған" @@ -509,88 +323,280 @@ msgstr "" msgid "%s: conversation type %d not supported.\n" msgstr "%s: %s репозиторийіне қолдау жоқ\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: қате %d\n" +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: қате %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() ішіндегі %d қатесі\n" + +msgid "Password: " +msgstr "Пароль: " + +#, c-format +msgid "%s's Password: " +msgstr "%s пайдаланушының паролі: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "%s үшін қате пароль.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: бірнеше --root опциясы\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: '%s' опциясы аргументті талап етеді\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: привилегиялар деңгейін төмендету мүмкін емес (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: '%s' chroot жолы қате\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: %s chroot бумасына қатынау мүмкін емес: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: %s бумасына chroot жасау мүмкін емес: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: %s chroot бумасына өту (chdir) мүмкін емес: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Қате ENCRYPT_METHOD мәні: '%s'.\n" +"Бастапқы DES мәні қолданылады.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Аудит интерфейсін ашу мүмкін емес - шығу.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "SELinux басқарушы ұстағышын жасау мүмкін емес\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux саясаты басқарылып жатқан жоқ\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "SELinux саясаттарын сақтау қорын оқу сәтсіз\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "SELinux басқарушы байланысын орнату мүмкін емес\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "SELinux әрекетін бастау мүмкін емес\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "seuser %s үшін сұрау сәтсіз\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "%s үшін serange орнату мүмкін емес\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "%s үшін sename орнату мүмкін емес\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "%s үшін тіркелгі сәйкестігін түзету мүмкін емес\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s үшін SELinux тіркелгі сәйкестігін жасау мүмкін емес\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "%s үшін атын орнату мүмкін емес\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "%s үшін SELinux пайдаланушысын орнату мүмкін емес\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "%s үшін тіркелгі сәйкестігін қосу мүмкін емес\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "SELinux басқаруын іске қосу мүмкін емес\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "SELinux пайд.-шы кілтін жасау мүмкін емес\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "SELinux пайдаланушысын тексеру мүмкін емес\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "SELinux пайд. сәйкестігін түзету мүмкін емес\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "SELinux пайд. сәйкестігін қосу мүмкін емес\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "SELinux әрекетін іске асыру мүмкін емес\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"%s үшін тіркелгі сәйкестігі анықталмаған, бастапқы сәйкестк қолданылған " +"болса ОК\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "%s үшін тіркелгі сәйкестігі саясатта анықталған, өшіруге мүмкін емес\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "%s үшін тіркелгі сәйкестігін өшіру мүмкін емес" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "'%s' бумасына ауысу мүмкін емес\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Бума табылмады, HOME=/ бумасына кіру орындалады" + +#, c-format +msgid "Cannot execute %s" +msgstr "%s орындау мүмкін емес" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "'%s' түбірлік бумасы қате\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Түбірлік бумасын '%s' мәніне ауыстыру мүмкін емес\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: жады жеткіліксіз\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() ішіндегі %d қатесі\n" +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: %s табылмады: %s\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "%s үшін қате пароль.\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s бума да, сілтеме де емес.\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: бірнеше --root опциясы\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: %s символдық сілтемесін оқу мүмкін емес: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: '%s' опциясы аргументті талап етеді\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Күдіктілі ұзын символдық сілтеме: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: привилегиялар деңгейін төмендету мүмкін емес (%s)\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: %s бумасын жасау мүмкін емес: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: '%s' chroot жолы қате\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: %s үшін иені ауыстыру мүмкін емес: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: %s chroot бумасына қатынау мүмкін емес: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: %s үшін режимді ауыстыру мүмкін емес: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: %s chroot бумасына өту (chdir) мүмкін емес: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: unlink: %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: %s бумасына chroot жасау мүмкін емес: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: %s бумасын өшіру мүмкін емес: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: %s атын %s етіп орнату мүмкін емес: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Қате ENCRYPT_METHOD мәні: '%s'.\n" -"Бастапқы DES мәні қолданылады.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: %s өшіру мүмкін емес: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: %s символдық сілтемесін жасау мүмкін емес: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "'%s' бумасына ауысу мүмкін емес\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: %s үшін иелерді өзгерту мүмкін емес: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Бума табылмады, HOME=/ бумасына кіру орындалады" +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: lstat %s мүмкін емес: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "%s орындау мүмкін емес" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Ескерту, %s пайдаланушысында tcb shadow файлы жоқ.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "'%s' түбірлік бумасы қате\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Төтенше жағдай: %s үшін tcb shadow қалыпты, st_nlink=1, файл емес.\n" +"Тіркелгі блокталған күйінде қалдырылады.\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Түбірлік бумасын '%s' мәніне ауыстыру мүмкін емес\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s ашу мүмкін емес: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -670,6 +676,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_DIR chroot үшін бума\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_DIR chroot үшін бума\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -697,12 +708,15 @@ msgstr "Тіркелгіні күн өткенде сөндіру (күн сан msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Тіркелгінің мерзімі аяқталатын күні (ЖЖЖЖ-АА-КК)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Парольді соңғы ауыстыру\t\t\t\t\t: " - msgid "never" msgstr "ешқашан" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Парольді соңғы ауыстыру\t\t\t\t\t: " + msgid "password must be changed" msgstr "пароль өзгертілу керек" @@ -876,14 +890,6 @@ msgstr "%s: '%s' құрамында қате таңбалар бар\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: пайдаланушы '%s' жоқ болып тұр\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: NIS клиентінде '%s' пайдаланушыны ауыстыруға мүмкін емес.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' - бұл клиент үшін NIS сервері.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s үшін пайдаланушы ақпаратын өзгерту\n" @@ -923,6 +929,11 @@ msgstr "" " -s, --sha-rounds SHA* тектес алгоритмдер үшін SHA\n" " раундтар саны\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: қолдауы жоқ шифрлеу тәсілі: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: %s жалаушасын тек %s жалаушасымен бірге қолдануға болады\n" @@ -974,6 +985,16 @@ msgstr "" msgid "Login Shell" msgstr "Қоршам" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: %s өлшемін алу мүмкін емес: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Сіз '%s' үшін қоршамды өзгерте алмайсыз.\n" @@ -986,6 +1007,11 @@ msgstr "%s үшін қоршамды өзгерту\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Қате мән: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s дұрыс қоршам емес\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s дұрыс қоршам емес\n" @@ -1229,11 +1255,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system жүйелік тіркелгіні жасау\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_DIR chroot үшін бума\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1248,6 +1269,11 @@ msgstr "қате пайдаланушы аты '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' дұрыс топ аты емес\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s ашу мүмкін емес: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: қате топ ID-і '%s'\n" @@ -1292,14 +1318,6 @@ msgstr "%s: '%s' пайдаланушының басты тобын өшіру msgid "%s: group '%s' does not exist\n" msgstr "%s: '%s' тобы жоқ болып тұр\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: '%s' тобы NIS тобы болып тұр\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s қазір NIS сервері болып тұр\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: '%s' пайдаланушысы '%s' тобының мүшесі болып тұр\n" @@ -1395,10 +1413,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: қате топ аты '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: %s тобы NIS тобы болып тұр\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: белгісіз пайдаланушы %s\n" @@ -1524,8 +1538,12 @@ msgstr "" " -b, --before КҮН мерзімі КҮНнен үлкен ғана lastlog жазбаларын " "көрсету\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear пайдаланушының lastlog жазбасын тазарту (тек " @@ -1629,11 +1647,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Эффективті root-сыз жұмыс істемеуі мүмкін\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Utmp жазбасы жоқ. Сізге exec \"login\" командасын бірінші деңгейден \"sh\" " -"қосу керек" - #, c-format msgid "" "\n" @@ -1667,14 +1680,6 @@ msgstr "Жүйеге кіру орындалмады" msgid "Cannot find user (%s)\n" msgstr "Пайдаланушыны табу мүмкін емес (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s пайдаланушы аты: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: үрдісті бастау қатесі: %s" @@ -1710,7 +1715,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1736,20 +1742,15 @@ msgstr "%s: %s өшіру сәтсіз аяқталды\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: %s босату сәтсіз\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: %s үшін tcb бумасын табу сәтсіз\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: %s үшін tcb бумасын жасау мүмкін емес\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1782,14 +1783,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: %s үшін tcb бумасын жасау мүмкін емес\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1813,6 +1814,10 @@ msgstr "%s: пайдаланушы ID-і '%s' қате\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: '%s' пайдаланушы аты қате\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: жол %d: жол қате\n" @@ -1834,6 +1839,11 @@ msgstr "%s: жол %d: топты жасау мүмкін емес\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: жол %d: '%s' пайдаланушысы %s ішінде жоқ\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: unlink: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: жол %d: парольді жаңарту мүмкін емес\n" @@ -1855,14 +1865,14 @@ msgstr "%s: жол %d: chown %s сәтсіз: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: жол %d: жазбаны жаңарту мүмкін емес\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: жаңа %s жазбасын дайындау сәтсіз аяқталды\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: бағынышты пайдаланушы ауқымын табу мүмкін емес\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: жаңа %s жазбасын дайындау сәтсіз аяқталды\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: бағынышты топ ауқымын табу мүмкін емес\n" @@ -1942,6 +1952,12 @@ msgstr "" "етілген күн санын\n" " MAX_DAYS мәніне орнату\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list тіркелгінің жұмыс уақыты ақпаратын көрсету\n" + msgid "Old password: " msgstr "Ағымдағы пароль:" @@ -1961,6 +1977,11 @@ msgstr "" "Жаңа парольді енгізіңіз (минимум %d, максимум %d белгі болсын)\n" "Парольді бас, кіші әріптер және сандарды араластыра қолданып құраңыз.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: жолдар өте ұзын\n" + msgid "New password: " msgstr "Жаңа пароль:" @@ -2003,6 +2024,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: %s репозиторийіне қолдау жоқ\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: тек root -g/--group опциясын қолдана алады\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2156,11 +2182,9 @@ msgstr "%s: сигнал ақаулығы\n" msgid "Session terminated, terminating shell..." msgstr "Сессия тоқтатылды, қоршамды тоқтату..." -#, c-format msgid " ...killed.\n" msgstr " ...өлтірілді.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...ұрпақ үрдістің тоқтатылуын күту.\n" @@ -2248,6 +2272,11 @@ msgstr "%s: Сізде қазір su жасау үшін құқығыңыз жо msgid "No passwd entry for user '%s'\n" msgstr "'%s' пайд.-сы үшін passwd жазбасы жоқ\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "қате пайдаланушы аты '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: терминалда орындалуы керек\n" @@ -2293,6 +2322,13 @@ msgstr "%s: %s жасалды, бірақ оны өшіру мүмкін еме msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: %s баптауы, ол %s ішінде, есепке алынбайды\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: %s баптауы, ол %s ішінде, есепке алынбайды\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2303,10 +2339,6 @@ msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: жаңа defaults файлын ашу мүмкін емес\n" @@ -2323,10 +2355,6 @@ msgstr "%s: Қор көшірме файлын жасау мүмкін емес msgid "%s: rename: %s: %s\n" msgstr "%s: атын ауыстыру: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: '%s' тобы NIS тобы болып тұр.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: шектен көп топ саны көрсетілген (максимум %d).\n" @@ -2459,6 +2487,17 @@ msgstr "" " -Z, --selinux-user SEUSER SELinux пайдаланушы сәйкестігі үшін " "көрсетілген SEUSER қолдану\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER SELinux пайдаланушы сәйкестігі үшін " +"көрсетілген SEUSER қолдану\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: '%s' негізгі бумасы қате\n" @@ -2601,6 +2640,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Пошта файлына рұқсаттарды орнату" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Пошта файлын құру" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Пошта файлын құру" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2730,10 +2779,6 @@ msgstr "%s: %s құрамасын өшіру мүмкін емес: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: %s үшін tcb файлдарын өшіру мүмкін емес: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: %s қазір NIS пайдаланушысы болып тұр\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s үшін үй бумасы (%s) табылмады\n" @@ -2868,6 +2913,16 @@ msgstr "" " -Z, --selinux-user SEUSER пайдаланушы тіркелгісі үшін жаңа SELinux " "сәйкестігі\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER пайдаланушы тіркелгісі үшін жаңа SELinux " +"сәйкестігі\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2960,11 +3015,23 @@ msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" "%s: %lu пайд.-нан %lu пайдаланушысына lastlog жазбасын көшіру сәтсіз: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: %lu пайд.-нан %lu пайдаланушысына lastlog жазбасын көшіру сәтсіз: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: %lu пайд.-нан %lu пайдаланушысына faillog жазбасын көшіру сәтсіз: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: %lu пайд.-нан %lu пайдаланушысына faillog жазбасын көшіру сәтсіз: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: ескерту: %s қазір %s иелігінде емес\n" @@ -3067,8 +3134,8 @@ msgstr "scratch файлын жою сәтсіз" msgid "failed to stat edited file" msgstr "түзетілген файлды табу сәтсіз" -msgid "failed to allocate memory" -msgstr "жадыны бөлу сәтсіз" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "резервті көшірме файлын жасау сәтсіз" @@ -3081,6 +3148,57 @@ msgstr "%s: %s қайтару мүмкін емес: %s (сіздің өзгер msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: %s үшін tcb бумасын табу сәтсіз\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Орындалу орта айнымалыларының шектен көп саны\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: NIS клиентінде '%s' пайдаланушыны ауыстыруға мүмкін емес.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' - бұл клиент үшін NIS сервері.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: '%s' тобы NIS тобы болып тұр\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s қазір NIS сервері болып тұр\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: %s тобы NIS тобы болып тұр\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: '%s' тобы NIS тобы болып тұр.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: %s қазір NIS пайдаланушысы болып тұр\n" + +#~ msgid "too simple" +#~ msgstr "өте оңай" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Utmp жазбасы жоқ. Сізге exec \"login\" командасын бірінші деңгейден " +#~ "\"sh\" қосу керек" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: %s үшін tcb бумасын табу сәтсіз\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "жадыны бөлу сәтсіз" + #~ msgid "Usage: id\n" #~ msgstr "Қолданылуы: id\n" @@ -3096,10 +3214,6 @@ msgstr "%s: %s үшін tcb бумасын табу сәтсіз\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: пароль мерзімі туралы ақпарат өзгертілді.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "қате пайдаланушы аты '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Пайдаланушы Порт Қайдан Соңғы" diff --git a/po/km.gmo b/po/km.gmo index 3c97d7c..0b647b2 100644 Binary files a/po/km.gmo and b/po/km.gmo differ diff --git a/po/km.po b/po/km.po index ff554c4..b62ee8f 100644 --- a/po/km.po +++ b/po/km.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow_po_km\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2006-06-28 10:08+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" @@ -22,220 +22,6 @@ msgstr "" "X-Generator: KBabel 1.11.2\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "មិន​អាច​បម្រុង​ទុក​ទំហំ​សម្រាប់​ព័ត៌មាន​​កំណត់​រចនាសម្ព័ន្ធទេ​ ។\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "កំហុស​ការ​កំណត់​រចនាសម្ព័ន្ធ​ - មិន​ស្គាល់​ធាតុ '%s' (ជូន​ដំណឹង​អ្នក​គ្រប់គ្រង​)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "ពាក្យ​សម្ងាត់​ ៖ " - -#, c-format -msgid "%s's Password: " -msgstr "ពាក្យសម្ងាត់​របស់ %sសម្ងាត់ ៖ " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "មិនអាច​បើក​ឯកសារ​ពាក្យសម្ងាត់​បានឡើយ ។\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "មិន​អាច​បម្រុង​ទុក​ទំហំ​សម្រាប់​ព័ត៌មាន​​កំណត់​រចនាសម្ព័ន្ធទេ​ ។\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "ការផ្លាស់​ប្តូរ​ព័ត៌មាន​ចាស់​សម្រាប់​ %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s ៖ មិន​អាចកំណត់​ឈ្មោះ​អ្នកប្រើ​របស់​អ្នក​បាន​ទេ ។\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s ៖ បន្ទាត់​ %d ៖ មិន​អាច​រក​អ្នកប្រើ​ %s ឃើញឡើយ\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s ៖ អស់​សតិ​\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារ %s ទាន់សម័យ​បានទេ\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s ៖ ថត​ផ្ទះ​មិន​ត្រឹមត្រូវ​ '%s'\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s ៖​ ប្តូរ​ឈ្មោះ​ ៖ %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារ %s ទាន់សម័យ​បានទេ\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារស្រមោល​ទាន់សម័យបានឡើយ​\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s ៖​ ប្តូរ​ឈ្មោះ​ ៖ %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s ៖ មិនអាច​បើក​ឯកសារ​ %s បានទេ\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "ការ​ព្រមាន ៖ មិន​ស្គាល់​ក្រុម %s\n" @@ -286,6 +72,11 @@ msgstr "មិន​អាច​ប្តូរ​ tty %s បានឡើយ" msgid "%s: failed to unlock %s\n" msgstr "%s ៖ វាល គឺ​វែងវែងពេក​\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s ៖ %s\n" @@ -293,8 +84,9 @@ msgstr "%s ៖ %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "​លើស​ចំណុះ​បរិស្ថាន\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -393,9 +185,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s ៖ មិនអាចយក​ UID ដែលមានតែមួយ​បានទេ\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "មិន​អាច​បម្រុង​ទុក​ទំហំ​សម្រាប់​ព័ត៌មាន​​កំណត់​រចនាសម្ព័ន្ធទេ​ ។\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "កំហុស​ការ​កំណត់​រចនាសម្ព័ន្ធ​ - មិន​ស្គាល់​ធាតុ '%s' (ជូន​ដំណឹង​អ្នក​គ្រប់គ្រង​)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s ៖ PAM ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវបាន​បរាជ័យ​\n" @@ -423,7 +222,7 @@ msgstr "មិន​អាច​បម្រុង​ទុក​ទំហំ​ #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s ៖ មិន​អាច​បើក​​ឯកសារ​បានទេ\n" #, fuzzy, c-format @@ -434,9 +233,21 @@ msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័ msgid "%s: write to %s failed: %s\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័យ​\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័យ​\n" + msgid "Too many logins.\n" msgstr "ចូល​ច្រើន​ពេក​ ។\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s ចូល​ ៖ " + msgid "You have new mail." msgstr "អ្នក​មានសំបុត្រ​ថ្មី​ ។​" @@ -446,6 +257,14 @@ msgstr "គ្មាន​សំបុត្រ​​​ទេ​ ។" msgid "You have mail." msgstr "អ្នក​មាន​សំបុត្រ ។" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "គ្មាន​​ផ្លាស់ប្តូរ​ " @@ -458,9 +277,6 @@ msgstr "ករណី​បាន​តែ​ប្តូរ​" msgid "too similar" msgstr "ស្រដៀងគ្នា​ពេក" -msgid "too simple" -msgstr "ធម្មតា​ពេក" - msgid "rotated" msgstr "បានបង្វិល​" @@ -507,6 +323,13 @@ msgid "" "%s\n" msgstr "ពាក្យ​សម្ងាត់​ ៖ pam_start() បាន​បរាជ័យ​, កំហុស​ %d\n" +msgid "Password: " +msgstr "ពាក្យ​សម្ងាត់​ ៖ " + +#, c-format +msgid "%s's Password: " +msgstr "ពាក្យសម្ងាត់​របស់ %sសម្ងាត់ ៖ " + #, c-format msgid "Incorrect password for %s.\n" msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ​សម្រាប់​ %s ។\n" @@ -516,44 +339,141 @@ msgid "%s: multiple --root options\n" msgstr "" #, c-format -msgid "%s: option '%s' requires an argument\n" +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s ៖ បរាជ័យ​ក្នុងការ​ទម្លាក់​សិទ្ធ (%s)\n" + +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s ៖ លេខ​ទូរស័ព្ទនៅផ្ទះ​មិន​ត្រឹមត្រូវ​ ៖ '%s'\n" + +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "មិនអាច​បើក​ឯកសារ​ពាក្យសម្ងាត់​បានឡើយ ។\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "មិន​អាច​បម្រុង​ទុក​ទំហំ​សម្រាប់​ព័ត៌មាន​​កំណត់​រចនាសម្ព័ន្ធទេ​ ។\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "មិន​អាច​បម្រុង​ទុក​ទំហំ​សម្រាប់​ព័ត៌មាន​​កំណត់​រចនាសម្ព័ន្ធទេ​ ។\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "ការផ្លាស់​ប្តូរ​ព័ត៌មាន​ចាស់​សម្រាប់​ %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s ៖ មិន​អាចកំណត់​ឈ្មោះ​អ្នកប្រើ​របស់​អ្នក​បាន​ទេ ។\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s ៖ បន្ទាត់​ %d ៖ មិន​អាច​រក​អ្នកប្រើ​ %s ឃើញឡើយ\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s ៖ បរាជ័យ​ក្នុងការ​ទម្លាក់​សិទ្ធ (%s)\n" - -#, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s ៖ លេខ​ទូរស័ព្ទនៅផ្ទះ​មិន​ត្រឹមត្រូវ​ ៖ '%s'\n" - -#, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" - -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" - -#, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -567,6 +487,10 @@ msgstr "គ្មាន​ថត​ ការចូល​ជាមួយ​ HOME msgid "Cannot execute %s" msgstr "មិន​អាចប្រតិបត្តិ​ %s បានទេ" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "ថត​ root មិន​ត្រឹមត្រូវ​ '%s'\n" @@ -575,6 +499,84 @@ msgstr "ថត​ root មិន​ត្រឹមត្រូវ​ '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "មិន​អាច​ប្តូរ​ថត root ទៅ​ '%s'បាន​ទេ​\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s ៖ អស់​សតិ​\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារ %s ទាន់សម័យ​បានទេ\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s ៖ ថត​ផ្ទះ​មិន​ត្រឹមត្រូវ​ '%s'\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s ៖​ ប្តូរ​ឈ្មោះ​ ៖ %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s  ៖ ការព្រមាន​ ៖ មិន​អាច​យកចេញបានឡើយ " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារ %s ទាន់សម័យ​បានទេ\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារស្រមោល​ទាន់សម័យបានឡើយ​\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s ៖​ ប្តូរ​ឈ្មោះ​ ៖ %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s ៖ មិនអាច​បើក​ឯកសារ​ %s បានទេ\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s ៖ បច្ចុប្បន្ន ​អ្នក​ប្រើ​ %s បាន​ចូលហើយ​\n" @@ -634,6 +636,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -660,13 +665,16 @@ msgstr "ពាក្យ​សម្ងាត់​អសកម្ម​" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "កាលបរិច្ឆេទ​ការផុត​កំណត់របស់​​គណនី​ (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "ការប្តូរ​ពាក្យ​សម្ងាត់​លើកចុង​ក្រោយ​\t\t\t\t\t ៖ " - #, fuzzy msgid "never" msgstr "កុំ\n" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "ការប្តូរ​ពាក្យ​សម្ងាត់​លើកចុង​ក្រោយ​\t\t\t\t\t ៖ " + #, fuzzy msgid "password must be changed" msgstr "ពាក្យ​សម្ងាត់​ត្រូវ​តែ​ប្តូរ​\n" @@ -835,14 +843,6 @@ msgstr "%s ៖ '%s' មាន​តួអក្សរ​មិន​ត្រ msgid "%s: user '%s' does not exist\n" msgstr "%s ៖ មិនទាន់មានអ្នក​ប្រើ​ %s ទេ​\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s ៖ មិនអាចផ្លាស់​​ប្តូរ​អ្នក​ប្រើបានទេ​ '%s' លើ​ម៉ាស៊ីន​ភ្ញៀវ NIS បានទេ ។\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s ៖ '%s' ជាមេ​ NIS សម្រាប់​ម៉ាស៊ីន​ភ្ញៀវ​នេះ​ ។\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "កំពុងផ្លាស់​​ប្តូរ​ព័ត៌មាន​អ្នកប្រើ​សម្រាប់​ %s\n" @@ -871,6 +871,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: ទង់ -a គឺត្រូវបានអនុញ្ញាត​បានតែជាមួយទង់ -G ប៉ុណ្ណោះ\n" @@ -921,6 +925,15 @@ msgstr "" msgid "Login Shell" msgstr "សែលចូល" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "អ្នក​មិនអាច​​ប្តូរ​សែល​សម្រាប់​ %s បានទេ ។\n" @@ -933,6 +946,10 @@ msgstr "កំពុង​ផ្លាស់ប្ដូរ​សែល​ចូ msgid "%s: Invalid entry: %s\n" msgstr "%s ៖ ធាតុបញ្ចូល​​មិន​ត្រឹមត្រូវ​ ៖ %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s គឺជា​សែល​មិន​ត្រឹមត្រូវ​ ។\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s គឺជា​សែល​មិន​ត្រឹមត្រូវ​ ។\n" @@ -1143,9 +1160,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1158,6 +1172,10 @@ msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹ msgid "%s: '%s' is not a valid group name\n" msgstr "%s  ៖ %s ជា​ឈ្មោះ​ក្រុម​មិន​ត្រឹមត្រូវ​\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s ៖ មិនអាច​បើក​ឯកសារ​ %s បានទេ\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "ឈ្មោះ​ក្រុម​ '%s' មិនត្រឹមត្រូវ\n" @@ -1200,14 +1218,6 @@ msgstr "%s ៖ មិនអាចផ្លាស់​​ប្តូរ​អ msgid "%s: group '%s' does not exist\n" msgstr "%s ៖ មិនមានក្រុម​ %sឡើយ​\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s ៖ ក្រុម​ '%s' គឺជាក្រុម​ NIS ។\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s ៖ %s គឺជា​មេ NIS\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s ៖ អ្នកប្រើ​ %s គឺជា​អ្នក​​ប្រើ​ NIS\n" @@ -1283,10 +1293,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "ឈ្មោះ​ក្រុម​ '%s' មិនត្រឹមត្រូវ\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s ៖ ក្រុម​ %s គឺជា​ក្រុម NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s ៖ មិន​ស្គាល់​អ្នកប្រើ​ %s\n" @@ -1405,7 +1411,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1502,9 +1508,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "គ្មាន​ធាតុ​ utmp ឡើយ ។ អ្នក​ត្រូវ​ប្រតិបត្តិ​ \"login\" ពី​កម្រិត​ទាប​បំផុត​ \"sh\"" - #, fuzzy, c-format msgid "" "\n" @@ -1538,14 +1541,6 @@ msgstr "ចូល​មិន​ត្រឹមត្រូវ​" msgid "Cannot find user (%s)\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ មិន​អាច​រក​អ្នកប្រើ​ %s ឃើញឡើយ\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s ចូល​ ៖ " - #, c-format msgid "%s: failure forking: %s" msgstr "%s ៖ ការចែកជាពីរវិធី​​បានបរាជ័យ​ ៖ %s" @@ -1583,7 +1578,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1608,17 +1604,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s ៖ វាល គឺ​វែងវែងពេក​\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s  ៖ ថត​មូលដ្ឋាន​មិន​ត្រឹមត្រូវ​ '%s'\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1652,14 +1644,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1680,6 +1671,10 @@ msgstr "%s ៖ឈ្មោះ​អ្នក​ប្រើ​មិន​ត msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s ៖ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ​ '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ បន្ទាត់​មិន​ត្រឹមត្រូវ​\n" @@ -1700,6 +1695,10 @@ msgstr "%s ៖ បន្ទាត់​ %d ៖ មិន​អាច​បង msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s ៖ មិនទាន់មានអ្នក​ប្រើ​ %s ទេ​\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s ៖​ ប្តូរ​ឈ្មោះ​ ៖ %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ មិន​អាច​ធ្វើ​ឲ្យ​ពាក្យ​សម្ងាត់​ទាន់សម័យ​បានឡើយ​\n" @@ -1720,14 +1719,14 @@ msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័ msgid "%s: line %d: can't update entry\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ មិនអាចធ្វើឲ្យ​ធាតុបញ្ចូល​ទាន់សម័យបានឡើយ\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s ៖ បរាជ័យ​ក្នុងការ​ទម្លាក់​សិទ្ធ (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s ៖ មិន​អាច​បង្កើត​ %s បានឡើយ\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s ៖ បរាជ័យ​ក្នុងការ​ទម្លាក់​សិទ្ធ (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s ៖ មិនអាច​ធ្វើឲ្យ​ឯកសារក្រុម​ទាន់សម័យបានទេ​\n" @@ -1786,6 +1785,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "ពាក្យ​សម្ងាត់​ចាស់ ៖ " @@ -1805,6 +1807,11 @@ msgstr "" "បញ្ចូល​ពាក្យ​សម្ងាត់​ថ្មី​ (តួអក្សរ​​អប្បបរមានៃ​ %d អតិបរមានៃ %d)\n" "សូម​ប្រើ​អក្សរ​ធំ​ អក្សរ​តូច​ ​និង លេខ​ចូល​គ្នា​ ។\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s ៖ វាល គឺ​វែងវែងពេក​\n" + msgid "New password: " msgstr "ពាក្យ​សម្ងាត់​ថ្មី​ ៖ " @@ -1847,6 +1854,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s ៖ ឃ្លាំង​ %s មិន​បាន​គាំទ្រឡើយ​\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1994,11 +2005,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2071,6 +2080,11 @@ msgstr "អ្នកគ្មាន​ការ​អនុញ្ញាតឲ្ msgid "No passwd entry for user '%s'\n" msgstr "គ្មាន​ធាតុ​ពាក្យ​សម្ងាត់​សម្រាប់ 'root'​ ឡើយ\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ​ '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s ៖ ត្រូវ​តែ​រត់​ពី ស្ថានីយមួយ\n" @@ -2119,6 +2133,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2129,10 +2149,6 @@ msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​ msgid "%s: cannot create directory for defaults file\n" msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s ៖ មិន​អាច​បើក​ឯកសារ​លំនាំដើម​ថ្មី​​បានលឡើយ\n" @@ -2149,10 +2165,6 @@ msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s ប msgid "%s: rename: %s: %s\n" msgstr "%s ៖​ ប្តូរ​ឈ្មោះ​ ៖ %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s ៖ ក្រុម​ '%s' គឺជាក្រុម​ NIS ។\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s ៖ ក្រុម​ដែលបានបញ្ជាក់​ច្រើនពេក​ (អតិ​ %d) ។\n" @@ -2262,6 +2274,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s  ៖ ថត​មូលដ្ឋាន​មិន​ត្រឹមត្រូវ​ '%s'\n" @@ -2391,6 +2408,16 @@ msgstr "រក​ក្រុម​​ 'សំបុត្រ​' មិន​ msgid "Setting mailbox file permissions" msgstr "ការកំណត់​សិទ្ធ​លើ​ឯកសារ​ប្រអប់​សំបុត្រ​" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "កំពុង​បង្កើត​ឯកសារ​ប្រអប់​សំបុត្រ​" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "កំពុង​បង្កើត​ឯកសារ​ប្រអប់​សំបុត្រ​" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2508,10 +2535,6 @@ msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s ៖ មិនអាចប្ដូរឈ្មោះ​ថត​ %s ទៅ​ជា​ %s បានឡើយ\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s ៖ អ្នកប្រើ​ %s គឺជា​អ្នក​​ប្រើ​ NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s ៖ ថត​ផ្ទះ​មិន​ត្រឹមត្រូវ​ '%s'\n" @@ -2610,6 +2633,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2692,10 +2719,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s ៖ មិនអាច​ធ្វើឲ្យ​ឯកសារ​ពាក្យ​សម្ងាត់​ទាន់សម័យ​បានទេ\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s ៖ ការព្រមាន ៖​ %s មិនត្រូវបានទទួល​យក​ដោយ %s ឡើយ\n" @@ -2801,8 +2836,9 @@ msgid "failed to stat edited file" msgstr "​បរាជ័យ​ក្នុងការប្ដូរឈ្មោះប្រអប់" #, fuzzy -msgid "failed to allocate memory" -msgstr "បរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​ម្ចាស់​ប្រអប់សំបុត្រ" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s ៖ មិន​អាច​បើក​​ឯកសារ​បានទេ\n" #, fuzzy msgid "failed to create backup file" @@ -2816,6 +2852,55 @@ msgstr "%s ៖ មិន​អាច​ស្តារ %s ៖ %s (ការប msgid "%s: failed to find tcb directory for %s\n" msgstr "%s  ៖ ថត​មូលដ្ឋាន​មិន​ត្រឹមត្រូវ​ '%s'\n" +#~ msgid "Environment overflow\n" +#~ msgstr "​លើស​ចំណុះ​បរិស្ថាន\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s ៖ មិនអាចផ្លាស់​​ប្តូរ​អ្នក​ប្រើបានទេ​ '%s' លើ​ម៉ាស៊ីន​ភ្ញៀវ NIS បានទេ ។\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s ៖ '%s' ជាមេ​ NIS សម្រាប់​ម៉ាស៊ីន​ភ្ញៀវ​នេះ​ ។\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s ៖ ក្រុម​ '%s' គឺជាក្រុម​ NIS ។\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s ៖ %s គឺជា​មេ NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s ៖ ក្រុម​ %s គឺជា​ក្រុម NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s ៖ ក្រុម​ '%s' គឺជាក្រុម​ NIS ។\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s ៖ អ្នកប្រើ​ %s គឺជា​អ្នក​​ប្រើ​ NIS\n" + +#~ msgid "too simple" +#~ msgstr "ធម្មតា​ពេក" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "គ្មាន​ធាតុ​ utmp ឡើយ ។ អ្នក​ត្រូវ​ប្រតិបត្តិ​ \"login\" ពី​កម្រិត​ទាប​បំផុត​ \"sh\"" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s  ៖ ថត​មូលដ្ឋាន​មិន​ត្រឹមត្រូវ​ '%s'\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "បរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​ម្ចាស់​ប្រអប់សំបុត្រ" + #~ msgid "Usage: id\n" #~ msgstr "របៀបប្រើ​ ៖ លេខសម្គាល់\n" @@ -2831,10 +2916,6 @@ msgstr "%s  ៖ ថត​មូលដ្ឋាន​មិន​ត្រឹ #~ msgid "%s: password expiry information changed.\n" #~ msgstr "ការព្រមាន​ការផុត​កំណត់​នៃ​ពាក្យ​សម្ងាត់​" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ​ '%s'\n" - #, fuzzy #~ msgid "Username Port From Latest" #~ msgstr "ឈ្មោះ​អ្នក​ប្រើ ច្រក ពី ចុង​ក្រោយ​បំផុត\n" diff --git a/po/ko.gmo b/po/ko.gmo index 0257fe8..ea9ba3b 100644 Binary files a/po/ko.gmo and b/po/ko.gmo differ diff --git a/po/ko.po b/po/ko.po index 9c0c3a8..1a9c67a 100644 --- a/po/ko.po +++ b/po/ko.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2009-04-19 21:32+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" @@ -18,222 +18,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"이름이 '%s'인 항목이 %s 안에 여러 개 있습니다. pwck 혹은 grpck 명령으로 이 문" -"제를 바로잡으십시오.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "libcrypt가 지원하지 않는 암호화 방법? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "설정 오류 - 알 수 없는 항목 '%s'(관리자에게 알리시기 바랍니다)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "암호: " - -#, c-format -msgid "%s's Password: " -msgstr "%s의 암호: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "검증 인터페이스를 열 수 없습니다. 중지합니다.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s의 사용기한 정보를 바꿉니다\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: 메모리 부족\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: '%s'을(를) 삭제할 수 없습니다\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: 홈 디렉터리 '%s'은(는) 잘못되었습니다\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: '%s' 항목을 %s에서 제거할 수 없습니다\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "lastlog: %s의 크기를 읽을 수 없습니다: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: 경고: %s을(를) 제거할 수 없습니다: %s" - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: 이름 다시 설정: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: 디렉터리 %s의 이름을 %s(으)로 바꿀 수 없습니다\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: 디렉터리 %s의 이름을 %s(으)로 바꿀 수 없습니다\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: 경고: %s을(를) 제거할 수 없습니다: %s" - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "lastlog: %s의 크기를 읽을 수 없습니다: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: '%s'을(를) 삭제할 수 없습니다\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: %d번 줄: '%s' 사용자가 없습니다\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: 이름 다시 설정: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s을(를) 열 수 없습니다\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "경고: 알 수 없는 그룹(%s)\n" @@ -280,6 +64,13 @@ msgstr "TTY 표준 입력의 소유자 혹은 모드를 바꿀 수 없습니다: msgid "%s: failed to unlock %s\n" msgstr "%s: %s의 잠금을 푸는데 실패했습니다\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"이름이 '%s'인 항목이 %s 안에 여러 개 있습니다. pwck 혹은 grpck 명령으로 이 문" +"제를 바로잡으십시오.\n" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -287,8 +78,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "환경 변수 오버플로우\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "libcrypt가 지원하지 않는 암호화 방법? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -386,9 +178,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: 유일한 UID를 얻을 수 없습니다 (UID가 남아 있지 않습니다)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "설정 오류 - 알 수 없는 항목 '%s'(관리자에게 알리시기 바랍니다)\n" + #, fuzzy, c-format #| msgid "%s: Authentication failure\n" msgid "%s: Memory allocation failure\n" @@ -415,9 +214,9 @@ msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" msgid "%s: Could not set caps\n" msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: stpeprintf failed!\n" +msgstr "%s: %d번 줄: chown 실패했습니다\n" #, fuzzy, c-format msgid "%s: open of %s failed: %s\n" @@ -427,9 +226,21 @@ msgstr "%s: %d번 줄: chown 실패했습니다\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: %d번 줄: chown 실패했습니다\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: %d번 줄: chown 실패했습니다\n" + msgid "Too many logins.\n" msgstr "로그인 횟수가 너무 많음.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s 로그인: " + msgid "You have new mail." msgstr "새 메일이 도착하였습니다." @@ -439,6 +250,14 @@ msgstr "메일 없습니다." msgid "You have mail." msgstr "메일이 있습니다." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "바뀐 점이 없습니다" @@ -451,9 +270,6 @@ msgstr "대소문자만 바뀌었습니다" msgid "too similar" msgstr "너무 비슷합니다" -msgid "too simple" -msgstr "너무 간단합니다" - msgid "rotated" msgstr "순서만 순환되었습니다" @@ -499,6 +315,13 @@ msgid "" "%s\n" msgstr "암호: pam_start() 실패했습니다, 오류 %d\n" +msgid "Password: " +msgstr "암호: " + +#, c-format +msgid "%s's Password: " +msgstr "%s의 암호: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "'%s'의 암호가 맞지 않습니다.\n" @@ -524,30 +347,127 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"쓸 수 없는 ENCRYPT_METHOD 값: '%s'.\n" +"기본값인 DES로 설정합니다.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "검증 인터페이스를 열 수 없습니다. 중지합니다.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "설정 정보를 위한 공간을 확보할 수 없습니다.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s의 사용기한 정보를 바꿉니다\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" -#, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot commit SELinux transaction\n" msgstr "" -"쓸 수 없는 ENCRYPT_METHOD 값: '%s'.\n" -"기본값인 DES로 설정합니다.\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -561,6 +481,10 @@ msgstr "디렉터리 없음, 루트 디렉터리(/)로 로그인합니다" msgid "Cannot execute %s" msgstr "%s을(를) 실행할 수 없습니다" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "루트 디렉터리 '%s'이(가) 잘못되었습니다\n" @@ -569,6 +493,84 @@ msgstr "루트 디렉터리 '%s'이(가) 잘못되었습니다\n" msgid "Can't change root directory to '%s'\n" msgstr "루트 디렉터리를 '%s'(으)로 바꿀 수 없습니다\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: 메모리 부족\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: '%s'을(를) 삭제할 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: 홈 디렉터리 '%s'은(는) 잘못되었습니다\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: '%s' 항목을 %s에서 제거할 수 없습니다\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "lastlog: %s의 크기를 읽을 수 없습니다: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: 경고: %s을(를) 제거할 수 없습니다: %s" + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: 이름 다시 설정: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: 디렉터리 %s의 이름을 %s(으)로 바꿀 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: 디렉터리 %s의 이름을 %s(으)로 바꿀 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: 경고: %s을(를) 제거할 수 없습니다: %s" + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "lastlog: %s의 크기를 읽을 수 없습니다: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: '%s'을(를) 삭제할 수 없습니다\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: %d번 줄: '%s' 사용자가 없습니다\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: 이름 다시 설정: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s을(를) 열 수 없습니다\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: %s 사용자는 현재 로그인한 상태 입니다\n" @@ -630,6 +632,9 @@ msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라 msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -655,12 +660,15 @@ msgstr "암호를 사용할 수 없음" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "계정 만료 날짜 (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "마지막으로 암호를 바꾼 날\t\t\t\t\t:" - msgid "never" msgstr "안함" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "마지막으로 암호를 바꾼 날\t\t\t\t\t:" + msgid "password must be changed" msgstr "암호를 바꿔야 합니다" @@ -828,14 +836,6 @@ msgstr "%s: '%s'에 사용할 수 없는 글자가 들어 있습니다\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: '%s' 사용자가 없습니다\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: NIS 클라이언트에서 '%s' 사용자를 바꿀 수 없습니다.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s'이(가) 현재의 클라이언트의 NIS 마스터입니다.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s의 사용자의 정보를 바꿉니다\n" @@ -869,6 +869,11 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: 지원하지 않는 암호화 방법: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: %s 플래그는 %s 플래그와 함께 사용해야 합니다\n" @@ -919,6 +924,15 @@ msgstr "" msgid "Login Shell" msgstr "로그인 쉘" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "lastlog: %s의 크기를 읽을 수 없습니다: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "'%s'의 쉘을 바꿀 수 없습니다.\n" @@ -931,6 +945,10 @@ msgstr "%s의 로그인 쉘을 변경하고 있습니다\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: 부적절한 입력: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s은(는) 사용할 수 없는 쉘입니다.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s은(는) 사용할 수 없는 쉘입니다.\n" @@ -1147,9 +1165,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1162,6 +1177,10 @@ msgstr "올바르지 않은 사용자 이름 '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s'은(는) 사용할 수 없는 그룹 이름입니다\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s을(를) 열 수 없습니다\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "'%s' `%s' 그룹 ID는 쓸 수 없습니다\n" @@ -1204,14 +1223,6 @@ msgstr "%s: '%s' 사용자의 주요 그룹을 제거할 수 없습니다\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: '%s' 그룹이 없습니다\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: '%s' 그룹은 NIS 그룹입니다\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s은(는) NIS 마스터입니다\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: '%s' 사용자는 이미 '%s'의 멤버입니다\n" @@ -1289,10 +1300,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: '%s' 그룹 이름은 쓸 수 없습니다\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: %s 그룹은 NIS 그룹입니다\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: 알 수 없는 사용자 %s\n" @@ -1408,7 +1415,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1502,10 +1509,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"UTMP 항목이 없습니다. 가장 낮은 \"sh\"에서 \"login\"을 실행해야 합니다." - #, fuzzy, c-format msgid "" "\n" @@ -1539,14 +1542,6 @@ msgstr "로그인이 맞지 않습니다" msgid "Cannot find user (%s)\n" msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s 로그인: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: fork 실패: %s" @@ -1582,7 +1577,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1609,17 +1605,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: %s의 잠금을 푸는데 실패했습니다\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1652,14 +1644,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1680,6 +1671,10 @@ msgstr "%s: 사용할 수 없는 사용자 ID '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: 쓸 수 없는 사용자 이름 '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: %d번 줄: 올바른 줄이 아닙니다\n" @@ -1702,6 +1697,10 @@ msgstr "%s: %d번 줄: 그룹을 만들 수 없습니다\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: %d번 줄: `%s' 사용자가 %s 안에 없습니다\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: 이름 다시 설정: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: %d번 줄: 암호를 업데이트 할 수 없습니다\n" @@ -1722,14 +1721,14 @@ msgstr "%s: %d번 줄: chown 실패했습니다\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: %d번 줄: 입력값을 업데이트 할 수 없습니다\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: 새 %s 항목 '%s'을(를) 준비하는데 실패했습니다\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: 사용자를 만들 수 없습니다\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: 새 %s 항목 '%s'을(를) 준비하는데 실패했습니다\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: 그룹을 만들 수 없습니다\n" @@ -1791,6 +1790,9 @@ msgid "" " change to MAX_DAYS\n" msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "예전 암호: " @@ -1810,6 +1812,11 @@ msgstr "" "새 암호를 입력하십시오(최소 %d, 최대 %d 글자)\n" "영어 대소문자와 숫자를 조합하여 사용하십시오.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: 입력범위가 너무 깁니다\n" + msgid "New password: " msgstr "새 암호: " @@ -1852,6 +1859,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: %s 저장소는 지원하지 않습니다\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: root만 -g/--group 옵션을 쓸 수 있습니다\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -1996,11 +2008,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2086,6 +2096,11 @@ msgstr "%s: 현재 su 명령을 실행할 권한이 없습니다\n" msgid "No passwd entry for user '%s'\n" msgstr "'루트'에 대한 암호 파일 입력값이 없음" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "올바르지 않은 사용자 이름 '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: 터미널에서 받드시 실행되어야 합니다\n" @@ -2131,6 +2146,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2141,10 +2162,6 @@ msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" @@ -2161,10 +2178,6 @@ msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" msgid "%s: rename: %s: %s\n" msgstr "%s: 이름 다시 설정: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: '%s' 그룹은 NIS 그룹입니다.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: 그룹이 너무 많이 명시되었습니다 (최대 %d).\n" @@ -2281,6 +2294,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n" @@ -2418,6 +2436,16 @@ msgstr "'mail' 그룹이 없습니다. 사용자의 메일함 파일을 0600 모 msgid "Setting mailbox file permissions" msgstr "메일함의 파일 권한을 설정 중" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "메일함 파일을 만드는 중" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "메일함 파일을 만드는 중" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2538,10 +2566,6 @@ msgstr "lastlog: %s의 크기를 읽을 수 없습니다: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: '%s' 항목을 %s에서 제거할 수 없습니다\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: %s 사용자는 NIS 사용자 입니다\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: 홈 디렉터리 '%s'은(는) 잘못되었습니다\n" @@ -2647,6 +2671,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2732,12 +2760,25 @@ msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" "%s: 사용자 %lu의 최근 기록 항목을 사용자 %lu에 복사하는데 실패했습니다: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: 사용자 %lu의 최근 기록 항목을 사용자 %lu에 복사하는데 실패했습니다: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: 사용자 %lu의 로그인 실패 기록 항목을 사용자 %lu에 복사하는데 실패했습니" "다: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: 사용자 %lu의 로그인 실패 기록 항목을 사용자 %lu에 복사하는데 실패했습니" +"다: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: 경고: %s은(는) %s이(가) 소유하고 있지 않습니다\n" @@ -2843,9 +2884,8 @@ msgstr "%s: %s의 잠금을 푸는데 실패했습니다\n" msgid "failed to stat edited file" msgstr "메일함의 이름을 바꾸는 데 실패했습니다" -#, fuzzy -msgid "failed to allocate memory" -msgstr "메일함 소유자를 바꾸는 데 실패했습니다" +msgid "asprintf(3) failed" +msgstr "" #, fuzzy msgid "failed to create backup file" @@ -2859,6 +2899,56 @@ msgstr "%s: %s을(를) 복구할 수 없습니다: %s (바뀐 사항은 %s에 msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n" +#~ msgid "Environment overflow\n" +#~ msgstr "환경 변수 오버플로우\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: NIS 클라이언트에서 '%s' 사용자를 바꿀 수 없습니다.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s'이(가) 현재의 클라이언트의 NIS 마스터입니다.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: '%s' 그룹은 NIS 그룹입니다\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s은(는) NIS 마스터입니다\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: %s 그룹은 NIS 그룹입니다\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: '%s' 그룹은 NIS 그룹입니다.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: %s 사용자는 NIS 사용자 입니다\n" + +#~ msgid "too simple" +#~ msgstr "너무 간단합니다" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "UTMP 항목이 없습니다. 가장 낮은 \"sh\"에서 \"login\"을 실행해야 합니다." + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "메일함 소유자를 바꾸는 데 실패했습니다" + #~ msgid "Usage: id\n" #~ msgstr "사용법: id\n" @@ -2874,10 +2964,6 @@ msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "암호 사용만료 예고" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "올바르지 않은 사용자 이름 '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "사용자이름 포트 어디서 최근정보" diff --git a/po/nb.gmo b/po/nb.gmo index 47a73ae..59b4c0c 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index e77f45f..c7ef84a 100644 --- a/po/nb.po +++ b/po/nb.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2018-03-05 12:33+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmål \n" @@ -24,231 +24,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.7.5\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Det ligger flere oppføringer med navnet «%s» i %s. Korriger dette med pwck " -"eller grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "har du et libcrypt som ikke støtter crypt-metoden? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "oppsettsfeil – klarte ikke å tolke %s-verdi: «%s»" - -msgid "Could not allocate space for config info.\n" -msgstr "Klarte ikke å tildele plass til oppsettsinformasjon.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "oppsettsfeil - element «%s» er ukjent (kontakt administrator)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd avsluttet ikke normallt (signal %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd avsluttet med status %d\n" - -msgid "Password: " -msgstr "Passord: " - -#, c-format -msgid "%s's Password: " -msgstr "%s's Passord: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Klarte ikke å åpne kontrollgrensesnitt – avbryter.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Klarte ikke å lage SELinux-styringshåndtak\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux-regler blir ikke håndtert\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Klarte ikke å lese SELinux-regler\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Klarte ikke å sette opp SELinux-styringstilkobling\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Klarte ikke å begynne SELinux-transaksjon\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Klarte ikke spørre seuser om %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Klarte ikke endre serange for %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Klarte ikke endre sename for %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Klarte ikke å endre brukerkobling for %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Klarte ikke å lage SELinux-brukerkobling for %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Klarte ikke å endre navn på %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Klarte ikke å endre SELinux-brukernavn for %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Klarte ikke legge til brukerkobling for %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Klarte ikke å starte opp SELinux-styringsverktøy\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Klarte ikke å lage SELinux-brukernøkkel\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Klarte ikke å bekrefte SELinux-bruker\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Klarte ikke å endre SELinux-brukerkobling\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Klarte ikke å legge til SELinux brukeravbildning\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Klarte ikke å utføre SELinux-transaksjon\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Brukerkobling for %s er ikke definert, OK hvis forvalgt kobling ble brukt\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "Brukerkobling for %s er definert i regelsett, og kan ikke slettes\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Klarte ikke å slette brukerkobling for %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: minnet er fullt\n" - -# , c-format -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: Klarte ikke å utføre stat på %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s er hverken en mappe eller symbolsk lenke.\n" - -# , c-format -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Klarte ikke å lese symbolsk lenke %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Mistenkelig lang symlenke: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Klarte ikke å opprette mappa %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Klarte ikke å gi %s ny eier: %s\n" - -# , c-format -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Klarte ikke å endre modus for %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: avlenk: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Klarte ikke å slette mappa %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Klarte ikke å endre navn på %s til %s: %s\n" - -# , c-format -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Klarte ikke å fjerne %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Klarte ikke å lage symbolsk lenke %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Klarte ikke å gi %s ny eier: %s\n" - -# , c-format -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Klarte ikke å kjøre lstat for %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Advarsel: bruker %s har ingen tcb-skyggefil.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Kritisk: %s' tcb-skygge er ikke en vanlig fil med st_nlink=1.\n" -"Kontoen forblir låst.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -# , c-format -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Klarte ikke å åpne %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Advarsel: ukjent gruppe %s\n" @@ -297,6 +72,13 @@ msgstr "Klarte ikke å endre eier eller rettigheter til tty stdin: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: klarte ikke å låse opp %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Det ligger flere oppføringer med navnet «%s» i %s. Korriger dette med pwck " +"eller grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -304,8 +86,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Miljøet er fullt\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "har du et libcrypt som ikke støtter crypt-metoden? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -430,8 +213,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Fant ikke entydig UID (ingen flere UID-er tilgjengelig)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "oppsettsfeil – klarte ikke å tolke %s-verdi: «%s»" + +msgid "Could not allocate space for config info.\n" +msgstr "Klarte ikke å tildele plass til oppsettsinformasjon.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "oppsettsfeil - element «%s» er ukjent (kontakt administrator)\n" # , c-format #, fuzzy, c-format @@ -464,7 +254,7 @@ msgstr "Klarte ikke å endre navn på %s\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: klarte ikke å åpne fil\n" #, fuzzy, c-format @@ -477,9 +267,22 @@ msgstr "%s: linje %d: chown %s mislyktes: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linje %d: chown %s mislyktes: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linje %d: chown %s mislyktes: %s\n" + msgid "Too many logins.\n" msgstr "For mange innlogginger.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "Du har fått ny e-post." @@ -489,6 +292,14 @@ msgstr "Ingen e-post." msgid "You have mail." msgstr "Du har ulest e-post." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd avsluttet ikke normallt (signal %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd avsluttet med status %d\n" + msgid "no change" msgstr "ingen endring" @@ -501,9 +312,6 @@ msgstr "bare endring i store/små bokstaver" msgid "too similar" msgstr "for likt" -msgid "too simple" -msgstr "for enkelt" - msgid "rotated" msgstr "rotert" @@ -542,83 +350,280 @@ msgstr "%s: ikke støtte for lager %s\n" msgid "%s: (user %s) pam_start failure %d\n" msgstr "%s: pam_start: feil %d\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() mislyktes, feil %d\n" +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() mislyktes, feil %d\n" + +msgid "Password: " +msgstr "Passord: " + +#, c-format +msgid "%s's Password: " +msgstr "%s's Passord: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Feil passord for «%s».\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: flere --root-valg\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: valget «%s» må ha et argument\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: klarte ikke å fjerne privilegier (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: chroot-sti «%s» er ugyldig\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: fikk ikke tilgang til chroot-mappe %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: klarte ikke å utføre chroot med %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: klarte ikke å bytte mappe til chroot-mappe %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Ugyldig verdi for ENCRYPT_METHOD: «%s»\n" +"Faller tilbake til DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Klarte ikke å åpne kontrollgrensesnitt – avbryter.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Klarte ikke å lage SELinux-styringshåndtak\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux-regler blir ikke håndtert\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Klarte ikke å lese SELinux-regler\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Klarte ikke å sette opp SELinux-styringstilkobling\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Klarte ikke å begynne SELinux-transaksjon\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Klarte ikke spørre seuser om %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Klarte ikke endre serange for %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Klarte ikke endre sename for %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Klarte ikke å endre brukerkobling for %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Klarte ikke å lage SELinux-brukerkobling for %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Klarte ikke å endre navn på %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Klarte ikke å endre SELinux-brukernavn for %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Klarte ikke legge til brukerkobling for %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Klarte ikke å starte opp SELinux-styringsverktøy\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Klarte ikke å lage SELinux-brukernøkkel\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Klarte ikke å bekrefte SELinux-bruker\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Klarte ikke å endre SELinux-brukerkobling\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Klarte ikke å legge til SELinux brukeravbildning\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Klarte ikke å utføre SELinux-transaksjon\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Brukerkobling for %s er ikke definert, OK hvis forvalgt kobling ble brukt\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "Brukerkobling for %s er definert i regelsett, og kan ikke slettes\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Klarte ikke å slette brukerkobling for %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Klarte ikke å bytte mappe til «%s»\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Hjemmemappe mangler. Logger inn med HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Klarte ikke å kjøre %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Rotmappe «%s» er ugyldig\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Klarte ikke å endre rotmappe til «%s»\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: minnet er fullt\n" + +# , c-format +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: Klarte ikke å utføre stat på %s: %s\n" + +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s er hverken en mappe eller symbolsk lenke.\n" +# , c-format #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Feil passord for «%s».\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Klarte ikke å lese symbolsk lenke %s: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: flere --root-valg\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Mistenkelig lang symlenke: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: valget «%s» må ha et argument\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: Klarte ikke å opprette mappa %s: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: klarte ikke å fjerne privilegier (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Klarte ikke å gi %s ny eier: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: chroot-sti «%s» er ugyldig\n" +# , c-format +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Klarte ikke å endre modus for %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: fikk ikke tilgang til chroot-mappe %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: avlenk: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: klarte ikke å bytte mappe til chroot-mappe %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Klarte ikke å slette mappa %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: klarte ikke å utføre chroot med %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Klarte ikke å endre navn på %s til %s: %s\n" +# , c-format #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Klarte ikke å fjerne %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Ugyldig verdi for ENCRYPT_METHOD: «%s»\n" -"Faller tilbake til DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Klarte ikke å lage symbolsk lenke %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Klarte ikke å gi %s ny eier: %s\n" +# , c-format #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Klarte ikke å bytte mappe til «%s»\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Klarte ikke å kjøre lstat for %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Hjemmemappe mangler. Logger inn med HOME=/" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Advarsel: bruker %s har ingen tcb-skyggefil.\n" #, c-format -msgid "Cannot execute %s" -msgstr "Klarte ikke å kjøre %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Kritisk: %s' tcb-skygge er ikke en vanlig fil med st_nlink=1.\n" +"Kontoen forblir låst.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Rotmappe «%s» er ugyldig\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" +# , c-format #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Klarte ikke å endre rotmappe til «%s»\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Klarte ikke å åpne %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -691,6 +696,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_MAPPE mappe som skal brukes til chroot\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_MAPPE mappe som skal brukes til chroot\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -718,12 +728,15 @@ msgstr "Inaktivt passord" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Utløpsdato for konto (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Forrige endring av passord\t\t\t\t\t: " - msgid "never" msgstr "aldri" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Forrige endring av passord\t\t\t\t\t: " + msgid "password must be changed" msgstr "passordet må endres" @@ -902,14 +915,6 @@ msgstr "%s: «%s» inneholder ugyldige tegn\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: bruker «%s» finnes ikke\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: klarte ikke å endre bruker «%s» på NIS-klient.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» er NIS-sjef for denne klienten.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Endrer brukerinformasjon for %s\n" @@ -950,6 +955,11 @@ msgid "" msgstr "" " -s, --sha-rounds antall SHA-runder for kryptering med SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: krypteringsmetoden %s støttes ikke på dette systemet\n" + # , c-format #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" @@ -1007,6 +1017,16 @@ msgstr "" msgid "Login Shell" msgstr "Innloggingsskall" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Fant ikke størrelse på %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" + # , c-format #, c-format msgid "You may not change the shell for '%s'.\n" @@ -1020,6 +1040,12 @@ msgstr "Endrer innloggingsskall for %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Ugyldig inntasting: %s\n" +# , c-format +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s er et ugyldig skall\n" + # , c-format #, c-format msgid "%s: %s is an invalid shell\n" @@ -1270,11 +1296,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system lag en systemkonto\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_MAPPE mappe som skal brukes til chroot\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1290,6 +1311,12 @@ msgstr "ugyldig brukernavn «%s»\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» er et ugyldig gruppenavn\n" +# , c-format +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Klarte ikke å åpne %s: %s\n" + # , c-format #, c-format msgid "%s: invalid group ID '%s'\n" @@ -1339,15 +1366,6 @@ msgstr "%s: klarte ikke å fjerne hovedgruppe for bruker «%s».\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: gruppa «%s» finnes ikke\n" -# , c-format -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: gruppe «%s» er en NIS-gruppe\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s er NIS-sjef\n" - # , c-format #, c-format msgid "%s: user '%s' is already a member of '%s'\n" @@ -1449,10 +1467,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: ugyldig gruppenavn «%s»\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: gruppa %s er en NIS-gruppe\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: ukjent bruker %s\n" @@ -1581,8 +1595,12 @@ msgstr "" " -b, --before DAGER skriv ut bare lastlog-poster eldre enn " "DAGER\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear tøm lastlog-oppføring for en bruker (krever " @@ -1681,9 +1699,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Kan umulig virke uten effektiv root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Ingen oppføring i utmp. Du må kjøre «login» fra «sh» på laveste nivå" - #, c-format msgid "" "\n" @@ -1717,14 +1732,6 @@ msgstr "Ugyldig innlogging" msgid "Cannot find user (%s)\n" msgstr "Fant ikke bruker (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: mislykket utspalting: %s" @@ -1760,7 +1767,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1790,20 +1798,15 @@ msgstr "%s: klarte ikke å fjerne %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: klarte ikke å låse opp %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: fant ikke tcb-mappe for %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Klarte ikke opprette tcb-mappe for %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1839,14 +1842,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Klarte ikke opprette tcb-mappe for %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1871,6 +1874,10 @@ msgstr "%s: ugyldig bruker-ID «%s»\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: ugyldig brukernavn «%s»\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linje %d: ugyldig linje\n" @@ -1897,6 +1904,11 @@ msgstr "%s: linje %d: klarte ikke å lage ny gruppe\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: linje %d: bruker «%s» finnes ikke i %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: avlenk: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linje %d: klarte ikke å oppdatere passord\n" @@ -1920,13 +1932,13 @@ msgstr "%s: linje %d: klarte ikke å oppdatere oppføring\n" # , c-format #, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: klarte ikke å lage ny %s-oppføring\n" +msgid "%s: can't find subordinate user range\n" +msgstr "%s: fant ikke underordnet bruker-rekkevidde\n" # , c-format #, c-format -msgid "%s: can't find subordinate user range\n" -msgstr "%s: fant ikke underordnet bruker-rekkevidde\n" +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: klarte ikke å lage ny %s-oppføring\n" #, c-format msgid "%s: can't find subordinate group range\n" @@ -1997,6 +2009,11 @@ msgstr "" " -x, --maxdays DAGER endre maksimalt antall dager før passord\n" " må endres til DAGER\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list vis aldringsinformasjon for konto\n" + msgid "Old password: " msgstr "Gammelt passord: " @@ -2017,6 +2034,11 @@ msgstr "" "Skriv inn det nye passordet (minst %d, høyst %d tegn)\n" "Bruk en kombinasjon av store og små bokstaver, og tall.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: feltene er for lange\n" + msgid "New password: " msgstr "Nytt passord: " @@ -2061,6 +2083,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: ikke støtte for lager %s\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: bare root kan bruke valget -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2219,11 +2246,9 @@ msgstr "%s: funksjonsfeil ved signal\n" msgid "Session terminated, terminating shell..." msgstr "Økt avsluttet, avslutter skall ..." -#, c-format msgid " ...killed.\n" msgstr " … drept.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ... venter på at barneprosess avslutter.\n" @@ -2312,6 +2337,11 @@ msgstr "%s: Du har ikke adgang til å su på den tiden\n" msgid "No passwd entry for user '%s'\n" msgstr "Ingen oppføring for bruker «%s» i passordfil\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ugyldig brukernavn «%s»\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: må kjøres fra en terminal\n" @@ -2357,6 +2387,13 @@ msgstr "%s: %s ble opprettet, men ikke fjernet\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: oppsettet for %s i %s blir ignorert\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: oppsettet for %s i %s blir ignorert\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2367,10 +2404,6 @@ msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: klarte ikke å åpne ny frovalg-fil\n" @@ -2387,10 +2420,6 @@ msgstr "%s: Klarte ikke å lage sikkerhetskopi-fil (%s): %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: gi nytt navn: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: gruppe «%s» er en NIS-gruppe.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: for mange grupper (maks %d).\n" @@ -2528,6 +2557,17 @@ msgstr "" " -Z, --selinux-user SEBRUKER bruk en bestemt bruker SEBRUKER for " "SELinux brukeravbildning\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEBRUKER bruk en bestemt bruker SEBRUKER for " +"SELinux brukeravbildning\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: ugyldig basismappe «%s»\n" @@ -2670,6 +2710,16 @@ msgstr "Fant ikke gruppa «mail». Oppretter e-postkassefil med modus 0600.\n" msgid "Setting mailbox file permissions" msgstr "Endrer rettigheter for e-postkassefil" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Lager e-postkassefil" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Lager e-postkassefil" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2811,10 +2861,6 @@ msgstr "%s: Klarte ikke å fjerne innhold fra %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Klarte ikke å fjerne tcb-filer for %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: bruker %s er en NIS-bruker\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: fant ikke hjemmemappe for %s (%s)\n" @@ -2944,6 +2990,16 @@ msgstr "" " -Z, --selinux-user SEUSER ny SELinux brukeravbildning for " "brukerkontoen\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER ny SELinux brukeravbildning for " +"brukerkontoen\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3039,12 +3095,26 @@ msgstr "" "%s: klarte ikke å kopiere lastlog-oppføring for bruker %lu til bruker %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: klarte ikke å kopiere lastlog-oppføring for bruker %lu til bruker %lu: " +"%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: klarte ikke å kopiere faillog-oppføring for bruker %lu til bruker %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: klarte ikke å kopiere faillog-oppføring for bruker %lu til bruker %lu: " +"%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: advarsel: %s er ikke eid av %s\n" @@ -3152,8 +3222,10 @@ msgstr "klarte ikke å avlenke kladdfil" msgid "failed to stat edited file" msgstr "klarte ikke å kjøre «stat» på redigert fil" -msgid "failed to allocate memory" -msgstr "klarte ikke å tildele minne" +#, fuzzy +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: klarte ikke å åpne fil\n" msgid "failed to create backup file" msgstr "klarte ikke å lage sikkerhetskopi-fil" @@ -3166,6 +3238,57 @@ msgstr "%s: klarte ikke å gjenopprette %s: %s (endringer ligger i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: fant ikke tcb-mappe for %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Miljøet er fullt\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: klarte ikke å endre bruker «%s» på NIS-klient.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» er NIS-sjef for denne klienten.\n" + +# , c-format +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: gruppe «%s» er en NIS-gruppe\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s er NIS-sjef\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: gruppa %s er en NIS-gruppe\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: gruppe «%s» er en NIS-gruppe.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: bruker %s er en NIS-bruker\n" + +#~ msgid "too simple" +#~ msgstr "for enkelt" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Ingen oppføring i utmp. Du må kjøre «login» fra «sh» på laveste nivå" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: fant ikke tcb-mappe for %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "klarte ikke å tildele minne" + #~ msgid "Usage: id\n" #~ msgstr "Bruk: id\n" @@ -3181,10 +3304,6 @@ msgstr "%s: fant ikke tcb-mappe for %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: informasjon om utløp av passord er endret.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ugyldig brukernavn «%s»\n" - #~ msgid "Username Port From Latest" #~ msgstr "Brukernavn Port Fra Sist" diff --git a/po/ne.gmo b/po/ne.gmo index 55de882..c72fe57 100644 Binary files a/po/ne.gmo and b/po/ne.gmo differ diff --git a/po/ne.po b/po/ne.po index 5f69b5d..826ef6c 100644 --- a/po/ne.po +++ b/po/ne.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2006-06-16 14:30+0545\n" "Last-Translator: Shiva Pokharel \n" "Language-Team: Nepali \n" @@ -19,220 +19,6 @@ msgstr "" "Plural-Forms: nplurals=2;plural=(n!=1)\n" "X-Generator: KBabel 1.10.2\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "कनफिगरेसन सूचनाको लागि खाली ठाऊँ बाँड्न सकिदैन ।\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "कन्फिगरेसन त्रुटि - अज्ञात वस्तु '%s' (प्रशासकलाई सूचना गर्नुहोस)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "पासवर्ड: " - -#, c-format -msgid "%s's Password: " -msgstr "'%s' को पासवर्ड: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "पासवर्ड फाइल खोल्न सकिएन ।\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "कनफिगरेसन सूचनाको लागि खाली ठाऊँ बाँड्न सकिदैन ।\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s का लागि अवधि सूचना परिवर्तन गरिदैछ\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: तपाईँको प्रयोगकर्ता नाम निर्धारण गर्न सकिएन ।\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: रेखा %d: प्रयोगकर्ता फेला पार्न सकिएन %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: स्मृति भन्दा बाहिर\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: फाइल %s अद्यावधिक गर्न सकिएन\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: अवैध गृह डाइरेक्ट्री '%s'\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: चेतावनी: हट्न सक्दैन " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: चेतावनी: हट्न सक्दैन " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: पुन:नामकरण गर्नुहोस्: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: चेतावनी: हट्न सक्दैन " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: चेतावनी: हट्न सक्दैन " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: फाइल %s अद्यावधिक गर्न सकिएन\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: स्याडो फाइल अद्यावधिक हुन सकेन\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: पुन:नामकरण गर्नुहोस्: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: फाइल %s खोल्न सकिएन\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "चेतावनी: अज्ञात समूह %s\n" @@ -279,6 +65,11 @@ msgstr "tty %s लाई परिवर्तन गर्न असक्ष msgid "%s: failed to unlock %s\n" msgstr "%s: अति लामो फाँट\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -286,8 +77,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "परिवेशको अतिप्रवाह\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -386,9 +178,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: अद्वितिय UID प्राप्त गर्न सकिएन\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "कनफिगरेसन सूचनाको लागि खाली ठाऊँ बाँड्न सकिदैन ।\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "कन्फिगरेसन त्रुटि - अज्ञात वस्तु '%s' (प्रशासकलाई सूचना गर्नुहोस)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: PAM आधिकरण असफल भयो\n" @@ -416,7 +215,7 @@ msgstr "कनफिगरेसन सूचनाको लागि खाल #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: फाइल खोल्न सकिएन\n" #, fuzzy, c-format @@ -427,9 +226,21 @@ msgstr "%s: रेखा %d: chown असफल भयो\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: रेखा %d: chown असफल भयो\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: रेखा %d: chown असफल भयो\n" + msgid "Too many logins.\n" msgstr "अति धेरै लगइनहरू ।\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s लगइन: " + msgid "You have new mail." msgstr "तपाईँसँग नयाँ मेल छ।" @@ -439,6 +250,14 @@ msgstr "मेल छैन।" msgid "You have mail." msgstr "तपाईँको मेल छ।" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "परिवर्तन छैन" @@ -451,9 +270,6 @@ msgstr "केस परिवर्तनहरू मात्र" msgid "too similar" msgstr "अति मिल्दो" -msgid "too simple" -msgstr "अति सजिलो" - msgid "rotated" msgstr "घुमिरहेको" @@ -500,6 +316,13 @@ msgid "" "%s\n" msgstr "पासवर्ड: pam_start() असफल भयो, त्रुटि %d\n" +msgid "Password: " +msgstr "पासवर्ड: " + +#, c-format +msgid "%s's Password: " +msgstr "'%s' को पासवर्ड: " + #, c-format msgid "Incorrect password for %s.\n" msgstr " %s को लागि गलत पासवर्ड ।\n" @@ -525,28 +348,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "पासवर्ड फाइल खोल्न सकिएन ।\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "कनफिगरेसन सूचनाको लागि खाली ठाऊँ बाँड्न सकिदैन ।\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "कनफिगरेसन सूचनाको लागि खाली ठाऊँ बाँड्न सकिदैन ।\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s का लागि अवधि सूचना परिवर्तन गरिदैछ\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: तपाईँको प्रयोगकर्ता नाम निर्धारण गर्न सकिएन ।\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: रेखा %d: प्रयोगकर्ता फेला पार्न सकिएन %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -560,6 +480,10 @@ msgstr "डाइरेक्ट्री होइन, HOME=/ संगै ल msgid "Cannot execute %s" msgstr "%s कार्यान्वयन गर्न सकिएन" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "अवैध मूल डाइरेकट्री '%s'\n" @@ -568,6 +492,84 @@ msgstr "अवैध मूल डाइरेकट्री '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "'%s' मा मूल डाइरेकट्री परिवर्तन गर्न सकिदैन\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: स्मृति भन्दा बाहिर\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: फाइल %s अद्यावधिक गर्न सकिएन\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: अवैध गृह डाइरेक्ट्री '%s'\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: चेतावनी: हट्न सक्दैन " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: चेतावनी: हट्न सक्दैन " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: पुन:नामकरण गर्नुहोस्: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: चेतावनी: हट्न सक्दैन " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: चेतावनी: हट्न सक्दैन " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: फाइल %s अद्यावधिक गर्न सकिएन\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: स्याडो फाइल अद्यावधिक हुन सकेन\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: पुन:नामकरण गर्नुहोस्: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: फाइल %s खोल्न सकिएन\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: प्रयोगकर्ता %s हालै लग गरियो\n" @@ -627,6 +629,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -652,12 +657,15 @@ msgstr "पासवर्ड निष्क्रिय" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "लेखा समाप्ति मिति (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "अन्तिम पासवर्ड परिवर्तन भयो\t\t\t\t\t: " - msgid "never" msgstr "कहिल्यै पनि" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "अन्तिम पासवर्ड परिवर्तन भयो\t\t\t\t\t: " + msgid "password must be changed" msgstr "पासवर्ड परिवर्तन हुनुपर्छ" @@ -825,14 +833,6 @@ msgstr "%s: '%s' ले गैरकानूनी क्यारेक्ट msgid "%s: user '%s' does not exist\n" msgstr "%s: प्रयोगकर्ता %s अवस्थित छैन\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: NIS ग्राहकमा प्रयोगकर्ता '%s' परिवर्तन गर्न सकिदैन ।\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' यो ग्राहकको लागि NIS मास्टर हो ।\n" - #, c-format msgid "Changing the user information for %s\n" msgstr " %s को लागि प्रयोगकर्ता सूचना परिवर्तन गरिदैछ\n" @@ -861,6 +861,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: -a फ्ल्याग -G फ्ल्याग संग मात्र अनुमति छ\n" @@ -911,6 +915,15 @@ msgstr "" msgid "Login Shell" msgstr "शेल लगइन" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "तपाईँ यस को लागि शेल परिवर्तन गर्न सक्नुहुन्न %s ।\n" @@ -923,6 +936,10 @@ msgstr " %s को लागि शेलको लगइन परिवर् msgid "%s: Invalid entry: %s\n" msgstr "%s: अवैध प्रविष्टि: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s अवैध शेल हो ।\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s अवैध शेल हो ।\n" @@ -1133,9 +1150,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1148,6 +1162,10 @@ msgstr "अवैध प्रयोगकर्ता नाम '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s वैध समूह नाम होइन\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: फाइल %s खोल्न सकिएन\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "अवैध समूह नाम '%s'\n" @@ -1190,14 +1208,6 @@ msgstr "%s: NIS ग्राहकमा प्रयोगकर्ता '%s' msgid "%s: group '%s' does not exist\n" msgstr "%s: समूह %s अवस्थित छैन\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: समूह '%s' NIS समूह हो ।\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s NIS मास्टर हो\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: प्रयोगकर्ता %s NIS प्रयोगकर्ता हो\n" @@ -1273,10 +1283,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "अवैध समूह नाम '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: समूह %s NIS समूह हो\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: अज्ञात प्रयोगकर्ता %s\n" @@ -1391,7 +1397,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1485,11 +1491,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"utmp प्रविष्टि भएन । तपाईँले \"login\" गर्दा ज्यादै न्यून तह \"sh\" बाट कार्यन्वयन " -"गर्नुपर्छ" - #, fuzzy, c-format msgid "" "\n" @@ -1523,14 +1524,6 @@ msgstr "लगइन गलत छ" msgid "Cannot find user (%s)\n" msgstr "%s: रेखा %d: प्रयोगकर्ता फेला पार्न सकिएन %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s लगइन: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: फोर्क गर्दा असफल: %s" @@ -1567,7 +1560,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1592,17 +1586,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: अति लामो फाँट\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: अवैध डाइरेक्ट्री '%s'\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1636,14 +1626,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1664,6 +1653,10 @@ msgstr "%s: अवैध प्रयोगकर्ता नाम '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: अवैध प्रयोगकर्ता नाम '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: रेखा %d: अवैध रेखा\n" @@ -1684,6 +1677,10 @@ msgstr "%s: रेखा %d: GID सिर्जना गर्न सकिए msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: प्रयोगकर्ता %s अवस्थित छैन\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: पुन:नामकरण गर्नुहोस्: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: रेखा %d: पासवर्ड अद्यावधिक गर्न सकिएन\n" @@ -1704,14 +1701,14 @@ msgstr "%s: रेखा %d: chown असफल भयो\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: रेखा %d: प्रविष्टि अद्यावधिक गर्न सकिएन\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: विशेषधिकारहरू छोड्न असफल भयो (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: यो %s सिर्जना गर्न सकिदैन\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: विशेषधिकारहरू छोड्न असफल भयो (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: समूह फाइल अद्यावधिक गर्न सकिएन\n" @@ -1770,6 +1767,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "पुरानो पासवर्ड: " @@ -1789,6 +1789,11 @@ msgstr "" "नयाँ पासवर्ड प्रविष्ट गर्नुहोस् (%d को न्युनतम, %d को अधिक्तम क्यारेक्टरहरू)\n" "कृपया सानो र ठूलो अक्षरहरू र नम्बरहरुको मिलान प्रयोग गर्नुहोस् ।\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: अति लामो फाँट\n" + msgid "New password: " msgstr "नयाँ पासवर्ड : " @@ -1829,6 +1834,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: रेपोजिटरी %s समर्थित छैन\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1973,11 +1982,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2050,6 +2057,11 @@ msgstr "तपाईँ su %s मा प्रमाणिकरण हुनु msgid "No passwd entry for user '%s'\n" msgstr "मूलको लागि पासवर्ड प्रविष्टि छैन'" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "अवैध प्रयोगकर्ता नाम '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: टर्मिनलबाट चल्नुपर्छ\n" @@ -2095,6 +2107,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2105,10 +2123,6 @@ msgstr "%s: नयाँ पूर्वनिर्धारित फाइल msgid "%s: cannot create directory for defaults file\n" msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: नयाँ पूर्वनिर्धारित फाइल खोल्न सकिएन\n" @@ -2125,10 +2139,6 @@ msgstr "%s: डाइरेकट्री सिर्जना गर्न msgid "%s: rename: %s: %s\n" msgstr "%s: पुन:नामकरण गर्नुहोस्: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: समूह '%s' NIS समूह हो ।\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: अति धेरै समूहरू निर्दिष्ट गरिएको छ (max %d) ।\n" @@ -2238,6 +2248,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: अवैध डाइरेक्ट्री '%s'\n" @@ -2367,6 +2382,16 @@ msgstr "समूह मेल फेला परेन । ०६०० मो msgid "Setting mailbox file permissions" msgstr "मेल बाकस फाइल अनुमतिहरू मिलाउदै" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "मेल बाकस फाइल सिर्जना गर्दै" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "मेल बाकस फाइल सिर्जना गर्दै" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2486,10 +2511,6 @@ msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन: msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: डाइरेक्ट्री %s लाई %s मा पुन:नामकरण गर्न सकिदैन\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: प्रयोगकर्ता %s NIS प्रयोगकर्ता हो\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: अवैध गृह डाइरेक्ट्री '%s'\n" @@ -2588,6 +2609,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2670,10 +2695,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: पासवर्ड फाइल अद्यावधिक गर्न सकिएन\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: चेतावनी: %s चाँहि %s को स्वामित्वमा छैन\n" @@ -2779,8 +2812,9 @@ msgid "failed to stat edited file" msgstr "मेल बक्सलाई पुन:नामकरण गर्न असफल भयो" #, fuzzy -msgid "failed to allocate memory" -msgstr "मेलबक्स प्रापक परिवर्तन गर्न असफल भयो" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: फाइल खोल्न सकिएन\n" #, fuzzy msgid "failed to create backup file" @@ -2794,6 +2828,57 @@ msgstr "%s: पुन:भण्डारण गर्न सकिदैन %s: msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: अवैध डाइरेक्ट्री '%s'\n" +#~ msgid "Environment overflow\n" +#~ msgstr "परिवेशको अतिप्रवाह\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: NIS ग्राहकमा प्रयोगकर्ता '%s' परिवर्तन गर्न सकिदैन ।\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' यो ग्राहकको लागि NIS मास्टर हो ।\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: समूह '%s' NIS समूह हो ।\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s NIS मास्टर हो\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: समूह %s NIS समूह हो\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: समूह '%s' NIS समूह हो ।\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: प्रयोगकर्ता %s NIS प्रयोगकर्ता हो\n" + +#~ msgid "too simple" +#~ msgstr "अति सजिलो" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "utmp प्रविष्टि भएन । तपाईँले \"login\" गर्दा ज्यादै न्यून तह \"sh\" बाट कार्यन्वयन " +#~ "गर्नुपर्छ" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: अवैध डाइरेक्ट्री '%s'\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "मेलबक्स प्रापक परिवर्तन गर्न असफल भयो" + #~ msgid "Usage: id\n" #~ msgstr "उपयोग: id\n" @@ -2809,10 +2894,6 @@ msgstr "%s: अवैध डाइरेक्ट्री '%s'\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "पासवर्ड समाप्ति चेतावनी" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "अवैध प्रयोगकर्ता नाम '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "सबै भन्दा पछिल्लो बाट पोर्ट प्रयोगकर्ता नाम" diff --git a/po/nl.gmo b/po/nl.gmo index a0500ba..b3c8d3c 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index f1cca10..1a48326 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,14 +1,14 @@ # dutch po-file for shadow # Copyright (C) 2004 Free Software Foundation, Inc. # Bart Cornelis , 2004, 2006. -# Frans Spiesschaert , 2014-2022. +# Frans Spiesschaert , 2014-2024. # msgid "" msgstr "" -"Project-Id-Version: shadow 4.12.2\n" +"Project-Id-Version: shadow 4.15.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" -"PO-Revision-Date: 2022-09-27 17:08+0200\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" +"PO-Revision-Date: 2024-05-09 12:30+0200\n" "Last-Translator: Frans Spiesschaert \n" "Language-Team: Debian Dutch l10n Team \n" "Language: nl\n" @@ -18,230 +18,6 @@ msgstr "" "X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"In %s staan meerdere regels met als naam '%s'. Gelieve dit met pwck of grpck " -"te repareren.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "niet door libcrypt ondersteunde encryptiemethode? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "configuratiefout - kan waarde %s niet ontleden: '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Kon geen ruimte toewijzen voor de configuratie-info.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"configuratiefout - onbekend item '%s' (waarschuw een systeembeheerder)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd werd niet normaal beëindigd (signaal %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd sloot af met status %d\n" - -msgid "Password: " -msgstr "Wachtwoord: " - -#, c-format -msgid "%s's Password: " -msgstr "Wachtwoord van %s: " - -msgid "Cannot open audit interface.\n" -msgstr "Kan auditinterface niet openen.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" -"%s: kan context van vorige SELinux-proces niet verkrijgen: %s\n" -"\n" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Kan geen instrument voor SELinux-beheer creëren\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux-beleid wordt niet beheerd\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Kan het gebied met het SELinux-beleid niet lezen\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Kan geen verbinding leggen om SELinux te beheren\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Kan de SELinux-transactie niet beginnen\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Kon de seuser van %s niet opvragen\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Kon de serange van %s niet instellen\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Kon de sename van %s niet instellen\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Kon de aanmeldkoppeling van %s niet veranderen\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Kan voor %s geen SELinux-aanmeldkoppeling maken\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Kon voor %s geen naam instellen\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Kon voor %s geen SELinuxgebruiker instellen\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Kon voor %s geen aanmeldkoppeling toevoegen\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Kan SELinuxbeheer niet initialiseren\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Kan de gebruikerssleutel voor SELinux niet aanmaken\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Kan de SELinuxgebruiker niet verifiëren\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Kon de gebruikerskoppeling in SELinux niet veranderen\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Kan in SELinux geen gebruikerskoppeling toevoegen\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Kan de SELinux-transactie niet vastleggen\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Geen aanmeldkoppeling gedefinieerd voor %s. OK als de standaardkoppeling " -"gebruikt werd\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"Aanmeldkoppeling van %s werd in het beleid gedefinieerd en kan niet gewist " -"worden\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Kon de aanmeldkoppeling van %s niet wissen" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: onvoldoende geheugen\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: kan de status niet opvragen van %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s is geen map en ook geen symbolische koppeling.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: kan symbolische koppeling %s niet lezen: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: verdacht lange symbolische koppeling: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: kan map %s niet aanmaken: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: kan eigenaar van %s niet wijzigen: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: kan modus van %s niet wijzigen: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: ontkoppelen: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: kan map %s niet verwijderen: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: kan %s niet hernoemen naar %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: kan %s niet verwijderen: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: kan symbolische koppeling %s niet aanmaken: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: kan eigenaars van %s niet wijzigen: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: kan status van symbolische koppeling %s niet opvragen: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: waarschuwing: gebruiker %s heeft geen tcb-schaduwbestand.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: noodsituatie: het tcb-schaduwbestand van %s is geen gewoon bestand met " -"st_nlink=1.\n" -"Het account is vergrendeld gebleven.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: kan bestand %s niet openen: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Waarschuwing: onbekende groep %s\n" @@ -288,6 +64,13 @@ msgstr "Kan eigenaar of modus van tty stdin niet veranderen: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: ontgrendelen van %s is mislukt\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"In %s staan meerdere regels met als naam '%s'. Gelieve dit met pwck of grpck " +"te repareren.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -295,8 +78,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Omgeving wordt te groot\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "niet door libcrypt ondersteunde encryptiemethode? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -415,8 +199,16 @@ msgstr "" "%s: kan geen uniek UID verkrijgen (er zijn geen UID's meer beschikbaar)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "%s: Onvoldoende argumenten om %u-toewijzingen te vormen\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "configuratiefout - kan waarde %s niet ontleden: '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Kon geen ruimte toewijzen voor de configuratie-info.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"configuratiefout - onbekend item '%s' (waarschuw een systeembeheerder)\n" #, c-format msgid "%s: Memory allocation failure\n" @@ -443,8 +235,8 @@ msgid "%s: Could not set caps\n" msgstr "%s: Kon hoofdletters niet instellen\n" #, c-format -msgid "%s: snprintf failed!\n" -msgstr "%s: snprintf is mislukt!\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: stpeprintf is mislukt!\n" #, c-format msgid "%s: open of %s failed: %s\n" @@ -454,9 +246,21 @@ msgstr "%s: openen van %s mislukte: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: schrijven naar %s mislukte: %s\n" +#, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: sluiten van %s mislukte: %s\n" + msgid "Too many logins.\n" msgstr "Te veel aanmeldingen.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s gebruikersnaam: " + msgid "You have new mail." msgstr "U heeft nieuwe e-mail ontvangen." @@ -466,6 +270,14 @@ msgstr "Geen e-mail." msgid "You have mail." msgstr "U heeft e-mail." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd werd niet normaal beëindigd (signaal %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd sloot af met status %d\n" + msgid "no change" msgstr "geen veranderingen" @@ -478,126 +290,316 @@ msgstr "enkel veranderingen van grote naar kleine letters (of omgekeerd)" msgid "too similar" msgstr "te gelijkaardig" -msgid "too simple" -msgstr "te simpel" +msgid "rotated" +msgstr "geroteerd" + +msgid "too short" +msgstr "te kort" + +#, c-format +msgid "Bad password: %s. " +msgstr "Slecht wachtwoord: %s. " + +#, c-format +msgid "passwd: pam_start() failed, error %d\n" +msgstr "passwd: pam_start() is mislukt, fout %d\n" + +#, c-format +msgid "passwd: %s\n" +msgstr "passwd: %s\n" + +msgid "passwd: password unchanged\n" +msgstr "passwd: wachtwoord is niet veranderd\n" + +msgid "passwd: password updated successfully\n" +msgstr "passwd: wachtwoord is met succes aangepast\n" + +#, c-format +msgid "%s: PAM modules requesting echoing are not supported.\n" +msgstr "%s: PAM-modules die om echo vragen, worden niet ondersteund.\n" + +#, c-format +msgid "%s: conversation type %d not supported.\n" +msgstr "%s: conversatie van het type %d wordt niet ondersteund.\n" + +#, c-format +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: (gebruiker %s) pam_start-fout %d\n" + +#, c-format +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "" +"%s: (gebruiker %s) pam_chauthtok() is mislukt, fout:\n" +"%s\n" + +msgid "Password: " +msgstr "Wachtwoord: " + +#, c-format +msgid "%s's Password: " +msgstr "Wachtwoord van %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Onjuist wachtwoord voor %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: meerdere --root-opties\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: optie '%s' vereist een argument\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: afgeven van rechten is mislukt (%s)\n" + +#, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "" +"%s: ongeldig chroot-pad '%s', enkel absolute paden worden ondersteund.\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: krijg geen toegang tot chroot-map %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: chroot naar map %s lukt niet: %s\n" + +#, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: kan chdir in chroot-map %s niet uitvoeren: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Ongeldige ENCRYPT_METHOD-waarde: '%s'.\n" +"Terugvallen op standaard DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" +"Kan geen salt genereren met instelling \"%s\", controleer uw instellingen in " +"ENCRYPT_METHOD en de bijbehorende configuratie voor uw geselecteerde hash-" +"methode.\n" + +msgid "Cannot open audit interface.\n" +msgstr "Kan auditinterface niet openen.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" +"%s: kan context van vorige SELinux-proces niet verkrijgen: %s\n" +"\n" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Kan geen instrument voor SELinux-beheer creëren\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux-beleid wordt niet beheerd\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Kan het gebied met het SELinux-beleid niet lezen\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Kan geen verbinding leggen om SELinux te beheren\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Kan de SELinux-transactie niet beginnen\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Kon de seuser van %s niet opvragen\n" + +#, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Kon de serange voor %s niet instellen op %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Kon de sename van %s niet instellen\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Kon de aanmeldkoppeling van %s niet veranderen\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Kan voor %s geen SELinux-aanmeldkoppeling maken\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Kon voor %s geen naam instellen\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Kon voor %s geen SELinuxgebruiker instellen\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Kon voor %s geen aanmeldkoppeling toevoegen\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Kan SELinuxbeheer niet initialiseren\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Kan de gebruikerssleutel voor SELinux niet aanmaken\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Kan de SELinuxgebruiker niet verifiëren\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Kon de gebruikerskoppeling in SELinux niet veranderen\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Kan in SELinux geen gebruikerskoppeling toevoegen\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Kan de SELinux-transactie niet vastleggen\n" -msgid "rotated" -msgstr "geroteerd" +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Geen aanmeldkoppeling gedefinieerd voor %s. OK als de standaardkoppeling " +"gebruikt werd\n" -msgid "too short" -msgstr "te kort" +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"Aanmeldkoppeling van %s werd in het beleid gedefinieerd en kan niet gewist " +"worden\n" #, c-format -msgid "Bad password: %s. " -msgstr "Slecht wachtwoord: %s. " +msgid "Could not delete login mapping for %s" +msgstr "Kon de aanmeldkoppeling van %s niet wissen" #, c-format -msgid "passwd: pam_start() failed, error %d\n" -msgstr "passwd: pam_start() is mislukt, fout %d\n" +msgid "Unable to cd to '%s'\n" +msgstr "Kan niet van map veranderen (cd) naar '%s'\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Geen thuismap, er wordt aangemeld met HOME=/" #, c-format -msgid "passwd: %s\n" -msgstr "passwd: %s\n" +msgid "Cannot execute %s" +msgstr "Kan %s niet uitvoeren" -msgid "passwd: password unchanged\n" -msgstr "passwd: wachtwoord is niet veranderd\n" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "Maximale diepte van het subsysteem bereikt\n" -msgid "passwd: password updated successfully\n" -msgstr "passwd: wachtwoord is met succes aangepast\n" +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Ongeldige hoofdmap '%s'\n" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" -msgstr "%s: PAM-modules die om echo vragen, worden niet ondersteund.\n" +msgid "Can't change root directory to '%s'\n" +msgstr "Kan de hoofdmap niet veranderen naar '%s'\n" #, c-format -msgid "%s: conversation type %d not supported.\n" -msgstr "%s: conversatie van het type %d wordt niet ondersteund.\n" +msgid "%s: out of memory\n" +msgstr "%s: onvoldoende geheugen\n" #, c-format -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: (gebruiker %s) pam_start-fout %d\n" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: kan de status niet opvragen van %s: %s\n" #, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "" -"%s: (gebruiker %s) pam_chauthtok() is mislukt, fout:\n" -"%s\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s is geen map en ook geen symbolische koppeling.\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Onjuist wachtwoord voor %s.\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: kan symbolische koppeling %s niet lezen: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: meerdere --root-opties\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: verdacht lange symbolische koppeling: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: optie '%s' vereist een argument\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: kan map %s niet aanmaken: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: afgeven van rechten is mislukt (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: kan eigenaar van %s niet wijzigen: %s\n" #, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "" -"%s: ongeldig chroot-pad '%s', enkel absolute paden worden ondersteund.\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: kan modus van %s niet wijzigen: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: krijg geen toegang tot chroot-map %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: ontkoppelen: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: kan chdir naar chroot-map %s niet uitvoeren: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: kan map %s niet verwijderen: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: chroot naar map %s lukt niet: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: kan %s niet hernoemen naar %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "Kan geen willekeurige bytes verkrijgen.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: kan %s niet verwijderen: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Ongeldige ENCRYPT_METHOD-waarde: '%s'.\n" -"Terugvallen op standaard DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: kan symbolische koppeling %s niet aanmaken: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" -"Kan geen salt genereren met instelling \"%s\", controleer uw instellingen in " -"ENCRYPT_METHOD en de bijbehorende configuratie voor uw geselecteerde hash-" -"methode.\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: kan eigenaars van %s niet wijzigen: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Kan niet van map veranderen (cd) naar '%s'\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: kan status van symbolische koppeling %s niet opvragen: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Geen thuismap, er wordt aangemeld met HOME=/" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: waarschuwing: gebruiker %s heeft geen tcb-schaduwbestand.\n" #, c-format -msgid "Cannot execute %s" -msgstr "Kan %s niet uitvoeren" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: noodsituatie: het tcb-schaduwbestand van %s is geen gewoon bestand met " +"st_nlink=1.\n" +"Het account is vergrendeld gebleven.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Ongeldige hoofdmap '%s'\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Kan de hoofdmap niet veranderen naar '%s'\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: kan bestand %s niet openen: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -671,6 +673,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_MAP basismap voor chroot\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -P, --prefix PREFIX_MAP map-prefix\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -698,12 +703,15 @@ msgstr "Wachtwoord niet actief" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Vervaldatum van account (JJJJ-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Laatste wachtwoordverandering\t\t\t\t: " - msgid "never" msgstr "nooit" +msgid "future" +msgstr "toekomst" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Laatste wachtwoordverandering\t\t\t\t: " + msgid "password must be changed" msgstr "wachtwoord moet veranderd worden" @@ -882,14 +890,6 @@ msgstr "%s: '%s' bevat ongeldige tekens\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: gebruiker '%s' bestaat niet\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: kan gebruiker '%s' niet veranderen op NIS-client.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' is de NIS-master voor deze client.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "De gebruikersinformatie over %s wordt veranderd\n" @@ -926,6 +926,10 @@ msgstr "" " -s, --sha-rounds aantal rondes voor de SHA, BCRYPT\n" " of YESCRYPT encryptie-algoritmes\n" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "%s: geen encryptiemethode gedefinieerd\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: vlag %s is enkel toegelaten in combinatie met vlag %s\n" @@ -979,6 +983,14 @@ msgstr "" msgid "Login Shell" msgstr "Login-shell" +#, c-format +msgid "Cannot parse shell files: %s" +msgstr "Kan shell-bestanden niet ontleden: %s" + +#, c-format +msgid "Cannot evaluate entries in shell files: %s" +msgstr "Kan items in shell-bestanden niet evalueren: %s" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "U mag de shell voor '%s' niet aanpassen.\n" @@ -991,6 +1003,10 @@ msgstr "De login-shell voor %s wordt aangepast\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: ongeldig element: %s\n" +#, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: Waarschuwing: %s is geen geldige shell\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s is geen geldige shell\n" @@ -1237,9 +1253,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system een systeem-account aanmaken\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -P, --prefix PREFIX_MAP map-prefix\n" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" " -U, --users GEBRUIKERS lijst van leden-gebruikers van deze groep\n" @@ -1252,6 +1265,10 @@ msgstr "Ongeldige lid-gebruikersnaam %s\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' is geen geldige groepsnaam\n" +#, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: kan %s niet openen: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: ongeldige groeps-ID '%s'\n" @@ -1297,14 +1314,6 @@ msgstr "%s: kan de primaire groep van gebruiker '%s' niet verwijderen\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: groep '%s' bestaat niet\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: groep '%s' is een NIS-groep\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s is de NIS-master\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: gebruiker '%s' is reeds lid van '%s'\n" @@ -1396,10 +1405,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: ongeldige groepsnaam '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: groep %s is een NIS-groep\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: onbekende gebruiker %s\n" @@ -1528,7 +1533,7 @@ msgstr "" " -b, --before DAGEN enkel lastlog-items ouder dan DAGEN tonen\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear lastlog-informatie over een gebruiker\n" @@ -1632,11 +1637,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Kan mogelijk niet functioneren zonder effectieve root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Er is geen utmp-item. U dient \"login\" uit te voeren vanaf het laagste " -"niveau \"sh\"" - #, c-format msgid "" "\n" @@ -1670,14 +1670,6 @@ msgstr "Gebruikersnaam is onjuist" msgid "Cannot find user (%s)\n" msgstr "Kan gebruiker (%s) niet vinden\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s gebruikersnaam: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: nieuw proces beginnen is mislukt: %s" @@ -1714,9 +1706,10 @@ msgstr "%s: gid-bereik [%lu-%lu) -> [%lu-%lu) niet toegestaan\n" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" -"gebruik: %s [ " +"gebruik: %s [] [ " " ] ... \n" #, c-format @@ -1740,20 +1733,16 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: setgroups-beleid %s mislukte: %s\n" #, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: Kon proc-map voor doel %u niet openen\n" - -#, c-format -msgid "%s: Could not stat directory for target %u\n" -msgstr "%s: Kon status van map voor doel %u niet opvragen\n" +msgid "%s: Could not stat directory for process\n" +msgstr "%s: Kon status van map voor proces niet opvragen\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" -"%s: Doel %u is van een andere gebruiker: uid:%lu pw_uid:%lu st_uid:%lu, gid:" -"%lu pw_gid:%lu st_gid:%lu\n" +"%s: Doelproces is van een andere gebruiker: uid:%lu pw_uid:%lu st_uid:%lu, " +"gid:%lu pw_gid:%lu st_gid:%lu\n" msgid "Usage: newgrp [-] [group]\n" msgstr "Gebruik: newgrp [-] [groep]\n" @@ -1787,18 +1776,15 @@ msgstr "%s: uid-bereik [%lu-%lu) -> [%lu-%lu) niet toegestaan\n" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -"gebruik: %s [ " +"gebruik: %s [|fd:] [ " " ] ... \n" #, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" -"%s: Doelproces %u is van een andere gebruiker: uid:%lu pw_uid:%lu st_uid:" -"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Kon status van map voor doelproces niet opvragen\n" msgid " -b, --badname allow bad names\n" msgstr " -b, --badname slechte namen toestaan\n" @@ -1818,6 +1804,10 @@ msgstr "%s: ongeldig gebruikers-ID '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: ongeldige gebruikersnaam '%s': gebruik --badname om te negeren\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "%s: Geef '--crypt-method' op vóór het aantal rondes\n" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: regel %d: ongeldige regel\n" @@ -1840,6 +1830,10 @@ msgstr "%s: regel %d: kan de groep niet aanmaken\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: regel %d: gebruiker '%s' bestaat niet in %s\n" +#, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: regel: %d: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: regel %d: kan wachtwoord niet bijwerken\n" @@ -1860,14 +1854,14 @@ msgstr "%s: regel %d: chown %s is mislukt: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: regel %d: kan element niet bijwerken\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: voorbereiden van het nieuwe %s-element is mislukt\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: kan ondergeschikt gebruikersbereik niet vinden\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: voorbereiden van het nieuwe %s-element is mislukt\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: kan ondergeschikt groepsbereik niet vinden\n" @@ -1948,6 +1942,9 @@ msgstr "" "wachtwoordwijziging\n" " instellen op MAX_DAGEN\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -s, --stdin nieuw token lezen van stdin\n" + msgid "Old password: " msgstr "Oud wachtwoord: " @@ -1967,6 +1964,9 @@ msgstr "" "Voer het nieuwe wachtwoord in (minimaal %d en maximaal %d tekens)\n" "Gebruik een combinatie van grote en kleine letters en cijfers.\n" +msgid "Password is too long.\n" +msgstr "Wachtwoord is te lang.\n" + msgid "New password: " msgstr "Nieuw wachtwoord: " @@ -2012,6 +2012,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: depot %s wordt niet ondersteund\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: enkel de systeembeheerder kan de optie --stdin/-s gebruiken\n" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -2165,11 +2169,9 @@ msgstr "%s: signaal werkt slecht\n" msgid "Session terminated, terminating shell..." msgstr "Sessie beëindigd, shell wordt afgesloten..." -#, c-format msgid " ...killed.\n" msgstr " ...gedood.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...wachten op het beëindigen van kind-proces.\n" @@ -2243,6 +2245,10 @@ msgstr "%s: U bent niet gerechtigd om op dat tijdstip 'su' uit te voeren\n" msgid "No passwd entry for user '%s'\n" msgstr "Geen wachtwoordregel voor gebruiker '%s'\n" +#, c-format +msgid "Overlong user name '%s'\n" +msgstr "Te lange gebruikersnaam '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: dient uitgevoerd te worden vanaf een terminal\n" @@ -2288,6 +2294,14 @@ msgstr "%s: %s was aangemaakt, maar kon niet verwijderd worden\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: de %s-instellingen in %s zullen genegeerd worden\n" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" +"%s: de configuratie van '%s' in %s heeft een ongeldige groep, deze groep " +"wordt genegeerd\n" + #, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken: %s\n" @@ -2296,10 +2310,6 @@ msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken: %s\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: kan geen map aanmaken voor bestand met standaardwaarden\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: kan het nieuwe bestand met standaardwaarden niet openen\n" @@ -2316,10 +2326,6 @@ msgstr "%s: kan back-upbestand (%s) niet aanmaken: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: hernoemen: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: groep '%s' is een NIS-groep.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: te veel groepen gespecificeerd (max %d).\n" @@ -2388,6 +2394,8 @@ msgid "" " -F, --add-subids-for-system add entries to sub[ud]id even when adding a " "system user\n" msgstr "" +" -F, --add-subids-for-system items toevoegen aan sub[ud]id, zelfs bij het " +"toevoegen van een systeemgebruiker\n" msgid "" " -g, --gid GROUP name or ID of the primary group of the new\n" @@ -2467,6 +2475,13 @@ msgstr "" " -Z, --selinux-user SEUSER een specifieke SEUSER gebruiken om de\n" " gebruikerskoppeling voor SELinux te maken\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" --selinux-range SERANGE een specifiek MLS-bereik gebruiken om de\n" +" gebruikerskoppeling voor SELinux te maken\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: ongeldige basismap '%s'\n" @@ -2599,6 +2614,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Bestandsrechten van postvak-bestand worden ingesteld" +msgid "Synchronize mailbox file" +msgstr "Postvak-bestand synchroniseren" + +msgid "Closing mailbox file" +msgstr "Postvak-bestand wordt gesloten" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "%s waarschuwing: %s zijn/haar uid %d is groter dan SYS_UID_MAX %d.\n" @@ -2729,10 +2750,6 @@ msgstr "%s: kan de inhoud van %s niet verwijderen: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: kan de tcb-bestanden voor %s niet verwijderen: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: gebruiker %s is een NIS-gebruiker\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s persoonlijke map (%s) niet gevonden\n" @@ -2863,6 +2880,12 @@ msgstr "" " -Z, --selinux-user SEUSER nieuwe koppeling met SELinux-gebruiker voor\n" " het gebruikersaccount\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" --selinux-range SERANGE nieuw SELinux MLS-bereik voor\n" +" het gebruikersaccount\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2944,16 +2967,13 @@ msgstr "" msgid "%s: cannot rename directory %s to %s\n" msgstr "%s: kan map %s niet hernoemen naar %s\n" -#, fuzzy, c-format -#| msgid "" -#| "%s: The previous home directory (%s) was not a directory. It is not " -#| "removed and no home directories are created.\n" +#, c-format msgid "" "%s: The previous home directory (%s) does not exist or is inaccessible. Move " "cannot be completed.\n" msgstr "" -"%s: De vroegere persoonlijke map (%s) was geen map. Ze werd niet verwijderd " -"en er werden geen persoonlijke mappen aangemaakt.\n" +"%s: De vroegere persoonlijke map (%s) bestaat niet of is ontoegankelijk. Het " +"verplaatsen kan niet worden voltooid.\n" #, c-format msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" @@ -2961,12 +2981,24 @@ msgstr "" "%s: kopiëren van het lastlog-item van gebruiker %lu naar gebruiker %lu is " "mislukt: %s\n" +#, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: kopiëren van het lastlog-item van gebruiker %ju naar gebruiker %ju is " +"mislukt: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: kopiëren van het faillog-item van gebruiker %lu naar gebruiker %lu is " "mislukt: %s\n" +#, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: kopiëren van het faillog-item van gebruiker %ju naar gebruiker %ju is " +"mislukt: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: waarschuwing: %s is niet van %s\n" @@ -3068,8 +3100,8 @@ msgstr "ontkoppelen van initieel bestand is mislukt" msgid "failed to stat edited file" msgstr "opvragen van status van bewerkt bestand is mislukt" -msgid "failed to allocate memory" -msgstr "geheugen toekennen is mislukt" +msgid "asprintf(3) failed" +msgstr "asprintf(3) is mislukt" msgid "failed to create backup file" msgstr "maken van reservekopie is mislukt" @@ -3081,3 +3113,38 @@ msgstr "%s: kan %s niet herstellen: %s (uw aanpassingen staan in %s)\n" #, c-format msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: tcb-map van %s vinden is mislukt\n" + +#~ msgid "Environment overflow\n" +#~ msgstr "Omgeving wordt te groot\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: kan gebruiker '%s' niet veranderen op NIS-client.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' is de NIS-master voor deze client.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: groep '%s' is een NIS-groep\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s is de NIS-master\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: groep %s is een NIS-groep\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: groep '%s' is een NIS-groep.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: gebruiker %s is een NIS-gebruiker\n" diff --git a/po/nn.gmo b/po/nn.gmo index 6d78b83..5497764 100644 Binary files a/po/nn.gmo and b/po/nn.gmo differ diff --git a/po/nn.po b/po/nn.po index 645b551..01f7734 100644 --- a/po/nn.po +++ b/po/nn.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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2004-06-03 21:41+0200\n" "Last-Translator: Håvard Korsvoll \n" "Language-Team: Norwegian (Nynorsk) \n" @@ -17,220 +17,6 @@ msgstr "" "X-Generator: KBabel 1.3.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Klarte ikkje finna plass for oppsettsinformasjon.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "oppsettsfeil - ukjent element «%s» (gje melding til administrator)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Passord: " - -#, c-format -msgid "%s's Password: " -msgstr "%s sitt passord: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Klarer ikkje opna passordfila.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Klarte ikkje finna plass for oppsettsinformasjon.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Endrar aldringsformasjonen for %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Klarer ikkje avgjere brukarnamnet ditt.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: linje %d: klarer ikkje finne brukar %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: tomt for minne\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: klarer ikkje oppdatere fila %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: ugyldig heimemappe «%s»\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: kan ikkje oppretta mappa %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: åtvaring: kan ikkje fjerna " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: åtvaring: kan ikkje fjerna " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: gje nytt namn: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: åtvaring: kan ikkje fjerna " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: kan ikkje oppretta mappa %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: åtvaring: kan ikkje fjerna " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: klarer ikkje oppdatere fila %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: klarer ikkje oppdatere skuggepassordfil\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: gje nytt namn: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: klarer ikkje opna fila %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Åtvaring: ukjent gruppe %s\n" @@ -277,6 +63,11 @@ msgstr "Klarer ikkje skifta tty %s" msgid "%s: failed to unlock %s\n" msgstr "%s: felta er for lange\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "passwd: %s\n" @@ -284,8 +75,9 @@ msgstr "passwd: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Miljø overflyt\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -380,9 +172,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: klarer ikkje få unikt gid\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "Klarte ikkje finna plass for oppsettsinformasjon.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "oppsettsfeil - ukjent element «%s» (gje melding til administrator)\n" + #, fuzzy, c-format msgid "%s: Memory allocation failure\n" msgstr "%s: PAM-autentisering feila\n" @@ -409,7 +208,7 @@ msgstr "Klarte ikkje finna plass for oppsettsinformasjon.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: klarer ikkje opna fil\n" #, fuzzy, c-format @@ -420,9 +219,21 @@ msgstr "%s: linje %d: chown feila\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linje %d: chown feila\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linje %d: chown feila\n" + msgid "Too many logins.\n" msgstr "For mange innloggingar.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s brukarnamn: " + msgid "You have new mail." msgstr "Du har ny e-post." @@ -432,6 +243,14 @@ msgstr "Ingen e-post." msgid "You have mail." msgstr "Du har e-post." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + #, fuzzy msgid "no change" msgstr "%s: ingen endringar\n" @@ -445,9 +264,6 @@ msgstr "" msgid "too similar" msgstr "" -msgid "too simple" -msgstr "" - msgid "rotated" msgstr "" @@ -466,101 +282,287 @@ msgstr "passwd: pam_start() feila, feil %d\n" msgid "passwd: %s\n" msgstr "passwd: %s\n" -#, fuzzy -msgid "passwd: password unchanged\n" -msgstr "Passord er endra." +#, fuzzy +msgid "passwd: password unchanged\n" +msgstr "Passord er endra." + +msgid "passwd: password updated successfully\n" +msgstr "" + +#, c-format +msgid "%s: PAM modules requesting echoing are not supported.\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "%s: repository %s not supported\n" +msgid "%s: conversation type %d not supported.\n" +msgstr "%s: arkiv %s er ikkje støtta\n" + +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: feil %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() feila, feil %d\n" + +msgid "Password: " +msgstr "Passord: " + +#, c-format +msgid "%s's Password: " +msgstr "%s sitt passord: " + +#, fuzzy, c-format +msgid "Incorrect password for %s.\n" +msgstr "Feil passord for «%s»\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: ugyldig telefonnummer, heime: «%s»\n" + +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Klarer ikkje opna passordfila.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Klarte ikkje finna plass for oppsettsinformasjon.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Klarte ikkje finna plass for oppsettsinformasjon.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Endrar aldringsformasjonen for %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Klarer ikkje avgjere brukarnamnet ditt.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: linje %d: klarer ikkje finne brukar %s\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "" + +#, fuzzy, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Klarer ikkje cd til «%s»\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Inga mappe, loggar inn med HOME=/" -msgid "passwd: password updated successfully\n" -msgstr "" +#, c-format +msgid "Cannot execute %s" +msgstr "Klarer ikkje køyra %s" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" +msgid "Maximum subsystem depth reached\n" msgstr "" #, fuzzy, c-format -#| msgid "%s: repository %s not supported\n" -msgid "%s: conversation type %d not supported.\n" -msgstr "%s: arkiv %s er ikkje støtta\n" +msgid "Invalid root directory '%s'\n" +msgstr "Ugyldig rotmappe «%s»\n" #, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: feil %d\n" +msgid "Can't change root directory to '%s'\n" +msgstr "Klarer ikkje endra rotmappe til «%s»\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: tomt for minne\n" #, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() feila, feil %d\n" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: klarer ikkje oppdatere fila %s\n" #, fuzzy, c-format -msgid "Incorrect password for %s.\n" -msgstr "Feil passord for «%s»\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: ugyldig heimemappe «%s»\n" -#, c-format -msgid "%s: multiple --root options\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" +msgid "%s: Suspiciously long symlink: %s\n" msgstr "" -#, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" #, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: ugyldig telefonnummer, heime: «%s»\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: åtvaring: kan ikkje fjerna " #, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: kan ikkje oppretta mappa %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: åtvaring: kan ikkje fjerna " #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: kan ikkje oppretta mappa %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: gje nytt namn: %s" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: kan ikkje oppretta mappa %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" -#, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: åtvaring: kan ikkje fjerna " -#, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" #, fuzzy, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Klarer ikkje cd til «%s»\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: åtvaring: kan ikkje fjerna " -msgid "No directory, logging in with HOME=/" -msgstr "Inga mappe, loggar inn med HOME=/" +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: klarer ikkje oppdatere fila %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: klarer ikkje oppdatere skuggepassordfil\n" #, c-format -msgid "Cannot execute %s" -msgstr "Klarer ikkje køyra %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" #, fuzzy, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Ugyldig rotmappe «%s»\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: gje nytt namn: %s" #, fuzzy, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Klarer ikkje endra rotmappe til «%s»\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: klarer ikkje opna fila %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -622,6 +624,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -647,14 +652,17 @@ msgstr "Passord inaktivt" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Dato for når kontoen utgår (ÅÅÅÅ-MM-DD)" -#, fuzzy -msgid "Last password change\t\t\t\t\t: " -msgstr "Førre passordendring (ÅÅÅÅ-MM-DD)" - #, fuzzy msgid "never" msgstr "Aldri" +msgid "future" +msgstr "" + +#, fuzzy +msgid "Last password change\t\t\t\t\t: " +msgstr "Førre passordendring (ÅÅÅÅ-MM-DD)" + msgid "password must be changed" msgstr "Passord er endra" @@ -825,14 +833,6 @@ msgstr "%s: «%s» inneheld ulovlege teikn\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: brukar %s finst ikkje\n" -#, fuzzy, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: klarer ikkje endra brukar «%s» på NIS-klient.\n" - -#, fuzzy, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» er NIS-hovud for denne klienten.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Endrar brukarinformasjon for %s\n" @@ -861,6 +861,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: ta ikkje med «l» med andre flagg\n" @@ -911,6 +915,15 @@ msgstr "" msgid "Login Shell" msgstr "Innloggingskal" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Du treng ikkje endra skal for %s.\n" @@ -923,6 +936,10 @@ msgstr "Endra innloggingskal for %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Ugyldig inntasting: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s er eit ugyldig skal.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s er eit ugyldig skal.\n" @@ -1133,9 +1150,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1148,6 +1162,10 @@ msgstr "ugyldig brukarnamn «%s»\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s er ikkje eit gyldig gruppenamn\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: klarer ikkje opna fila %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "ugyldig gruppenamn «%s»\n" @@ -1190,14 +1208,6 @@ msgstr "%s: klarer ikkje endra brukar «%s» på NIS-klient.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: gruppe %s eksisterer ikkje\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: gruppe «%s» er ei NIS-gruppe.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s er NIS-hovudet\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: brukar %s er ikkje ein NIS brukar\n" @@ -1273,10 +1283,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "ugyldig gruppenamn «%s»\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: gruppe %s er ei NIS-gruppe\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: ukjend brukar %s\n" @@ -1391,7 +1397,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1485,9 +1491,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" - #, fuzzy, c-format msgid "" "\n" @@ -1526,14 +1529,6 @@ msgstr "Feil innlogging" msgid "Cannot find user (%s)\n" msgstr "%s: linje %d: klarer ikkje finne brukar %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s brukarnamn: " - #, c-format msgid "%s: failure forking: %s" msgstr "" @@ -1568,7 +1563,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1593,17 +1589,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: felta er for lange\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: ugyldig startmappe «%s»\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: kan ikkje oppretta mappa %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1637,14 +1629,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1665,6 +1656,10 @@ msgstr "%s: ugyldig brukarnamn «%s»\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: ugyldig brukarnamn «%s»\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linje %d: ugyldig linje\n" @@ -1685,6 +1680,10 @@ msgstr "%s: linje %d: klarer ikkje laga GID\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: brukar %s finst ikkje\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: gje nytt namn: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linje %d: klarer ikkje oppdatere passord\n" @@ -1705,14 +1704,14 @@ msgstr "%s: linje %d: chown feila\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: linje %d: kan ikkje oppdatere oppføring\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: linje %d: kan ikkje oppdatere oppføring\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: kan ikkje oppretta %s\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: linje %d: kan ikkje oppdatere oppføring\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: klarer ikkje oppdatere gruppefil\n" @@ -1771,6 +1770,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Gamalt passord:" @@ -1790,6 +1792,11 @@ msgstr "" "Skriv inn det nye passordet (minimum %d, maksimum %d teikn)\n" "Bruk ein kombinasjon av store og små bokstavar og tal.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: felta er for lange\n" + msgid "New password: " msgstr "Nytt passord: " @@ -1830,6 +1837,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: arkiv %s er ikkje støtta\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1973,11 +1984,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2038,6 +2047,11 @@ msgstr "Du er ikkje autorisert til su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Inga passordoppføring for «root»" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ugyldig brukarnamn «%s»\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: må køyrast frå ein terminal\n" @@ -2083,6 +2097,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2093,10 +2113,6 @@ msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: klarer ikkje opna fil for standardverdiar\n" @@ -2113,10 +2129,6 @@ msgstr "%s: kan ikkje oppretta mappa %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: gje nytt namn: %s" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: gruppe «%s» er ei NIS-gruppe.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: for mange grupper spesifisert (maks %d).\n" @@ -2226,6 +2238,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: ugyldig startmappe «%s»\n" @@ -2355,6 +2372,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +msgid "Synchronize mailbox file" +msgstr "" + +msgid "Closing mailbox file" +msgstr "" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2469,10 +2492,6 @@ msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: klarte ikkje endra namn på mappa %s til %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: brukar %s er ikkje ein NIS brukar\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: ugyldig heimemappe «%s»\n" @@ -2572,6 +2591,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2654,10 +2677,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: klarer ikkje oppdatere passordfil\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: åtvaring: %s er ikkje eigd av %s\n" @@ -2762,8 +2793,9 @@ msgid "failed to stat edited file" msgstr "klarte ikkje endra namn på mailbox" #, fuzzy -msgid "failed to allocate memory" -msgstr "klarte ikke å endra eigar av mailbox" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: klarer ikkje opna fil\n" #, fuzzy msgid "failed to create backup file" @@ -2777,6 +2809,49 @@ msgstr "%s: klarer ikkje gjenoppretta %s: %s (endringane dine er i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: ugyldig startmappe «%s»\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Miljø overflyt\n" + +#, fuzzy, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: klarer ikkje endra brukar «%s» på NIS-klient.\n" + +#, fuzzy, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» er NIS-hovud for denne klienten.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: gruppe «%s» er ei NIS-gruppe.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s er NIS-hovudet\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: gruppe %s er ei NIS-gruppe\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: gruppe «%s» er ei NIS-gruppe.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: brukar %s er ikkje ein NIS brukar\n" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: ugyldig startmappe «%s»\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "klarte ikke å endra eigar av mailbox" + #~ msgid "Usage: id\n" #~ msgstr "Bruk: id\n" @@ -2792,10 +2867,6 @@ msgstr "%s: ugyldig startmappe «%s»\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Åtvaring for utgått passord" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ugyldig brukarnamn «%s»\n" - #~ msgid "Username Port From Latest" #~ msgstr "Brukarnamn Port Frå Siste" diff --git a/po/pl.gmo b/po/pl.gmo index 7f40c58..3736da7 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 229ea86..35e562f 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2007-11-25 20:53+0100\n" "Last-Translator: Tomasz Kłoczko \n" "Language-Team: Polish \n" @@ -19,221 +19,6 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Nie można przydzielić miejsca dla informacji o konfiguracji.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"błąd w konfiguracji - nieznana pozycja '%s' (powiadom administratora)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Hasło: " - -#, c-format -msgid "%s's Password: " -msgstr "Hasło użytkownika %s: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Nie można otworzyć pliku z hasłami.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Nie można przydzielić miejsca dla informacji o konfiguracji.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Zmieniam informację o użytkowniku %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Nie można ustalić twojej nazwy użytkownika.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: linia %d: nie można znaleźć użytkownika %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: brak pamięci\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: nie można zaktualizować pliku %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: nieprawidłowy katalog domowy '%s'\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: nie można utworzyć katalogu %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: ostrzeżenie: nie można usunąć " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: ostrzeżenie: nie można usunąć " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: zmiana nazwy: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: ostrzeżenie: nie można usunąć " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: nie można utworzyć katalogu %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: ostrzeżenie: nie można usunąć " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: nie można zaktualizować pliku %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: nie można zaktualizować pliku z ukrytymi hasłami\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: zmiana nazwy: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: nie można otworzyć pliku %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Ostrzeżenie: nieznana grupa %s\n" @@ -280,6 +65,11 @@ msgstr "Nie można zmienić tty %s" msgid "%s: failed to unlock %s\n" msgstr "%s: pola zbyt długie\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -287,8 +77,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Przepełnienie środowiska\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -390,8 +181,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: nie można uzyskać niepowtarzalnego UID\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" + +msgid "Could not allocate space for config info.\n" +msgstr "Nie można przydzielić miejsca dla informacji o konfiguracji.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"błąd w konfiguracji - nieznana pozycja '%s' (powiadom administratora)\n" #, fuzzy, c-format msgid "%s: Memory allocation failure\n" @@ -420,7 +219,7 @@ msgstr "Nie można przydzielić miejsca dla informacji o konfiguracji.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: nie można otworzyć pliku\n" #, fuzzy, c-format @@ -431,9 +230,21 @@ msgstr "%s: linia %d: chown nie powiodło się\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linia %d: chown nie powiodło się\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linia %d: chown nie powiodło się\n" + msgid "Too many logins.\n" msgstr "Zbyt wiele otwartych sesji.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "Masz nową pocztę." @@ -443,6 +254,14 @@ msgstr "Nie masz poczty." msgid "You have mail." msgstr "Masz pocztę." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "bez zmian" @@ -455,9 +274,6 @@ msgstr "zmieniona tylko wielkości liter" msgid "too similar" msgstr "zbyt podobne" -msgid "too simple" -msgstr "za proste" - msgid "rotated" msgstr "rotacja" @@ -504,6 +320,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() nie powiodło się, błąd %d\n" +msgid "Password: " +msgstr "Hasło: " + +#, c-format +msgid "%s's Password: " +msgstr "Hasło użytkownika %s: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Nieprawidłowe hasło %s.\n" @@ -529,28 +352,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: nie można utworzyć katalogu %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: nie można utworzyć katalogu %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Nie można otworzyć pliku z hasłami.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Nie można przydzielić miejsca dla informacji o konfiguracji.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Nie można przydzielić miejsca dla informacji o konfiguracji.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Zmieniam informację o użytkowniku %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Nie można ustalić twojej nazwy użytkownika.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: nie można utworzyć katalogu %s\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: linia %d: nie można znaleźć użytkownika %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -564,6 +484,10 @@ msgstr "Brak katalogu, loguję z HOME=/" msgid "Cannot execute %s" msgstr "Nie można uruchomić %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Nieprawidłowy katalog główny '%s'\n" @@ -572,6 +496,84 @@ msgstr "Nieprawidłowy katalog główny '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "Nie można zmienić głównego katalogu na '%s'\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: brak pamięci\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: nie można zaktualizować pliku %s\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: nieprawidłowy katalog domowy '%s'\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: ostrzeżenie: nie można usunąć " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: ostrzeżenie: nie można usunąć " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: zmiana nazwy: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: ostrzeżenie: nie można usunąć " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: ostrzeżenie: nie można usunąć " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: nie można zaktualizować pliku %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: nie można zaktualizować pliku z ukrytymi hasłami\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: zmiana nazwy: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: nie można otworzyć pliku %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: użytkownik %s jest aktualnie zalogowany\n" @@ -631,6 +633,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -656,12 +661,15 @@ msgstr "Hasło nieaktywne" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data utraty ważności konta (RRRR-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Ostatnia zmiana hasła\t\t\t\t\t: " - msgid "never" msgstr "nigdy" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Ostatnia zmiana hasła\t\t\t\t\t: " + msgid "password must be changed" msgstr "Hasło musi zostać zmienione" @@ -829,14 +837,6 @@ msgstr "%s: '%s' zawiera nieprawidłowe znaki\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: użytkownik %s nie istnieje\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: nie można zmienić użytkownika '%s' na kliencie NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' jest nadrzędnym serwerem NIS dla tego klienta.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Zmieniam informację o użytkowniku %s\n" @@ -865,6 +865,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: opcja -a można użyć TYLKO z pcją -G\n" @@ -915,6 +919,15 @@ msgstr "" msgid "Login Shell" msgstr "Powłoka logowania" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Nie możesz zmieniać powłoki dla %s.\n" @@ -927,6 +940,10 @@ msgstr "Zmieniam powłokę logowania dla %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Nieprawidłowy wpis: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s jest nieprawidłową powłoką.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s jest nieprawidłową powłoką.\n" @@ -1137,9 +1154,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1152,6 +1166,10 @@ msgstr "nieprawidłowa nazwa użytkownika '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s: nie jest prawidłową nazwą grupy\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: nie można otworzyć pliku %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "nieprawidłowa nazwa grupy '%s'\n" @@ -1194,14 +1212,6 @@ msgstr "%s: nie można zmienić użytkownika '%s' na kliencie NIS.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: grupa %s nie istnieje\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: grupa '%s' jest grupą NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s jest głównym serwerem NIS\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: użytkownik %s jest użytkownikiem NIS\n" @@ -1277,10 +1287,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "nieprawidłowa nazwa grupy '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: grupa %s jest grupą NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: nieznany użytkownik %s\n" @@ -1397,7 +1403,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1491,10 +1497,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Brak wpisu w utmp. Musisz wykonać \"login\" z najniższego poziomu \"sh\"" - #, fuzzy, c-format msgid "" "\n" @@ -1528,14 +1530,6 @@ msgstr "Nieprawidłowe logowanie" msgid "Cannot find user (%s)\n" msgstr "%s: linia %d: nie można znaleźć użytkownika %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: failure forking: %s" @@ -1572,7 +1566,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1597,17 +1592,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: pola zbyt długie\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: nieprawidłowy katalog bazowy '%s'\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: nie można utworzyć katalogu %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1641,14 +1632,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: nie można utworzyć katalogu %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1669,6 +1659,10 @@ msgstr "%s: nieprawidłowa nazwa użytkownika '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: nieprawidłowa nazwa użytkownika '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linia %d: nieprawidłowa linia\n" @@ -1689,6 +1683,10 @@ msgstr "%s: linia %d: nie można utworzyć GID\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: użytkownik %s nie istnieje\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: zmiana nazwy: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linia %d: nie można zaktualizować pliku z hasłami\n" @@ -1709,14 +1707,14 @@ msgstr "%s: linia %d: chown nie powiodło się\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: linia %d: nie można zaktualizować wpisu\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: niepowiodło się porzucenie uprawnień (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: nie można utworzyć %s\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: niepowiodło się porzucenie uprawnień (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: nie można zaktualizować pliku z grupami\n" @@ -1775,6 +1773,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Stare hasło: " @@ -1794,6 +1795,11 @@ msgstr "" "Wpisz nowe hasło (minimum %d, maksimum %d znaków)\n" "Proszę użyj kombinacji wielkich i małych znaków oraz cyfr.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: pola zbyt długie\n" + msgid "New password: " msgstr "Nowe hasło: " @@ -1834,6 +1840,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: repozytorium %s nie jest obsługiwane\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1977,11 +1987,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2066,6 +2074,11 @@ msgstr "Nie masz autoryzacji by używać su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Brak wpisu do bazy haseł dla 'root'" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nieprawidłowa nazwa użytkownika '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: musisz uruchamiać z terminala\n" @@ -2111,6 +2124,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2121,10 +2140,6 @@ msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nie można otworzyć nowego pliku z ustawieniami domyślnymi\n" @@ -2141,10 +2156,6 @@ msgstr "%s: nie można utworzyć katalogu %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: zmiana nazwy: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: grupa '%s' jest grupą NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: podano zbyt wiele grup (maks %d).\n" @@ -2254,6 +2265,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: nieprawidłowy katalog bazowy '%s'\n" @@ -2385,6 +2401,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Ustawianie praw dostępu do pliku mailbox" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Tworzenie pliku mailbox" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Tworzenie pliku mailbox" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2505,10 +2531,6 @@ msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: nie można zmienić nazwy katalogu z %s na %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: użytkownik %s jest użytkownikiem NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: nieprawidłowy katalog domowy '%s'\n" @@ -2608,6 +2630,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2691,10 +2717,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: nie można zaktualizować pliku z hasłami\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: ostrzeżenie: właścicielem %s nie jest %s\n" @@ -2800,8 +2834,9 @@ msgid "failed to stat edited file" msgstr "zmiana nazwy skrzynki pocztowej nie powiodła się" #, fuzzy -msgid "failed to allocate memory" -msgstr "zmiana właściciela skrzynki pocztowej nie powiodła się" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: nie można otworzyć pliku\n" #, fuzzy msgid "failed to create backup file" @@ -2815,6 +2850,56 @@ msgstr "%s: nie można odzyskać %s: %s (twoje zmiany są w %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: nieprawidłowy katalog bazowy '%s'\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Przepełnienie środowiska\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: nie można zmienić użytkownika '%s' na kliencie NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' jest nadrzędnym serwerem NIS dla tego klienta.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: grupa '%s' jest grupą NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s jest głównym serwerem NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: grupa %s jest grupą NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: grupa '%s' jest grupą NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: użytkownik %s jest użytkownikiem NIS\n" + +#~ msgid "too simple" +#~ msgstr "za proste" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Brak wpisu w utmp. Musisz wykonać \"login\" z najniższego poziomu \"sh\"" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: nieprawidłowy katalog bazowy '%s'\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "zmiana właściciela skrzynki pocztowej nie powiodła się" + #~ msgid "Usage: id\n" #~ msgstr "Użycie: id\n" @@ -2830,10 +2915,6 @@ msgstr "%s: nieprawidłowy katalog bazowy '%s'\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Ostrzeżenie o utracie ważności hasła" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nieprawidłowa nazwa użytkownika '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Użytkownik Port Z Ostatnio" diff --git a/po/pt.gmo b/po/pt.gmo index e8be4c7..8e2f332 100644 Binary files a/po/pt.gmo and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po index 0575d03..84a37df 100644 --- a/po/pt.po +++ b/po/pt.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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2012-01-14 12:41+0000\n" "Last-Translator: Miguel Figueiredo \n" "Language-Team: Portuguese \n" @@ -17,230 +17,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.2\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Existem várias entradas chamadas '%s' em %s. Por favor corrija isto com pwck " -"ou grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "método de encriptação não suportado por libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" -"erro de configuração - não foi possível interpretar o valor de %s: '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Não foi possível alocar o espaço para a informação de configuração.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"erro de configuração - item '%s' desconhecido (notifique o administrador)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscp não terminou normalmente (sinal %d)\n" - -#, fuzzy, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd saiu com o estado %d" - -msgid "Password: " -msgstr "Palavra-passe: " - -#, c-format -msgid "%s's Password: " -msgstr "Palavra-passe de %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Não é possível abrir o interface de auditoria - a abortar.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Não foi possível criar handle de gestão SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "Política SELinux não gerida\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Não foi possível ler armazenamento de políticas SELinux\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Não foi possível establecer ligação de gestão SELinux\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Não foi possível iniciar transacção SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Não foi possível consultar seuser para %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Não pode definir serange para %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Não foi possível definir sename para %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Não foi possível modificar o mapeamento do login para %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Não foi possível criar mapeamento de login SELinux para %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Não foi possível definir nome para %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Não foi possível definir utilizador SELinux para %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Não foi possível acrescentar mapeamento de login para %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Não foi possível inicia a gestão do SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Não pode criar a chave de utilizador SELinux\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Não foi possível verificar o utilizador SELinux\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Não foi possível alterar o mapeamento de utilizador SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Não foi possível acrescentar o mapeamento de utilizador SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Não foi possível o 'commit' à transacção SELinux\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Não está definido o mapeamento de login para %s, OK se foi utilizado o " -"mapeamento predefinido\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"O mapeamento de login para %s é definido na política, não pode ser apagado\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Não foi possível apagar o mapeamento do login para %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: memória esgotada\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: não é possível fazer stat a %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s não é nem um directório, nem um symlink.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: não é possível ler o link simbólico %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: link simbólico longo suspeito: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: não é possível criar o directório %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Não pode alterar o dono de %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Não é possível alterar o modo de %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: unlink: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Não é possível remover o directório %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Não é possível renomear %s para %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Não é possível remover %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Não é possível criar link simbólico %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Não conseguiu alterar os donos de %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Não é possível lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Aviso, o utilizador '%s' não tem ficheiro shadow tcb.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Emergência: o ficheiro shadow tcb de %s não é um ficheiro normal com " -"st_nlink=1.\n" -"A conta é mantida bloqueada.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: não é possível abrir %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Aviso: grupo desconhecido %s\n" @@ -287,6 +63,13 @@ msgstr "Foi impossível mudar o dono ou o modo do tty stdin: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: falha ao desbloquear %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Existem várias entradas chamadas '%s' em %s. Por favor corrija isto com pwck " +"ou grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -294,8 +77,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Overflow do ambiente\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "método de encriptação não suportado por libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -420,8 +204,17 @@ msgstr "" "%s: Não foi possível obter um UID único (não existem mais UIDs disponíveis)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +"erro de configuração - não foi possível interpretar o valor de %s: '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Não foi possível alocar o espaço para a informação de configuração.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"erro de configuração - item '%s' desconhecido (notifique o administrador)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -451,9 +244,10 @@ msgstr "Não foi possível definir nome para %s\n" msgid "%s: Could not set caps\n" msgstr "Não foi possível definir nome para %s\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: linha %d: chown %s falhou: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -465,9 +259,22 @@ msgstr "%s: linha %d: chown %s falhou: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linha %d: chown %s falhou: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linha %d: chown %s falhou: %s\n" + msgid "Too many logins.\n" msgstr "Demasiados logins.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "Tem novo correio." @@ -477,6 +284,14 @@ msgstr "Não tem correio." msgid "You have mail." msgstr "Tem correio." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscp não terminou normalmente (sinal %d)\n" + +#, fuzzy, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd saiu com o estado %d" + msgid "no change" msgstr "sem alterações" @@ -489,9 +304,6 @@ msgstr "apenas alteração de maiúsculas/minúsculas" msgid "too similar" msgstr "demasiado parecido" -msgid "too simple" -msgstr "demasiado simples" - msgid "rotated" msgstr "rodado" @@ -530,83 +342,276 @@ msgstr "%s: o repositório %s não é suportado\n" msgid "%s: (user %s) pam_start failure %d\n" msgstr "%s: pam_start: erro %d\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() falhou, erro %d\n" +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() falhou, erro %d\n" + +msgid "Password: " +msgstr "Palavra-passe: " + +#, c-format +msgid "%s's Password: " +msgstr "Palavra-passe de %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Palavra-passe incorrecta para %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: múltiplas opções --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: opção '%s' necessita de um argumento\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: falhou baixar privilégios (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: caminho de chroot inválido: '%s'\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: não pode aceder ao directório chroot %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: não foi possível fazer chroot para o directório %s: %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: não pode aceder ao directório chroot %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Valor inválido de ENCRYPT_METHOD: '%s'.\n" +"A utilizar o valor predefinido DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Não é possível abrir o interface de auditoria - a abortar.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Não foi possível criar handle de gestão SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "Política SELinux não gerida\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Não foi possível ler armazenamento de políticas SELinux\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Não foi possível establecer ligação de gestão SELinux\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Não foi possível iniciar transacção SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Não foi possível consultar seuser para %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Não pode definir serange para %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Não foi possível definir sename para %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Não foi possível modificar o mapeamento do login para %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Não foi possível criar mapeamento de login SELinux para %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Não foi possível definir nome para %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Não foi possível definir utilizador SELinux para %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Não foi possível acrescentar mapeamento de login para %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Não foi possível inicia a gestão do SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Não pode criar a chave de utilizador SELinux\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Não foi possível verificar o utilizador SELinux\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Não foi possível alterar o mapeamento de utilizador SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Não foi possível acrescentar o mapeamento de utilizador SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Não foi possível o 'commit' à transacção SELinux\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Não está definido o mapeamento de login para %s, OK se foi utilizado o " +"mapeamento predefinido\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"O mapeamento de login para %s é definido na política, não pode ser apagado\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Não foi possível apagar o mapeamento do login para %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Não foi possível mudar para o directório '%s'\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Directório não encontrado, a entrar para HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Não foi possível executar %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Directório raiz inválido '%s'\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Não é possível mudar o directório raiz para '%s'\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: memória esgotada\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: não é possível fazer stat a %s: %s\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Palavra-passe incorrecta para %s.\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s não é nem um directório, nem um symlink.\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: múltiplas opções --root\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: não é possível ler o link simbólico %s: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: opção '%s' necessita de um argumento\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: link simbólico longo suspeito: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: falhou baixar privilégios (%s)\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: não é possível criar o directório %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: caminho de chroot inválido: '%s'\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Não pode alterar o dono de %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: não pode aceder ao directório chroot %s: %s\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Não é possível alterar o modo de %s: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: não pode aceder ao directório chroot %s: %s\n" +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: unlink: %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: não foi possível fazer chroot para o directório %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Não é possível remover o directório %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Não é possível renomear %s para %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Valor inválido de ENCRYPT_METHOD: '%s'.\n" -"A utilizar o valor predefinido DES.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Não é possível remover %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Não é possível criar link simbólico %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Não foi possível mudar para o directório '%s'\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Não conseguiu alterar os donos de %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Directório não encontrado, a entrar para HOME=/" +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Não é possível lstat %s: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "Não foi possível executar %s" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Aviso, o utilizador '%s' não tem ficheiro shadow tcb.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Directório raiz inválido '%s'\n" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Emergência: o ficheiro shadow tcb de %s não é um ficheiro normal com " +"st_nlink=1.\n" +"A conta é mantida bloqueada.\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Não é possível mudar o directório raiz para '%s'\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: não é possível abrir %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -685,6 +690,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_DIR\t\tdirectório para onde fazer chroot\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_DIR\t\tdirectório para onde fazer chroot\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -712,12 +722,15 @@ msgstr "Palavra-passe Inactiva" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data de Caducidade da Conta (AAAA-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Última alteração da palavra-passe\t\t\t\t\t: " - msgid "never" msgstr "nunca" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Última alteração da palavra-passe\t\t\t\t\t: " + msgid "password must be changed" msgstr "a palavra-passe tem de ser alterada" @@ -894,14 +907,6 @@ msgstr "%s: '%s' contém caracteres não permitidos.\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: o utilizador '%s' não existe\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: não é possível alterar o utilizador '%s' no cliente NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' é o mestre NIS para este cliente.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "A alterar a informação de utilizador de %s\n" @@ -943,6 +948,11 @@ msgstr "" " -s, --sha-rounds número de iterações SHA para algoritmos\n" " de encriptação SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: método de encriptação não suportado: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: a flag %s só é permitida com a flag %s\n" @@ -995,6 +1005,17 @@ msgstr "" msgid "Login Shell" msgstr "Shell de Login" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Não conseguiu obter o tamanho de %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "" +"%s: não é possível criar um novo ficheiro de configurações pré-definidas\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Não pode alterar a shell para '%s'.\n" @@ -1007,6 +1028,11 @@ msgstr "A alterar a shell de entrada de %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Entrada inválida: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s é uma shell inválida\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s é uma shell inválida\n" @@ -1248,11 +1274,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system criar uma conta de sistema\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_DIR\t\tdirectório para onde fazer chroot\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1267,6 +1288,11 @@ msgstr "o nome de utilizador '%s' é inválido\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' não é um nome válido para o grupo\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: não é possível abrir %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: ID de grupo '%s' inválido\n" @@ -1310,14 +1336,6 @@ msgstr "%s: não é possível remover o grupo primário do utilizador '%s'\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: o grupo '%s' não existe.\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: o grupo '%s' é um grupo NIS\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s é o mestre NIS\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: o utilizador '%s' já é um membro de '%s'\n" @@ -1417,10 +1435,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: nome de grupo '%s' inválido\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: o grupo %s é um grupo NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: utilizador desconhecido %s\n" @@ -1548,7 +1562,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all mostrar registos do faillog para todos os " @@ -1651,11 +1665,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Não é possível trabalhar sem root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Sem entrada utmp. Tem de executar \"login\" a partir do \"sh\" de nível " -"mais baixo" - #, c-format msgid "" "\n" @@ -1689,14 +1698,6 @@ msgstr "Login incorrecto" msgid "Cannot find user (%s)\n" msgstr "Não pode encontrar utilizador (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: falha ao bifurcar: %s" @@ -1732,7 +1733,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1758,20 +1760,15 @@ msgstr "%s: falhou remover %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: falha ao desbloquear %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: falhou encontrar o directório tcb para %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Falhou a criação do directório tcb para %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1804,14 +1801,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Falhou a criação do directório tcb para %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1834,6 +1831,10 @@ msgstr "%s: ID '%s' de utilizador inválido\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: o nome de utilizador '%s' é inválido\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linha %d: linha inválida\n" @@ -1856,6 +1857,11 @@ msgstr "%s: linha %d: não é possível criar o grupo\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: linha %d: o utilizador '%s' não existe em %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: unlink: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linha %d: não é possível actualizar a palavra-passe\n" @@ -1877,14 +1883,14 @@ msgstr "%s: linha %d: chown %s falhou: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: linha %d: não é possível actualizar o registo\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: falhou a preparação para a nova %s entrada '%s'\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: não é possível criar o utilizador\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: falhou a preparação para a nova %s entrada '%s'\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: não é possível criar grupo\n" @@ -1966,6 +1972,13 @@ msgstr "" " -x, --maxdays MAX_DIAS definir para MAX_DIAS o número de dias\n" " máximo antes de alterar a palavra-passe\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list mostrar informação de envelhecimento da \n" +" conta\n" + msgid "Old password: " msgstr "Palavra-passe antiga: " @@ -1987,6 +2000,11 @@ msgstr "" "Por favor utilize um combinação de letras maiúsculas e minúsculas e de " "números.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: valores demasiado grandes\n" + msgid "New password: " msgstr "Nova palavra-passe: " @@ -2030,6 +2048,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: o repositório %s não é suportado\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: apenas o root pode utilizar a opção -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2184,11 +2207,9 @@ msgstr "%s: mau funcionamento de sinal\n" msgid "Session terminated, terminating shell..." msgstr "Sessão terminada, a terminar shell..." -#, c-format msgid " ...killed.\n" msgstr " ...morto.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...á espera que o processo-filho termine.\n" @@ -2274,6 +2295,11 @@ msgstr "%s: Não está autorizado a fazer su nessa altura\n" msgid "No passwd entry for user '%s'\n" msgstr "Nenhuma palavra-passe para o utilizador '%s'\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "o nome de utilizador '%s' é inválido\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: deve ser executado a partir de um terminal\n" @@ -2319,6 +2345,13 @@ msgstr "%s: foi criado %s, mas não pode ser removido\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: a configuração %s em %s será ignorada\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: a configuração %s em %s será ignorada\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2331,11 +2364,6 @@ msgid "%s: cannot create directory for defaults file\n" msgstr "" "%s: não é possível criar um novo ficheiro de configurações pré-definidas\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "" -"%s: não é possível criar um novo ficheiro de configurações pré-definidas\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "" @@ -2353,10 +2381,6 @@ msgstr "%s: Não é possível criar link simbólico %s: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: renomear: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: o grupo '%s' é um grupo NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: estão especificados demasiados grupos (max %d).\n" @@ -2496,6 +2520,17 @@ msgstr "" " -Z, --selinux-user SEUSER utilizar um SEUSER especifico para o\n" " mapeamento do utilizador de SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER utilizar um SEUSER especifico para o\n" +" mapeamento do utilizador de SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: directório base inválido '%s'\n" @@ -2638,6 +2673,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "A definir as permissões do ficheiro mailbox" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Criar ficheiro mailbox" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Criar ficheiro mailbox" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2772,10 +2817,6 @@ msgstr "%s: Não pode remover o conteúdo de %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: não é possível remover os ficheiros tcb para '%s': %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: o utilizador %s é um utilizador NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: o directório home %s (%s) não foi encontrado\n" @@ -2908,6 +2949,16 @@ msgstr "" " -Z, --selinux-user SEUSER\tnovo mapeamento de utilizador SELinux para a " "conta do utilizador\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER\tnovo mapeamento de utilizador SELinux para a " +"conta do utilizador\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3004,12 +3055,26 @@ msgstr "" "%s: falhou copiar o registo lastlog do utilizador %lu para o utilizador %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: falhou copiar o registo lastlog do utilizador %lu para o utilizador %lu: " +"%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: falhou copiar o registo faillog do utilizador %lu para o utilizador %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: falhou copiar o registo faillog do utilizador %lu para o utilizador %lu: " +"%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: aviso: o %s não pertence a %s\n" @@ -3111,8 +3176,8 @@ msgstr "falhou o unlink a ficheiro 'scratch'" msgid "failed to stat edited file" msgstr "falhou fazer stat ao ficheiro editado" -msgid "failed to allocate memory" -msgstr "falhou alocar memória" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "falhou criar ficheiro de backup" @@ -3125,6 +3190,58 @@ msgstr "%s: não é possível restaurar %s: %s (a suas alterações estão em %s msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: falhou encontrar o directório tcb para %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Overflow do ambiente\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: não é possível alterar o utilizador '%s' no cliente NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' é o mestre NIS para este cliente.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: o grupo '%s' é um grupo NIS\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s é o mestre NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: o grupo %s é um grupo NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "" +#~ "%s: não é possível criar um novo ficheiro de configurações pré-definidas\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: o grupo '%s' é um grupo NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: o utilizador %s é um utilizador NIS\n" + +#~ msgid "too simple" +#~ msgstr "demasiado simples" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Sem entrada utmp. Tem de executar \"login\" a partir do \"sh\" de nível " +#~ "mais baixo" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: falhou encontrar o directório tcb para %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "falhou alocar memória" + #~ msgid "Usage: id\n" #~ msgstr "Utilização: id\n" @@ -3140,10 +3257,6 @@ msgstr "%s: falhou encontrar o directório tcb para %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: informação de caducidade da palavra-passe alterada.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "o nome de utilizador '%s' é inválido\n" - #~ msgid "Username Port From Latest" #~ msgstr "Utilizador Porto De Último" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index e3a7345..ec40de2 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index 8299a33..6fcf852 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2011-11-25 20:20+0100\n" "Last-Translator: Fred Ulisses Maranhão \n" "Language-Team: Debian-BR Project \n" @@ -16,225 +16,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Cadastro de nome multiplos '%s' in %s. Por Favor conserte-o com pwck ou " -"grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "metodo de encriptacao não suportado por libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "erro de configuração - não consigo verificar o valor %s: '%s'" - -msgid "Could not allocate space for config info.\n" -msgstr "Não foi possível alocar espaço para a informação de configuração.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"erro de configuração - item '%s' desconhecido (notifique o administrador)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Senha : " - -#, c-format -msgid "%s's Password: " -msgstr "Senha de %s : " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Não posso abrir interface de audit - abortando.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Não foi possível alocar espaço para a informação de configuração.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Mudando a informação de idade para %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s : Não foi possível determinar seu nome de usuário.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s : linha %d : não foi possível encontrar usuário %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s : sem memória\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: não foi possível fazer stat %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s não é diretório, nem link simbólico.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Não foi possível ler o link simbólico %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: link simbólico longo suspeito: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: não foi possível criar o diretório %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: não foi possível mudar o proprietário de %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: não foi possível mudar o modo de %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: removendo link: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: não foi possível remover diretório %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Não foi possível renomear %s para %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Não foi possível remover %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: não foi possível criar link simbólico %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Não foi possível mudar proprietários de %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Não foi possível fazer lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Atenção, usuário %s não tem arquivo tcb shadow.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Emergência: shadow tcb de %s não é um arquivo regular com st_nlink=1.\n" -"A conta permanece travada.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Não foi possível abrir %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Aviso : grupo desconhecido %s\n" @@ -281,6 +62,13 @@ msgstr "Não consegui mudar o proprietário ou modo do tty stdin: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: falha ao destravar %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Cadastro de nome multiplos '%s' in %s. Por Favor conserte-o com pwck ou " +"grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -288,8 +76,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Overflow de ambiente\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "metodo de encriptacao não suportado por libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -410,8 +199,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Não foi possível obter UID único (não há mais UIDs disponíveis)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "erro de configuração - não consigo verificar o valor %s: '%s'" + +msgid "Could not allocate space for config info.\n" +msgstr "Não foi possível alocar espaço para a informação de configuração.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"erro de configuração - item '%s' desconhecido (notifique o administrador)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -441,7 +238,7 @@ msgstr "Não foi possível alocar espaço para a informação de configuração. #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s : não foi possível abrir arquivo\n" #, fuzzy, c-format @@ -454,9 +251,22 @@ msgstr "%s: linha %d: chown %s falhou: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linha %d: chown %s falhou: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linha %d: chown %s falhou: %s\n" + msgid "Too many logins.\n" msgstr "Muitos logins.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login : " + msgid "You have new mail." msgstr "Você possui novas mensagens." @@ -466,6 +276,14 @@ msgstr "Sem mensagens." msgid "You have mail." msgstr "Você possui mensagens." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "nenhuma mudança" @@ -478,9 +296,6 @@ msgstr "mudanças de caixa somente" msgid "too similar" msgstr "muito similar" -msgid "too simple" -msgstr "muito simples" - msgid "rotated" msgstr "rotacionado" @@ -526,6 +341,13 @@ msgid "" "%s\n" msgstr "passwd : pam_start() falhou, erro %d\n" +msgid "Password: " +msgstr "Senha : " + +#, c-format +msgid "%s's Password: " +msgstr "Senha de %s : " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Senha incorreta para %s.\n" @@ -551,30 +373,127 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: não foi possível criar o diretório %s: %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: Falha ao criar diretório tcb para %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" msgstr "%s: não foi possível criar o diretório %s: %s\n" -#, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: Falha ao criar diretório tcb para %s\n" +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"inválido ENCRYPT_METHOD valor: '%s'.\n" +"falta de DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Não posso abrir interface de audit - abortando.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Não foi possível alocar espaço para a informação de configuração.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Não foi possível alocar espaço para a informação de configuração.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Mudando a informação de idade para %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s : Não foi possível determinar seu nome de usuário.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s : linha %d : não foi possível encontrar usuário %s\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" msgstr "" -"inválido ENCRYPT_METHOD valor: '%s'.\n" -"falta de DES.\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -588,6 +507,10 @@ msgstr "Sem diretório, logando com HOME=/" msgid "Cannot execute %s" msgstr "Não foi possível executar %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Diretório raíz inválido '%s'\n" @@ -596,6 +519,86 @@ msgstr "Diretório raíz inválido '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "Não foi possível mudar o diretório raíz para '%s'\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s : sem memória\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: não foi possível fazer stat %s: %s\n" + +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s não é diretório, nem link simbólico.\n" + +#, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Não foi possível ler o link simbólico %s: %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: link simbólico longo suspeito: %s\n" + +#, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: não foi possível criar o diretório %s: %s\n" + +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: não foi possível mudar o proprietário de %s: %s\n" + +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: não foi possível mudar o modo de %s: %s\n" + +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: removendo link: %s: %s\n" + +#, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: não foi possível remover diretório %s: %s\n" + +#, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Não foi possível renomear %s para %s: %s\n" + +#, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Não foi possível remover %s: %s\n" + +#, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: não foi possível criar link simbólico %s: %s\n" + +#, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Não foi possível mudar proprietários de %s: %s\n" + +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Não foi possível fazer lstat %s: %s\n" + +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Atenção, usuário %s não tem arquivo tcb shadow.\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Emergência: shadow tcb de %s não é um arquivo regular com st_nlink=1.\n" +"A conta permanece travada.\n" + +#, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Não foi possível abrir %s: %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s : o usuário %s está logado no momento\n" @@ -675,6 +678,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -700,12 +706,15 @@ msgstr "Senha Inativa" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data de Expiração de Senha (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Última mudança de senha\t\t\t\t\t: " - msgid "never" msgstr "nunca" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Última mudança de senha\t\t\t\t\t: " + msgid "password must be changed" msgstr "Senha modificada" @@ -877,14 +886,6 @@ msgstr "%s: '%s' contém caracteres ilegais\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: usuário '%s' não existe\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: não foi possível mudar o usuário '%s' no cliente NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' é o NIS mestre para este cliente.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Modificando as informações de usuário para %s\n" @@ -924,6 +925,11 @@ msgstr "" "-s, --sha-rounds Números de SHA rodadas para a SHA *\n" " algoritmos criptografados\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: metodo de encriptação não suportado : %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: flag %s é permitida somente com a flag %s\n" @@ -975,6 +981,16 @@ msgstr "" msgid "Login Shell" msgstr "Shell de Login" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Não foi possível obter o tamanho de %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: não foi possível criar novo arquivo de padrões\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Você não pode mudar o shell para '%s'.\n" @@ -987,6 +1003,11 @@ msgstr "Mudando o shell de login para %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s : Entrada inválida : %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s é um shell inválido\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s é um shell inválido\n" @@ -1225,9 +1246,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system cria uma conta de sistema\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1242,6 +1260,11 @@ msgstr "nome de usuário '%s' inválido\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' não é um nome de grupo válido\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Não foi possível abrir %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: ID de grupo '%s' inválido\n" @@ -1286,14 +1309,6 @@ msgstr "%s: não é possível remover o grupo primário do usuário '%s'\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: grupo '%s' não existe\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: grupo '%s' é um grupo NIS\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s : %s é o mestre NIS\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: usuário '%s' já é um membro de '%s'\n" @@ -1390,10 +1405,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: nome de grupo '%s' inválido\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s : grupo %s é um grupo NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s : usuário %s desconhecido\n" @@ -1519,7 +1530,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all mostrar registros de faillog de todos os " @@ -1622,11 +1633,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: talvez não seja possível trabalhar sem o root efetivamente\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Nenhuma entrada utmp. Voce deve executar \"login\" do \"sh\" de nível mais " -"baixo" - #, c-format msgid "" "\n" @@ -1660,14 +1666,6 @@ msgstr "Login incorreto" msgid "Cannot find user (%s)\n" msgstr "%s : linha %d : não foi possível encontrar usuário %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login : " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: falha iniciando: %s" @@ -1703,7 +1701,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1730,20 +1729,15 @@ msgstr "%s: falha ao remover %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: falha ao destravar %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: falha ao procurar o diretório tcb para %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Falha ao criar diretório tcb para %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1776,14 +1770,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Falha ao criar diretório tcb para %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1806,6 +1800,10 @@ msgstr "%s: ID de usuário '%s' inválido\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s : nome de usuário '%s' inválido\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s : linha %d : linha inválida\n" @@ -1828,6 +1826,11 @@ msgstr "%s: linha %d: não foi possível criar grupo\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: linha %d: usuário '%s' não existe em %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: removendo link: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s : linha %d : não foi possível atualizar a senha\n" @@ -1849,14 +1852,14 @@ msgstr "%s: linha %d: chown %s falhou: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s : linha %d : não foi possível atualizar entrada\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: falha ao preparar a nova entrada %s '%s'\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: não foi possível criar usuário\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: falha ao preparar a nova entrada %s '%s'\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s : não foi possível atualizar arquivo de grupo\n" @@ -1930,6 +1933,12 @@ msgstr "" " -x, --maxdays MAX_DIAS define número máximo de dias antes da troca\n" " de senhas para MAX_DIAS\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list exibe informação sobre idade da conta\n" + msgid "Old password: " msgstr "Senha antiga : " @@ -1951,6 +1960,11 @@ msgstr "" "Por favor, use uma combinação de letras em maiúsculas e minúsculas\n" "e de números.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s : campos muito extensos\n" + msgid "New password: " msgstr "Nova senha : " @@ -1993,6 +2007,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s : repositório %s não suportado\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: apenas o root pode usar a opção -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2149,11 +2168,9 @@ msgstr "%s: mal funcionamento do sinal\n" msgid "Session terminated, terminating shell..." msgstr "Sessão terminada, encerrando o shell..." -#, c-format msgid " ...killed.\n" msgstr " ...morto.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...esperando o filho terminar.\n" @@ -2239,6 +2256,11 @@ msgstr "%s: Você não está autorizado a usar o su agora\n" msgid "No passwd entry for user '%s'\n" msgstr "Nenhuma entrada de senha para 'root'" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nome de usuário '%s' inválido\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s : deve ser executado a partir de um terminal\n" @@ -2284,6 +2306,13 @@ msgstr "%s: %s foi criado, mas não pode ser removido\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: a configuração %s em %s será ignorada\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: a configuração %s em %s será ignorada\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2294,10 +2323,6 @@ msgstr "%s: não foi possível criar novo arquivo de padrões\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: não foi possível criar novo arquivo de padrões\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: não foi possível criar novo arquivo de padrões\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: não foi possível abrir novo arquivo de padrões\n" @@ -2314,10 +2339,6 @@ msgstr "%s: não foi possível criar link simbólico %s: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: renomear: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: grupo '%s' é um grupo NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: muitos grupos especificados (máximo %d).\n" @@ -2460,6 +2481,18 @@ msgstr "" "mapeamento de\n" " usuário SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user USUÁRIO_SE usa um USUÁRIO_SE específico para o " +"mapeamento de\n" +" usuário SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: diretório base '%s' inválido\n" @@ -2602,6 +2635,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Configurando caixa-postal arquivos de permissao" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Criando caixa-postal" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Criando caixa-postal" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2736,10 +2779,6 @@ msgstr "%s: Não é possível remover o conteúdo de %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Não é possível remover arquivos tcb para %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s : usuário %s é um usuário NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: diretório pessoal %s (%s) não encontrado\n" @@ -2870,6 +2909,13 @@ msgstr "" " -Z, --selinux-user novo mapeamento de usuário SELinux para a " "conta de usuário\n" +#, fuzzy +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user novo mapeamento de usuário SELinux para a " +"conta de usuário\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2963,10 +3009,21 @@ msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" "%s: falha ao copiar a entrada lastlog do usuário %lu para o usuário %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: falha ao copiar a entrada lastlog do usuário %lu para o usuário %lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "%s: falha ao copiar a entrada faillog do usuário %lu para o %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: falha ao copiar a entrada faillog do usuário %lu para o %lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s : aviso : %s não é propriedade de %s\n" @@ -3067,8 +3124,10 @@ msgstr "falha ao desvincular arquivo de rascunho" msgid "failed to stat edited file" msgstr "falha ao fazer stat de arquivo editado" -msgid "failed to allocate memory" -msgstr "falha ao alocar memória" +#, fuzzy +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s : não foi possível abrir arquivo\n" msgid "failed to create backup file" msgstr "falha ao criar arquivo de backup" @@ -3081,6 +3140,57 @@ msgstr "%s : não foi possível restaurar %s : %s (suas mudanças estão em %s)\ msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: falha ao procurar o diretório tcb para %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Overflow de ambiente\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: não foi possível mudar o usuário '%s' no cliente NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' é o NIS mestre para este cliente.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: grupo '%s' é um grupo NIS\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s : %s é o mestre NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s : grupo %s é um grupo NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: não foi possível criar novo arquivo de padrões\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: grupo '%s' é um grupo NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s : usuário %s é um usuário NIS\n" + +#~ msgid "too simple" +#~ msgstr "muito simples" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Nenhuma entrada utmp. Voce deve executar \"login\" do \"sh\" de nível " +#~ "mais baixo" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: falha ao procurar o diretório tcb para %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "falha ao alocar memória" + #~ msgid "Usage: id\n" #~ msgstr "Uso : id\n" @@ -3096,10 +3206,6 @@ msgstr "%s: falha ao procurar o diretório tcb para %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: informação de expiração de senha alterada.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nome de usuário '%s' inválido\n" - #~ msgid "Username Port From Latest" #~ msgstr "Nome de Usuário Porta De Último" diff --git a/po/ro.gmo b/po/ro.gmo index c89ab14..7aa55de 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index c1e341d..a700cbb 100644 --- a/po/ro.po +++ b/po/ro.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2007-11-26 18:18+0100\n" "Last-Translator: Sorin Batariuc \n" "Language-Team: Romanian \n" @@ -18,221 +18,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n>1\n" "X-Generator: KBabel 1.10.2\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Nu pot aloca spaţiu pentru informaţiile despre configurare.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"eroare de configurare - element necunoscut '%s' (anunţaţi administratorul)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Parola: " - -#, c-format -msgid "%s's Password: " -msgstr "Parola pentru %s: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Nu pot deschide fişierul passwd.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Nu pot aloca spaţiu pentru informaţiile despre configurare.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Modific informaţia de temporalitate pentru %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Nu vă pot determina numele de utilizator.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: linia %d: nu pot găsi utilizatorul %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: nu mai este memorie\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: nu pot actualiza fişierul %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: director personal nevalid '%s'\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: nu pot redenumi directorul %s în %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: nu pot crea directorul %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: avertisment: nu pot şterge " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: avertisment: nu pot şterge " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: redenumire: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: nu pot redenumi directorul %s în %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: nu pot redenumi directorul %s în %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: avertisment: nu pot şterge " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: nu pot crea directorul %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: avertisment: nu pot şterge " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: nu pot actualiza fişierul %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: nu pot actualiza fişierul shadow\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: redenumire: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: nu pot deschide fişierul %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Avertisment: grup necunoscut %s\n" @@ -279,6 +64,11 @@ msgstr "Nu pot schimba tty %s" msgid "%s: failed to unlock %s\n" msgstr "%s: câmpuri prea lungi\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -286,8 +76,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Inundaţie de mediu\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -386,8 +177,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: nu pot prelua UID\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" + +msgid "Could not allocate space for config info.\n" +msgstr "Nu pot aloca spaţiu pentru informaţiile despre configurare.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"eroare de configurare - element necunoscut '%s' (anunţaţi administratorul)\n" #, fuzzy, c-format msgid "%s: Memory allocation failure\n" @@ -416,7 +215,7 @@ msgstr "Nu pot aloca spaţiu pentru informaţiile despre configurare.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: nu pot deschide fişierul\n" #, fuzzy, c-format @@ -427,9 +226,21 @@ msgstr "%s: linia %d: eşuare chown\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linia %d: eşuare chown\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linia %d: eşuare chown\n" + msgid "Too many logins.\n" msgstr "Prea multe autentificări.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s autentificare: " + msgid "You have new mail." msgstr "Aveţi mesaje noi." @@ -439,6 +250,14 @@ msgstr "N-aveţi mesaje." msgid "You have mail." msgstr "Aveţi mesaje." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "nici o schimbare" @@ -451,9 +270,6 @@ msgstr "doar schimbări de caz" msgid "too similar" msgstr "prea asemănător" -msgid "too simple" -msgstr "prea simplu" - msgid "rotated" msgstr "rotit" @@ -500,6 +316,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() a eşuat, eroare %d\n" +msgid "Password: " +msgstr "Parola: " + +#, c-format +msgid "%s's Password: " +msgstr "Parola pentru %s: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Parolă incorectă pentru %s.\n" @@ -525,28 +348,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: nu pot crea directorul %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: nu pot crea directorul %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Nu pot deschide fişierul passwd.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Nu pot aloca spaţiu pentru informaţiile despre configurare.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Nu pot aloca spaţiu pentru informaţiile despre configurare.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Modific informaţia de temporalitate pentru %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Nu vă pot determina numele de utilizator.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: nu pot crea directorul %s\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: linia %d: nu pot găsi utilizatorul %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -560,6 +480,10 @@ msgstr "Fără director personal, autentificare cu HOME=/" msgid "Cannot execute %s" msgstr "Nu pot executa %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Director rădăcină invalid '%s'\n" @@ -568,6 +492,84 @@ msgstr "Director rădăcină invalid '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "Nu pot schimba directorul rădăcină la '%s'\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nu mai este memorie\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: nu pot actualiza fişierul %s\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: director personal nevalid '%s'\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: nu pot redenumi directorul %s în %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: avertisment: nu pot şterge " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: avertisment: nu pot şterge " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: redenumire: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: nu pot redenumi directorul %s în %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: nu pot redenumi directorul %s în %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: avertisment: nu pot şterge " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: avertisment: nu pot şterge " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: nu pot actualiza fişierul %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: nu pot actualiza fişierul shadow\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: redenumire: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: nu pot deschide fişierul %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: utilizatorul %s este autentificat în acest moment\n" @@ -627,6 +629,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -652,12 +657,15 @@ msgstr "Parolă inactivă" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Data expirării contului (AAAA-LL-ZZ)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Ultima schimbare de parolă\t\t\t\t\t: " - msgid "never" msgstr "Niciodată" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Ultima schimbare de parolă\t\t\t\t\t: " + msgid "password must be changed" msgstr "parola trebuie schimbată" @@ -825,14 +833,6 @@ msgstr "%s: '%s' conţine caractere ilegale\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: utilizatorul %s nu există\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: nu pot schimba utilizatorul '%s' pe un client NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' este stăpânul NIS pentru acest client.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Modificare informaţii utilizator pentru %s\n" @@ -861,6 +861,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: semnalizatorul -a este permis DOAR împreună cu semnalizatorul -G\n" @@ -911,6 +915,15 @@ msgstr "" msgid "Login Shell" msgstr "Autentificare consolă" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: nu pot redenumi directorul %s în %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: nu pot crea noile fişiere implicite\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Nu puteţi schimba consola pentru %s.\n" @@ -923,6 +936,10 @@ msgstr "Schimb consola de autentificare pentru %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Intrare nevalidă: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s este o consolă nevalidă.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s este o consolă nevalidă.\n" @@ -1133,9 +1150,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1148,6 +1162,10 @@ msgstr "nume de utilizator nevalid '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s nu este un nume de grup valid\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: nu pot deschide fişierul %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "nume de grup nevalid '%s'\n" @@ -1190,14 +1208,6 @@ msgstr "%s: nu pot schimba utilizatorul '%s' pe un client NIS.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: grupul %s nu există\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: grupul '%s' este un grup NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s este stăpân NIS\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: utilizatorul %s este un utilizator NIS\n" @@ -1273,10 +1283,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "nume de grup nevalid '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: grupul %s este un grup NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: utilizator necunoscut %s\n" @@ -1391,7 +1397,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1485,11 +1491,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Nici o intrare utmp. Trebuie să executaţi \"login\" de la nivelul cel mai de " -"jos \"sh\"" - #, fuzzy, c-format msgid "" "\n" @@ -1523,14 +1524,6 @@ msgstr "Autentificare incorectă" msgid "Cannot find user (%s)\n" msgstr "%s: linia %d: nu pot găsi utilizatorul %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s autentificare: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s : eşuare la bifurcare: %s" @@ -1567,7 +1560,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1592,17 +1586,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: câmpuri prea lungi\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: director de bază nevalid '%s'\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: nu pot crea directorul %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1636,14 +1626,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: nu pot crea directorul %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1664,6 +1653,10 @@ msgstr "%s: nume utilizator nevalid '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: nume utilizator nevalid '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linia %d: linie nevalidă\n" @@ -1684,6 +1677,10 @@ msgstr "%s: linia %d: nu pot crea GID\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: utilizatorul %s nu există\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: redenumire: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linia %d: nu pot actualiza parola\n" @@ -1704,14 +1701,14 @@ msgstr "%s: linia %d: eşuare chown\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: linia %d: nu pot actualiza intrarea\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s : eşuare în abandonarea privilegiilor (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: nu pot crea %s\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s : eşuare în abandonarea privilegiilor (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: nu pot actualiza fişierul de grupuri\n" @@ -1770,6 +1767,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Parola veche: " @@ -1789,6 +1789,11 @@ msgstr "" "Introduceţi noua parolă (minimum %d, maximum %d caractere)\n" "Vă rog utilizaţi o combinaţie de litere mari şi mici şi numere.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: câmpuri prea lungi\n" + msgid "New password: " msgstr "Parola nouă: " @@ -1829,6 +1834,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: depozitul %s nu este suportat\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1973,11 +1982,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2051,6 +2058,11 @@ msgstr "Nu sunteţi autorizat pentru su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Fără intrare în passwd pentru 'root'" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "nume de utilizator nevalid '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: trebuie pornit de la un terminal\n" @@ -2096,6 +2108,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2106,10 +2124,6 @@ msgstr "%s: nu pot crea noile fişiere implicite\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: nu pot crea noile fişiere implicite\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: nu pot crea noile fişiere implicite\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nu pot deschide noile fişiere implicite\n" @@ -2126,10 +2140,6 @@ msgstr "%s: nu pot crea directorul %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: redenumire: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: grupul '%s' este un grup NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: prea multe grupuri specificate (maximum %d).\n" @@ -2239,6 +2249,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: director de bază nevalid '%s'\n" @@ -2370,6 +2385,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Se atribuie permisiunile fişierului căsuţă de mesaje" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Crearea fişierului căsuţă pentru mesaje" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Crearea fişierului căsuţă pentru mesaje" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2490,10 +2515,6 @@ msgstr "%s: nu pot redenumi directorul %s în %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: nu pot redenumi directorul %s în %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: utilizatorul %s este un utilizator NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: director personal nevalid '%s'\n" @@ -2594,6 +2615,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2677,10 +2702,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: nu pot actualiza fişierul passwd\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: avertisment: %s nu este deţinut de către %s\n" @@ -2786,8 +2819,9 @@ msgid "failed to stat edited file" msgstr "eşuare în redenumirea căsuţei poştale" #, fuzzy -msgid "failed to allocate memory" -msgstr "eşuare în schimbarea proprietarului căsuţei poştale" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: nu pot deschide fişierul\n" #, fuzzy msgid "failed to create backup file" @@ -2801,6 +2835,57 @@ msgstr "%s: nu pot reface %s: %s (schimbările dvs. sunt în %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: director de bază nevalid '%s'\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Inundaţie de mediu\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: nu pot schimba utilizatorul '%s' pe un client NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' este stăpânul NIS pentru acest client.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: grupul '%s' este un grup NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s este stăpân NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: grupul %s este un grup NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: nu pot crea noile fişiere implicite\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: grupul '%s' este un grup NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: utilizatorul %s este un utilizator NIS\n" + +#~ msgid "too simple" +#~ msgstr "prea simplu" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Nici o intrare utmp. Trebuie să executaţi \"login\" de la nivelul cel mai " +#~ "de jos \"sh\"" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: director de bază nevalid '%s'\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "eşuare în schimbarea proprietarului căsuţei poştale" + #~ msgid "Usage: id\n" #~ msgstr "Utilizare: id\n" @@ -2816,10 +2901,6 @@ msgstr "%s: director de bază nevalid '%s'\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Avertisment de expirare a parolei" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "nume de utilizator nevalid '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Nume utilizator Port De la Cel mai recent" diff --git a/po/ru.gmo b/po/ru.gmo index 6d80752..55fecd6 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index db8d94c..f3f1d0d 100644 --- a/po/ru.po +++ b/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.5.1-1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2017-03-05 11:14+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -22,230 +22,6 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Существует сразу несколько записей с именем «%s» в %s. Исправьте это с " -"помощью pwck или grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "алгоритм шифрования не поддерживается libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "ошибка настройки: не удалось разобрать значение %s: «%s»" - -msgid "Could not allocate space for config info.\n" -msgstr "Не удалось выделить память для загрузки настроек.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "ошибка настройки: неизвестный элемент «%s» (сообщите администратору)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd завершился с ошибкой (по сигналу %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd завершился с кодом выхода %d\n" - -msgid "Password: " -msgstr "Пароль: " - -#, c-format -msgid "%s's Password: " -msgstr "Пароль пользователя %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "" -"Не удалось открыть интерфейс протоколирования (audit) — прекращение работы.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Невозможно создать управляющий описатель SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "Политика SELinux не управляема\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Невозможно прочитать хранилище политики SELinux\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Невозможно установить управляющее подключение SELinux\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Невозможно начать транзакцию SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Не удалось запросить seuser для %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Не удалось назначить serange для %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Не удалось назначить sename для %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Не удалось изменить сопоставление входа для %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Невозможно создать сопоставление входа SELinux для %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Невозможно задать имя для %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Невозможно задать пользователя SELinux для %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Невозможно добавить сопоставление входа для %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Невозможно инициализировать управление SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Невозможно создать ключ пользователя SELinux\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Невозможно проверить пользователя SELinux\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Невозможно изменить пользовательское сопоставление SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Невозможно добавить пользовательское сопоставление SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Невозможно зафиксировать транзакцию SELinux\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Сопоставление входа для %s не определено; нормально, если использовалось " -"сопоставление по умолчанию\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"Сопоставление входа для %s определено в политике и не может быть удалено\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Невозможно удалить сопоставление входа для %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: нехватка памяти\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: не удалось выполнить функцию stat для %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s не является каталогом или символьной ссылкой\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: не удалось прочитать символьную ссылку %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: вероятно, слишком длинная символьная ссылка: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: не удалось создать каталог %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: не удалось изменить владельца %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: не удалось изменить права доступа %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: unlink: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: не удалось удалить каталог %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: не удалось переименовать каталог %s в %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: не удалось удалить %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: не удалось создать символьную ссылку %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: не удалось изменить владельцев %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: не удалось выполнить функцию lstat для %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "" -"%s: предупреждение: у пользователя %s отсутствует файл shadow в структуре " -"tcb.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: чрезвычайная ситуация: файл shadow у %s в структуре tcb не является\n" -"обычным файлом с st_nlink=1. Учётная запись остаётся заблокированной.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: не удалось открыть %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Предупреждение: неизвестная группа %s\n" @@ -293,6 +69,13 @@ msgstr "Не удалось изменить владельца или прав msgid "%s: failed to unlock %s\n" msgstr "%s: не удалось разблокировать %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Существует сразу несколько записей с именем «%s» в %s. Исправьте это с " +"помощью pwck или grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -300,8 +83,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Слишком большое количество переменных окружения\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "алгоритм шифрования не поддерживается libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -423,8 +207,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: не удалось получить уникальный UID (кончились свободные UID-ы)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "ошибка настройки: не удалось разобрать значение %s: «%s»" + +msgid "Could not allocate space for config info.\n" +msgstr "Не удалось выделить память для загрузки настроек.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "ошибка настройки: неизвестный элемент «%s» (сообщите администратору)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -454,9 +245,10 @@ msgstr "Невозможно задать имя для %s\n" msgid "%s: Could not set caps\n" msgstr "Невозможно задать имя для %s\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: строка %d: вызов chown %s завершился неудачно: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -468,9 +260,22 @@ msgstr "%s: строка %d: вызов chown %s завершился неуда msgid "%s: write to %s failed: %s\n" msgstr "%s: строка %d: вызов chown %s завершился неудачно: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: строка %d: вызов chown %s завершился неудачно: %s\n" + msgid "Too many logins.\n" msgstr "Слишком много попыток входа в систему.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"Имя пользователя %s: " + msgid "You have new mail." msgstr "Для вас есть новые почтовые сообщения." @@ -480,6 +285,14 @@ msgstr "Для вас нет почтовых сообщений." msgid "You have mail." msgstr "Для вас есть почтовые сообщения." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd завершился с ошибкой (по сигналу %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd завершился с кодом выхода %d\n" + msgid "no change" msgstr "изменений не внесено" @@ -492,9 +305,6 @@ msgstr "изменение только в регистре символов" msgid "too similar" msgstr "слишком похожий" -msgid "too simple" -msgstr "слишком простой" - msgid "rotated" msgstr "перестановка символов" @@ -529,89 +339,285 @@ msgstr "" msgid "%s: conversation type %d not supported.\n" msgstr "%s: хранилище %s не поддерживается\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: ошибка %d\n" +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: ошибка %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: не удалось выполнить pam_start(), ошибка %d\n" + +msgid "Password: " +msgstr "Пароль: " + +#, c-format +msgid "%s's Password: " +msgstr "Пароль пользователя %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Неверный пароль для %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: несколько параметров --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: для параметра «%s» требуется аргумент\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: не удалось снизить уровень привилегий (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: некорректное значение пути chroot «%s»\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: нет доступа к каталогу chroot %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: не удалось выполнить chroot в каталог %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: не удалось выполнить chdir в chroot-каталог %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Неправильное значение для ENCRYPT_METHOD: «%s».\n" +"Используется значение по умолчанию DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "" +"Не удалось открыть интерфейс протоколирования (audit) — прекращение работы.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Невозможно создать управляющий описатель SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "Политика SELinux не управляема\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Невозможно прочитать хранилище политики SELinux\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Невозможно установить управляющее подключение SELinux\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Невозможно начать транзакцию SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Не удалось запросить seuser для %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Не удалось назначить serange для %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Не удалось назначить sename для %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Не удалось изменить сопоставление входа для %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Невозможно создать сопоставление входа SELinux для %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Невозможно задать имя для %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Невозможно задать пользователя SELinux для %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Невозможно добавить сопоставление входа для %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Невозможно инициализировать управление SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Невозможно создать ключ пользователя SELinux\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Невозможно проверить пользователя SELinux\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Невозможно изменить пользовательское сопоставление SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Невозможно добавить пользовательское сопоставление SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Невозможно зафиксировать транзакцию SELinux\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Сопоставление входа для %s не определено; нормально, если использовалось " +"сопоставление по умолчанию\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"Сопоставление входа для %s определено в политике и не может быть удалено\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Невозможно удалить сопоставление входа для %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Невозможно перейти в каталог «%s»\n" + +msgid "No directory, logging in with HOME=/" +msgstr "" +"Каталог отсутствует или недоступен, вход в систему выполняется с HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Не удалось выполнить %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Неверный корневой каталог «%s»\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Не удалось изменить корневой каталог на «%s»\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: нехватка памяти\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: не удалось выполнить функцию stat для %s: %s\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: не удалось выполнить pam_start(), ошибка %d\n" +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s не является каталогом или символьной ссылкой\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Неверный пароль для %s.\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: не удалось прочитать символьную ссылку %s: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: несколько параметров --root\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: вероятно, слишком длинная символьная ссылка: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: для параметра «%s» требуется аргумент\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: не удалось создать каталог %s: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: не удалось снизить уровень привилегий (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: не удалось изменить владельца %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: некорректное значение пути chroot «%s»\n" +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: не удалось изменить права доступа %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: нет доступа к каталогу chroot %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: unlink: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: не удалось выполнить chdir в chroot-каталог %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: не удалось удалить каталог %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: не удалось выполнить chroot в каталог %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: не удалось переименовать каталог %s в %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: не удалось удалить %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Неправильное значение для ENCRYPT_METHOD: «%s».\n" -"Используется значение по умолчанию DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: не удалось создать символьную ссылку %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: не удалось изменить владельцев %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Невозможно перейти в каталог «%s»\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: не удалось выполнить функцию lstat для %s: %s\n" -msgid "No directory, logging in with HOME=/" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" msgstr "" -"Каталог отсутствует или недоступен, вход в систему выполняется с HOME=/" +"%s: предупреждение: у пользователя %s отсутствует файл shadow в структуре " +"tcb.\n" #, c-format -msgid "Cannot execute %s" -msgstr "Не удалось выполнить %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: чрезвычайная ситуация: файл shadow у %s в структуре tcb не является\n" +"обычным файлом с st_nlink=1. Учётная запись остаётся заблокированной.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Неверный корневой каталог «%s»\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Не удалось изменить корневой каталог на «%s»\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: не удалось открыть %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -690,6 +696,12 @@ msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" " -R, --root КАТ_CHROOT каталог, в который выполняется chroot\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" +" -R, --root КАТ_CHROOT каталог, в который выполняется chroot\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -718,12 +730,15 @@ msgstr "Деактивировать учётную запись через" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Дата истечения срока действия учётной записи (ГГГГ-ММ-ДД)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Последний раз пароль был изменён\t\t\t\t: " - msgid "never" msgstr "никогда" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Последний раз пароль был изменён\t\t\t\t: " + msgid "password must be changed" msgstr "пароль должен быть изменён" @@ -898,14 +913,6 @@ msgstr "%s: в «%s» содержатся недопустимые символ msgid "%s: user '%s' does not exist\n" msgstr "%s: пользователь «%s» не существует\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: невозможно изменить пользователя «%s» в клиенте NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» является мастером NIS для этого клиента.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Изменение информации о пользователе %s\n" @@ -945,6 +952,11 @@ msgstr "" " -s, --sha-rounds количество раундов SHA для алгоритмов\n" " шифрования SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: алгоритм шифрования %s не поддерживается\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: параметр %s разрешено использовать только вместе с параметром %s\n" @@ -997,6 +1009,16 @@ msgstr "" msgid "Login Shell" msgstr "Командная оболочка" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: не удалось получить размер %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: не удалось создать новый файл значений по умолчанию\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Вы не можете изменять командную оболочку у «%s».\n" @@ -1009,6 +1031,11 @@ msgstr "Изменение командной оболочки для %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: неверное значение %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s не является допустимой оболочкой\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s не является допустимой оболочкой\n" @@ -1258,12 +1285,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system создавать системную группу\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" -" -R, --root КАТ_CHROOT каталог, в который выполняется chroot\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1278,6 +1299,11 @@ msgstr "неверное имя пользователя «%s»\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» не может быть именем группы\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: не удалось открыть %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: неверный ID группы «%s»\n" @@ -1323,14 +1349,6 @@ msgstr "%s: не удалось удалить первичную группу msgid "%s: group '%s' does not exist\n" msgstr "%s: группа «%s» не существует\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: группа «%s» является группой NIS\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s является мастером NIS\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: пользователь «%s» является членом «%s»\n" @@ -1425,10 +1443,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: неверное имя группы «%s»\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: группа %s является группой NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: неизвестный пользователь %s\n" @@ -1552,8 +1566,12 @@ msgstr "" " -b, --before ДНЕЙ показать записи lastlog за последние ДНЕЙ " "дней\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear очистить запись lastlog пользователя\n" @@ -1656,10 +1674,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: невозможно выполнить без прав суперпользователя\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Нет записи в utmp. Вы должны запускать «login» из самого первого уровня «sh»" - #, c-format msgid "" "\n" @@ -1693,14 +1707,6 @@ msgstr "Неверное имя пользователя" msgid "Cannot find user (%s)\n" msgstr "Невозможно найти пользователя (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"Имя пользователя %s: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: ошибка при вызове fork: %s" @@ -1737,7 +1743,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1763,20 +1770,15 @@ msgstr "%s: не удалось удалить %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: не удалось разблокировать %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: не удалось найти каталог tcb для %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: не удалось создать tcb-каталог для %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1809,14 +1811,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: не удалось создать tcb-каталог для %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1841,6 +1843,10 @@ msgstr "%s: неверный пользовательский ID «%s»\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: неверное имя пользователя «%s»\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: строка %d: некорректная строка\n" @@ -1863,6 +1869,11 @@ msgstr "%s: строка %d: не удалось создать группу\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: строка %d: пользователь «%s» не существует в %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: unlink: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: строка %d: не удалось обновить пароль\n" @@ -1884,14 +1895,14 @@ msgstr "%s: строка %d: вызов chown %s завершился неуда msgid "%s: line %d: can't update entry\n" msgstr "%s: строка %d: не удалось обновить запись\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: не удалось подготовить новую %s запись\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: не удалось найти подчинённый диапазон пользователей\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: не удалось подготовить новую %s запись\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: не удалось найти подчинённый диапазон групп\n" @@ -1969,6 +1980,11 @@ msgstr "" " -x, --maxdays МАКС_ДНЕЙ установить максимальное число дней перед\n" " сменой пароля в МАКС_ДНЕЙ\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list показать «возраст» учётной записи\n" + msgid "Old password: " msgstr "Старый пароль: " @@ -1988,6 +2004,11 @@ msgstr "" "Введите новый пароль (минимальная длина %d, максимальная длина %d символов)\n" "Используйте комбинацию из символов в верхнем и нижнем регистре и цифры.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: поля слишком длинные\n" + msgid "New password: " msgstr "Новый пароль: " @@ -2032,6 +2053,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: хранилище %s не поддерживается\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: только суперпользователь может использовать параметр -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2185,11 +2211,9 @@ msgstr "%s: неисправность в сигналах\n" msgid "Session terminated, terminating shell..." msgstr "Сеанс завершён, выполняется завершение оболочки…" -#, c-format msgid " ...killed.\n" msgstr " … завершён.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " … ожидает завершения потомка.\n" @@ -2277,6 +2301,11 @@ msgstr "%s: у вас нет прав выполнять su в данный мо msgid "No passwd entry for user '%s'\n" msgstr "Отсутствует passwd-запись для пользователя «%s»\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "неверное имя пользователя «%s»\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: должен запускаться из терминала\n" @@ -2322,6 +2351,13 @@ msgstr "%s: каталог %s создан, но не может быть уда msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: настройка %s в %s будет проигнорирована\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: настройка %s в %s будет проигнорирована\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2332,10 +2368,6 @@ msgstr "%s: не удалось создать новый файл значен msgid "%s: cannot create directory for defaults file\n" msgstr "%s: не удалось создать новый файл значений по умолчанию\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: не удалось создать новый файл значений по умолчанию\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: не удалось открыть новый файл значений по умолчанию\n" @@ -2352,10 +2384,6 @@ msgstr "%s: не удалось создать резервную копию ф msgid "%s: rename: %s: %s\n" msgstr "%s: rename: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: группа «%s» является группой NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: указано слишком много групп (максимум %d).\n" @@ -2507,6 +2535,17 @@ msgstr "" " -Z, --selinux-user SEUSER использовать указанного SEUSER для\n" " пользовательского сопоставления SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER использовать указанного SEUSER для\n" +" пользовательского сопоставления SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: неверный базовый каталог «%s»\n" @@ -2650,6 +2689,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Установка прав на файл почтового ящика" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Создание почтового ящика" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Создание почтового ящика" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2783,10 +2832,6 @@ msgstr "%s: не удалось удалить содержимое %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: не удалось удалить файлы tcb для %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: пользователь %s является пользователем NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: домашний каталог пользователя %s (%s) не найден\n" @@ -2917,6 +2962,16 @@ msgstr "" " -Z, --selinux-user SEUSER новое пользовательское сопоставление\n" " SELinux для учётной записи\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER новое пользовательское сопоставление\n" +" SELinux для учётной записи\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -3013,12 +3068,26 @@ msgstr "" "%s: не удалось скопировать запись lastlog о пользователе %lu в пользователя " "%lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: не удалось скопировать запись lastlog о пользователе %lu в пользователя " +"%lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: не удалось скопировать запись faillog о пользователе %lu в пользователя " "%lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: не удалось скопировать запись faillog о пользователе %lu в пользователя " +"%lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: предупреждение: %s не принадлежит %s\n" @@ -3124,8 +3193,8 @@ msgstr "не удалось удалить черновой файл" msgid "failed to stat edited file" msgstr "не удалось получить атрибуты редактируемого файла" -msgid "failed to allocate memory" -msgstr "не удалось выделить память" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "не удалось создать резервную копию файла" @@ -3138,6 +3207,57 @@ msgstr "%s: не удалось восстановить %s: %s (ваши изм msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: не удалось найти каталог tcb для %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Слишком большое количество переменных окружения\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: невозможно изменить пользователя «%s» в клиенте NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» является мастером NIS для этого клиента.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: группа «%s» является группой NIS\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s является мастером NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: группа %s является группой NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: не удалось создать новый файл значений по умолчанию\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: группа «%s» является группой NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: пользователь %s является пользователем NIS\n" + +#~ msgid "too simple" +#~ msgstr "слишком простой" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Нет записи в utmp. Вы должны запускать «login» из самого первого уровня " +#~ "«sh»" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: не удалось найти каталог tcb для %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "не удалось выделить память" + #~ msgid "Usage: id\n" #~ msgstr "Использование: id\n" @@ -3153,10 +3273,6 @@ msgstr "%s: не удалось найти каталог tcb для %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: информация об истечении срока действия пароля изменена.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "неверное имя пользователя «%s»\n" - #~ msgid "Username Port From Latest" #~ msgstr "Пользователь Порт С Последний раз" diff --git a/po/shadow.pot b/po/shadow.pot index 9b74dde..bf30c54 100644 --- a/po/shadow.pot +++ b/po/shadow.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: shadow 4.13\n" +"Project-Id-Version: shadow 4.15.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,540 +19,540 @@ msgstr "" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgid "Warning: unknown group %s\n" msgstr "" -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" +msgid "Warning: too many groups\n" msgstr "" -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" +msgid "Your password has expired." msgstr "" -msgid "Could not allocate space for config info.\n" +msgid "Your password is inactive." msgstr "" -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgid "Your login has expired." msgstr "" -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" +msgid " Contact the system administrator." msgstr "" -#, c-format -msgid "%s: nscd exited with status %d\n" +msgid " Choose a new password." msgstr "" -msgid "Password: " +msgid "You must change your password." msgstr "" #, c-format -msgid "%s's Password: " -msgstr "" - -msgid "Cannot open audit interface.\n" +msgid "Your password will expire in %ld days.\n" msgstr "" -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" +msgid "Your password will expire tomorrow." msgstr "" -#, c-format -msgid "[libsemanage]: %s\n" +msgid "Your password will expire today." msgstr "" -#, c-format -msgid "Cannot create SELinux management handle\n" +msgid "Cannot open audit interface - aborting.\n" msgstr "" #, c-format -msgid "SELinux policy not managed\n" +msgid "Unable to change owner or mode of tty stdin: %s" msgstr "" #, c-format -msgid "Cannot read SELinux policy store\n" +msgid "%s: failed to unlock %s\n" msgstr "" #, c-format -msgid "Cannot establish SELinux management connection\n" +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" msgstr "" #, c-format -msgid "Cannot begin SELinux transaction\n" +msgid "%s: " msgstr "" -#, c-format -msgid "Could not query seuser for %s\n" +msgid ": " msgstr "" #, c-format -msgid "Could not set serange for %s\n" +msgid "crypt method not supported by libcrypt? (%s)\n" msgstr "" #, c-format -msgid "Could not set sename for %s\n" +msgid "You may not change $%s\n" msgstr "" #, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" +msgid "" +"%d failure since last login.\n" +"Last was %s on %s.\n" +msgid_plural "" +"%d failures since last login.\n" +"Last was %s on %s.\n" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "Cannot create SELinux login mapping for %s\n" +msgid "" +"%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " +"(%lu)\n" msgstr "" #, c-format -msgid "Could not set name for %s\n" +msgid "%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n" msgstr "" #, c-format -msgid "Could not set SELinux user for %s\n" +msgid "%s: Encountered error attempting to use preferred GID: %s\n" msgstr "" #, c-format -msgid "Could not add login mapping for %s\n" +msgid "%s: failed to allocate memory: %s\n" msgstr "" #, c-format -msgid "Cannot init SELinux management\n" +msgid "" +"%s: Can't get unique system GID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Cannot create SELinux user key\n" +msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Cannot verify the SELinux user\n" +msgid "%s: Can't get unique GID (no more available GIDs)\n" msgstr "" #, c-format -msgid "Cannot modify SELinux user mapping\n" +msgid "" +"%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " +"SUB_GID_COUNT (%lu)\n" msgstr "" #, c-format -msgid "Cannot add SELinux user mapping\n" +msgid "%s: Can't get unique subordinate GID range\n" msgstr "" #, c-format -msgid "Cannot commit SELinux transaction\n" +msgid "" +"%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " +"SUB_UID_COUNT (%lu)\n" msgstr "" #, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgid "%s: Can't get unique subordinate UID range\n" msgstr "" #, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgid "" +"%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " +"(%lu)\n" msgstr "" #, c-format -msgid "Could not delete login mapping for %s" +msgid "%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n" msgstr "" #, c-format -msgid "%s: out of memory\n" +msgid "%s: Encountered error attempting to use preferred UID: %s\n" msgstr "" #, c-format -msgid "%s: Cannot stat %s: %s\n" +msgid "" +"%s: Can't get unique system UID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" +msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" +msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "" #, c-format -msgid "%s: Suspiciously long symlink: %s\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" -#, c-format -msgid "%s: Cannot create directory %s: %s\n" +msgid "Could not allocate space for config info.\n" msgstr "" #, c-format -msgid "%s: Cannot change owner of %s: %s\n" +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" #, c-format -msgid "%s: Cannot change mode of %s: %s\n" +msgid "%s: Memory allocation failure\n" msgstr "" #, c-format -msgid "%s: unlink: %s: %s\n" +msgid "%s: subuid overflow detected.\n" msgstr "" #, c-format -msgid "%s: Cannot remove directory %s: %s\n" +msgid "%s: Invalid map file %s specified\n" msgstr "" #, c-format -msgid "%s: Cannot rename %s to %s: %s\n" +msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" msgstr "" #, c-format -msgid "%s: Cannot remove %s: %s\n" +msgid "%s: Could not seteuid to %d\n" msgstr "" #, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" +msgid "%s: Could not set caps\n" msgstr "" #, c-format -msgid "%s: Cannot change owners of %s: %s\n" +msgid "%s: stpeprintf failed!\n" msgstr "" #, c-format -msgid "%s: Cannot lstat %s: %s\n" +msgid "%s: open of %s failed: %s\n" msgstr "" #, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgid "%s: write to %s failed: %s\n" msgstr "" #, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" +msgid "%s: closing %s failed: %s\n" msgstr "" -#, c-format -msgid "%s: mkdir: %s: %s\n" +msgid "Too many logins.\n" msgstr "" #, c-format -msgid "%s: Cannot open %s: %s\n" +msgid "" +"\n" +"%s login: " msgstr "" -#, c-format -msgid "Warning: unknown group %s\n" +msgid "You have new mail." msgstr "" -msgid "Warning: too many groups\n" +msgid "No mail." msgstr "" -msgid "Your password has expired." +msgid "You have mail." msgstr "" -msgid "Your password is inactive." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" msgstr "" -msgid "Your login has expired." +#, c-format +msgid "%s: nscd exited with status %d\n" msgstr "" -msgid " Contact the system administrator." +msgid "no change" msgstr "" -msgid " Choose a new password." +msgid "a palindrome" msgstr "" -msgid "You must change your password." +msgid "case changes only" msgstr "" -#, c-format -msgid "Your password will expire in %ld days.\n" +msgid "too similar" msgstr "" -msgid "Your password will expire tomorrow." +msgid "rotated" msgstr "" -msgid "Your password will expire today." +msgid "too short" msgstr "" -msgid "Cannot open audit interface - aborting.\n" +#, c-format +msgid "Bad password: %s. " msgstr "" #, c-format -msgid "Unable to change owner or mode of tty stdin: %s" +msgid "passwd: pam_start() failed, error %d\n" msgstr "" #, c-format -msgid "%s: failed to unlock %s\n" +msgid "passwd: %s\n" msgstr "" -#, c-format -msgid "%s: " +msgid "passwd: password unchanged\n" msgstr "" -msgid ": " +msgid "passwd: password updated successfully\n" msgstr "" -msgid "Environment overflow\n" +#, c-format +msgid "%s: PAM modules requesting echoing are not supported.\n" msgstr "" #, c-format -msgid "You may not change $%s\n" +msgid "%s: conversation type %d not supported.\n" msgstr "" #, c-format -msgid "" -"%d failure since last login.\n" -"Last was %s on %s.\n" -msgid_plural "" -"%d failures since last login.\n" -"Last was %s on %s.\n" -msgstr[0] "" -msgstr[1] "" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "" #, c-format msgid "" -"%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " -"(%lu)\n" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" msgstr "" -#, c-format -msgid "%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n" +msgid "Password: " msgstr "" #, c-format -msgid "%s: Encountered error attempting to use preferred GID: %s\n" +msgid "%s's Password: " msgstr "" #, c-format -msgid "%s: failed to allocate memory: %s\n" +msgid "Incorrect password for %s.\n" msgstr "" #, c-format -msgid "" -"%s: Can't get unique system GID (%s). Suppressing additional messages.\n" +msgid "%s: multiple --root options\n" msgstr "" #, c-format -msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" +msgid "%s: option '%s' requires an argument\n" msgstr "" #, c-format -msgid "%s: Can't get unique GID (no more available GIDs)\n" +msgid "%s: failed to drop privileges (%s)\n" msgstr "" #, c-format -msgid "" -"%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " -"SUB_GID_COUNT (%lu)\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" msgstr "" #, c-format -msgid "%s: Can't get unique subordinate GID range\n" +msgid "%s: cannot access chroot directory %s: %s\n" msgstr "" #, c-format -msgid "" -"%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " -"SUB_UID_COUNT (%lu)\n" +msgid "%s: unable to chroot to directory %s: %s\n" msgstr "" #, c-format -msgid "%s: Can't get unique subordinate UID range\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" msgstr "" #, c-format msgid "" -"%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " -"(%lu)\n" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" msgstr "" #, c-format -msgid "%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n" +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" msgstr "" -#, c-format -msgid "%s: Encountered error attempting to use preferred UID: %s\n" +msgid "Cannot open audit interface.\n" msgstr "" #, c-format -msgid "" -"%s: Can't get unique system UID (%s). Suppressing additional messages.\n" +msgid "%s: can not get previous SELinux process context: %s\n" msgstr "" #, c-format -msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" +msgid "[libsemanage]: %s\n" msgstr "" #, c-format -msgid "%s: Can't get unique UID (no more available UIDs)\n" +msgid "Cannot create SELinux management handle\n" msgstr "" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "SELinux policy not managed\n" msgstr "" #, c-format -msgid "%s: Memory allocation failure\n" +msgid "Cannot read SELinux policy store\n" msgstr "" #, c-format -msgid "%s: subuid overflow detected.\n" +msgid "Cannot establish SELinux management connection\n" msgstr "" #, c-format -msgid "%s: Invalid map file %s specified\n" +msgid "Cannot begin SELinux transaction\n" msgstr "" #, c-format -msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" +msgid "Could not query seuser for %s\n" msgstr "" #, c-format -msgid "%s: Could not seteuid to %d\n" +msgid "Could not set serange for %s to %s\n" msgstr "" #, c-format -msgid "%s: Could not set caps\n" +msgid "Could not set sename for %s\n" msgstr "" #, c-format -msgid "%s: snprintf failed!\n" +msgid "Could not modify login mapping for %s\n" msgstr "" #, c-format -msgid "%s: open of %s failed: %s\n" +msgid "Cannot create SELinux login mapping for %s\n" msgstr "" #, c-format -msgid "%s: write to %s failed: %s\n" +msgid "Could not set name for %s\n" msgstr "" -msgid "Too many logins.\n" +#, c-format +msgid "Could not set SELinux user for %s\n" msgstr "" -msgid "You have new mail." +#, c-format +msgid "Could not add login mapping for %s\n" msgstr "" -msgid "No mail." +#, c-format +msgid "Cannot init SELinux management\n" msgstr "" -msgid "You have mail." +#, c-format +msgid "Cannot create SELinux user key\n" msgstr "" -msgid "no change" +#, c-format +msgid "Cannot verify the SELinux user\n" msgstr "" -msgid "a palindrome" +#, c-format +msgid "Cannot modify SELinux user mapping\n" msgstr "" -msgid "case changes only" +#, c-format +msgid "Cannot add SELinux user mapping\n" msgstr "" -msgid "too similar" +#, c-format +msgid "Cannot commit SELinux transaction\n" msgstr "" -msgid "too simple" +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" -msgid "rotated" +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" msgstr "" -msgid "too short" +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format -msgid "Bad password: %s. " +msgid "Unable to cd to '%s'\n" msgstr "" -#, c-format -msgid "passwd: pam_start() failed, error %d\n" +msgid "No directory, logging in with HOME=/" msgstr "" #, c-format -msgid "passwd: %s\n" +msgid "Cannot execute %s" msgstr "" -msgid "passwd: password unchanged\n" +#, c-format +msgid "Maximum subsystem depth reached\n" msgstr "" -msgid "passwd: password updated successfully\n" +#, c-format +msgid "Invalid root directory '%s'\n" msgstr "" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" +msgid "Can't change root directory to '%s'\n" msgstr "" #, c-format -msgid "%s: conversation type %d not supported.\n" +msgid "%s: out of memory\n" msgstr "" #, c-format -msgid "%s: (user %s) pam_start failure %d\n" +msgid "%s: Cannot stat %s: %s\n" msgstr "" #, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" msgstr "" #, c-format -msgid "Incorrect password for %s.\n" +msgid "%s: Cannot read symbolic link %s: %s\n" msgstr "" #, c-format -msgid "%s: multiple --root options\n" +msgid "%s: Suspiciously long symlink: %s\n" msgstr "" #, c-format -msgid "%s: option '%s' requires an argument\n" +msgid "%s: Cannot create directory %s: %s\n" msgstr "" #, c-format -msgid "%s: failed to drop privileges (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" msgstr "" #, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgid "%s: Cannot change mode of %s: %s\n" msgstr "" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" +msgid "%s: unlink: %s: %s\n" msgstr "" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" msgstr "" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" msgstr "" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "%s: Cannot remove %s: %s\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "%s: Cannot change owners of %s: %s\n" msgstr "" #, c-format -msgid "Unable to cd to '%s'\n" +msgid "%s: Cannot lstat %s: %s\n" msgstr "" -msgid "No directory, logging in with HOME=/" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" msgstr "" #, c-format -msgid "Cannot execute %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" msgstr "" #, c-format -msgid "Invalid root directory '%s'\n" +msgid "%s: mkdir: %s: %s\n" msgstr "" #, c-format -msgid "Can't change root directory to '%s'\n" +msgid "%s: Cannot open %s: %s\n" msgstr "" #, c-format @@ -612,6 +612,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -637,10 +640,13 @@ msgstr "" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "" -msgid "Last password change\t\t\t\t\t: " +msgid "never" msgstr "" -msgid "never" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " msgstr "" msgid "password must be changed" @@ -810,14 +816,6 @@ msgstr "" msgid "%s: user '%s' does not exist\n" msgstr "" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "" - #, c-format msgid "Changing the user information for %s\n" msgstr "" @@ -846,6 +844,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "" @@ -896,6 +898,14 @@ msgstr "" msgid "Login Shell" msgstr "" +#, c-format +msgid "Cannot parse shell files: %s" +msgstr "" + +#, c-format +msgid "Cannot evaluate entries in shell files: %s" +msgstr "" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "" @@ -908,6 +918,10 @@ msgstr "" msgid "%s: Invalid entry: %s\n" msgstr "" +#, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "" @@ -1116,9 +1130,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1130,6 +1141,10 @@ msgstr "" msgid "%s: '%s' is not a valid group name\n" msgstr "" +#, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "" @@ -1172,14 +1187,6 @@ msgstr "" msgid "%s: group '%s' does not exist\n" msgstr "" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "" @@ -1255,10 +1262,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "" - #, c-format msgid "%s: unknown user %s\n" msgstr "" @@ -1373,7 +1376,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1462,9 +1465,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" - #, c-format msgid "" "\n" @@ -1496,12 +1496,6 @@ msgstr "" msgid "Cannot find user (%s)\n" msgstr "" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" - #, c-format msgid "%s: failure forking: %s" msgstr "" @@ -1535,7 +1529,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1559,17 +1554,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "" #, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "" - -#, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1602,13 +1593,12 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" #, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +msgid "%s: Could not stat directory for target process\n" msgstr "" msgid " -b, --badname allow bad names\n" @@ -1629,6 +1619,10 @@ msgstr "" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "" @@ -1649,6 +1643,10 @@ msgstr "" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "" +#, c-format +msgid "%s: line %d: %s\n" +msgstr "" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "" @@ -1670,11 +1668,11 @@ msgid "%s: line %d: can't update entry\n" msgstr "" #, c-format -msgid "%s: failed to prepare new %s entry\n" +msgid "%s: can't find subordinate user range\n" msgstr "" #, c-format -msgid "%s: can't find subordinate user range\n" +msgid "%s: failed to prepare new %s entry\n" msgstr "" #, c-format @@ -1735,6 +1733,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "" @@ -1750,6 +1751,9 @@ msgid "" "Please use a combination of upper and lower case letters and numbers.\n" msgstr "" +msgid "Password is too long.\n" +msgstr "" + msgid "New password: " msgstr "" @@ -1787,6 +1791,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1929,11 +1937,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -1992,6 +1998,10 @@ msgstr "" msgid "No passwd entry for user '%s'\n" msgstr "" +#, c-format +msgid "Overlong user name '%s'\n" +msgstr "" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "" @@ -2035,15 +2045,17 @@ msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" #, c-format -msgid "%s: cannot create new defaults file: %s\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" msgstr "" #, c-format -msgid "%s: cannot create directory for defaults file\n" +msgid "%s: cannot create new defaults file: %s\n" msgstr "" #, c-format -msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" msgstr "" #, c-format @@ -2062,10 +2074,6 @@ msgstr "" msgid "%s: rename: %s: %s\n" msgstr "" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "" @@ -2175,6 +2183,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "" @@ -2301,6 +2314,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +msgid "Synchronize mailbox file" +msgstr "" + +msgid "Closing mailbox file" +msgstr "" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2413,10 +2432,6 @@ msgstr "" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "" @@ -2514,6 +2529,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2596,10 +2615,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "" @@ -2695,7 +2722,7 @@ msgstr "" msgid "failed to stat edited file" msgstr "" -msgid "failed to allocate memory" +msgid "asprintf(3) failed" msgstr "" msgid "failed to create backup file" diff --git a/po/sk.gmo b/po/sk.gmo index df70d1b..6d36ce9 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index 83d7c6f..82e046e 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2011-11-26 22:06+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -16,223 +16,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural= (n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Existuje viac záznamov s názvom „%s“ v %s. Prosím, napravte to pomocou pwck " -"alebo grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "libcrypt nepodporuje metódy šifrovania? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Na konfiguračné údaje sa nedá vyhradiť dostatok miesta.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"konfiguračná chyba - neznámy predmet „%s“ (informujte správcu systému)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Heslo: " - -#, c-format -msgid "%s's Password: " -msgstr "Heslo používateľa %s:" - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Nie je možné otvoriť rozhranie pre audit - prerušuje sa.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Na konfiguračné údaje sa nedá vyhradiť dostatok miesta.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Menia sa informácie vypršania platnosti pre používateľa %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: vaše používateľské meno sa nedá zistiť.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: riadok %d: nedá sa nájsť používateľ %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: nedostatok pamäti\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: nie je možné zmazať %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: chybný domovský adresár „%s“\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: nie je možné odstrániť položku „%s“ z %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: nedá sa vytvoriť adresár %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "lastlog: Nepodarilo sa zistiť veľkosť %s: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: upozornenie: nemôžem odstrániť %s: %s" - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: premenovať: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: adresár %s sa nedá premenovať na %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: adresár %s sa nedá premenovať na %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: upozornenie: nemôžem odstrániť %s: %s" - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: nedá sa vytvoriť adresár %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "lastlog: Nepodarilo sa zistiť veľkosť %s: %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: nie je možné zmazať %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: súbor s tieňovými heslami sa nedá aktualizovať\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: premenovať: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: súbor %s sa nedá otvoriť\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Upozornenie: skupina %s je neznáma\n" @@ -279,6 +62,13 @@ msgstr "Nedá sa zmeniť režim vlastníka TTY štandardného vstupu: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: nepodarilo sa odmknúť %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Existuje viac záznamov s názvom „%s“ v %s. Prosím, napravte to pomocou pwck " +"alebo grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -286,8 +76,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Preplnenie prostredia\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "libcrypt nepodporuje metódy šifrovania? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -391,9 +182,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Nedá sa získať jedinečný UID (už nie sú dostupné žiadne UID)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" +msgid "Could not allocate space for config info.\n" +msgstr "Na konfiguračné údaje sa nedá vyhradiť dostatok miesta.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"konfiguračná chyba - neznámy predmet „%s“ (informujte správcu systému)\n" + #, fuzzy, c-format #| msgid "%s: Authentication failure\n" msgid "%s: Memory allocation failure\n" @@ -422,7 +221,7 @@ msgstr "Na konfiguračné údaje sa nedá vyhradiť dostatok miesta.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: nedá sa otvoriť súbor\n" #, fuzzy, c-format @@ -433,9 +232,21 @@ msgstr "%s: riadok %d: volanie chown zlyhalo\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: riadok %d: volanie chown zlyhalo\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: riadok %d: volanie chown zlyhalo\n" + msgid "Too many logins.\n" msgstr "Príliš mnoho prihlásení.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"Prihlasovacie meno na %s: " + msgid "You have new mail." msgstr "Máte novú poštu." @@ -445,6 +256,14 @@ msgstr "Nemáte žiadnu poštu." msgid "You have mail." msgstr "Máte poštu." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "žiadna zmena" @@ -457,9 +276,6 @@ msgstr "iba zmeny vo veľkosti písmen" msgid "too similar" msgstr "veľmi podobné" -msgid "too simple" -msgstr "veľmi jednoduché" - msgid "rotated" msgstr "opakované" @@ -505,6 +321,13 @@ msgid "" "%s\n" msgstr "passwd: volanie pam_start() zlyhalo, chyba %d\n" +msgid "Password: " +msgstr "Heslo: " + +#, c-format +msgid "%s's Password: " +msgstr "Heslo používateľa %s:" + #, c-format msgid "Incorrect password for %s.\n" msgstr "Chybné heslo pre %s.\n" @@ -529,31 +352,128 @@ msgstr "%s: chybné telefónne číslo domov: „%s“\n" msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: nedá sa vytvoriť adresár %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: nedá sa vytvoriť adresár %s\n" +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: nedá sa vytvoriť adresár %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: nedá sa vytvoriť adresár %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"neplatná hodnota ENCRYPT_METHOD: „%s“.\n" +"Používa sa štandardná hodnota DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Nie je možné otvoriť rozhranie pre audit - prerušuje sa.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Na konfiguračné údaje sa nedá vyhradiť dostatok miesta.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Na konfiguračné údaje sa nedá vyhradiť dostatok miesta.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Menia sa informácie vypršania platnosti pre používateľa %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: vaše používateľské meno sa nedá zistiť.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: riadok %d: nedá sa nájsť používateľ %s\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" -#, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: nedá sa vytvoriť adresár %s\n" +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" msgstr "" -"neplatná hodnota ENCRYPT_METHOD: „%s“.\n" -"Používa sa štandardná hodnota DES.\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -567,6 +487,10 @@ msgstr "Žiadny adresár, prihlásenie s HOME na /" msgid "Cannot execute %s" msgstr "%s sa nedá spustiť." +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Chybný koreňový adresár „%s“\n" @@ -575,6 +499,84 @@ msgstr "Chybný koreňový adresár „%s“\n" msgid "Can't change root directory to '%s'\n" msgstr "Koreňový adresár sa nedá zmeniť na „%s“\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nedostatok pamäti\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: nie je možné zmazať %s\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: chybný domovský adresár „%s“\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: nie je možné odstrániť položku „%s“ z %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: nedá sa vytvoriť adresár %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "lastlog: Nepodarilo sa zistiť veľkosť %s: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: upozornenie: nemôžem odstrániť %s: %s" + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: premenovať: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: adresár %s sa nedá premenovať na %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: adresár %s sa nedá premenovať na %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: upozornenie: nemôžem odstrániť %s: %s" + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: nedá sa vytvoriť adresár %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "lastlog: Nepodarilo sa zistiť veľkosť %s: %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: nie je možné zmazať %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: súbor s tieňovými heslami sa nedá aktualizovať\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: premenovať: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: súbor %s sa nedá otvoriť\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: používateľ %s je práve prihlásený\n" @@ -649,6 +651,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -677,12 +682,15 @@ msgstr "Nečinné heslo" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Uplynutie platnosti účtu (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Posledná zmena hesla\t\t\t\t\t: " - msgid "never" msgstr "nikdy" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Posledná zmena hesla\t\t\t\t\t: " + msgid "password must be changed" msgstr "heslo je potrebné zmeniť" @@ -853,14 +861,6 @@ msgstr "%s: „%s“ obsahuje chybné znaky\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: používateľ „%s“ neexistuje\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: na NIC klientovi sa nedá zmeniť používateľ „%s“.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: „%s“ je hlavným NIS serverom pre tohto klienta.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Mením informácie o používateľovi %s\n" @@ -900,6 +900,11 @@ msgstr "" " -s, --sha-rounds počet cyklov šifrovacích\n" " algoritmov SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: nepodporovaná metóda šifrovania: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: prepínač %s je povolený iba s prepínačom %s\n" @@ -950,6 +955,16 @@ msgstr "" msgid "Login Shell" msgstr "Predvolený shell" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Nepodarilo sa zistiť veľkosť %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Nemôžete zmeniť shell pre „%s“.\n" @@ -962,6 +977,11 @@ msgstr "Mením predvolený shell pre %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Chybná položka: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s je neplatný shell\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s je neplatný shell\n" @@ -1194,9 +1214,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system vytvorí systémový účet\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1211,6 +1228,10 @@ msgstr "chybné používateľské meno „%s“\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: „%s“ nie je platným názvom skupiny\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: súbor %s sa nedá otvoriť\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: chybný ID skupiny „%s“\n" @@ -1255,14 +1276,6 @@ msgstr "%s: nie je možné odstrniť primárnu skupinu používateľa „%s“.\ msgid "%s: group '%s' does not exist\n" msgstr "%s: skupina „%s“ neexistuje\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: skupina „%s“ je skupinou NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s je hlavným NIS serverom\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: používateľ „%s“ je členom „%s“\n" @@ -1351,10 +1364,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: chybné pomenovanie skupiny „%s“\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: skupina %s je NIS skupinou\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: používateľ %s je neznámy\n" @@ -1476,7 +1485,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all zobrazí faillog záznamy všetkých " @@ -1575,9 +1584,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Žiaden utmp záznam. Musíte spustiť „login“ z najnižšej inštancie „sh“" - #, c-format msgid "" "\n" @@ -1611,14 +1617,6 @@ msgstr "Chybné prihlásenie" msgid "Cannot find user (%s)\n" msgstr "%s: riadok %d: nedá sa nájsť používateľ %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"Prihlasovacie meno na %s: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: chybné vetvenie: %s" @@ -1654,7 +1652,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1682,17 +1681,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: nepodarilo sa odmknúť %s\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: chybný základný adresár „%s“\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: nedá sa vytvoriť adresár %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1725,14 +1720,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: nedá sa vytvoriť adresár %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1755,6 +1749,10 @@ msgstr "%s: chybný ID používateľa „%s“\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: chybné používateľské meno „%s“\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: riadok %d: chybný riadok\n" @@ -1776,6 +1774,10 @@ msgstr "%s: riadok %d: nedá sa vytvoriť skupina\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: riadok %d: používateľ „%s“ neexistuje v %s\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: premenovať: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: riadok %d: heslo sa nedá aktualizovať\n" @@ -1796,14 +1798,14 @@ msgstr "%s: riadok %d: volanie chown zlyhalo\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: riadok %d: položka sa nedá aktualizovať\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: zlyhalo pripravenie novej položky %s „%s“\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: nie je možné vytvoriť používateľa\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: zlyhalo pripravenie novej položky %s „%s“\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: súbor s heslami sa nedá aktualizovať\n" @@ -1873,6 +1875,11 @@ msgstr "" " -x, --maxdays MAX_DNÍ nastaví maximálny počet dní pred zmenou\n" " hesla na MAX_DNÍ dní\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list zobrazí časové údaje o účte\n" + msgid "Old password: " msgstr "Staré heslo: " @@ -1892,6 +1899,11 @@ msgstr "" "Zadajte nové heslo (počet znakov v intervale %d až %d).\n" "Použijte kombináciu veľkých a malých písmen s číslicami.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: položka je príliš dlhá\n" + msgid "New password: " msgstr "Nové heslo: " @@ -1934,6 +1946,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: úložisko %s nie je podporované\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: iba root môže používať voľbu -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2084,11 +2101,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2175,6 +2190,11 @@ msgstr "%s: Nie ste momentálne oprávnení používať su\n" msgid "No passwd entry for user '%s'\n" msgstr "V súbore passwd nie je položka pre používateľa „root“" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "chybné používateľské meno „%s“\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: musí byť spustené z terminálu\n" @@ -2220,6 +2240,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2230,10 +2256,6 @@ msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: nedá sa otvoriť nový súbor s predvolenými hodnotami\n" @@ -2250,10 +2272,6 @@ msgstr "%s: nedá sa vytvoriť adresár %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: premenovať: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: skupina „%s“ je skupinou NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: bolo zadaných príliš veľa skupín (max %d).\n" @@ -2375,6 +2393,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: chybný základný adresár „%s“\n" @@ -2511,6 +2534,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Nastavujú sa prístupové práva súboru mailbox" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Vytvára sa súbor mailbox" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Vytvára sa súbor mailbox" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2639,10 +2672,6 @@ msgstr "lastlog: Nepodarilo sa zistiť veľkosť %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: nie je možné odstrániť položku „%s“ z %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: používateľ %s je NIS používateľom\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: chybný domovský adresár „%s“\n" @@ -2767,6 +2796,14 @@ msgstr "" "používateľský\n" " účet\n" +#, fuzzy +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -d, --home DOM_ADR nový domovský adresár pre nový " +"používateľský\n" +" účet\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2854,12 +2891,26 @@ msgstr "" "%s: Nepodarilo sa skopírovať položku lastlog používateľa %lu používateľovi " "%lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: Nepodarilo sa skopírovať položku lastlog používateľa %lu používateľovi " +"%lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: Nepodarilo sa skopírovať položku faillog používateľa %lu používateľovi " "%lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: Nepodarilo sa skopírovať položku faillog používateľa %lu používateľovi " +"%lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: upozornenie: vlastníkom %s nie je %s\n" @@ -2965,8 +3016,9 @@ msgid "failed to stat edited file" msgstr "chyba pri premenovaní schránky" #, fuzzy -msgid "failed to allocate memory" -msgstr "chyba pri zmene vlastníka schránky" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: nedá sa otvoriť súbor\n" #, fuzzy msgid "failed to create backup file" @@ -2980,6 +3032,56 @@ msgstr "%s: %s sa nedá obnoviť: %s (zmeny sú v %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: chybný základný adresár „%s“\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Preplnenie prostredia\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: na NIC klientovi sa nedá zmeniť používateľ „%s“.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: „%s“ je hlavným NIS serverom pre tohto klienta.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: skupina „%s“ je skupinou NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s je hlavným NIS serverom\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: skupina %s je NIS skupinou\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: skupina „%s“ je skupinou NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: používateľ %s je NIS používateľom\n" + +#~ msgid "too simple" +#~ msgstr "veľmi jednoduché" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Žiaden utmp záznam. Musíte spustiť „login“ z najnižšej inštancie „sh“" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: chybný základný adresár „%s“\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "chyba pri zmene vlastníka schránky" + #~ msgid "Usage: id\n" #~ msgstr "Použitie: id\n" @@ -2995,10 +3097,6 @@ msgstr "%s: chybný základný adresár „%s“\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Upozornenie o uplynutí doby platnosti hesla" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "chybné používateľské meno „%s“\n" - #~ msgid "Username Port From Latest" #~ msgstr "Používateľ Port Z Naposledy" diff --git a/po/sq.po b/po/sq.po index 2cb78d0..0a475b5 100644 --- a/po/sq.po +++ b/po/sq.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.3\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2004-11-20 03:28+0100\n" "Last-Translator: Elian Myftiu \n" "Language-Team: Albanian \n" @@ -18,544 +18,544 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" +msgid "Warning: unknown group %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" +msgid "Warning: too many groups\n" +msgstr "Kujdes: ka shumë grupe\n" -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" +msgid "Your password has expired." +msgstr "Fjalëkalimi yt ka skaduar." -msgid "Could not allocate space for config info.\n" -msgstr "" +msgid "Your password is inactive." +msgstr "Fjalëkalimi yt nuk është aktiv." -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" +msgid "Your login has expired." +msgstr "Login-i yt ka skaduar." -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" +msgid " Contact the system administrator." +msgstr " Kontakto administratorin e sistemit." -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" +msgid " Choose a new password." +msgstr " Zgjidh një fjalëkalim të ri." -msgid "Password: " +msgid "You must change your password." msgstr "" #, c-format -msgid "%s's Password: " +msgid "Your password will expire in %ld days.\n" msgstr "" -msgid "Cannot open audit interface.\n" -msgstr "" +#, fuzzy +msgid "Your password will expire tomorrow." +msgstr "Fjalëkalimi yt ka skaduar." -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" +#, fuzzy +msgid "Your password will expire today." +msgstr "Fjalëkalimi yt ka skaduar." + +msgid "Cannot open audit interface - aborting.\n" msgstr "" #, c-format -msgid "[libsemanage]: %s\n" +msgid "Unable to change owner or mode of tty stdin: %s" msgstr "" #, c-format -msgid "Cannot create SELinux management handle\n" +msgid "%s: failed to unlock %s\n" msgstr "" #, c-format -msgid "SELinux policy not managed\n" +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" msgstr "" #, c-format -msgid "Cannot read SELinux policy store\n" +msgid "%s: " msgstr "" -#, c-format -msgid "Cannot establish SELinux management connection\n" +msgid ": " msgstr "" #, c-format -msgid "Cannot begin SELinux transaction\n" +msgid "crypt method not supported by libcrypt? (%s)\n" msgstr "" #, c-format -msgid "Could not query seuser for %s\n" +msgid "You may not change $%s\n" msgstr "" #, c-format -msgid "Could not set serange for %s\n" -msgstr "" +msgid "" +"%d failure since last login.\n" +"Last was %s on %s.\n" +msgid_plural "" +"%d failures since last login.\n" +"Last was %s on %s.\n" +msgstr[0] "" +msgstr[1] "" #, c-format -msgid "Could not set sename for %s\n" +msgid "" +"%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " +"(%lu)\n" msgstr "" #, c-format -msgid "Could not modify login mapping for %s\n" +msgid "%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n" msgstr "" #, c-format -msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: Encountered error attempting to use preferred GID: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to allocate memory: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format -msgid "Could not set name for %s\n" +msgid "" +"%s: Can't get unique system GID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Could not set SELinux user for %s\n" +msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Could not add login mapping for %s\n" +msgid "%s: Can't get unique GID (no more available GIDs)\n" msgstr "" #, c-format -msgid "Cannot init SELinux management\n" +msgid "" +"%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " +"SUB_GID_COUNT (%lu)\n" msgstr "" #, fuzzy, c-format -msgid "Cannot create SELinux user key\n" +msgid "%s: Can't get unique subordinate GID range\n" msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "" +"%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " +"SUB_UID_COUNT (%lu)\n" +msgstr "" + #, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" +msgid "%s: Can't get unique subordinate UID range\n" msgstr "Kujdes: grup i panjohur %s\n" #, c-format -msgid "Cannot modify SELinux user mapping\n" +msgid "" +"%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " +"(%lu)\n" msgstr "" #, c-format -msgid "Cannot add SELinux user mapping\n" +msgid "%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n" msgstr "" #, c-format -msgid "Cannot commit SELinux transaction\n" +msgid "%s: Encountered error attempting to use preferred UID: %s\n" msgstr "" #, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgid "" +"%s: Can't get unique system UID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" msgstr "" #, c-format -msgid "Could not delete login mapping for %s" +msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "" #, c-format -msgid "%s: out of memory\n" +msgid "configuration error - cannot parse %s value: '%s'" msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +msgid "Could not allocate space for config info.\n" +msgstr "" #, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" - #, c-format -msgid "%s: Suspiciously long symlink: %s\n" +msgid "%s: Memory allocation failure\n" msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "%s: subuid overflow detected.\n" +msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "%s: Invalid map file %s specified\n" +msgstr "" -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" +msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "%s: Could not seteuid to %d\n" +msgstr "" #, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" +msgid "%s: Could not set caps\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" +msgid "%s: stpeprintf failed!\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" +msgid "%s: open of %s failed: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" +msgid "%s: write to %s failed: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" +msgid "%s: closing %s failed: %s\n" msgstr "Kujdes: grup i panjohur %s\n" -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "Kujdes: grup i panjohur %s\n" +msgid "Too many logins.\n" +msgstr "" #, c-format msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" +"\n" +"%s login: " msgstr "" -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +msgid "You have new mail." +msgstr "" -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +msgid "No mail." +msgstr "" + +msgid "You have mail." +msgstr "" #, c-format -msgid "Warning: unknown group %s\n" -msgstr "Kujdes: grup i panjohur %s\n" +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" -msgid "Warning: too many groups\n" -msgstr "Kujdes: ka shumë grupe\n" +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" -msgid "Your password has expired." -msgstr "Fjalëkalimi yt ka skaduar." +msgid "no change" +msgstr "" -msgid "Your password is inactive." -msgstr "Fjalëkalimi yt nuk është aktiv." +msgid "a palindrome" +msgstr "" -msgid "Your login has expired." -msgstr "Login-i yt ka skaduar." +msgid "case changes only" +msgstr "" -msgid " Contact the system administrator." -msgstr " Kontakto administratorin e sistemit." +msgid "too similar" +msgstr "" -msgid " Choose a new password." -msgstr " Zgjidh një fjalëkalim të ri." +msgid "rotated" +msgstr "" -msgid "You must change your password." +msgid "too short" msgstr "" #, c-format -msgid "Your password will expire in %ld days.\n" +msgid "Bad password: %s. " msgstr "" -#, fuzzy -msgid "Your password will expire tomorrow." -msgstr "Fjalëkalimi yt ka skaduar." +#, c-format +msgid "passwd: pam_start() failed, error %d\n" +msgstr "" + +#, c-format +msgid "passwd: %s\n" +msgstr "" #, fuzzy -msgid "Your password will expire today." +msgid "passwd: password unchanged\n" msgstr "Fjalëkalimi yt ka skaduar." -msgid "Cannot open audit interface - aborting.\n" +msgid "passwd: password updated successfully\n" msgstr "" #, c-format -msgid "Unable to change owner or mode of tty stdin: %s" +msgid "%s: PAM modules requesting echoing are not supported.\n" msgstr "" #, c-format -msgid "%s: failed to unlock %s\n" +msgid "%s: conversation type %d not supported.\n" msgstr "" -#, c-format -msgid "%s: " -msgstr "" +#, fuzzy, c-format +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "Kujdes: grup i panjohur %s\n" -msgid ": " +#, c-format +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" msgstr "" -msgid "Environment overflow\n" +msgid "Password: " msgstr "" #, c-format -msgid "You may not change $%s\n" +msgid "%s's Password: " msgstr "" #, c-format -msgid "" -"%d failure since last login.\n" -"Last was %s on %s.\n" -msgid_plural "" -"%d failures since last login.\n" -"Last was %s on %s.\n" -msgstr[0] "" -msgstr[1] "" +msgid "Incorrect password for %s.\n" +msgstr "" #, c-format -msgid "" -"%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " -"(%lu)\n" +msgid "%s: multiple --root options\n" msgstr "" #, c-format -msgid "%s: Invalid configuration: GID_MIN (%lu), GID_MAX (%lu)\n" +msgid "%s: option '%s' requires an argument\n" msgstr "" #, c-format -msgid "%s: Encountered error attempting to use preferred GID: %s\n" +msgid "%s: failed to drop privileges (%s)\n" msgstr "" #, fuzzy, c-format -msgid "%s: failed to allocate memory: %s\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "" -"%s: Can't get unique system GID (%s). Suppressing additional messages.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" #, c-format -msgid "%s: Can't get unique GID (no more available GIDs)\n" +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" msgstr "" #, c-format msgid "" -"%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " -"SUB_GID_COUNT (%lu)\n" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" msgstr "" -#, fuzzy, c-format -msgid "%s: Can't get unique subordinate GID range\n" -msgstr "Kujdes: grup i panjohur %s\n" +msgid "Cannot open audit interface.\n" +msgstr "" #, c-format -msgid "" -"%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " -"SUB_UID_COUNT (%lu)\n" +msgid "%s: can not get previous SELinux process context: %s\n" msgstr "" -#, fuzzy, c-format -msgid "%s: Can't get unique subordinate UID range\n" -msgstr "Kujdes: grup i panjohur %s\n" - #, c-format -msgid "" -"%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " -"(%lu)\n" +msgid "[libsemanage]: %s\n" msgstr "" #, c-format -msgid "%s: Invalid configuration: UID_MIN (%lu), UID_MAX (%lu)\n" +msgid "Cannot create SELinux management handle\n" msgstr "" #, c-format -msgid "%s: Encountered error attempting to use preferred UID: %s\n" +msgid "SELinux policy not managed\n" msgstr "" #, c-format -msgid "" -"%s: Can't get unique system UID (%s). Suppressing additional messages.\n" +msgid "Cannot read SELinux policy store\n" msgstr "" #, c-format -msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" +msgid "Cannot establish SELinux management connection\n" msgstr "" #, c-format -msgid "%s: Can't get unique UID (no more available UIDs)\n" +msgid "Cannot begin SELinux transaction\n" msgstr "" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "Could not query seuser for %s\n" msgstr "" +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format -msgid "%s: Memory allocation failure\n" +msgid "Could not set sename for %s\n" msgstr "" #, c-format -msgid "%s: subuid overflow detected.\n" +msgid "Could not modify login mapping for %s\n" msgstr "" #, c-format -msgid "%s: Invalid map file %s specified\n" +msgid "Cannot create SELinux login mapping for %s\n" msgstr "" #, c-format -msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" +msgid "Could not set name for %s\n" msgstr "" #, c-format -msgid "%s: Could not seteuid to %d\n" +msgid "Could not set SELinux user for %s\n" msgstr "" -#, fuzzy, c-format -msgid "%s: Could not set caps\n" -msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" #, c-format -msgid "%s: snprintf failed!\n" +msgid "Cannot init SELinux management\n" msgstr "" #, fuzzy, c-format -msgid "%s: open of %s failed: %s\n" +msgid "Cannot create SELinux user key\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: write to %s failed: %s\n" +msgid "Cannot verify the SELinux user\n" msgstr "Kujdes: grup i panjohur %s\n" -msgid "Too many logins.\n" -msgstr "" - -msgid "You have new mail." -msgstr "" - -msgid "No mail." -msgstr "" - -msgid "You have mail." +#, c-format +msgid "Cannot modify SELinux user mapping\n" msgstr "" -msgid "no change" +#, c-format +msgid "Cannot add SELinux user mapping\n" msgstr "" -msgid "a palindrome" +#, c-format +msgid "Cannot commit SELinux transaction\n" msgstr "" -msgid "case changes only" +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" msgstr "" -msgid "too similar" +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" msgstr "" -msgid "too simple" +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" -msgid "rotated" +#, c-format +msgid "Unable to cd to '%s'\n" msgstr "" -msgid "too short" +msgid "No directory, logging in with HOME=/" msgstr "" #, c-format -msgid "Bad password: %s. " +msgid "Cannot execute %s" msgstr "" #, c-format -msgid "passwd: pam_start() failed, error %d\n" +msgid "Maximum subsystem depth reached\n" msgstr "" #, c-format -msgid "passwd: %s\n" -msgstr "" - -#, fuzzy -msgid "passwd: password unchanged\n" -msgstr "Fjalëkalimi yt ka skaduar." - -msgid "passwd: password updated successfully\n" +msgid "Invalid root directory '%s'\n" msgstr "" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" +msgid "Can't change root directory to '%s'\n" msgstr "" #, c-format -msgid "%s: conversation type %d not supported.\n" +msgid "%s: out of memory\n" msgstr "" #, fuzzy, c-format -msgid "%s: (user %s) pam_start failure %d\n" +msgid "%s: Cannot stat %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, c-format -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" +msgid "%s: %s is neither a directory, nor a symlink.\n" msgstr "" -#, c-format -msgid "Incorrect password for %s.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" #, c-format -msgid "%s: multiple --root options\n" +msgid "%s: Suspiciously long symlink: %s\n" msgstr "" -#, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgid "%s: Cannot change mode of %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" +msgid "%s: unlink: %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "Unable to cd to '%s'\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "" +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "Kujdes: grup i panjohur %s\n" #, c-format -msgid "Cannot execute %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" msgstr "" -#, c-format -msgid "Invalid root directory '%s'\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -614,6 +614,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -639,10 +642,13 @@ msgstr "" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "" -msgid "Last password change\t\t\t\t\t: " +msgid "never" msgstr "" -msgid "never" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " msgstr "" msgid "password must be changed" @@ -813,14 +819,6 @@ msgstr "" msgid "%s: user '%s' does not exist\n" msgstr "" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "" - #, c-format msgid "Changing the user information for %s\n" msgstr "" @@ -849,6 +847,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "" @@ -899,6 +901,14 @@ msgstr "" msgid "Login Shell" msgstr "" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "Kujdes: grup i panjohur %s\n" + +#, fuzzy, c-format +msgid "Cannot evaluate entries in shell files: %s" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "" @@ -911,6 +921,10 @@ msgstr "" msgid "%s: Invalid entry: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "" @@ -1119,9 +1133,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1133,6 +1144,10 @@ msgstr "" msgid "%s: '%s' is not a valid group name\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -1175,14 +1190,6 @@ msgstr "" msgid "%s: group '%s' does not exist\n" msgstr "" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "" @@ -1258,10 +1265,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "" - #, c-format msgid "%s: unknown user %s\n" msgstr "" @@ -1377,7 +1380,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1466,9 +1469,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" - #, c-format msgid "" "\n" @@ -1500,12 +1500,6 @@ msgstr "" msgid "Cannot find user (%s)\n" msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" - #, c-format msgid "%s: failure forking: %s" msgstr "" @@ -1539,7 +1533,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1563,17 +1558,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "Kujdes: grup i panjohur %s\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "Kujdes: grup i panjohur %s\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "Kujdes: grup i panjohur %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1607,14 +1598,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "Kujdes: grup i panjohur %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1634,6 +1624,10 @@ msgstr "" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "" @@ -1654,6 +1648,10 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "" @@ -1674,14 +1672,14 @@ msgstr "Kujdes: grup i panjohur %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 "Kujdes: grup i panjohur %s\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -1740,6 +1738,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "" @@ -1755,6 +1756,10 @@ msgid "" "Please use a combination of upper and lower case letters and numbers.\n" msgstr "" +#, fuzzy +msgid "Password is too long.\n" +msgstr "Fjalëkalimi yt ka skaduar." + msgid "New password: " msgstr "" @@ -1792,6 +1797,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1935,11 +1944,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -1998,6 +2005,10 @@ msgstr "" msgid "No passwd entry for user '%s'\n" msgstr "" +#, c-format +msgid "Overlong user name '%s'\n" +msgstr "" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "" @@ -2041,6 +2052,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -2049,10 +2066,6 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: cannot create directory for defaults file\n" msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "" @@ -2069,10 +2082,6 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: rename: %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "" @@ -2182,6 +2191,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "" @@ -2308,6 +2322,12 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +msgid "Synchronize mailbox file" +msgstr "" + +msgid "Closing mailbox file" +msgstr "" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2420,10 +2440,6 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "" @@ -2521,6 +2537,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2603,10 +2623,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "" @@ -2702,7 +2730,7 @@ msgstr "" msgid "failed to stat edited file" msgstr "" -msgid "failed to allocate memory" +msgid "asprintf(3) failed" msgstr "" msgid "failed to create backup file" @@ -2717,11 +2745,11 @@ msgid "%s: failed to find tcb directory for %s\n" msgstr "" #, fuzzy, c-format -#~ msgid "%s: password expiry information changed.\n" -#~ msgstr "Fjalëkalimi yt ka skaduar." +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "Kujdes: grup i panjohur %s\n" -#, fuzzy -#~ msgid "Password set to expire." +#, fuzzy, c-format +#~ msgid "%s: password expiry information changed.\n" #~ msgstr "Fjalëkalimi yt ka skaduar." #, fuzzy diff --git a/po/sv.gmo b/po/sv.gmo index 136216a..8a5531a 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index f705f48..4443c44 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2011-11-25 22:08+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -17,222 +17,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Flera poster med namnet \"%s\" finns i %s. Rätta till detta med pwck eller " -"grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "krypteringsmetoden stöds inte av libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "konfigurationsfel - kan inte tolka %s-värde: \"%s\"" - -msgid "Could not allocate space for config info.\n" -msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "konfigurationsfel - okänd post \"%s\" (informera administratören)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Lösenord: " - -#, c-format -msgid "%s's Password: " -msgstr "%s lösenord: " - -msgid "Cannot open audit interface.\n" -msgstr "" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Ändrar åldersinformationen för %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Kan inte fastställa ditt användarnamn.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: Kan inte grena användarskal\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: slut på minne\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: Kan inte ta status på %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s är varken en katalog eller symbolisk länk.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Kan inte läsa symboliska länken %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Misstänkt lång symbolisk länk: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Kan inte skapa katalogen %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Kan inte byta ägare för %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Kan inte ändra rättigheter för %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Kan inte ta bort katalogen %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Kan inte byta namn på %s till %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Kan inte ta bort %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Kan inte skapa symboliska länken %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Kan inte byta ägare för %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Kan inte lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Varning, användaren %s har ingen tcb shadow-fil.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Nödläge: tcb shadow för %s är inte en vanlig fil med st_nlink=1.\n" -"Kontot lämnas kvar som låst.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Kan inte öppna %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Varning: okänd grupp %s\n" @@ -279,6 +63,13 @@ msgstr "Kunde inte ändra ägare eller rättigheter för tty standard in: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: misslyckades med att låsa upp %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Flera poster med namnet \"%s\" finns i %s. Rätta till detta med pwck eller " +"grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -286,8 +77,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Överskott av miljövariabler\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "krypteringsmetoden stöds inte av libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -404,8 +196,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Kan inte få unikt UID (inga fler tillgängliga UID)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "konfigurationsfel - kan inte tolka %s-värde: \"%s\"" + +msgid "Could not allocate space for config info.\n" +msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "konfigurationsfel - okänd post \"%s\" (informera administratören)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -433,9 +232,10 @@ msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" msgid "%s: Could not set caps\n" msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: rad %d: chown %s misslyckades: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -447,9 +247,22 @@ msgstr "%s: rad %d: chown %s misslyckades: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: rad %d: chown %s misslyckades: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: rad %d: chown %s misslyckades: %s\n" + msgid "Too many logins.\n" msgstr "För många inloggningsförsök.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s inloggning: " + msgid "You have new mail." msgstr "Du har ny post." @@ -459,6 +272,14 @@ msgstr "Ingen post." msgid "You have mail." msgstr "Du har post." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "ingen ändring" @@ -471,9 +292,6 @@ msgstr "endast ändring av gemener/versaler" msgid "too similar" msgstr "för likt" -msgid "too simple" -msgstr "för enkelt" - msgid "rotated" msgstr "roterat" @@ -507,87 +325,273 @@ msgstr "" msgid "%s: conversation type %d not supported.\n" msgstr "%s: repository %s stöds inte\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: fel %d\n" +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: fel %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() misslyckades, fel %d\n" + +msgid "Password: " +msgstr "Lösenord: " + +#, c-format +msgid "%s's Password: " +msgstr "%s lösenord: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Felaktigt lösenord för %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: misslyckades med att kasta rättigheterna (%s)\n" + +#, fuzzy, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: ogiltigt telefonnummer (hem): \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: Kan inte skapa katalogen %s: %s\n" + +#, fuzzy, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: Misslyckades med att skapa tcb-katalog för %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: Kan inte skapa katalogen %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Ogiltigt värde för ENCRYPT_METHOD: \"%s\".\n" +"Faller tillbaka på DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +msgid "Cannot open audit interface.\n" +msgstr "" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Kunde inte allokera plats för konfigurationsinformationen.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Ändrar åldersinformationen för %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Kan inte fastställa ditt användarnamn.\n" + +#, fuzzy, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "%s: Kan inte grena användarskal\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Kunde inte byta katalog till \"%s\"\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Ingen katalog, loggar in med HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Kunde inte starta %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Felaktig rotkatalog \"%s\"\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() misslyckades, fel %d\n" +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Kan inte ändra rotkatalog till \"%s\"\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Felaktigt lösenord för %s.\n" +msgid "%s: out of memory\n" +msgstr "%s: slut på minne\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "" +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: Kan inte ta status på %s: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "" +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s är varken en katalog eller symbolisk länk.\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: misslyckades med att kasta rättigheterna (%s)\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Kan inte läsa symboliska länken %s: %s\n" -#, fuzzy, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: ogiltigt telefonnummer (hem): \"%s\"\n" +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Misstänkt lång symbolisk länk: %s\n" -#, fuzzy, c-format -msgid "%s: cannot access chroot directory %s: %s\n" +#, c-format +msgid "%s: Cannot create directory %s: %s\n" msgstr "%s: Kan inte skapa katalogen %s: %s\n" -#, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: Kan inte skapa katalogen %s: %s\n" +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Kan inte byta ägare för %s: %s\n" -#, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: Misslyckades med att skapa tcb-katalog för %s\n" +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Kan inte ändra rättigheter för %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "%s: unlink: %s: %s\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Ogiltigt värde för ENCRYPT_METHOD: \"%s\".\n" -"Faller tillbaka på DES.\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Kan inte ta bort katalogen %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Kan inte byta namn på %s till %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Kunde inte byta katalog till \"%s\"\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Kan inte ta bort %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Ingen katalog, loggar in med HOME=/" +#, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Kan inte skapa symboliska länken %s: %s\n" #, c-format -msgid "Cannot execute %s" -msgstr "Kunde inte starta %s" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Kan inte byta ägare för %s: %s\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Felaktig rotkatalog \"%s\"\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Kan inte lstat %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Kan inte ändra rotkatalog till \"%s\"\n" +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Varning, användaren %s har ingen tcb shadow-fil.\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Nödläge: tcb shadow för %s är inte en vanlig fil med st_nlink=1.\n" +"Kontot lämnas kvar som låst.\n" + +#, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" + +#, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Kan inte öppna %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -667,6 +671,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -694,12 +701,15 @@ msgstr "Lösenordet inaktivt" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Utlöpsdatum för kontot (ÅÅÅÅ-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Senaste lösenordsändringen\t\t\t\t: " - msgid "never" msgstr "aldrig" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Senaste lösenordsändringen\t\t\t\t: " + msgid "password must be changed" msgstr "lösenordet måste ändras" @@ -871,14 +881,6 @@ msgstr "%s: \"%s\" innehåller ogiltiga tecken\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: användaren \"%s\" finns inte\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: kan inte ändra användare \"%s\" på en NIS-klient.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: \"%s\" är NIS-master för denna klient.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Ändrar användarinformationen för %s\n" @@ -918,6 +920,11 @@ msgstr "" " -s, --sha-rounds antal SHA-rundor för SHA*-\n" " krypteringsalgoritmerna\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: krypteringsmetoden stöds inte: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: flaggan %s tillåts endast med flaggan %s\n" @@ -969,6 +976,16 @@ msgstr "" msgid "Login Shell" msgstr "Inloggningsskal" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Kan inte få storleken för %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: kan inte skapa ny standardfil\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Du får inte ändra skalet för \"%s\".\n" @@ -981,6 +998,11 @@ msgstr "Ändrar inloggningsskal för %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Ogiltig post: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s är ett ogiltigt skal\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s är ett ogiltigt skal\n" @@ -1214,9 +1236,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system skapa ett systemkonto\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1231,6 +1250,11 @@ msgstr "ogiltigt användarnamn \"%s\"\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: \"%s\" är inte ett giltigt gruppnamn\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Kan inte öppna %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: ogiltigt grupp-id \"%s\"\n" @@ -1275,14 +1299,6 @@ msgstr "%s: kan inte ta bort primära gruppen för användaren \"%s\"\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: gruppen \"%s\" finns inte\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: gruppen \"%s\" är en NIS-grupp\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s är NIS master\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: användaren \"%s\" är redan medlem av \"%s\"\n" @@ -1383,10 +1399,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: ogiltigt gruppnamn \"%s\"\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: gruppen %s är en NIS-grupp\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: okänd användare %s\n" @@ -1513,7 +1525,7 @@ msgstr "" #, fuzzy msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -a, --all visa faillog-poster för alla användare\n" @@ -1615,9 +1627,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Kan inte fungera utan en användbar root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "Ingen utmp post. Du måste köra \"login\" från den lägsta nivån \"sh\"" - #, c-format msgid "" "\n" @@ -1651,14 +1660,6 @@ msgstr "Inloggning misslyckad" msgid "Cannot find user (%s)\n" msgstr "%s: Kan inte grena användarskal\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s inloggning: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: fel vid processdelning: %s" @@ -1694,7 +1695,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1720,20 +1722,15 @@ msgstr "%s: misslyckades med att ta bort %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: misslyckades med att låsa upp %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: misslyckades med att hitta tcb-katalog för %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Misslyckades med att skapa tcb-katalog för %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1766,14 +1763,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Misslyckades med att skapa tcb-katalog för %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1796,6 +1793,10 @@ msgstr "%s: ogiltigt användar-id \"%s\"\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: ogiltigt användarnamn \"%s\"\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: rad %d: ogiltig rad\n" @@ -1818,6 +1819,11 @@ msgstr "%s: rad %d: kan inte skapa grupp\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: rad %d: användaren \"%s\" finns inte i %s\n" +#, fuzzy, c-format +#| msgid "%s: rename: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: byt namn: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: rad %d: kan inte uppdatera lösenord\n" @@ -1839,14 +1845,14 @@ msgstr "%s: rad %d: chown %s misslyckades: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: rad %d: kan inte uppdatera post\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: misslyckades med att förbereda den nya %s-posten \"%s\"\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: kan inte skapa användare\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: misslyckades med att förbereda den nya %s-posten \"%s\"\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: kan inte skapa grupp\n" @@ -1923,6 +1929,11 @@ msgstr "" "lösenords-\n" " ändring till MAX_DAGAR\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list visa åldringsinformation om kontot\n" + msgid "Old password: " msgstr "Gammalt lösenord: " @@ -1942,6 +1953,11 @@ msgstr "" "Ange det nya lösenordet (minimum %d, maximum %d tecken)\n" "Använd en kombination av gemener, versaler och siffror.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: fälten för långa\n" + msgid "New password: " msgstr "Nytt lösenord: " @@ -1986,6 +2002,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: repository %s stöds inte\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: endast root kan använda flaggan -g/--group\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2139,11 +2160,9 @@ msgstr "%s: signalfel\n" msgid "Session terminated, terminating shell..." msgstr "Sessionen terminerad, terminerar skal..." -#, c-format msgid " ...killed.\n" msgstr " ...dödad.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...väntar på att barn ska termineras.\n" @@ -2230,6 +2249,11 @@ msgstr "%s: Du är inte behörig att använda su för tillfället\n" msgid "No passwd entry for user '%s'\n" msgstr "Ingen lösenordspost för \"root\"" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "ogiltigt användarnamn \"%s\"\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: måste köras från en terminal\n" @@ -2275,6 +2299,13 @@ msgstr "%s: %s skapades men kunde inte tas bort\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: %s-konfigurationen i %s kommer att ignoreras\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: %s-konfigurationen i %s kommer att ignoreras\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2285,10 +2316,6 @@ msgstr "%s: kan inte skapa ny standardfil\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: kan inte skapa ny standardfil\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: kan inte skapa ny standardfil\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: kan inte öppna ny fil med standardvärden\n" @@ -2305,10 +2332,6 @@ msgstr "%s: Kan inte skapa symboliska länken %s: %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: byt namn: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: gruppen \"%s\" är en NIS-grupp.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: för många grupper angivna (max %d).\n" @@ -2447,6 +2470,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: ogiltig baskatalog \"%s\"\n" @@ -2594,6 +2622,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Ställer in rättigheter för postlådefil" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Skapar postlådefil" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Skapar postlådefil" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2723,10 +2761,6 @@ msgstr "%s: Kan inte ta bort innehållet i %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Kan inte ta bort tcb-filer för %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: användaren %s är en NIS-användare\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s hemkatalogen (%s) hittades inte\n" @@ -2854,6 +2888,12 @@ msgid "" msgstr "" " -s, --shell SHELL nytt inloggningsskal för användarkontot\n" +#, fuzzy +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -s, --shell SHELL nytt inloggningsskal för användarkontot\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2950,12 +2990,26 @@ msgstr "" "%s: misslyckades med att kopiera lastlog-posten för användaren %lu till " "användaren %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: misslyckades med att kopiera lastlog-posten för användaren %lu till " +"användaren %lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: misslyckades med att kopiera faillog-posten för användaren %lu till " "användaren %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: misslyckades med att kopiera faillog-posten för användaren %lu till " +"användaren %lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: varning: %s ägs inte av %s\n" @@ -3057,8 +3111,8 @@ msgstr "" msgid "failed to stat edited file" msgstr "misslyckades med att ta status på redigerade filen" -msgid "failed to allocate memory" -msgstr "misslyckades att allokera minne" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "misslyckades med att skapa säkerhetskopia" @@ -3071,6 +3125,56 @@ msgstr "%s: kan inte återställa %s: %s (dina ändringar finns i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: misslyckades med att hitta tcb-katalog för %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Överskott av miljövariabler\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: kan inte ändra användare \"%s\" på en NIS-klient.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: \"%s\" är NIS-master för denna klient.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: gruppen \"%s\" är en NIS-grupp\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s är NIS master\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: gruppen %s är en NIS-grupp\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: kan inte skapa ny standardfil\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: gruppen \"%s\" är en NIS-grupp.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: användaren %s är en NIS-användare\n" + +#~ msgid "too simple" +#~ msgstr "för enkelt" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Ingen utmp post. Du måste köra \"login\" från den lägsta nivån \"sh\"" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: misslyckades med att hitta tcb-katalog för %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "misslyckades att allokera minne" + #~ msgid "Usage: id\n" #~ msgstr "Användning: id\n" @@ -3086,10 +3190,6 @@ msgstr "%s: misslyckades med att hitta tcb-katalog för %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: information om lösenordets utgång har ändrats.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "ogiltigt användarnamn \"%s\"\n" - #~ msgid "Username Port From Latest" #~ msgstr "Användarnamn Port Från Senast" diff --git a/po/tl.gmo b/po/tl.gmo index a75b187..7750180 100644 Binary files a/po/tl.gmo and b/po/tl.gmo differ diff --git a/po/tl.po b/po/tl.po index 16287fe..9a04b6c 100644 --- a/po/tl.po +++ b/po/tl.po @@ -10,7 +10,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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2007-11-26 21:34+0100\n" "Last-Translator: Eric Pareja \n" "Language-Team: Tagalog \n" @@ -20,222 +20,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Hindi makapaglaan ng lugar para sa impormasyong pagsasaayos.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"may mali sa pagsasaayos - hindi kilalang item '%s' (ipaalam sa " -"tagapangasiwa)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Kontrasenyas: " - -#, c-format -msgid "%s's Password: " -msgstr "Kontrasenyas ni %s: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Hindi mabuksan ang talaksang password\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Hindi makapaglaan ng lugar para sa impormasyong pagsasaayos.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Pinapalitan ang impormasyong pagtanda para kay %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Hindi makilala ang inyong pangalan.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: linya %d: hindi mahanap ang gumagamit %s\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: nagkulang ng memory\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: hindi ma-apdeyt ang talaksang %s\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: hindi tanggap na directory na tahanan '%s'\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: hindi malikha ang directory %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: babala: hindi matanggal " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: babala: hindi matanggal " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: baguhin ang pangalan: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: babala: hindi matanggal " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: hindi malikha ang directory %s\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: babala: hindi matanggal " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: hindi ma-apdeyt ang talaksang %s\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: hindi maapdeyt ang talaksang shadow\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: baguhin ang pangalan: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: hindi mabuksan ang talaksang %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Babala: hindi kilalang grupo %s\n" @@ -282,6 +66,11 @@ msgstr "Hindi mabago ang tty %s" msgid "%s: failed to unlock %s\n" msgstr "%s: mahaba masyado ang mga field\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -289,8 +78,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Umapaw ang kapaligiran\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "" #, c-format msgid "You may not change $%s\n" @@ -393,8 +183,17 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: hindi makakuha ng kakaibang UID\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" + +msgid "Could not allocate space for config info.\n" +msgstr "Hindi makapaglaan ng lugar para sa impormasyong pagsasaayos.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"may mali sa pagsasaayos - hindi kilalang item '%s' (ipaalam sa " +"tagapangasiwa)\n" #, fuzzy, c-format msgid "%s: Memory allocation failure\n" @@ -423,7 +222,7 @@ msgstr "Hindi makapaglaan ng lugar para sa impormasyong pagsasaayos.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: hindi mabuksan ang talaksan\n" #, fuzzy, c-format @@ -434,9 +233,21 @@ msgstr "%s: linya %d: bigo ang chown\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: linya %d: bigo ang chown\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: linya %d: bigo ang chown\n" + msgid "Too many logins.\n" msgstr "Labis ang mga login.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s login: " + msgid "You have new mail." msgstr "May bago kang email." @@ -446,6 +257,14 @@ msgstr "Walang email." msgid "You have mail." msgstr "Mayroon kang email." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "walang pagbabago" @@ -458,9 +277,6 @@ msgstr "nagpalit lamang ng laki ng titik" msgid "too similar" msgstr "labis na magkatulad" -msgid "too simple" -msgstr "labis na simple" - msgid "rotated" msgstr "inikot" @@ -507,6 +323,13 @@ msgid "" "%s\n" msgstr "passwd: bigo ang pam_start(), error %d\n" +msgid "Password: " +msgstr "Kontrasenyas: " + +#, c-format +msgid "%s's Password: " +msgstr "Kontrasenyas ni %s: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "Maling kontrasenyas para kay %s.\n" @@ -532,28 +355,125 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: hindi malikha ang directory %s\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: hindi malikha ang directory %s\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Hindi mabuksan ang talaksang password\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Hindi makapaglaan ng lugar para sa impormasyong pagsasaayos.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Hindi makapaglaan ng lugar para sa impormasyong pagsasaayos.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Pinapalitan ang impormasyong pagtanda para kay %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Hindi makilala ang inyong pangalan.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: hindi malikha ang directory %s\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: linya %d: hindi mahanap ang gumagamit %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -567,6 +487,10 @@ msgstr "Walang directory, pumapasok na ang HOME=/" msgid "Cannot execute %s" msgstr "Hindi mapatakbo ang %s" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Hindi tanggap na root directory '%s'\n" @@ -575,6 +499,84 @@ msgstr "Hindi tanggap na root directory '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "Hindi mapalitan ang root directory sa '%s'\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: nagkulang ng memory\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: hindi ma-apdeyt ang talaksang %s\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: hindi tanggap na directory na tahanan '%s'\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: babala: hindi matanggal " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: babala: hindi matanggal " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: baguhin ang pangalan: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: babala: hindi matanggal " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: babala: hindi matanggal " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: hindi ma-apdeyt ang talaksang %s\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: hindi maapdeyt ang talaksang shadow\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: baguhin ang pangalan: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: hindi mabuksan ang talaksang %s\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: gumagamit na si %s ay kasalukuyang nakapasok\n" @@ -634,6 +636,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -659,12 +664,15 @@ msgstr "Inaktibo ang Password" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Hangganan ng Account (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Huling Pagpalit ng Password : " - msgid "never" msgstr "Hindi kailanman" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Huling Pagpalit ng Password : " + msgid "password must be changed" msgstr "kailangan palitan ang password" @@ -832,14 +840,6 @@ msgstr "%s: '%s' ay may hindi legal na mga karakter\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: walang gumagamit na nagngangalang %s\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: hindi mapalitan ang gumagamit '%s' sa NIS client.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: '%s' ay ang NIS master ng klienteng ito.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Pinapalitan ang impormasyon tungkol sa gumagamit na si %s\n" @@ -868,6 +868,10 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr "" +#, c-format +msgid "%s: no crypt method defined\n" +msgstr "" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: ang flag na -a ay pinapayagan LAMANG kung kasama ang flag na -G\n" @@ -918,6 +922,15 @@ msgstr "" msgid "Login Shell" msgstr "Login Shell" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Hindi niyo mapapalitan ang shell para kay %s.\n" @@ -930,6 +943,10 @@ msgstr "Pinapalitan ang login shell ni %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Hindi tanggap na entry: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "Ang %s ay hindi tanggap na shell.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "Ang %s ay hindi tanggap na shell.\n" @@ -1140,9 +1157,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1155,6 +1169,10 @@ msgstr "hindi tanggap na pangalan '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: hindi tanggap na pangalan ng grupo ang %s\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: hindi mabuksan ang talaksang %s\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "hindi tanggap na pangalan ng grupo '%s'\n" @@ -1197,14 +1215,6 @@ msgstr "%s: hindi mapalitan ang gumagamit '%s' sa NIS client.\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: walang grupong %s\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: ang grupong '%s' ay grupong NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s ay ang NIS master\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: ang gumagamit na %s ay nasa NIS\n" @@ -1280,10 +1290,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "hindi tanggap na pangalan ng grupo '%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: ang grupong %s ay grupong NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: di kilalang gumagamit %s\n" @@ -1398,7 +1404,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1492,11 +1498,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Walang nakapasok sa utmp. Kailangan niyong mag-exec \"login\" mula sa " -"pinakamababang antas ng \"sh\"" - #, fuzzy, c-format msgid "" "\n" @@ -1530,14 +1531,6 @@ msgstr "Maling pagpasok" msgid "Cannot find user (%s)\n" msgstr "%s: linya %d: hindi mahanap ang gumagamit %s\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s login: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: bigo sa pag-fork: %s" @@ -1574,7 +1567,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1599,17 +1593,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: mahaba masyado ang mga field\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: hindi tanggap na batayang directory '%s'\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: hindi malikha ang directory %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1643,14 +1633,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: hindi malikha ang directory %s\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1671,6 +1660,10 @@ msgstr "%s: hindi tanggap na pangalan `%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: hindi tanggap na pangalan `%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: linya %d: hindi tanggap na linya\n" @@ -1691,6 +1684,10 @@ msgstr "%s: linya %d: hindi makalikha ng GID\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: walang gumagamit na nagngangalang %s\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: baguhin ang pangalan: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: linya %d: hindi ma-apdeyt ang kontrasenyas\n" @@ -1711,14 +1708,14 @@ msgstr "%s: linya %d: bigo ang chown\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: linya %d: hindi ma-apdeyt ang ipinasok\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: bigo sa pagtanggal ng mga pribilehiyo (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: hindi malikha ang %s\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: bigo sa pagtanggal ng mga pribilehiyo (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: hindi ma-apdeyt ang talaksang grupo\n" @@ -1777,6 +1774,9 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Lumang kontrasenyas:" @@ -1796,6 +1796,11 @@ msgstr "" "Ibigay ang bagong kontrasenyas (minimum na %d, maximum na %d karakter)\n" "Gumamit ng kombinasyon ng malaki at maliit na titik at mga numero.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: mahaba masyado ang mga field\n" + msgid "New password: " msgstr "Bagong password: " @@ -1836,6 +1841,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: hindi suportado ang repositoryong %s\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -1980,11 +1989,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2072,6 +2079,11 @@ msgstr "Hindi kayo awtorisadong gumamit ng su %s\n" msgid "No passwd entry for user '%s'\n" msgstr "Walang ipinasok sa password para sa 'root'" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "hindi tanggap na pangalan '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: kinakailangang patakbuhin mula sa isang terminal\n" @@ -2117,6 +2129,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2127,10 +2145,6 @@ msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: hindi mabuksan ang bagong talaksan ng mga default\n" @@ -2147,10 +2161,6 @@ msgstr "%s: hindi malikha ang directory %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: baguhin ang pangalan: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: ang grupong '%s' ay grupong NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: sobrang dami ng grupo ang nakatakda (max %d).\n" @@ -2260,6 +2270,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: hindi tanggap na batayang directory '%s'\n" @@ -2391,6 +2406,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Itinatakda ang pahintulot sa talaksang mailbox" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Inililikha ang talaksang mailbox" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Inililikha ang talaksang mailbox" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2512,10 +2537,6 @@ msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: hindi mapalitan ng pangalan ang directory %s sa %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: ang gumagamit na %s ay nasa NIS\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: hindi tanggap na directory na tahanan '%s'\n" @@ -2614,6 +2635,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2697,10 +2722,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: hindi maapdeyt ang talaksang password\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: babala: %s ay hindi pag-aari ni %s\n" @@ -2806,8 +2839,9 @@ msgid "failed to stat edited file" msgstr "bigo sa pagpalit ng pangalan ng mailbox" #, fuzzy -msgid "failed to allocate memory" -msgstr "bigo sa pagpalit ng may-ari ng mailbox" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: hindi mabuksan ang talaksan\n" #, fuzzy msgid "failed to create backup file" @@ -2821,6 +2855,57 @@ msgstr "%s: hindi maibalik ang %s: %s (ang mga pagbabago ay nasa %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: hindi tanggap na batayang directory '%s'\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Umapaw ang kapaligiran\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: hindi mapalitan ang gumagamit '%s' sa NIS client.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: '%s' ay ang NIS master ng klienteng ito.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: ang grupong '%s' ay grupong NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s ay ang NIS master\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: ang grupong %s ay grupong NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: ang grupong '%s' ay grupong NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: ang gumagamit na %s ay nasa NIS\n" + +#~ msgid "too simple" +#~ msgstr "labis na simple" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Walang nakapasok sa utmp. Kailangan niyong mag-exec \"login\" mula sa " +#~ "pinakamababang antas ng \"sh\"" + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: hindi tanggap na batayang directory '%s'\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "bigo sa pagpalit ng may-ari ng mailbox" + #~ msgid "Usage: id\n" #~ msgstr "Pag-gamit: id\n" @@ -2836,10 +2921,6 @@ msgstr "%s: hindi tanggap na batayang directory '%s'\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Babala ng Paglipas ng Taning ng Password" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "hindi tanggap na pangalan '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Pangalan Puerta Mula Hulihan" diff --git a/po/tr.gmo b/po/tr.gmo index 6197b64..5ec46dd 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index 2caeb90..80c5dc4 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2008-03-29 20:31+0200\n" "Last-Translator: Mehmet Türker \n" "Language-Team: Türkçe \n" @@ -19,223 +19,6 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: KBabel 1.11.1\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"'%s' içinde '%s' isminde birden fazla giriş mevcut. Lütfen bunu pwck yada " -"grpck kullanarak düzeltin.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "kripto medotu libcrypt tarafından desteklenmiyor? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "" - -msgid "Could not allocate space for config info.\n" -msgstr "Yapılandırma bilgileri için yer ayrılamadı.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"yapılandırma hatası - bilinmeyen öğe '%s' (sistem yöneticisine bildirin)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "" - -msgid "Password: " -msgstr "Parola: " - -#, c-format -msgid "%s's Password: " -msgstr "%s kullanıcı parolası: " - -#, fuzzy -#| msgid "Cannot open the password file.\n" -msgid "Cannot open audit interface.\n" -msgstr "Parola dosyası açılamıyor.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Could not set sename for %s\n" -msgstr "Yapılandırma bilgileri için yer ayrılamadı.\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "%s için ömür bilgisi değiştiriliyor\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "" - -#, fuzzy, c-format -msgid "Cannot create SELinux user key\n" -msgstr "%s: Kullanıcı isminiz belirlenemedi.\n" - -#, fuzzy, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "%s: satır %d: kullanıcı %s bulunamadı\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: yetersiz bellek\n" - -#, fuzzy, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: %s dosyası güncellenemiyor\n" - -#, fuzzy, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: geçersiz ev dizini '%s'\n" - -#, fuzzy, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: %s dizini yaratılamıyor\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: uyarı: silinemiyor " - -#, fuzzy, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: uyarı: silinemiyor " - -#, fuzzy, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: yeniden adlandırma: %s" - -#, fuzzy, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" - -#, fuzzy, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" - -#, fuzzy, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: uyarı: silinemiyor " - -#, fuzzy, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: %s dizini yaratılamıyor\n" - -#, fuzzy, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: uyarı: silinemiyor " - -#, fuzzy, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: %s dosyası güncellenemiyor\n" - -#, fuzzy, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: gölge dosyası güncellenemedi\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" - -#, fuzzy, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: yeniden adlandırma: %s" - -#, fuzzy, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: %s dosyası açılamıyor\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Uyarı: bilinmeyen grup %s\n" @@ -282,6 +65,13 @@ msgstr "Geçilemeyen tty: %s" msgid "%s: failed to unlock %s\n" msgstr "%s: alanlar çok uzun\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"'%s' içinde '%s' isminde birden fazla giriş mevcut. Lütfen bunu pwck yada " +"grpck kullanarak düzeltin.\n" + #, fuzzy, c-format msgid "%s: " msgstr "%s: %s\n" @@ -289,8 +79,9 @@ msgstr "%s: %s\n" msgid ": " msgstr "" -msgid "Environment overflow\n" -msgstr "Ortam taşması\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "kripto medotu libcrypt tarafından desteklenmiyor? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -385,8 +176,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "Benzersiz bir UID alınamıyor (mevcut UID yok)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "" + +msgid "Could not allocate space for config info.\n" +msgstr "Yapılandırma bilgileri için yer ayrılamadı.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" msgstr "" +"yapılandırma hatası - bilinmeyen öğe '%s' (sistem yöneticisine bildirin)\n" #, fuzzy, c-format msgid "%s: Memory allocation failure\n" @@ -415,7 +214,7 @@ msgstr "Yapılandırma bilgileri için yer ayrılamadı.\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: dosya açılamıyor\n" #, fuzzy, c-format @@ -426,9 +225,21 @@ msgstr "%s: satır %d: chown başarısız oldu\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: satır %d: chown başarısız oldu\n" +#, fuzzy, c-format +msgid "%s: closing %s failed: %s\n" +msgstr "%s: satır %d: chown başarısız oldu\n" + msgid "Too many logins.\n" msgstr "Çok fazla oturum.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s giriş: " + msgid "You have new mail." msgstr "Yeni e-postanız var." @@ -438,6 +249,14 @@ msgstr "E-Posta yok." msgid "You have mail." msgstr "E-Postanız var." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "" + msgid "no change" msgstr "değişiklik yok" @@ -450,9 +269,6 @@ msgstr "sadece durum değişiklikleri" msgid "too similar" msgstr "çok benzer" -msgid "too simple" -msgstr "çok basit" - msgid "rotated" msgstr "döndürülmüş" @@ -499,6 +315,13 @@ msgid "" "%s\n" msgstr "passwd: pam_start() başarısız, hata %d\n" +msgid "Password: " +msgstr "Parola: " + +#, c-format +msgid "%s's Password: " +msgstr "%s kullanıcı parolası: " + #, c-format msgid "Incorrect password for %s.\n" msgstr "`%s' için yanlış parola\n" @@ -524,30 +347,127 @@ msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s: %s dizini yaratılamıyor\n" #, fuzzy, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: %s dizini yaratılamıyor\n" +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + +#, fuzzy, c-format +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Geçersiz ENCRYPT_METHOD değeri: '%s'.\n" +"Varsayılan olarak DES kullanılacak.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open the password file.\n" +msgid "Cannot open audit interface.\n" +msgstr "Parola dosyası açılamıyor.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Could not set serange for %s to %s\n" +msgstr "Yapılandırma bilgileri için yer ayrılamadı.\n" + +#, fuzzy, c-format +msgid "Could not set sename for %s\n" +msgstr "Yapılandırma bilgileri için yer ayrılamadı.\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "%s için ömür bilgisi değiştiriliyor\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "" + +#, fuzzy, c-format +msgid "Cannot create SELinux user key\n" +msgstr "%s: Kullanıcı isminiz belirlenemedi.\n" #, fuzzy, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: %s dizini yaratılamıyor\n" +msgid "Cannot verify the SELinux user\n" +msgstr "%s: satır %d: kullanıcı %s bulunamadı\n" #, c-format -msgid "Unable to obtain random bytes.\n" +msgid "Cannot modify SELinux user mapping\n" msgstr "" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" +msgid "Cannot add SELinux user mapping\n" msgstr "" -"Geçersiz ENCRYPT_METHOD değeri: '%s'.\n" -"Varsayılan olarak DES kullanılacak.\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" +msgid "Cannot commit SELinux transaction\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" + +#, c-format +msgid "Could not delete login mapping for %s" msgstr "" #, c-format @@ -561,6 +481,10 @@ msgstr "Dizin yok, HOME=/ ile giriş yapılıyor" msgid "Cannot execute %s" msgstr "%s çalıştırılamıyor" +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + #, c-format msgid "Invalid root directory '%s'\n" msgstr "Geçersiz kök dizin '%s'\n" @@ -569,6 +493,84 @@ msgstr "Geçersiz kök dizin '%s'\n" msgid "Can't change root directory to '%s'\n" msgstr "Kök dizin '%s' olarak değiştirilemiyor\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: yetersiz bellek\n" + +#, fuzzy, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: %s dosyası güncellenemiyor\n" + +#, fuzzy, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: geçersiz ev dizini '%s'\n" + +#, fuzzy, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: uyarı: silinemiyor " + +#, fuzzy, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: uyarı: silinemiyor " + +#, fuzzy, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s: yeniden adlandırma: %s" + +#, fuzzy, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" + +#, fuzzy, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" + +#, fuzzy, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: uyarı: silinemiyor " + +#, fuzzy, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + +#, fuzzy, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: uyarı: silinemiyor " + +#, fuzzy, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: %s dosyası güncellenemiyor\n" + +#, fuzzy, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: gölge dosyası güncellenemedi\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: yeniden adlandırma: %s" + +#, fuzzy, c-format +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: %s dosyası açılamıyor\n" + #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s: kullanıcı %s şu an oturumda\n" @@ -637,6 +639,9 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr "" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr "" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -662,12 +667,15 @@ msgstr "Parola Pasif" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Hesap Bitimi Tarihi (YYYY-AA-GG)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Son Parola Değişimi\t\t\t\t\t: " - msgid "never" msgstr "Hiçbir zaman" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Son Parola Değişimi\t\t\t\t\t: " + msgid "password must be changed" msgstr "Parola değiştirilmeli" @@ -835,14 +843,6 @@ msgstr "%s: '%s' geçersiz karakterler içeriyor\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: kullanıcı `%s' mevcut değil\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: kullanıcı `%s' NIS istemcisinde değiştirilemedi.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: `%s' bu istemci için NIS efendisidir.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "%s için kullanıcı bilgileri değiştiriliyor\n" @@ -880,6 +880,11 @@ msgstr "" " -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" " SHA yuvarlamaları sayısı\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: desteklenmeyen kripto metodu: %s\n" + #, fuzzy, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: %s bayrağına SADECE %s bayrağı ile kullanıldığında izin verilir\n" @@ -930,6 +935,15 @@ msgstr "" msgid "Login Shell" msgstr "Oturum Kabuğu" +#, fuzzy, c-format +msgid "Cannot parse shell files: %s" +msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" + #, fuzzy, c-format msgid "You may not change the shell for '%s'.\n" msgstr "%s için kabuğu değiştiremezsiniz.\n" @@ -942,6 +956,10 @@ msgstr "%s için oturum kabuğu değiştiriliyor\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: Geçersiz kayıt: %s\n" +#, fuzzy, c-format +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s geçersiz bir kabuk.\n" + #, fuzzy, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s geçersiz bir kabuk.\n" @@ -1161,9 +1179,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr "" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" @@ -1176,6 +1191,10 @@ msgstr "geçersiz kullanıcı adı '%s'\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s geçerli bir grup adı değil\n" +#, fuzzy, c-format +msgid "%s: cannot open %s: %s\n" +msgstr "%s: %s dosyası açılamıyor\n" + #, fuzzy, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: geçersiz grup adı `%s'\n" @@ -1220,14 +1239,6 @@ msgstr "" msgid "%s: group '%s' does not exist\n" msgstr "%s: grup %s mevcut değil\n" -#, fuzzy, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: grup '%s' bir NIS grubu.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s NIS efendisidir\n" - #, fuzzy, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: kullanıcı %s bir NIS kullanıcısı\n" @@ -1309,10 +1320,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: geçersiz grup adı `%s'\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: grup %s bir NIS grubudur\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: bilinmeyen kullanıcı %s\n" @@ -1430,7 +1437,7 @@ msgid "" msgstr "" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" @@ -1524,11 +1531,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Bu bir utmp girişi değil. En düşük \"sh\" düzeyinde \"login\" i " -"çalıştırmalısınız. " - #, fuzzy, c-format msgid "" "\n" @@ -1562,14 +1564,6 @@ msgstr "Giriş geçersiz" msgid "Cannot find user (%s)\n" msgstr "%s: satır %d: kullanıcı %s bulunamadı\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s giriş: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: çatallama hatası: %s" @@ -1606,7 +1600,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1631,17 +1626,13 @@ msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: alanlar çok uzun\n" #, fuzzy, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: geçersiz ana dizin '%s'\n" - -#, fuzzy, c-format -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: %s dizini yaratılamıyor\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1674,14 +1665,13 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: %s dizini yaratılamıyor\n" msgid " -b, --badname allow bad names\n" msgstr "" @@ -1702,6 +1692,10 @@ msgstr "%s: geçersiz kullanıcı adı '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: geçersiz kullanıcı adı '%s'\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: satır %d: geçersiz satır\n" @@ -1724,6 +1718,10 @@ msgstr "%s: satır %d: grup yaratılamıyor\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: kullanıcı `%s' mevcut değil\n" +#, fuzzy, c-format +msgid "%s: line %d: %s\n" +msgstr "%s: yeniden adlandırma: %s" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: satır %d: parola güncellenemiyor\n" @@ -1744,14 +1742,14 @@ msgstr "%s: satır %d: chown başarısız oldu\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: satır %d: kayıt güncellenemiyor\n" -#, fuzzy, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: ayrıcalıklar iptal edilemedi (%s)\n" - #, fuzzy, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: kullanıcı yaratılamıyor\n" +#, fuzzy, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: ayrıcalıklar iptal edilemedi (%s)\n" + #, fuzzy, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: grup dosyası güncellenemiyor\n" @@ -1819,6 +1817,9 @@ msgstr "" " -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" " SHA yuvarlamaları sayısı\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" + msgid "Old password: " msgstr "Eski parola: " @@ -1838,6 +1839,11 @@ msgstr "" "Yeni parolayı girin (asgari %d, azami %d karakter)\n" "Lütfen büyük, küçük harf ve rakamların bir kombinasyonunu kullanın.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: alanlar çok uzun\n" + msgid "New password: " msgstr "Yeni parola: " @@ -1882,6 +1888,10 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: depo %s desteklenmiyor\n" +#, c-format +msgid "%s: only root can use --stdin/-s option\n" +msgstr "" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "" @@ -2025,11 +2035,9 @@ msgstr "" msgid "Session terminated, terminating shell..." msgstr "" -#, c-format msgid " ...killed.\n" msgstr "" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr "" @@ -2116,6 +2124,11 @@ msgstr "su %s için yetkili değilsiniz\n" msgid "No passwd entry for user '%s'\n" msgstr "'root' için parola kaydı yok" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "geçersiz kullanıcı adı '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: bir terminalden çalıştırılmalı\n" @@ -2161,6 +2174,12 @@ msgstr "" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "" +#, c-format +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2171,10 +2190,6 @@ msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: yeni varsayılanlar dosyası açılamadı\n" @@ -2191,10 +2206,6 @@ msgstr "%s: %s dizini yaratılamıyor\n" msgid "%s: rename: %s: %s\n" msgstr "%s: yeniden adlandırma: %s" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: grup '%s' bir NIS grubu.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: çok fazla grup verildi (azami %d).\n" @@ -2322,6 +2333,11 @@ msgid "" "mapping\n" msgstr "" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: geçersiz ana dizin '%s'\n" @@ -2453,6 +2469,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Mail kutusu dosyası için yetkiler ayarlanıyor" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Mesaj kutusu dosyası yaratılıyor" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Mesaj kutusu dosyası yaratılıyor" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2578,10 +2604,6 @@ msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: %s dizini %s olarak yeniden adlandırılamıyor\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: kullanıcı %s bir NIS kullanıcısı\n" - #, fuzzy, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: geçersiz ev dizini '%s'\n" @@ -2695,6 +2717,10 @@ msgid "" "account\n" msgstr "" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" + #, fuzzy, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2781,10 +2807,18 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: parola dosyası güncellenemedi\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: uyarı: %s %s kullanıcısına ait değil\n" @@ -2893,8 +2927,9 @@ msgid "failed to stat edited file" msgstr "postakutusu isim değişikliği başarısız" #, fuzzy -msgid "failed to allocate memory" -msgstr "postakutusu sahibi değiştirilmedi" +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s: dosya açılamıyor\n" #, fuzzy msgid "failed to create backup file" @@ -2908,6 +2943,57 @@ msgstr "%s: %s geri yüklenemiyor: %s (değişiklikleriniz %s içinde)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: geçersiz ana dizin '%s'\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Ortam taşması\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: kullanıcı `%s' NIS istemcisinde değiştirilemedi.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: `%s' bu istemci için NIS efendisidir.\n" + +#, fuzzy, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: grup '%s' bir NIS grubu.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s NIS efendisidir\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: grup %s bir NIS grubudur\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: grup '%s' bir NIS grubu.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: kullanıcı %s bir NIS kullanıcısı\n" + +#~ msgid "too simple" +#~ msgstr "çok basit" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Bu bir utmp girişi değil. En düşük \"sh\" düzeyinde \"login\" i " +#~ "çalıştırmalısınız. " + +#, fuzzy, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: geçersiz ana dizin '%s'\n" + +#, fuzzy +#~ msgid "failed to allocate memory" +#~ msgstr "postakutusu sahibi değiştirilmedi" + #~ msgid "Usage: id\n" #~ msgstr "Kullanım: id\n" @@ -2923,10 +3009,6 @@ msgstr "%s: geçersiz ana dizin '%s'\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Parola Kullanım Süresi Bitti Uyarısı" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "geçersiz kullanıcı adı '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Kullanıcı adı Port Kimden Sonuncu" diff --git a/po/uk.gmo b/po/uk.gmo index 4fff73a..9528c68 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index c6099f3..eb2407e 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,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: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2022-05-16 19:32+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -19,225 +19,6 @@ msgstr "" "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Lokalize 20.12.0\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Виявлено декілька записів із назвою «%s» у %s. Будь ласка, виправте це за " -"допомогою pwck або grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "Підтримку методу шифрування не передбачено у libcrypt? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "помилка налаштувань - не вдалося обробити значення %s: «%s»" - -msgid "Could not allocate space for config info.\n" -msgstr "Не вдалося отримати пам'ять для даних налаштувань.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "" -"помилка у налаштуваннях - невідомий запис «%s» (повідомте адміністратора)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: роботу nscd не завершено штатно (сигнал %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: роботу nscd завершено зі станом %d\n" - -msgid "Password: " -msgstr "Пароль: " - -#, c-format -msgid "%s's Password: " -msgstr "Пароль користувача %s: " - -msgid "Cannot open audit interface.\n" -msgstr "Не вдалося відкрити інтерфейс рецензування.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "%s: не вдалося отримати попередній контекст процесу SELinux: %s\n" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Не вдалося створити дескриптор керування SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "Правила SELinux не є керованими\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Не вдалося виконати читання правил SELinux зі сховища\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Не вдалося встановити з'єднання керування SELinux\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Не вдалося розпочати операцію SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Не вдалося опитати seuser для %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Не вдалося встановити serange для %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Не вдалося встановити sename для %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Не вдалося змінити прив'язку облікового запису для %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Не вдалося створити прив'язку облікового запису SELinux для %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Не вдалося вказати назву %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Не вдалося встановити користувача SELinux для %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Не вдалося додати прив'язку входу для %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Не вдалося ініціалізувати керування SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Не вдалося створити ключ користувача SELinux\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Не вдалося пройти перевірку користувача SELinux\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Не вдалося змінити прив'язку користувача SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Не вдалося додати прив'язку користувача SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Не вдалося внести операцію SELinux\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Прив'язку облікового запису для %s не визначено. Це нормально, якщо " -"використано типову прив'язку\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "Прив'язку входу для %s визначено у правилах, не вдалося вилучити\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Не вдалося вилучити mapping входу для %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: брак пам'яті\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: не вдалося виконати stat %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s не є ні каталогом, ні символічним посиланням.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: не вдалося прочитати символічне посилання %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: підозріливо довге символічне посилання: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: не вдалося створити каталог %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: не вдалося змінити власника %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: не вдалося змінити режим доступу до %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: скасування посилання: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: не вдалося вилучити каталог %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: не вдалося перейменувати %s на %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: не вдалося вилучити %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: не вдалося створити символічне посилання %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: не вдалося змінити власників %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: не вдалося виконати lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: попередження, у користувача %s немає файла shadow tcb.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: критична ситуація: shadow tcb %s не є звичайним файлом з st_nlink=1.\n" -"Обліковий запис залишився заблокованим.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: не вдалося відкрити %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Попередження: невідома група %s\n" @@ -286,6 +67,13 @@ msgstr "" msgid "%s: failed to unlock %s\n" msgstr "%s: не вдалося розблокувати %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Виявлено декілька записів із назвою «%s» у %s. Будь ласка, виправте це за " +"допомогою pwck або grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -293,8 +81,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Переповнення середовища\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "Підтримку методу шифрування не передбачено у libcrypt? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -412,8 +201,16 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: не вдалося отримати унікальний UID (більше немає доступних UID)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "%s: недостатньо аргументів для формування %u прив'язок\n" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "помилка налаштувань - не вдалося обробити значення %s: «%s»" + +msgid "Could not allocate space for config info.\n" +msgstr "Не вдалося отримати пам'ять для даних налаштувань.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "" +"помилка у налаштуваннях - невідомий запис «%s» (повідомте адміністратора)\n" #, c-format msgid "%s: Memory allocation failure\n" @@ -439,8 +236,9 @@ msgstr "%s: не вдалося встановити для seteuid %d\n" msgid "%s: Could not set caps\n" msgstr "%s: не вдалося встановити можливості\n" -#, c-format -msgid "%s: snprintf failed!\n" +#, fuzzy, c-format +#| msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s: помилка snprintf!\n" #, c-format @@ -451,9 +249,22 @@ msgstr "%s: помилка під час спроби відкрити %s: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: помилка під час спроби записати %s: %s\n" +#, fuzzy, c-format +#| msgid "%s: open of %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: помилка під час спроби відкрити %s: %s\n" + msgid "Too many logins.\n" msgstr "Забагато входів.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"Запис %s: " + msgid "You have new mail." msgstr "Ви отримали нову пошту." @@ -463,6 +274,14 @@ msgstr "Пошти немає." msgid "You have mail." msgstr "Для вас є пошта." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: роботу nscd не завершено штатно (сигнал %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: роботу nscd завершено зі станом %d\n" + msgid "no change" msgstr "без змін" @@ -475,9 +294,6 @@ msgstr "тільки зміна регістру" msgid "too similar" msgstr "занадто подібні" -msgid "too simple" -msgstr "занадто простий" - msgid "rotated" msgstr "переставлені літери" @@ -522,79 +338,269 @@ msgstr "" "%s: (користувач %s) помилка pam_chauthtok(), повідомлення:\n" "%s\n" +msgid "Password: " +msgstr "Пароль: " + +#, c-format +msgid "%s's Password: " +msgstr "Пароль користувача %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Помилковий пароль для %s.\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: декілька параметрів --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: до параметра «%s» слід додати аргумент\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: не вдалося скинути привілеї (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: некоректний шлях chroot «%s»\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: не вдалося отримати доступ до каталогу chroot %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: не вдалося виконати chroot до каталогу %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: не вдалося змінити каталог на каталог chroot %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Некоректне значення ENCRYPT_METHOD: «%s».\n" +"Типовим є значення DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" +"Не вдалося створити базу випадковості з параметра «%s», перевірте параметри " +"у ENCRYPT_METHOD і відповідні налаштування для вибраного вами методу " +"хешування.\n" + +msgid "Cannot open audit interface.\n" +msgstr "Не вдалося відкрити інтерфейс рецензування.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "%s: не вдалося отримати попередній контекст процесу SELinux: %s\n" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Не вдалося створити дескриптор керування SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "Правила SELinux не є керованими\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Не вдалося виконати читання правил SELinux зі сховища\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Не вдалося встановити з'єднання керування SELinux\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Не вдалося розпочати операцію SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Не вдалося опитати seuser для %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Не вдалося встановити serange для %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Не вдалося встановити sename для %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Не вдалося змінити прив'язку облікового запису для %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Не вдалося створити прив'язку облікового запису SELinux для %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Не вдалося вказати назву %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Не вдалося встановити користувача SELinux для %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Не вдалося додати прив'язку входу для %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Не вдалося ініціалізувати керування SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Не вдалося створити ключ користувача SELinux\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Не вдалося пройти перевірку користувача SELinux\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Не вдалося змінити прив'язку користувача SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Не вдалося додати прив'язку користувача SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Не вдалося внести операцію SELinux\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Прив'язку облікового запису для %s не визначено. Це нормально, якщо " +"використано типову прив'язку\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "Прив'язку входу для %s визначено у правилах, не вдалося вилучити\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Не вдалося вилучити mapping входу для %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Не вдалося перейти до теки «%s»\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Немає каталогу, входимо з HOME=/" + +#, c-format +msgid "Cannot execute %s" +msgstr "Не вдалося виконати %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Некоректний кореневий каталог «%s»\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Не вдалося змінити кореневий каталог на «%s»\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: брак пам'яті\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: не вдалося виконати stat %s: %s\n" + +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s не є ні каталогом, ні символічним посиланням.\n" + +#, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: не вдалося прочитати символічне посилання %s: %s\n" + #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Помилковий пароль для %s.\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: підозріливо довге символічне посилання: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: декілька параметрів --root\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: не вдалося створити каталог %s: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: до параметра «%s» слід додати аргумент\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: не вдалося змінити власника %s: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: не вдалося скинути привілеї (%s)\n" - -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: некоректний шлях chroot «%s»\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: не вдалося змінити режим доступу до %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: не вдалося отримати доступ до каталогу chroot %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: скасування посилання: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: не вдалося змінити каталог на каталог chroot %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: не вдалося вилучити каталог %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: не вдалося виконати chroot до каталогу %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: не вдалося перейменувати %s на %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "Не вдалося отримати випадкові байти.\n" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: не вдалося вилучити %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Некоректне значення ENCRYPT_METHOD: «%s».\n" -"Типовим є значення DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: не вдалося створити символічне посилання %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" -"Не вдалося створити базу випадковості з параметра «%s», перевірте параметри " -"у ENCRYPT_METHOD і відповідні налаштування для вибраного вами методу " -"хешування.\n" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: не вдалося змінити власників %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Не вдалося перейти до теки «%s»\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: не вдалося виконати lstat %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Немає каталогу, входимо з HOME=/" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: попередження, у користувача %s немає файла shadow tcb.\n" #, c-format -msgid "Cannot execute %s" -msgstr "Не вдалося виконати %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: критична ситуація: shadow tcb %s не є звичайним файлом з st_nlink=1.\n" +"Обліковий запис залишився заблокованим.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Некоректний кореневий каталог «%s»\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Не вдалося змінити кореневий каталог на «%s»\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: не вдалося відкрити %s: %s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -671,6 +677,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root КАТ_CHROOT каталог для зміни кореневого\n" +#, fuzzy +#| msgid " -P, --prefix PREFIX_DI directory prefix\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -P, --prefix ПРЕФІКС_КАТ префікс каталогів\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -698,12 +709,15 @@ msgstr "Пароль неактивний" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Дата прострочення облікового запису (РРРР-ММ-ДД)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Остання зміна пароля\t\t\t\t\t: " - msgid "never" msgstr "ніколи" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Остання зміна пароля\t\t\t\t\t: " + msgid "password must be changed" msgstr "Пароль змінено" @@ -879,14 +893,6 @@ msgstr "%s: «%s» містить заборонені символи\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: запису користувача «%s» не існує\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: не вдалося змінити користувача «%s» у клієнті NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: «%s» є NIS-сервером для цього клієнта.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Зміна інформації про користувача %s\n" @@ -923,6 +929,11 @@ msgstr "" " -s, --sha-rounds кількість проходів для алгоритмів\n" " шифрування SHA, BCRYPT та YESCRYPT\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: непідтримуваний метод шифрування: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: прапорець %s можна використовувати лише з прапорцем %s\n" @@ -975,6 +986,16 @@ msgstr "" msgid "Login Shell" msgstr "Оболонка входу" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: не вдалося отримати розмір %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file: %s\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: не вдалося створити файл із типовими значеннями: %s\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Ви не можете змінити оболонку для «%s».\n" @@ -987,6 +1008,11 @@ msgstr "Змінюємо оболонку входу для %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: некоректний запис: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s є некоректною оболонкою\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s є некоректною оболонкою\n" @@ -1230,9 +1256,6 @@ msgid " -r, --system create a system account\n" msgstr "" " -r, --system створити загальносистемний обліковий запис\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -P, --prefix ПРЕФІКС_КАТ префікс каталогів\n" - msgid " -U, --users USERS list of user members of this group\n" msgstr "" " -U, --users КОРИСТУВАЧІ список користувачів-учасників цієї групи\n" @@ -1245,6 +1268,11 @@ msgstr "Некоректне ім'я користувача учасника, %s msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» є некоректною назвою групи\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: не вдалося відкрити %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: некоректний ідентифікатор групи «%s»\n" @@ -1291,14 +1319,6 @@ msgstr "%s: не можна вилучати основну групу кори msgid "%s: group '%s' does not exist\n" msgstr "%s: групи «%s» не існує\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: група «%s» є групою NIS.\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s є сервером NIS\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: користувач «%s» вже є учасником «%s»\n" @@ -1390,10 +1410,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: некоректна назва групи «%s»\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: група %s є групою NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: невідомий користувач %s\n" @@ -1521,8 +1537,12 @@ msgstr "" " -b, --before ДНІ вивести лише ті записи lastlog, вік яких " "перевищує ДНІ\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear вилучити запис lastlog користувача (можна " @@ -1628,10 +1648,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: робота неможлива без отримання ефективних прав root\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Немає запису utmp. Вам слід виконати \"login\" з \"sh\" найнижчого рівня" - #, c-format msgid "" "\n" @@ -1665,14 +1681,6 @@ msgstr "Некоректний запис" msgid "Cannot find user (%s)\n" msgstr "Не вдалося знайти користувача (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"Запис %s: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: помилка відгалуження: %s" @@ -1706,9 +1714,13 @@ msgstr "Користування: logoutd\n" msgid "%s: gid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgstr "%s: діапазон gid [%lu-%lu) -> [%lu-%lu) заборонено\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "usage: %s [ " +#| " ] ... \n" msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" "користування: %s <нижній_gid> <кількість> [ <нижній_gid> " "<кількість> ] ... \n" @@ -1733,21 +1745,21 @@ msgstr "%s: не вдалося виконати позиціювання у set msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: не вдалося встановити правила setgroups %s: %s\n" -#, c-format -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: не вдалося відкрити каталог proc для цілі %u\n" - -#, c-format -msgid "%s: Could not stat directory for target %u\n" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: не вдалося отримати статистичні дані каталогу для цілі %u\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " +#| "st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" -"%s: власником цілі %u є інший користувач: uid:%lu pw_uid:%lu st_uid:%lu, gid:" -"%lu pw_gid:%lu st_gid:%lu\n" +"%s: власником процесу призначення %u є інший користувач: uid:%lu pw_uid:%lu " +"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgid "Usage: newgrp [-] [group]\n" msgstr "Користування: newgrp [-] [група]\n" @@ -1779,20 +1791,21 @@ msgstr "занадто багато груп\n" msgid "%s: uid range [%lu-%lu) -> [%lu-%lu) not allowed\n" msgstr "%s: діапазон uid [%lu-%lu) -> [%lu-%lu) заборонено\n" -#, c-format +#, fuzzy, c-format +#| msgid "" +#| "usage: %s [ " +#| " ] ... \n" msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" "користування: %s <нижній_uid> <кількість> [ <нижній_uid> " "<кількість> ] ... \n" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" -"%s: власником процесу призначення %u є інший користувач: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: не вдалося отримати статистичні дані каталогу для цілі %u\n" msgid " -b, --badname allow bad names\n" msgstr " -b, --badname дозволити «погані» назви\n" @@ -1815,6 +1828,10 @@ msgstr "" "%s: некоректне ім'я користувача «%s»: скористайтеся --badname, щоб " "проігнорувати\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: рядок %d: некоректний рядок\n" @@ -1836,6 +1853,11 @@ msgstr "%s: рядок %d: не вдалося створити групу\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: рядок %d: користувача «%s» не існує у %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: скасування посилання: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: рядок %d: не вдалося оновити пароль\n" @@ -1856,14 +1878,14 @@ msgstr "%s: рядок %d: помилка зміни власника %s: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: рядок %d: не вдалося оновити запис\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: не вдалося приготувати новий запис %s\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: не вдалося знайти підлеглий діапазон користувачів\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: не вдалося приготувати новий запис %s\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: не вдалося знайти підлеглий діапазон груп\n" @@ -1945,6 +1967,13 @@ msgstr "" " -x, --maxdays ДНІ встановити максимальну кількість днів до\n" " зміни пароля у ДНІ\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list показати дані щодо застарівання облікового " +"запису\n" + msgid "Old password: " msgstr "Старий пароль: " @@ -1964,6 +1993,11 @@ msgstr "" "Введіть новий пароль (від %d до %d символів)\n" "Будь ласка, скористайтеся комбінацією великих і малих літер та цифр.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: поля занадто довгі\n" + msgid "New password: " msgstr "Новий пароль: " @@ -2009,6 +2043,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: підтримки сховища %s не передбачено\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: лише root може використовувати параметр -g/--group\n" + #, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" msgstr "%s: root не уповноважено SELinux не зміну пароля %s\n" @@ -2162,11 +2201,9 @@ msgstr "%s: помилкова роботу сигналів\n" msgid "Session terminated, terminating shell..." msgstr "Сеанс перервано, перериваємо роботу оболонки..." -#, c-format msgid " ...killed.\n" msgstr " ...завершено.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...очікуємо на завершення дочірнього процесу.\n" @@ -2239,6 +2276,11 @@ msgstr "%s: вас не уповноважено на доступ до su ць msgid "No passwd entry for user '%s'\n" msgstr "Немає запису passwd для користувача «%s»\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "невірне ім'я користувача '%s'\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: має бути запущено з термінала\n" @@ -2284,6 +2326,13 @@ msgstr "%s: було створено %s, але його не вдалося в msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: налаштування %s у %s буде проігноровано\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: налаштування %s у %s буде проігноровано\n" + #, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: не вдалося створити файл із типовими значеннями: %s\n" @@ -2292,10 +2341,6 @@ msgstr "%s: не вдалося створити файл із типовими msgid "%s: cannot create directory for defaults file\n" msgstr "%s: не вдалося створити каталог для файла з типовими значеннями\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: не вдалося створити файл з типовими значеннями\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: не вдалося відкрити новий файл із типовими значеннями\n" @@ -2312,10 +2357,6 @@ msgstr "%s: не вдалося створити файл резервної к msgid "%s: rename: %s: %s\n" msgstr "%s: перейменування: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: група «%s» є групою NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: вказано забагато груп (макс %d).\n" @@ -2468,6 +2509,17 @@ msgstr "" " -Z, --selinux-user SEКОР використати вказаного SEКОР для прив'язки " "користувача SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEКОР використати вказаного SEКОР для прив'язки " +"користувача SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: некоректна базовий каталог «%s»\n" @@ -2600,6 +2652,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Встановлюємо права доступу на файл поштової скриньки" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Створюємо файл поштової скриньки" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Створюємо файл поштової скриньки" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "%s попередження: UID %s %d перевищує SYS_UID_MAX %d\n" @@ -2735,10 +2797,6 @@ msgstr "%s: не вдалося вилучити вміст %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: не вдалося вилучити файли tcb для %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: користувач %s є користувачем NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: не знайдено домашнього каталогу %s (%s)\n" @@ -2867,6 +2925,16 @@ msgstr "" " -Z, --selinux-user SEКОР нова прив'язка користувача SELinux для " "облікового запису користувача\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEКОР нова прив'язка користувача SELinux для " +"облікового запису користувача\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2964,12 +3032,26 @@ msgstr "" "%s: не вдалося скопіювати запис lastlog користувача %lu до користувача %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: не вдалося скопіювати запис lastlog користувача %lu до користувача %lu: " +"%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: не вдалося скопіювати запис faillog користувача %lu до користувача %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: не вдалося скопіювати запис faillog користувача %lu до користувача %lu: " +"%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: попередження: %s не належить %s\n" @@ -3071,8 +3153,10 @@ msgstr "не вдалося скасувати символічне посила msgid "failed to stat edited file" msgstr "не вдалося отримати статистичні дані редагованого файла" -msgid "failed to allocate memory" -msgstr "не вдалося отримати пам'ять" +#, fuzzy +#| msgid "%s: snprintf failed!\n" +msgid "asprintf(3) failed" +msgstr "%s: помилка snprintf!\n" msgid "failed to create backup file" msgstr "не вдалося створити файл резервної копії" @@ -3085,6 +3169,71 @@ msgstr "%s: не вдалося відновити %s: %s (ваші зміни msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: не вдалося знайти каталог tcb для %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Переповнення середовища\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: не вдалося змінити користувача «%s» у клієнті NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: «%s» є NIS-сервером для цього клієнта.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: група «%s» є групою NIS.\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s є сервером NIS\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: група %s є групою NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: не вдалося створити файл з типовими значеннями\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: група «%s» є групою NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: користувач %s є користувачем NIS\n" + +#, c-format +#~ msgid "%s: Not enough arguments to form %u mappings\n" +#~ msgstr "%s: недостатньо аргументів для формування %u прив'язок\n" + +#~ msgid "too simple" +#~ msgstr "занадто простий" + +#, c-format +#~ msgid "Unable to obtain random bytes.\n" +#~ msgstr "Не вдалося отримати випадкові байти.\n" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Немає запису utmp. Вам слід виконати \"login\" з \"sh\" найнижчого рівня" + +#, c-format +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: не вдалося відкрити каталог proc для цілі %u\n" + +#, c-format +#~ msgid "" +#~ "%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +#~ "%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" +#~ msgstr "" +#~ "%s: власником цілі %u є інший користувач: uid:%lu pw_uid:%lu st_uid:%lu, " +#~ "gid:%lu pw_gid:%lu st_gid:%lu\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "не вдалося отримати пам'ять" + #~ msgid "Usage: id\n" #~ msgstr "Використання: id\n" @@ -3100,10 +3249,6 @@ msgstr "%s: не вдалося знайти каталог tcb для %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "Застереження про прострочення пароля" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "невірне ім'я користувача '%s'\n" - #~ msgid "Username Port From Latest" #~ msgstr "Користувач Порт Звідки Останній вхід" diff --git a/po/vi.gmo b/po/vi.gmo index 4ad1f41..a7d1742 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 72afc5d..b3f51f7 100644 --- a/po/vi.po +++ b/po/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow master\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2016-10-04 07:07+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -19,228 +19,6 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 2.91.7\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "" -"Có nhiều mục tin mang tên “%s” trong %s. Hãy sửa chữa trường hợp này, dùng " -"pwck hoặc grpck.\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "Phương pháp mã hóa không được thư viện libcrypt hỗ trợ? (%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "lỗi cấu hình — không thể phân tích cú pháp của giá trị %s: “%s”" - -msgid "Could not allocate space for config info.\n" -msgstr "Không thể cấp phát sức chứa cho thông tin cấu hình.\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "lỗi cấu hình - không hiểu mục tin “%s” (báo cho người quản trị).\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s: nscd đã kết thúc bất thường (tín hiệu %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s: nscd đã thoát với mã là %d\n" - -msgid "Password: " -msgstr "Mật khẩu: " - -#, c-format -msgid "%s's Password: " -msgstr "Mật khẩu của %s: " - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "Không thể mở giao diện thử, kiểm nghiệm nên hủy bỏ.\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]: %s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "Không thể tạo bộ tiếp hợp quản lý SELinux\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "Chính sách cho SELinux chưa được quản lý\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "Không thể đọc kho lưu chính sách SELinux\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "Không thể thiết lập kết nối quản lý SELinux\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "Không thể bắt đầu phiên giao dịch SELinux\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "Không thể truy vấn seuser cho %s\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "Không thể đặt serange cho %s\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "Không thể đặt sename cho %s\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "Không thể sửa đổi ánh xạ đăng nhập cho %s\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "Không thể tạo ánh xạ đăng nhập SELinux cho %s\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "Không thể đặt tên %s\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "Không thể đặt người dùng SELinux cho %s\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "Không thể thêm ánh xạ đăng nhập cho %s\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "Không thể khởi tạo bộ quản lý SELinux\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "Không thể tạo khóa người dùng SELinux\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "Không thể thẩm định người dùng SELinux\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "Không thể sửa đổi ánh xạ người dùng SELinux\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "Không thể thêm ánh xạ người dùng SELinux\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "Không thể chuyển giao giao dịch SELinux\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "" -"Ánh xạ đăng nhập cho %s chưa được định nghĩa, OK nếu ánh xạ mặc định được " -"dùng\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "" -"Ánh xạ đăng nhập cho %s được định nghĩa trong chính sách, không thể xóa đi\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "Không thể xóa ánh xạ đăng nhập cho %s" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s: hết bộ nhớ\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s: Không thể lấy thống kê về %s: %s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s: %s không phải là thư mục mà cũng không phải là liên kết mềm.\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s: Không thể đọc liên kết mềm %s: %s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s: Liên kết mềm dài một cách điên rồ: %s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s: Không thể tạo thư mục %s: %s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s: Không thể thay đổi người sở hữu của %s: %s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s: Không thể thay đổi chế độ của %s: %s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s: unlink: %s: %s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s: Không thể gỡ bỏ thư mục %s: %s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s: Không thể đổi tên %s thành %s: %s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s: Không thể gỡ bỏ %s: %s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s: Không thể tạo liên kết mềm %s: %s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s: Không thể thay đổi chủ sở hữu của %s: %s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s: Không thể lstat %s: %s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s: Cảnh báo, người dùng %s không có tập tin shadow tcb.\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s: Khẩn cấp: shadow tcb của %s không phải là tập tin thường với " -"st_nlink=1.\n" -"Tài khoản vẫn bị khóa.\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s: mkdir: %s: %s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s: Không thể mở %s: %s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "Cảnh báo: không biết nhóm %s.\n" @@ -288,6 +66,13 @@ msgstr "" msgid "%s: failed to unlock %s\n" msgstr "%s: gặp lỗi khi mở khóa %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "" +"Có nhiều mục tin mang tên “%s” trong %s. Hãy sửa chữa trường hợp này, dùng " +"pwck hoặc grpck.\n" + #, c-format msgid "%s: " msgstr "%s: " @@ -295,8 +80,9 @@ msgstr "%s: " msgid ": " msgstr ": " -msgid "Environment overflow\n" -msgstr "Tràn môi trường\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "Phương pháp mã hóa không được thư viện libcrypt hỗ trợ? (%s)\n" #, c-format msgid "You may not change $%s\n" @@ -414,8 +200,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s: Không thể lấy UID duy nhất (không còn có sẵn UID thêm nữa)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "lỗi cấu hình — không thể phân tích cú pháp của giá trị %s: “%s”" + +msgid "Could not allocate space for config info.\n" +msgstr "Không thể cấp phát sức chứa cho thông tin cấu hình.\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "lỗi cấu hình - không hiểu mục tin “%s” (báo cho người quản trị).\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -445,9 +238,10 @@ msgstr "Không thể đặt tên %s\n" msgid "%s: Could not set caps\n" msgstr "Không thể đặt tên %s\n" -#, c-format -msgid "%s: snprintf failed!\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" #, fuzzy, c-format #| msgid "%s: line %d: chown %s failed: %s\n" @@ -459,9 +253,22 @@ msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" + msgid "Too many logins.\n" msgstr "Quá nhiều lần đăng nhập.\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s đăng nhập: " + msgid "You have new mail." msgstr "Bạn có thư mới." @@ -471,6 +278,14 @@ msgstr "Không có thư." msgid "You have mail." msgstr "Bạn có thư." +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s: nscd đã kết thúc bất thường (tín hiệu %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s: nscd đã thoát với mã là %d\n" + msgid "no change" msgstr "chưa thay đổi gì" @@ -483,9 +298,6 @@ msgstr "chỉ thay đổi HOA/thường" msgid "too similar" msgstr "quá tương tự" -msgid "too simple" -msgstr "quá đơn giản" - msgid "rotated" msgstr "đã xoay" @@ -519,88 +331,282 @@ msgstr "" msgid "%s: conversation type %d not supported.\n" msgstr "%s: kho lưu %s không được hỗ trợ\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s: pam_start: (pam bắt đầu) lỗi %d\n" +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s: pam_start: (pam bắt đầu) lỗi %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() (mật khẩu: bắt đầu pam) đã thất bại với lỗi %d\n" + +msgid "Password: " +msgstr "Mật khẩu: " + +#, c-format +msgid "%s's Password: " +msgstr "Mật khẩu của %s: " + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "Mật khẩu không đúng cho %s .\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s: nhiều tùy chọn --root\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s: tùy chọn “%s” cần một đối số\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s: gặp lỗi khi xóa bỏ đặc quyền (%s)\n" + +#, fuzzy, c-format +#| msgid "%s: invalid chroot path '%s'\n" +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s: đường dẫn chroot không hợp lệ “%s”\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s: không thể truy cập thư mục chroot %s: %s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s: không thể thay đổi thư mục gốc thành %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s: không thể chuyển sang thư mục chroot %s: %s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"Phương pháp mã hóa (ENCRYPT_METHOD) không hợp lệ: “%s”\n" +"nên hoàn nguyên về giá trị mặc định: DES.\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "Không thể mở giao diện thử, kiểm nghiệm nên hủy bỏ.\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]: %s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "Không thể tạo bộ tiếp hợp quản lý SELinux\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "Chính sách cho SELinux chưa được quản lý\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "Không thể đọc kho lưu chính sách SELinux\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "Không thể thiết lập kết nối quản lý SELinux\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "Không thể bắt đầu phiên giao dịch SELinux\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "Không thể truy vấn seuser cho %s\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "Không thể đặt serange cho %s\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "Không thể đặt sename cho %s\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "Không thể sửa đổi ánh xạ đăng nhập cho %s\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "Không thể tạo ánh xạ đăng nhập SELinux cho %s\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "Không thể đặt tên %s\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "Không thể đặt người dùng SELinux cho %s\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "Không thể thêm ánh xạ đăng nhập cho %s\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "Không thể khởi tạo bộ quản lý SELinux\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "Không thể tạo khóa người dùng SELinux\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "Không thể thẩm định người dùng SELinux\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "Không thể sửa đổi ánh xạ người dùng SELinux\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "Không thể thêm ánh xạ người dùng SELinux\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "Không thể chuyển giao giao dịch SELinux\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "" +"Ánh xạ đăng nhập cho %s chưa được định nghĩa, OK nếu ánh xạ mặc định được " +"dùng\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "" +"Ánh xạ đăng nhập cho %s được định nghĩa trong chính sách, không thể xóa đi\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "Không thể xóa ánh xạ đăng nhập cho %s" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "Không thể cd (chuyển đổi thư mục) sang “%s”.\n" + +msgid "No directory, logging in with HOME=/" +msgstr "Không có thư mục nên đăng nhập với “HOME=/”" + +#, c-format +msgid "Cannot execute %s" +msgstr "Không thể thực hiện %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "Thư mục gốc không hợp lệ “%s”\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "Không thể thay đổi thư mục gốc thành “%s”\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s: hết bộ nhớ\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s: Không thể lấy thống kê về %s: %s\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() (mật khẩu: bắt đầu pam) đã thất bại với lỗi %d\n" +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s: %s không phải là thư mục mà cũng không phải là liên kết mềm.\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "Mật khẩu không đúng cho %s .\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s: Không thể đọc liên kết mềm %s: %s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s: nhiều tùy chọn --root\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s: Liên kết mềm dài một cách điên rồ: %s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s: tùy chọn “%s” cần một đối số\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s: Không thể tạo thư mục %s: %s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s: gặp lỗi khi xóa bỏ đặc quyền (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s: Không thể thay đổi người sở hữu của %s: %s\n" -#, fuzzy, c-format -#| msgid "%s: invalid chroot path '%s'\n" -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s: đường dẫn chroot không hợp lệ “%s”\n" +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s: Không thể thay đổi chế độ của %s: %s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s: không thể truy cập thư mục chroot %s: %s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s: unlink: %s: %s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s: không thể chuyển sang thư mục chroot %s: %s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s: Không thể gỡ bỏ thư mục %s: %s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s: không thể thay đổi thư mục gốc thành %s: %s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s: Không thể đổi tên %s thành %s: %s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s: Không thể gỡ bỏ %s: %s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"Phương pháp mã hóa (ENCRYPT_METHOD) không hợp lệ: “%s”\n" -"nên hoàn nguyên về giá trị mặc định: DES.\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s: Không thể tạo liên kết mềm %s: %s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s: Không thể thay đổi chủ sở hữu của %s: %s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "Không thể cd (chuyển đổi thư mục) sang “%s”.\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s: Không thể lstat %s: %s\n" -msgid "No directory, logging in with HOME=/" -msgstr "Không có thư mục nên đăng nhập với “HOME=/”" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s: Cảnh báo, người dùng %s không có tập tin shadow tcb.\n" #, c-format -msgid "Cannot execute %s" -msgstr "Không thể thực hiện %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s: Khẩn cấp: shadow tcb của %s không phải là tập tin thường với " +"st_nlink=1.\n" +"Tài khoản vẫn bị khóa.\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "Thư mục gốc không hợp lệ “%s”\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s: mkdir: %s: %s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "Không thể thay đổi thư mục gốc thành “%s”\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s: Không thể mở %s: %s\n" #, fuzzy, c-format #| msgid "%s: user '%s' does not exist in %s\n" @@ -681,6 +687,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root THƯ_MỤC_ĐỔI thư mục để chuyển gốc đến\n" +#, fuzzy +#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root THƯ_MỤC_ĐỔI thư mục để chuyển gốc đến\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr "" @@ -708,12 +719,15 @@ msgstr "Mật khẩu không hoạt động" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "Ngày hết hạn dùng tài khoản (NNNN-TT-Ng)" -msgid "Last password change\t\t\t\t\t: " -msgstr "Thay đổi mặt khẩu cuối cùng\t\t\t\t\t: " - msgid "never" msgstr "chưa bao giờ" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "Thay đổi mặt khẩu cuối cùng\t\t\t\t\t: " + msgid "password must be changed" msgstr "mật khẩu phải thay đổi" @@ -886,14 +900,6 @@ msgstr "%s: “%s” chứa ký tự bị cấm\n" msgid "%s: user '%s' does not exist\n" msgstr "%s: người dùng “%s” không tồn tại\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s: không thể thay đổi người dùng “%s” trên ứng dụng khách NIS.\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s: “%s” là NIS cái cho ứng dụng khách này.\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "Đang thay đổi thông tin về người dùng đối với %s\n" @@ -933,6 +939,11 @@ msgid "" msgstr "" " -s, --sha-rounds số vòng SHA cho thuật toán mã hóa SHA*\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s: phương pháp mã hóa không được hỗ trợ: %s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s: cho phép cờ %s chỉ cùng với cờ %s\n" @@ -985,6 +996,16 @@ msgstr "" msgid "Login Shell" msgstr "Hệ vỏ Đăng nhập" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s: Không thể lấy kích cỡ của %s: %s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s: không thể tạo tập tin mặc định mới\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "Không cho phép bạn thay đổi hệ vỏ đối với “%s”.\n" @@ -997,6 +1018,11 @@ msgstr "Đang thay đổi hệ vỏ đăng nhập đối với %s\n" msgid "%s: Invalid entry: %s\n" msgstr "%s: mục tin không hợp lệ: %s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s: %s không phải là hệ vỏ hợp lệ\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s: %s không phải là hệ vỏ hợp lệ\n" @@ -1242,11 +1268,6 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system tạo một tài khoản hệ thống\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root THƯ_MỤC_ĐỔI thư mục để chuyển gốc đến\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1261,6 +1282,11 @@ msgstr "tên người dùng không hợp lệ “%s”\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s: “%s” không phải là tên nhóm hợp lệ\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s: Không thể mở %s: %s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s: mã số nhóm (GID) không hợp lệ “%s”\n" @@ -1305,14 +1331,6 @@ msgstr "%s: không thể gỡ bỏ nhóm chính của người dùng “%s”\n" msgid "%s: group '%s' does not exist\n" msgstr "%s: nhóm “%s” không tồn tại\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s: nhóm “%s” là một nhóm kiểu NIS\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s: %s là NIS chủ\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s: người dùng “%s” đã thuộc về “%s”\n" @@ -1407,10 +1425,6 @@ msgstr "" msgid "%s: invalid group name '%s'\n" msgstr "%s: tên nhóm không hợp lệ “%s”\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s: nhóm %s là một nhóm kiểu NIS\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s: không rõ người dùng %s\n" @@ -1537,8 +1551,12 @@ msgstr "" "ngày\n" " cũ hơn số ngày này (_trước_)\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear xóa bản ghi lastlog của người dùng (chỉ dùng " @@ -1640,11 +1658,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: Không thể làm việc mà không có gốc có hiệu lực\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "" -"Không có mục tin utmp. Vì thế bạn cần phải thực hiện “login” (đăng nhập) từ " -"“sh” (hệ vỏ) cấp dưới cùng." - #, c-format msgid "" "\n" @@ -1678,14 +1691,6 @@ msgstr "Đăng nhập không đúng" msgid "Cannot find user (%s)\n" msgstr "Không thể tìm thấy người dùng (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s đăng nhập: " - #, c-format msgid "%s: failure forking: %s" msgstr "%s: lỗi tạo tiến trình con: %s" @@ -1721,7 +1726,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1747,20 +1753,15 @@ msgstr "%s: gặp lỗi khi gỡ bỏ %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: gặp lỗi khi mở khóa %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s: gặp lỗi khi tìm thư mục tcb cho %s\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s: Gặp lỗi khi tạo thư mục tcb cho %s\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1797,14 +1798,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s: Gặp lỗi khi tạo thư mục tcb cho %s\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1828,6 +1829,10 @@ msgstr "%s: mã số người dùng không hợp lệ “%s”\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: tên dùng không hợp lệ “%s”\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s: dòng %d: dòng không hợp lệ\n" @@ -1850,6 +1855,11 @@ msgstr "%s: dòng %d: không thể tạo nhóm\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s: dòng %d: người dùng “%s” không tồn tại trong %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s: unlink: %s: %s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s: dòng %d: không thể cập nhật mật khẩu\n" @@ -1871,14 +1881,14 @@ msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s: dòng %d: không thể cập nhật mục tin\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s: gặp lỗi khi chuẩn bị mục tin mới “%s”\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s: không thể tìm thấy vùng người dùng lệ thuộc\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s: gặp lỗi khi chuẩn bị mục tin mới “%s”\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s: không thể tìm thấy vùng nhóm phụ thuộc\n" @@ -1955,6 +1965,13 @@ msgstr "" "khi\n" " thay đổi được mật khẩu\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr "" +" -l, --list hiển thị thông tin về khoảng thời gian sử " +"dụng tài khoản\n" + msgid "Old password: " msgstr "Mật khẩu cũ: " @@ -1974,6 +1991,11 @@ msgstr "" "Nhập mật khẩu mới (số ký tự tối thiểu %d, tối đa %d).\n" "Hãy tổ hợp các chữ hoa, chữ thường và chữ số để tạo một mật khẩu mạnh.\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s: trường quá dài\n" + msgid "New password: " msgstr "Mật khẩu mới: " @@ -2017,6 +2039,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s: kho lưu %s không được hỗ trợ\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s: chỉ siêu quản trị có quyền sử dụng tùy chọn “-g/--group”\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2171,11 +2198,9 @@ msgstr "%s: tín hiệu trục trặc\n" msgid "Session terminated, terminating shell..." msgstr "Phiên làm việc đã kết thúc, nên kết thúc hệ vỏ…" -#, c-format msgid " ...killed.\n" msgstr " …đã chết.\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " …đang đợi tiến con chấm dứt.\n" @@ -2266,6 +2291,11 @@ msgstr "" msgid "No passwd entry for user '%s'\n" msgstr "Không có mục tin mật khẩu cho tài khoản “%s”\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "tên người dùng không hợp lệ “%s”\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s: phải chạy từ thiết bị cuối\n" @@ -2311,6 +2341,13 @@ msgstr "%s: %s đã được tạo, nhưng không thể bị gỡ bỏ\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s: cấu hình %s trong %s sẽ bị bỏ qua\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s: cấu hình %s trong %s sẽ bị bỏ qua\n" + #, fuzzy, c-format #| msgid "%s: cannot create new defaults file\n" msgid "%s: cannot create new defaults file: %s\n" @@ -2321,10 +2358,6 @@ msgstr "%s: không thể tạo tập tin mặc định mới\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s: không thể tạo tập tin mặc định mới\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s: không thể tạo tập tin mặc định mới\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s: không thể mở tập tin mặc định mới\n" @@ -2341,10 +2374,6 @@ msgstr "%s: Không thể tạo tập tin sao lưu dự phòng (%s): %s\n" msgid "%s: rename: %s: %s\n" msgstr "%s: thay tên: %s: %s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s: nhóm “%s” là nhóm kiểu NIS.\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s: ghi rõ quá nhiều nhóm (tối đa %d).\n" @@ -2480,6 +2509,17 @@ msgstr "" " -Z, --selinux-user SEUSER dùng một người dùng SE (SEUSER) riêng cho sự " "ánh xạ người dùng SELinux\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER dùng một người dùng SE (SEUSER) riêng cho sự " +"ánh xạ người dùng SELinux\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s: thư mục cơ sở không hợp lệ “%s”\n" @@ -2623,6 +2663,16 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Đang đặt quyền truy cập tập tin hộp thư" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "Đang tạo tập tin hộp thư" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "Đang tạo tập tin hộp thư" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2753,10 +2803,6 @@ msgstr "%s: Không thể gỡ bỏ nội dung của %s: %s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s: Không thể gỡ bỏ tập tin tcb cho %s: %s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s: người dùng %s là người dùng kiểu NIS\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s: %s không tìm thấy thư mục riêng (%s)\n" @@ -2882,6 +2928,15 @@ msgid "" msgstr "" " -Z, --selinux-user SEUSER ánh xạ SELinux mới cho tài khoản người dùng\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER ánh xạ SELinux mới cho tài khoản người dùng\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2977,12 +3032,26 @@ msgstr "" "%s: gặp lỗi khi sao chép mục tin lastlog của người dùng %lu sang người dùng " "%lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: gặp lỗi khi sao chép mục tin lastlog của người dùng %lu sang người dùng " +"%lu: %s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "" "%s: không sao chép được mục tin faillog của người dùng %lu sang người dùng " "%lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "" +"%s: không sao chép được mục tin faillog của người dùng %lu sang người dùng " +"%lu: %s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s: cảnh báo: %s không do %s sở hữu\n" @@ -3084,8 +3153,8 @@ msgstr "gặp lỗi khi bỏ liên kết tập tin hỗn tạp" msgid "failed to stat edited file" msgstr "gặp lỗi khi lấy thống kê tập tin đã sửa" -msgid "failed to allocate memory" -msgstr "gặp lỗi khi phân bổ bộ nhớ" +msgid "asprintf(3) failed" +msgstr "" msgid "failed to create backup file" msgstr "không thể tạo tập tin sao lưu dự phòng" @@ -3098,6 +3167,57 @@ msgstr "%s: không thể phục hồi %s: %s (các thay đổi của bạn nằm msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: gặp lỗi khi tìm thư mục tcb cho %s\n" +#~ msgid "Environment overflow\n" +#~ msgstr "Tràn môi trường\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s: không thể thay đổi người dùng “%s” trên ứng dụng khách NIS.\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s: “%s” là NIS cái cho ứng dụng khách này.\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s: nhóm “%s” là một nhóm kiểu NIS\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s: %s là NIS chủ\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s: nhóm %s là một nhóm kiểu NIS\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s: không thể tạo tập tin mặc định mới\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s: nhóm “%s” là nhóm kiểu NIS.\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s: người dùng %s là người dùng kiểu NIS\n" + +#~ msgid "too simple" +#~ msgstr "quá đơn giản" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "" +#~ "Không có mục tin utmp. Vì thế bạn cần phải thực hiện “login” (đăng nhập) " +#~ "từ “sh” (hệ vỏ) cấp dưới cùng." + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s: gặp lỗi khi tìm thư mục tcb cho %s\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "gặp lỗi khi phân bổ bộ nhớ" + #~ msgid "Usage: id\n" #~ msgstr "Cách dùng: id\n" @@ -3113,10 +3233,6 @@ msgstr "%s: gặp lỗi khi tìm thư mục tcb cho %s\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s: thông tin đã thay đổi về sự hết hạn sử dụng mật khẩu.\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "tên người dùng không hợp lệ “%s”\n" - #~ msgid "Username Port From Latest" #~ msgstr "Tài_khoản Cổng Từ Mới nhất" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 8e20748..813401c 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 46067be..d429d78 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2022-07-27 23:04+0800\n" "Last-Translator: Celeste Liu \n" "Language-Team: Chinese (simplified) \n" @@ -22,222 +22,6 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.0.8\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "多个名为“%s”的条目同时存在于 %s 中,请使用 pwck 或 grpck 来修复。\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "libcrypt 不支持此加密方法?(%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "配置错误 - 无法解析 %s 值:“%s”" - -msgid "Could not allocate space for config info.\n" -msgstr "无法为配置信息分配空间。\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "配置错误 - 未知项目“%s”(请通知管理员)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s:nscd 异常结束 (信号 %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s:nscd 以状态 %d 退出\n" - -msgid "Password: " -msgstr "密码:" - -#, c-format -msgid "%s's Password: " -msgstr "%s 的密码:" - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "无法打开审计接口 - 退出。\n" - -#, c-format -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]:%s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "无法创建 SELinux 管理句柄\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux 策略未被托管\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "无法读取 SELinux 策略存储\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "无法建立 SELinux 管理连接\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "无法开始 SELinux 事务\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "无法为 %s 查询 seuser\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "无法为 %s 设置 serange\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "无法为 %s 设置 sename\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "无法为 %s 修改登录映射\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "无法为 %s 创建登录映射\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "无法为 %s 设置名称\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "无法为 %s 设置 SELinux 用户\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "无法为 %s 添加登录映射\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "无法初始化 SELinux 管理\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "无法创建 SELinux 用户密钥\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "无法验证 SELinux 用户\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "无法修改 SELinux 用户映射\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "无法添加 SELinux 用户映射\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "无法提交 SELinux 事务\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "未定义 %s 的登录映射,使用默认映射时这是正常的\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "在策略中定义了 %s 的登录映射,无法被删除\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "无法删除 %s 的登录映射" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s:内存溢出\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s:无法获取文件 %s 的信息:%s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s:%s 既不是目录也不是符号链接。\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s:无法读取符号链接 %s:%s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s:可疑的长符合链接:%s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s:无法创建目录 %s:%s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s:无法更改 %s 的属主:%s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s:无法更改 %s 的模式:%s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s:删除(unlink):%s:%s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s:无法删除目录 %s:%s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s:无法将目录 %s 改名为 %s:%s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s:无法删除 %s:%s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s:无法创建符号链接 %s:%s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s:无法更改 %s 的属主:%s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s:无法获取符号链接 %s 的信息(lstat):%s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s:警告,用户 %s 没有 tcb 影子文件。\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s:紧急:%s 的 tcb 影子不是一个 st_nlink=1 的普通文件。\n" -"已锁定该帐号。\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s:创建目录:%s:%s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s:无法打开 %s:%s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "警告:未知组 %s\n" @@ -284,6 +68,11 @@ msgstr "不能改变 tty 标准输入的属主或模式:%s" msgid "%s: failed to unlock %s\n" msgstr "%s:解锁 %s 失败\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "多个名为“%s”的条目同时存在于 %s 中,请使用 pwck 或 grpck 来修复。\n" + #, c-format msgid "%s: " msgstr "%s:" @@ -291,8 +80,9 @@ msgstr "%s:" msgid ": " msgstr ":" -msgid "Environment overflow\n" -msgstr "环境溢出\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "libcrypt 不支持此加密方法?(%s)\n" #, c-format msgid "You may not change $%s\n" @@ -327,48 +117,40 @@ msgstr "" msgid "%s: failed to allocate memory: %s\n" msgstr "%s:申请内存失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: Can't get unique system GID (no more available GIDs)\n" +#, c-format msgid "" "%s: Can't get unique system GID (%s). Suppressing additional messages.\n" -msgstr "%s:无法获取唯一的系统 GID (没有更多可用的 GID 了)\n" +msgstr "%s:无法获取唯一的系统 GID (%s)。抑制额外的消息。\n" -#, fuzzy, c-format -#| msgid "%s: Can't get unique GID (no more available GIDs)\n" +#, c-format msgid "%s: Can't get unique GID (%s). Suppressing additional messages.\n" -msgstr "%s:无法获取唯一的 GID (没有更多可用的 GID 了)\n" +msgstr "%s:无法获取唯一的 GID (%s)。抑制额外的消息。\n" #, c-format msgid "%s: Can't get unique GID (no more available GIDs)\n" msgstr "%s:无法获取唯一的 GID (没有更多可用的 GID 了)\n" -#, fuzzy, c-format -#| msgid "" -#| "%s: Invalid configuration: SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX " -#| "(%lu)\n" +#, c-format msgid "" "%s: Invalid configuration: SUB_GID_MIN (%lu), SUB_GID_MAX (%lu), " "SUB_GID_COUNT (%lu)\n" -msgstr "%s:无效的配置:SYS_GID_MIN (%lu), GID_MIN (%lu), SYS_GID_MAX (%lu)\n" +msgstr "" +"%s:无效的配置:SYS_GID_MIN (%lu), iSUB_GID_MAX (%lu), SUB_GID_COUNT (%lu)\n" -#, fuzzy, c-format -#| msgid "%s: can't find subordinate user range\n" +#, c-format msgid "%s: Can't get unique subordinate GID range\n" -msgstr "%s:找不到子用户范围\n" +msgstr "%s:不能获得唯一的从属GID范围\n" -#, fuzzy, c-format -#| msgid "" -#| "%s: Invalid configuration: SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX " -#| "(%lu)\n" +#, c-format msgid "" "%s: Invalid configuration: SUB_UID_MIN (%lu), SUB_UID_MAX (%lu), " "SUB_UID_COUNT (%lu)\n" -msgstr "%s:无效的配置:SYS_UID_MIN (%lu), UID_MIN (%lu), SYS_UID_MAX (%lu)\n" +msgstr "" +"%s:无效的配置:SYS_UID_MIN (%lu), SUB_UID_MAX (%lu), SUB_UID_COUNT (%lu)\n" -#, fuzzy, c-format -#| msgid "%s: can't find subordinate user range\n" +#, c-format msgid "%s: Can't get unique subordinate UID range\n" -msgstr "%s:找不到子用户范围\n" +msgstr "%s:不能获得唯一的从属GID范围\n" #, c-format msgid "" @@ -384,71 +166,83 @@ msgstr "%s:无效的配置:UID_MIN (%lu), UID_MAX (%lu)\n" msgid "%s: Encountered error attempting to use preferred UID: %s\n" msgstr "" -#, fuzzy, c-format -#| msgid "%s: Can't get unique system UID (no more available UIDs)\n" +#, c-format msgid "" "%s: Can't get unique system UID (%s). Suppressing additional messages.\n" -msgstr "%s:无法获取唯一的系统 UID (没有更多可用的 UID 了)\n" +msgstr "%s:无法获取唯一的系统 UID (%s)。抑制额外的消息。\n" -#, fuzzy, c-format -#| msgid "%s: Can't get unique UID (no more available UIDs)\n" +#, c-format msgid "%s: Can't get unique UID (%s). Suppressing additional messages.\n" -msgstr "%s:无法获取唯一的 UID (没有更多可用的 UID 了)\n" +msgstr "%s:无法获取唯一的UID (%s)。抑制额外的消息。\n" #, c-format msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s:无法获取唯一的 UID (没有更多可用的 UID 了)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "配置错误 - 无法解析 %s 值:“%s”" -#, fuzzy, c-format -#| msgid "%s: Authentication failure\n" +msgid "Could not allocate space for config info.\n" +msgstr "无法为配置信息分配空间。\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "配置错误 - 未知项目“%s”(请通知管理员)\n" + +#, c-format msgid "%s: Memory allocation failure\n" -msgstr "%s:验证失败\n" +msgstr "%s:内存分配失败\n" #, c-format msgid "%s: subuid overflow detected.\n" -msgstr "" +msgstr "%s:检测到subuid溢出。\n" -#, fuzzy, c-format -#| msgid "%s: invalid field '%s'\n" +#, c-format msgid "%s: Invalid map file %s specified\n" -msgstr "%s:无效的字段“%s”\n" +msgstr "%s:指定的映射文件“%s无效”\n" #, c-format msgid "%s: Could not prctl(PR_SET_KEEPCAPS)\n" -msgstr "" +msgstr "%s:无法执行prctl(PR_SET_KEEPCAPS)\n" -#, fuzzy, c-format -#| msgid "Could not set name for %s\n" +#, c-format msgid "%s: Could not seteuid to %d\n" -msgstr "无法为 %s 设置名称\n" +msgstr "%s:不能seteuid为%d\n" -#, fuzzy, c-format -#| msgid "Could not set name for %s\n" +#, c-format msgid "%s: Could not set caps\n" -msgstr "无法为 %s 设置名称\n" +msgstr "%s:无法设置上限\n" #, fuzzy, c-format -#| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" -msgstr "%s:无法打开文件\n" +#| msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" +msgstr "%s:snprintf 失败\n" -#, fuzzy, c-format -#| msgid "%s: line %d: chown %s failed: %s\n" +#, c-format msgid "%s: open of %s failed: %s\n" -msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" +msgstr "%s:打开%s失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: chown %s failed: %s\n" +#, c-format msgid "%s: write to %s failed: %s\n" -msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" +msgstr "%s:写入%s失败:%s\n" + +#, fuzzy, c-format +#| msgid "%s: open of %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s:打开%s失败:%s\n" msgid "Too many logins.\n" msgstr "当前登录数量过多。\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +"%s 用户名:" + msgid "You have new mail." msgstr "您有新信件。" @@ -458,6 +252,14 @@ msgstr "无信件。" msgid "You have mail." msgstr "您有信件。" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s:nscd 异常结束 (信号 %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s:nscd 以状态 %d 退出\n" + msgid "no change" msgstr "没有改变" @@ -470,9 +272,6 @@ msgstr "仅有大小写改动" msgid "too similar" msgstr "太相似" -msgid "too simple" -msgstr "太简单" - msgid "rotated" msgstr "已轮转" @@ -501,22 +300,28 @@ msgstr "passwd:已成功更新密码\n" msgid "%s: PAM modules requesting echoing are not supported.\n" msgstr "" -#, fuzzy, c-format -#| msgid "%s: repository %s not supported\n" +#, c-format msgid "%s: conversation type %d not supported.\n" -msgstr "%s:不支持 %s 存储。\n" +msgstr "%s:不支持会话类型%d。\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" +#, c-format msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s:pam_start:错误 %d\n" +msgstr "%s:(user %s) pam_start 失败 %d\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" +#, c-format msgid "" "%s: (user %s) pam_chauthtok() failed, error:\n" "%s\n" -msgstr "passwd:pam_start() 失败,错误 %d\n" +msgstr "" +"%s:(user %s) pam_chauthtok() 失败, 错误:\n" +"%s\n" + +msgid "Password: " +msgstr "密码:" + +#, c-format +msgid "%s's Password: " +msgstr "%s 的密码:" #, c-format msgid "Incorrect password for %s.\n" @@ -542,17 +347,14 @@ msgstr "%s:无效的 chroot 路径“%s”,仅支持绝对路径。\n" msgid "%s: cannot access chroot directory %s: %s\n" msgstr "%s:无法访问 chroot 目录 %s:%s\n" -#, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s:无法进入 chroot 目录 %s:%s\n" - #, c-format msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s:无法 chroot 到目录 %s:%s\n" -#, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s:无法进入 chroot 目录 %s:%s\n" #, c-format msgid "" @@ -569,6 +371,106 @@ msgid "" "method.\n" msgstr "" +msgid "Cannot open audit interface.\n" +msgstr "无法打开审计接口。\n" + +#, c-format +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "%s:无法获取以前的SELinux进程上下文:%s\n" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]:%s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "无法创建 SELinux 管理句柄\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux 策略未被托管\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "无法读取 SELinux 策略存储\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "无法建立 SELinux 管理连接\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "无法开始 SELinux 事务\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "无法为 %s 查询 seuser\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "无法为 %s 设置 serange\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "无法为 %s 设置 sename\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "无法为 %s 修改登录映射\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "无法为 %s 创建登录映射\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "无法为 %s 设置名称\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "无法为 %s 设置 SELinux 用户\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "无法为 %s 添加登录映射\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "无法初始化 SELinux 管理\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "无法创建 SELinux 用户密钥\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "无法验证 SELinux 用户\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "无法修改 SELinux 用户映射\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "无法添加 SELinux 用户映射\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "无法提交 SELinux 事务\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "未定义 %s 的登录映射,使用默认映射时这是正常的\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "在策略中定义了 %s 的登录映射,无法被删除\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "无法删除 %s 的登录映射" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "无法 cd 进入“%s”\n" @@ -581,21 +483,104 @@ msgid "Cannot execute %s" msgstr "无法执行 %s" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "无效的根目录“%s”\n" +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "无效的根目录“%s”\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "无法将根目录改变为“%s”\n" + +#, c-format +msgid "%s: out of memory\n" +msgstr "%s:内存溢出\n" + +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s:无法获取文件 %s 的信息:%s\n" + +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s:%s 既不是目录也不是符号链接。\n" + +#, c-format +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s:无法读取符号链接 %s:%s\n" + +#, c-format +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s:可疑的长符合链接:%s\n" + +#, c-format +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s:无法创建目录 %s:%s\n" + +#, c-format +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s:无法更改 %s 的属主:%s\n" + +#, c-format +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s:无法更改 %s 的模式:%s\n" + +#, c-format +msgid "%s: unlink: %s: %s\n" +msgstr "%s:删除(unlink):%s:%s\n" + +#, c-format +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s:无法删除目录 %s:%s\n" + +#, c-format +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s:无法将目录 %s 改名为 %s:%s\n" + +#, c-format +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s:无法删除 %s:%s\n" + +#, c-format +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s:无法创建符号链接 %s:%s\n" + +#, c-format +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s:无法更改 %s 的属主:%s\n" + +#, c-format +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s:无法获取符号链接 %s 的信息(lstat):%s\n" + +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s:警告,用户 %s 没有 tcb 影子文件。\n" + +#, c-format +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s:紧急:%s 的 tcb 影子不是一个 st_nlink=1 的普通文件。\n" +"已锁定该帐号。\n" + +#, c-format +msgid "%s: mkdir: %s: %s\n" +msgstr "%s:创建目录:%s:%s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "无法将根目录改变为“%s”\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s:无法打开 %s:%s\n" #, c-format msgid "%s: user %s is currently logged in\n" msgstr "%s:用户 %s 目前已登录\n" -#, fuzzy, c-format -#| msgid "%s: user %s is currently logged in\n" +#, c-format msgid "%s: user %s is currently used by process %d\n" -msgstr "%s:用户 %s 目前已登录\n" +msgstr "%s:用户 %s 当前被进程使用 %d\n" msgid "Unable to determine your tty name." msgstr "无法确定您的 tty 终端名。" @@ -625,10 +610,8 @@ msgstr " -E, --expiredate 过期日期 将帐户过期时间设为“过期 msgid " -h, --help display this help message and exit\n" msgstr " -h, --help 显示此帮助信息并退出\n" -#, fuzzy -#| msgid " -g, --group edit group database\n" msgid " -i, --iso8601 use YYYY-MM-DD when printing dates\n" -msgstr " -g, --group 编辑 group 数据库\n" +msgstr " -i, --iso8601 打印日期时使用YYYY-MM-DD\n" msgid "" " -I, --inactive INACTIVE set password inactive after expiration\n" @@ -657,6 +640,11 @@ msgstr "" msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_DIR chroot 到的目录\n" +#, fuzzy +#| msgid " -P, --prefix PREFIX_DI directory prefix\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -R, --root CHROOT_DIR 目录前缀\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr " -W, --warndays 警告天数 将过期警告天数设为“警告天数”\n" @@ -682,12 +670,15 @@ msgstr "密码失效" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "帐户过期时间 (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "最近一次密码修改时间\t\t\t\t\t:" - msgid "never" msgstr "从不" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "最近一次密码修改时间\t\t\t\t\t:" + msgid "password must be changed" msgstr "密码必须更改" @@ -858,14 +849,6 @@ msgstr "%s:“%s”包含非法字符\n" msgid "%s: user '%s' does not exist\n" msgstr "%s:用户“%s”不存在\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s:不能在 NIS 客户端上修改用户“%s”。\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s:“%s”是此客户端的 NIS 管理员。\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "正在改变 %s 的用户信息\n" @@ -901,6 +884,11 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds 使用 SHA* 加密算法的轮数\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s:不支持的加密方法:%s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s:%s 标记只能和 %s 标记一起使用\n" @@ -951,6 +939,16 @@ msgstr " -s, --shell SHELL 该用户帐号的新登录 shell\n" msgid "Login Shell" msgstr "登录 Shell" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s:无法获得 %s 的大小:%s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file: %s\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s:无法创建新的默认文件:%s\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "您不能为“%s”更改 shell。\n" @@ -963,6 +961,11 @@ msgstr "正在更改 %s 的 shell\n" msgid "%s: Invalid entry: %s\n" msgstr "%s:无效的条目:%s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s:%s 是无效的 shell\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s:%s 是无效的 shell\n" @@ -1183,25 +1186,22 @@ msgstr " -p, --password PASSWORD 为新组使用此加密过的密码\n" msgid " -r, --system create a system account\n" msgstr " -r, --system 创建一个系统账户\n" -#, fuzzy -#| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -R, --root CHROOT_DIR chroot 到的目录\n" - -#, fuzzy -#| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" -msgstr " -l, --list 列出组中的所有成员\n" +msgstr " -l, --list 该组的用户成员列表\n" -#, fuzzy, c-format -#| msgid "invalid user name '%s'\n" +#, c-format msgid "Invalid member username %s\n" -msgstr "无效的用户名“%s”\n" +msgstr "无效的成员用户名“%s”\n" #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s:“%s”不是有效的组名\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s:无法打开 %s:%s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s:无效的组 ID “%s”\n" @@ -1244,14 +1244,6 @@ msgstr "%s:不能移除用户“%s”的主组\n" msgid "%s: group '%s' does not exist\n" msgstr "%s:“%s”组不存在\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s:“%s”组是一个 NIS 组。\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s:%s 是 NIS 管理员\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s:用户“%s”已经是“%s”的成员\n" @@ -1306,20 +1298,13 @@ msgstr "%s:您的组名和用户名不匹配\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s:只有 root 才可以使用 -g/--group 选项\n" -#, fuzzy -#| msgid "" -#| " -a, --append append the user to the supplemental " -#| "GROUPS\n" -#| " mentioned by the -G option without " -#| "removing\n" -#| " the user from other groups\n" msgid "" " -a, --append append the users mentioned by -U option to " "the group \n" " without removing existing user members\n" msgstr "" -" -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,\n" -" 并不从其它组中删除此用户\n" +" -a, --append 将-U选项提到的用户添加到组中\n" +" 无需删除现有用户成员\n" msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID 将组 ID 改为 GID\n" @@ -1340,10 +1325,6 @@ msgstr " -p, --password PASSWORD 将密码更改为(加密过的) PASSWOR msgid "%s: invalid group name '%s'\n" msgstr "%s:无效的组名“%s”\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s:%s 组是一个 NIS 组\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s:未知用户 %s\n" @@ -1463,8 +1444,12 @@ msgid "" " -b, --before DAYS print only lastlog records older than DAYS\n" msgstr " -b, --before DAYS 仅打印早于 DAYS 的最近登录记录\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear 清除一个用户的最近登录记录(须配合 -u 使用)\n" @@ -1484,10 +1469,9 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr " -u, --user LOGIN 打印 LOGIN 用户的最近登录记录\n" -#, fuzzy, c-format -#| msgid "Username Port Latest" +#, c-format msgid "Username Port From%*sLatest\n" -msgstr "用户名 端口 最后登录时间" +msgstr "用户名 端口 从最近的%*s\n" msgid "Username Port Latest" msgstr "用户名 端口 最后登录时间" @@ -1560,9 +1544,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s:必须持有效 root 身份才能工作\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "没有 utmp 条目。您必须在最底层的“sh”里执行“login”" - #, c-format msgid "" "\n" @@ -1596,14 +1577,6 @@ msgstr "登录错误" msgid "Cannot find user (%s)\n" msgstr "无法找到用户 (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -"%s 用户名:" - #, c-format msgid "%s: failure forking: %s" msgstr "%s:fork 失败:%s" @@ -1639,47 +1612,39 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format msgid "%s: kernel doesn't support setgroups restrictions\n" msgstr "" -#, fuzzy, c-format -#| msgid "%s: can't open group file\n" +#, c-format msgid "%s: couldn't open process setgroups: %s\n" -msgstr "%s:无法打开组文件\n" +msgstr "%s:无法打开进程setgroups:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to remove %s\n" +#, c-format msgid "%s: failed to read setgroups: %s\n" -msgstr "%s:移除 %s 失败\n" +msgstr "%s:读取setgroups失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to remove %s\n" +#, c-format msgid "%s: failed to seek setgroups: %s\n" -msgstr "%s:移除 %s 失败\n" +msgstr "%s:查询setgroups失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to unlock %s\n" +#, c-format msgid "%s: failed to setgroups %s policy: %s\n" -msgstr "%s:解锁 %s 失败\n" - -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s:无法为“%s”找到 tcb 目录\n" +msgstr "%s:setgroups%s策略失败:%s\n" #, fuzzy, c-format -#| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" -msgstr "%s:为 %s 创建 tcb 目录失败\n" +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" +msgstr "%s:无法统计目标目录%u\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1712,19 +1677,17 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s:无法统计目标目录%u\n" -#, fuzzy -#| msgid " -q, --quiet quiet mode\n" msgid " -b, --badname allow bad names\n" -msgstr " -q, --quiet 安静模式\n" +msgstr " -q, --badname 允许 bad name\n" msgid " -r, --system create system accounts\n" msgstr " -r, --system 创建系统帐号\n" @@ -1737,10 +1700,13 @@ msgstr "%s:“%s”组是影子组,但是不存在于 /etc/group\n" msgid "%s: invalid user ID '%s'\n" msgstr "%s:无效的用户 ID“%s”\n" -#, fuzzy, c-format -#| msgid "%s: invalid user name '%s'\n" +#, c-format msgid "%s: invalid user name '%s': use --badname to ignore\n" -msgstr "%s:无效的用户名“%s”\n" +msgstr "%s:无效的用户名“%s”: 使用 --badname 忽略\n" + +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" #, c-format msgid "%s: line %d: invalid line\n" @@ -1762,14 +1728,18 @@ msgstr "%s:第 %d 行:无法创建组\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s:第 %d 行:用户“%s”不存在于 %s 中\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s:删除(unlink):%s:%s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s:第 %d 行:无法更新密码\n" -#, fuzzy, c-format -#| msgid "%s: line %d: mkdir %s failed: %s\n" +#, c-format msgid "%s: line %d: homedir must be an absolute path\n" -msgstr "%s:第 %d 行:创建目录 %s 失败:%s\n" +msgstr "%s:第 %d 行:Homedir必须是绝对路径\n" #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" @@ -1783,14 +1753,14 @@ msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s:第 %d 行:无法更新条目\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s:准备新 %s 条目失败\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s:找不到子用户范围\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s:准备新 %s 条目失败\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s:找不到子用户组范围\n" @@ -1853,6 +1823,11 @@ msgstr "" " -x, --maxdays MAX_DAYS 设置到下次修改密码所须等待的最多天数\n" " 为 MAX_DAYS\n" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list 显示帐户年龄信息\n" + msgid "Old password: " msgstr "旧密码:" @@ -1872,6 +1847,11 @@ msgstr "" "请输入新密码(最少 %d 最多 %d 个字符)\n" "请混合使用大小写字母和数字。\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s:字段太长\n" + msgid "New password: " msgstr "新密码:" @@ -1896,10 +1876,9 @@ msgstr "无法更改 %s 的密码。\n" msgid "The password for %s cannot be changed yet.\n" msgstr "尚无法更改 %s 的密码。\n" -#, fuzzy, c-format -#| msgid "%s: shadow passwords required for -e\n" +#, c-format msgid "%s: malformed password data obtained for user %s\n" -msgstr "%s:-e 参数需要有影子密码\n" +msgstr "%s:获取的用户密码数据不正确%s\n" #, c-format msgid "" @@ -1915,9 +1894,13 @@ msgid "%s: repository %s not supported\n" msgstr "%s:不支持 %s 存储。\n" #, fuzzy, c-format -#| msgid "%s: %s is not authorized to change the password of %s\n" +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s:只有 root 才可以使用 -g/--group 选项\n" + +#, c-format msgid "%s: root is not authorized by SELinux to change the password of %s\n" -msgstr "%s:%s 没有被授权更改 %s 的密码\n" +msgstr "%s:root没有被SELinux授权修改密码%s\n" #, c-format msgid "%s: You may not view or modify password information for %s.\n" @@ -1968,10 +1951,9 @@ msgstr "无效的密码文件项" msgid "duplicate password entry" msgstr "重复的用户条目" -#, fuzzy, c-format -#| msgid "%s: invalid user name '%s'\n" +#, c-format msgid "invalid user name '%s': use --badname to ignore\n" -msgstr "%s:无效的用户名“%s”\n" +msgstr "无效的用户名'%s':使用 --badname 忽略\n" #, c-format msgid "invalid user ID '%lu'\n" @@ -2064,11 +2046,9 @@ msgstr "%s:信号故障\n" msgid "Session terminated, terminating shell..." msgstr "会话结束,结束 shell ..." -#, c-format msgid " ...killed.\n" msgstr " ...已被杀死。\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...等待子进程结束。\n" @@ -2079,20 +2059,6 @@ msgstr " ...已结束。\n" msgid "%s: %s\n" msgstr "%s:%s\n" -#, fuzzy -#| msgid "" -#| "Usage: su [options] [LOGIN]\n" -#| "\n" -#| "Options:\n" -#| " -c, --command COMMAND pass COMMAND to the invoked shell\n" -#| " -h, --help display this help message and exit\n" -#| " -, -l, --login make the shell a login shell\n" -#| " -m, -p,\n" -#| " --preserve-environment do not reset environment variables, and\n" -#| " keep the same shell\n" -#| " -s, --shell SHELL use SHELL instead of the default in " -#| "passwd\n" -#| "\n" msgid "" "Usage: su [options] [-] [username [args]]\n" "\n" @@ -2107,7 +2073,7 @@ msgid "" "\n" "If no username is given, assume root.\n" msgstr "" -"用法:su [选项] [登录名]\n" +"用法:su [选项] [-] [username [args]]\n" "\n" "选项:\n" " -c, --command COMMAND 将 COMMAND 传递至启动的 shell\n" @@ -2117,6 +2083,7 @@ msgstr "" " --preserve-environment 不重置环境变量并保持同一 shell\n" " -s, --shell SHELL 使用 SHELL 而非 passwd 中的默认值\n" "\n" +" 如果没有给出用户名,假设为root\n" #, c-format msgid "" @@ -2153,6 +2120,11 @@ msgstr "%s:那时,您没有被授权 su\n" msgid "No passwd entry for user '%s'\n" msgstr "没有用户“%s”的密码项\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "无效的用户名“%s”\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s:必须从终端中执行\n" @@ -2199,18 +2171,19 @@ msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%s:%s 配置(位于 %s) 将被忽略\n" #, fuzzy, c-format -#| msgid "%s: cannot create new defaults file\n" -msgid "%s: cannot create new defaults file: %s\n" -msgstr "%s:无法创建新的默认文件\n" +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%s:%s 配置(位于 %s) 将被忽略\n" -#, fuzzy, c-format -#| msgid "%s: cannot create new defaults file\n" -msgid "%s: cannot create directory for defaults file\n" -msgstr "%s:无法创建新的默认文件\n" +#, c-format +msgid "%s: cannot create new defaults file: %s\n" +msgstr "%s:无法创建新的默认文件:%s\n" #, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s:无法创建新的默认文件\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s:无法为默认文件创建目录\n" #, c-format msgid "%s: cannot open new defaults file\n" @@ -2228,18 +2201,13 @@ msgstr "%s:无法创建备份文件(%s):%s\n" msgid "%s: rename: %s: %s\n" msgstr "%s:改名:%s:%s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s:“%s”组是一个 NIS 组。\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s:指定了过多组(最多 %d)。\n" -#, fuzzy, c-format -#| msgid "%s: Out of memory. Cannot update %s.\n" +#, c-format msgid "%s: Out of memory. Cannot find group '%s'.\n" -msgstr "%s:超出内存。不能更新 %s。\n" +msgstr "%s:超出内存。找不到组 '%s'。\n" #, c-format msgid "" @@ -2255,10 +2223,8 @@ msgstr "" "\n" "选项:\n" -#, fuzzy -#| msgid " -s, --shadow edit shadow or gshadow database\n" msgid " --badname do not check for bad names\n" -msgstr " -s, --shadow 编辑 shadow 或 gshadow 数据库\n" +msgstr " --badname 不检查 bad names\n" msgid "" " -b, --base-dir BASE_DIR base directory for the home directory of " @@ -2350,6 +2316,15 @@ msgid "" "mapping\n" msgstr " -Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr " -Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s:无效的基目录“%s”\n" @@ -2378,108 +2353,93 @@ msgstr "%s:无效的字段“%s”\n" msgid "%s: invalid shell '%s'\n" msgstr "%s:无效的 shell“%s”\n" -#, fuzzy, c-format -#| msgid "%s: Warning: %s is not executable\n" +#, c-format msgid "%s: Warning: missing or non-executable shell '%s'\n" -msgstr "%s:警告:%s 不可执行\n" +msgstr "%s:警告:缺少或不可执行 shell '%s'\n" -#, fuzzy, c-format -#| msgid "%s: Option -C cannot be used together with option -S\n" +#, c-format msgid "%s: -Z cannot be used with --prefix\n" -msgstr "%s:选项 -C 不能与 -S 选项一起使用\n" +msgstr "%s:-Z 不能与 --prefix一起使用\n" #, c-format msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s:-Z 选项要求内核启用 SELinux\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to open the faillog file for UID %lu: %s\n" -msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" +msgstr "%s:打开 UID %lu 的登录失败文件失败:%s\n" #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to close the faillog file for UID %lu: %s\n" -msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" +msgstr "%s:关闭 UID %lu 的登录失败文件失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to open the lastlog file for UID %lu: %s\n" -msgstr "%s:重置 UID %lu 的最近登录条目失败:%s\n" +msgstr "%s:打开 UID %lu 的最近登录文件失败:%s\n" #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s:重置 UID %lu 的最近登录条目失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to close the lastlog file for UID %lu: %s\n" -msgstr "%s:重置 UID %lu 的最近登录条目失败:%s\n" +msgstr "%s:打开 UID %lu 的最近登录文件失败:%s\n" -#, fuzzy, c-format -#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +#, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" -msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" +msgstr "%s:重置 的记录认证失败条目失败:%s\n" #, c-format msgid "%s: failed to prepare the new %s entry\n" msgstr "%s:准备新 %s 条目失败\n" -#, fuzzy, c-format -#| msgid "%s: error updating files\n" +#, c-format msgid "%s: error while duplicating string %s\n" -msgstr "%s:更新文件出错\n" +msgstr "%s:复制字符串时出错 %s\n" -#, fuzzy, c-format -#| msgid "%s: cannot create directory %s\n" +#, c-format msgid "%s: cannot set SELinux context for home directory %s\n" -msgstr "%s:无法创建目录 %s\n" +msgstr "%s:无法为主目录设置SELinux上下文 %s\n" #, c-format msgid "%s: error while duplicating string in BTRFS check %s\n" msgstr "" -#, fuzzy, c-format -#| msgid "%s: %s home directory (%s) not found\n" +#, c-format msgid "%s: home directory \"%s\" must be mounted on BTRFS\n" -msgstr "%s:未找到 %s 的主目录“%s”\n" +msgstr "%s:home目录\"%s\"必须挂载在BTRFS上\n" -#, fuzzy, c-format -#| msgid "%s: failed to allocate memory: %s\n" +#, c-format msgid "%s: failed to create BTRFS subvolume: %s\n" -msgstr "%s:申请内存失败:%s\n" +msgstr "%s:创建BTRFS子卷失败:%s\n" #, c-format msgid "%s: cannot create directory %s\n" msgstr "%s:无法创建目录 %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: chown %s failed: %s\n" +#, c-format msgid "%s: warning: chown on `%s' failed: %m\n" -msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" +msgstr "%s 警告:改变 `%s' 的属主失败:%m\n" -#, fuzzy, c-format -#| msgid "%s: line %d: chown %s failed: %s\n" +#, c-format msgid "%s: warning: chmod on `%s' failed: %m\n" -msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" +msgstr "%s:警告:改变 `%s' 的属主失败:%m\n" -#, fuzzy, c-format -#| msgid "%s: line %d: chown %s failed: %s\n" +#, c-format msgid "%s: warning: chown on '%s' failed: %m\n" -msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" +msgstr "%s:警告:改变 %s 的属主失败:%m\n" #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" -#, fuzzy, c-format -#| msgid "Cannot create SELinux login mapping for %s\n" +#, c-format msgid "%s: cannot set SELinux context for mailbox file %s\n" -msgstr "无法为 %s 创建登录映射\n" +msgstr "%s: 无法为邮箱文件设置SELinux上下文 %s\n" msgid "Creating mailbox file" msgstr "正在创建信箱文件" @@ -2491,6 +2451,16 @@ msgstr "没有找到“mail”组。以 0600 权限模式创建用户的信箱 msgid "Setting mailbox file permissions" msgstr "正在设置信箱文件访问权限" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "正在创建信箱文件" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "正在创建信箱文件" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2612,10 +2582,6 @@ msgstr "%s:无法删除 %s 的内容:%s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s:无法从 %s 中删除 tcb 文件:%s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s:用户 %s 是 NIS 用户\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s:未找到 %s 的主目录“%s”\n" @@ -2624,10 +2590,9 @@ msgstr "%s:未找到 %s 的主目录“%s”\n" msgid "%s: not removing directory %s (would remove home of user %s)\n" msgstr "%s:不删除目录 %s (因为这将删除用户 %s 的主目录)\n" -#, fuzzy, c-format -#| msgid "%s: error removing directory %s\n" +#, c-format msgid "%s: error removing subvolume %s\n" -msgstr "%s:删除目录 %s 时出错\n" +msgstr "%s:删除分卷 %s 时出错\n" #, c-format msgid "%s: error removing directory %s\n" @@ -2727,6 +2692,14 @@ msgid "" "account\n" msgstr " -Z, --selinux-user SEUSER 用户的新的 SELinux 用户映射\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr " -Z, --selinux-user SEUSER 用户的新的 SELinux 用户映射\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2814,10 +2787,20 @@ msgstr "%s:先前的主目录 (%s) 不是一个目录。没有移除它,也 msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "%s:将用户 %lu 的登录失败条目复制给用户 %lu 失败:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s:将用户 %lu 的登录失败条目复制给用户 %lu 失败:%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "%s:将用户 %lu 的登录失败条目复制给用户 %lu 失败:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s:将用户 %lu 的登录失败条目复制给用户 %lu 失败:%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s:警告:%s 不属于 %s\n" @@ -2918,8 +2901,10 @@ msgstr "删除(unlink)临时文件失败" msgid "failed to stat edited file" msgstr "获取编辑过的文件的信息失败" -msgid "failed to allocate memory" -msgstr "申请内存失败" +#, fuzzy +#| msgid "%s: snprintf failed!\n" +msgid "asprintf(3) failed" +msgstr "%s:snprintf 失败\n" msgid "failed to create backup file" msgstr "创建备份文件失败" @@ -2932,6 +2917,59 @@ msgstr "%s:无法恢复 %s:%s (您的修改在 %s 中)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s:无法为“%s”找到 tcb 目录\n" +#~ msgid "Environment overflow\n" +#~ msgstr "环境溢出\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s:不能在 NIS 客户端上修改用户“%s”。\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s:“%s”是此客户端的 NIS 管理员。\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s:“%s”组是一个 NIS 组。\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s:%s 是 NIS 管理员\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s:%s 组是一个 NIS 组\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s:无法创建新的默认文件\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s:“%s”组是一个 NIS 组。\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s:用户 %s 是 NIS 用户\n" + +#, c-format +#~ msgid "%s: Not enough arguments to form %u mappings\n" +#~ msgstr "%s:没有足够的参数来形成%u映射\n" + +#~ msgid "too simple" +#~ msgstr "太简单" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "没有 utmp 条目。您必须在最底层的“sh”里执行“login”" + +#, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s:无法打开目标的proc目录%u\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "申请内存失败" + #~ msgid "Usage: id\n" #~ msgstr "用法:id\n" @@ -2947,10 +2985,6 @@ msgstr "%s:无法为“%s”找到 tcb 目录\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s:密码过期信息已更改。\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "无效的用户名“%s”\n" - #~ msgid "Username Port From Latest" #~ msgstr "用户名 端口 来自 最后登录时间" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 7d77259..c4ffca8 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index 39b57c6..709f566 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.9\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2022-11-08 10:37-0600\n" +"POT-Creation-Date: 2024-06-21 11:23+0200\n" "PO-Revision-Date: 2022-07-27 23:04+0800\n" "Last-Translator: Celeste Liu \n" "Language-Team: Chinese \n" @@ -19,224 +19,6 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Lokalize 19.08.1\n" -#, c-format -msgid "" -"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" -msgstr "%2$s 中有多個項目的名稱是「%1$s」。請使用 pwck 或 grpck 修復。\n" - -#, c-format -msgid "crypt method not supported by libcrypt? (%s)\n" -msgstr "libcrypt 不支援該加密方法?(%s)\n" - -#, c-format -msgid "configuration error - cannot parse %s value: '%s'" -msgstr "組態設定錯誤 - 無法解析 %s 值:「%s」" - -msgid "Could not allocate space for config info.\n" -msgstr "無法為組態設定資訊分配空間。\n" - -#, c-format -msgid "configuration error - unknown item '%s' (notify administrator)\n" -msgstr "組態設定錯誤 - 項目「%s」未知(請通知管理員)\n" - -#, c-format -msgid "%s: nscd did not terminate normally (signal %d)\n" -msgstr "%s:nscd 非正常終止(信號 %d)\n" - -#, c-format -msgid "%s: nscd exited with status %d\n" -msgstr "%s:nscd 結束並回傳狀態碼 %d\n" - -msgid "Password: " -msgstr "密碼:" - -#, c-format -msgid "%s's Password: " -msgstr "%s 的密碼:" - -#, fuzzy -#| msgid "Cannot open audit interface - aborting.\n" -msgid "Cannot open audit interface.\n" -msgstr "無法開啟稽核介面 - 取消。\n" - -#, fuzzy, c-format -#| msgid "%s: cannot reset SELinux file creation context\n" -msgid "%s: can not get previous SELinux process context: %s\n" -msgstr "%s: 無法重設 SELinux 檔案建立上下文\n" - -#, c-format -msgid "[libsemanage]: %s\n" -msgstr "[libsemanage]:%s\n" - -#, c-format -msgid "Cannot create SELinux management handle\n" -msgstr "無法建立 SELinux 管理工具的處理器\n" - -#, c-format -msgid "SELinux policy not managed\n" -msgstr "SELinux 政策未受管理\n" - -#, c-format -msgid "Cannot read SELinux policy store\n" -msgstr "無法讀取 SELinux 原則儲存區\n" - -#, c-format -msgid "Cannot establish SELinux management connection\n" -msgstr "無法建立 SELinux 管理工具的連線\n" - -#, c-format -msgid "Cannot begin SELinux transaction\n" -msgstr "無法開始 SELinux 交易\n" - -#, c-format -msgid "Could not query seuser for %s\n" -msgstr "無法查詢 %s 的 seuser\n" - -#, c-format -msgid "Could not set serange for %s\n" -msgstr "無法設定 %s 的 serange\n" - -#, c-format -msgid "Could not set sename for %s\n" -msgstr "無法設定 %s 的 sename\n" - -#, c-format -msgid "Could not modify login mapping for %s\n" -msgstr "無法修改 %s 的登入映射\n" - -#, c-format -msgid "Cannot create SELinux login mapping for %s\n" -msgstr "無法建立 %s 的 SELinux 登入映射\n" - -#, c-format -msgid "Could not set name for %s\n" -msgstr "無法設定 %s 的名稱\n" - -#, c-format -msgid "Could not set SELinux user for %s\n" -msgstr "無法設定 %s 的 SELinux 使用者\n" - -#, c-format -msgid "Could not add login mapping for %s\n" -msgstr "無法新增 %s 的登入映射\n" - -#, c-format -msgid "Cannot init SELinux management\n" -msgstr "無法初始化 SELinux 管理工具\n" - -#, c-format -msgid "Cannot create SELinux user key\n" -msgstr "無法建立 SELinux 使用者金鑰\n" - -#, c-format -msgid "Cannot verify the SELinux user\n" -msgstr "無法驗證 SELinux 使用者\n" - -#, c-format -msgid "Cannot modify SELinux user mapping\n" -msgstr "無法修改 SELinux 使用者映射\n" - -#, c-format -msgid "Cannot add SELinux user mapping\n" -msgstr "無法新增 SELinux 使用者映射\n" - -#, c-format -msgid "Cannot commit SELinux transaction\n" -msgstr "無法提交 SELinux 交易。\n" - -#, c-format -msgid "Login mapping for %s is not defined, OK if default mapping was used\n" -msgstr "未定義 %s 的登入映射。如果已使用預設映射,那就行\n" - -#, c-format -msgid "Login mapping for %s is defined in policy, cannot be deleted\n" -msgstr "已在原則中定義 %s 的登入映射,不能刪除\n" - -#, c-format -msgid "Could not delete login mapping for %s" -msgstr "無法刪除 %s 的登入映射" - -#, c-format -msgid "%s: out of memory\n" -msgstr "%s:記憶體不足\n" - -#, c-format -msgid "%s: Cannot stat %s: %s\n" -msgstr "%s:無法取得 %s 檔案的資訊 (stat):%s\n" - -#, c-format -msgid "%s: %s is neither a directory, nor a symlink.\n" -msgstr "%s:%s 既不是目錄,也不是符號連結。\n" - -#, c-format -msgid "%s: Cannot read symbolic link %s: %s\n" -msgstr "%s:無法讀取 %s 符號連結:%s\n" - -#, c-format -msgid "%s: Suspiciously long symlink: %s\n" -msgstr "%s:符號連結過長:%s\n" - -#, c-format -msgid "%s: Cannot create directory %s: %s\n" -msgstr "%s:無法建立 %s 目錄:%s\n" - -#, c-format -msgid "%s: Cannot change owner of %s: %s\n" -msgstr "%s:無法變更 %s 的所有者:%s\n" - -#, c-format -msgid "%s: Cannot change mode of %s: %s\n" -msgstr "%s:無法變更 %s 的模式:%s\n" - -#, c-format -msgid "%s: unlink: %s: %s\n" -msgstr "%s:取消連結 (unlink):%s:%s\n" - -#, c-format -msgid "%s: Cannot remove directory %s: %s\n" -msgstr "%s:無法移除 %s 目錄:%s\n" - -#, c-format -msgid "%s: Cannot rename %s to %s: %s\n" -msgstr "%s:無法將 %s 重命名至 %s:%s\n" - -#, c-format -msgid "%s: Cannot remove %s: %s\n" -msgstr "%s:無法移除 %s:%s\n" - -#, c-format -msgid "%s: Cannot create symbolic link %s: %s\n" -msgstr "%s:無法建立 %s 符號連結:%s\n" - -#, c-format -msgid "%s: Cannot change owners of %s: %s\n" -msgstr "%s:無法變更 %s 的所有者:%s\n" - -#, c-format -msgid "%s: Cannot lstat %s: %s\n" -msgstr "%s:無法執行 lstat %s:%s\n" - -#, c-format -msgid "%s: Warning, user %s has no tcb shadow file.\n" -msgstr "%s:警告,使用者 %s 沒有 tcb 陰影檔案。\n" - -#, c-format -msgid "" -"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" -"The account is left locked.\n" -msgstr "" -"%s:緊急情況:%s 的 tcb 陰影檔並非包含 st_nlink=1 的正常檔案。\n" -"已鎖定帳戶。\n" -"\n" - -#, c-format -msgid "%s: mkdir: %s: %s\n" -msgstr "%s:建立目錄 (mkdir):%s:%s\n" - -#, c-format -msgid "%s: Cannot open %s: %s\n" -msgstr "%s:無法開啟 %s:%s\n" - #, c-format msgid "Warning: unknown group %s\n" msgstr "警告:未知群組 %s\n" @@ -283,6 +65,11 @@ msgstr "無法變更 tty 標準輸入的所有者或模式:%s" msgid "%s: failed to unlock %s\n" msgstr "%s:無法解鎖 %s\n" +#, c-format +msgid "" +"Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n" +msgstr "%2$s 中有多個項目的名稱是「%1$s」。請使用 pwck 或 grpck 修復。\n" + #, c-format msgid "%s: " msgstr "%s:" @@ -290,8 +77,9 @@ msgstr "%s:" msgid ": " msgstr ":" -msgid "Environment overflow\n" -msgstr "環境溢位\n" +#, c-format +msgid "crypt method not supported by libcrypt? (%s)\n" +msgstr "libcrypt 不支援該加密方法?(%s)\n" #, c-format msgid "You may not change $%s\n" @@ -399,8 +187,15 @@ msgid "%s: Can't get unique UID (no more available UIDs)\n" msgstr "%s:無法取得唯一 UID(沒有更多可用 UID)\n" #, c-format -msgid "%s: Not enough arguments to form %u mappings\n" -msgstr "" +msgid "configuration error - cannot parse %s value: '%s'" +msgstr "組態設定錯誤 - 無法解析 %s 值:「%s」" + +msgid "Could not allocate space for config info.\n" +msgstr "無法為組態設定資訊分配空間。\n" + +#, c-format +msgid "configuration error - unknown item '%s' (notify administrator)\n" +msgstr "組態設定錯誤 - 項目「%s」未知(請通知管理員)\n" #, fuzzy, c-format #| msgid "%s: Authentication failure\n" @@ -432,7 +227,7 @@ msgstr "無法設定 %s 的名稱\n" #, fuzzy, c-format #| msgid "%s: can't open file\n" -msgid "%s: snprintf failed!\n" +msgid "%s: stpeprintf failed!\n" msgstr "%s:無法打開檔案\n" #, fuzzy, c-format @@ -445,9 +240,22 @@ msgstr "%s:第 %d 行:變更 %s 的擁有權失敗:%s\n" msgid "%s: write to %s failed: %s\n" msgstr "%s:第 %d 行:變更 %s 的擁有權失敗:%s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: closing %s failed: %s\n" +msgstr "%s:第 %d 行:變更 %s 的擁有權失敗:%s\n" + msgid "Too many logins.\n" msgstr "登入次數過多。\n" +#, c-format +msgid "" +"\n" +"%s login: " +msgstr "" +"\n" +" %s 使用者名稱:" + msgid "You have new mail." msgstr "您有新信件。" @@ -457,6 +265,14 @@ msgstr "沒有信件。" msgid "You have mail." msgstr "您有信件。" +#, c-format +msgid "%s: nscd did not terminate normally (signal %d)\n" +msgstr "%s:nscd 非正常終止(信號 %d)\n" + +#, c-format +msgid "%s: nscd exited with status %d\n" +msgstr "%s:nscd 結束並回傳狀態碼 %d\n" + msgid "no change" msgstr "沒有變更" @@ -469,9 +285,6 @@ msgstr "僅變更大小寫" msgid "too similar" msgstr "過於相似" -msgid "too simple" -msgstr "過於簡單" - msgid "rotated" msgstr "已旋轉" @@ -497,95 +310,287 @@ msgid "passwd: password updated successfully\n" msgstr "passwd:密碼成功變更\n" #, c-format -msgid "%s: PAM modules requesting echoing are not supported.\n" -msgstr "" +msgid "%s: PAM modules requesting echoing are not supported.\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "%s: repository %s not supported\n" +msgid "%s: conversation type %d not supported.\n" +msgstr "%s:不支持 %s 套件存庫。\n" + +#, fuzzy, c-format +#| msgid "%s: pam_start: error %d\n" +msgid "%s: (user %s) pam_start failure %d\n" +msgstr "%s:pam_start:錯誤 %d\n" + +#, fuzzy, c-format +#| msgid "passwd: pam_start() failed, error %d\n" +msgid "" +"%s: (user %s) pam_chauthtok() failed, error:\n" +"%s\n" +msgstr "passwd: pam_start() 失敗,錯誤 %d\n" + +msgid "Password: " +msgstr "密碼:" + +#, c-format +msgid "%s's Password: " +msgstr "%s 的密碼:" + +#, c-format +msgid "Incorrect password for %s.\n" +msgstr "%s 的密碼錯誤。\n" + +#, c-format +msgid "%s: multiple --root options\n" +msgstr "%s:指定多個 --root 選項\n" + +#, c-format +msgid "%s: option '%s' requires an argument\n" +msgstr "%s:「%s」選項需要參數\n" + +#, c-format +msgid "%s: failed to drop privileges (%s)\n" +msgstr "%s:無法拋棄權限 (%s)\n" + +#, c-format +msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" +msgstr "%s:chroot 路徑「%s」無效,僅支持絕對路徑。\n" + +#, c-format +msgid "%s: cannot access chroot directory %s: %s\n" +msgstr "%s:無法存取 chroot 目錄 %s:%s\n" + +#, c-format +msgid "%s: unable to chroot to directory %s: %s\n" +msgstr "%s:無法 chroot 到 %s 目錄:%s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot chdir to chroot directory %s: %s\n" +msgid "%s: cannot chdir in chroot directory %s: %s\n" +msgstr "%s:無法切換至 chroot 目錄 %s:%s\n" + +#, c-format +msgid "" +"Invalid ENCRYPT_METHOD value: '%s'.\n" +"Defaulting to DES.\n" +msgstr "" +"ENCRYPT_METHOD 數值:「%s」。\n" +"預設值為 DES。\n" + +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + +#, fuzzy +#| msgid "Cannot open audit interface - aborting.\n" +msgid "Cannot open audit interface.\n" +msgstr "無法開啟稽核介面 - 取消。\n" + +#, fuzzy, c-format +#| msgid "%s: cannot reset SELinux file creation context\n" +msgid "%s: can not get previous SELinux process context: %s\n" +msgstr "%s: 無法重設 SELinux 檔案建立上下文\n" + +#, c-format +msgid "[libsemanage]: %s\n" +msgstr "[libsemanage]:%s\n" + +#, c-format +msgid "Cannot create SELinux management handle\n" +msgstr "無法建立 SELinux 管理工具的處理器\n" + +#, c-format +msgid "SELinux policy not managed\n" +msgstr "SELinux 政策未受管理\n" + +#, c-format +msgid "Cannot read SELinux policy store\n" +msgstr "無法讀取 SELinux 原則儲存區\n" + +#, c-format +msgid "Cannot establish SELinux management connection\n" +msgstr "無法建立 SELinux 管理工具的連線\n" + +#, c-format +msgid "Cannot begin SELinux transaction\n" +msgstr "無法開始 SELinux 交易\n" + +#, c-format +msgid "Could not query seuser for %s\n" +msgstr "無法查詢 %s 的 seuser\n" + +#, fuzzy, c-format +#| msgid "Could not set serange for %s\n" +msgid "Could not set serange for %s to %s\n" +msgstr "無法設定 %s 的 serange\n" + +#, c-format +msgid "Could not set sename for %s\n" +msgstr "無法設定 %s 的 sename\n" + +#, c-format +msgid "Could not modify login mapping for %s\n" +msgstr "無法修改 %s 的登入映射\n" + +#, c-format +msgid "Cannot create SELinux login mapping for %s\n" +msgstr "無法建立 %s 的 SELinux 登入映射\n" + +#, c-format +msgid "Could not set name for %s\n" +msgstr "無法設定 %s 的名稱\n" + +#, c-format +msgid "Could not set SELinux user for %s\n" +msgstr "無法設定 %s 的 SELinux 使用者\n" + +#, c-format +msgid "Could not add login mapping for %s\n" +msgstr "無法新增 %s 的登入映射\n" + +#, c-format +msgid "Cannot init SELinux management\n" +msgstr "無法初始化 SELinux 管理工具\n" + +#, c-format +msgid "Cannot create SELinux user key\n" +msgstr "無法建立 SELinux 使用者金鑰\n" + +#, c-format +msgid "Cannot verify the SELinux user\n" +msgstr "無法驗證 SELinux 使用者\n" + +#, c-format +msgid "Cannot modify SELinux user mapping\n" +msgstr "無法修改 SELinux 使用者映射\n" + +#, c-format +msgid "Cannot add SELinux user mapping\n" +msgstr "無法新增 SELinux 使用者映射\n" + +#, c-format +msgid "Cannot commit SELinux transaction\n" +msgstr "無法提交 SELinux 交易。\n" + +#, c-format +msgid "Login mapping for %s is not defined, OK if default mapping was used\n" +msgstr "未定義 %s 的登入映射。如果已使用預設映射,那就行\n" + +#, c-format +msgid "Login mapping for %s is defined in policy, cannot be deleted\n" +msgstr "已在原則中定義 %s 的登入映射,不能刪除\n" + +#, c-format +msgid "Could not delete login mapping for %s" +msgstr "無法刪除 %s 的登入映射" + +#, c-format +msgid "Unable to cd to '%s'\n" +msgstr "無法切換至「%s」目錄\n" + +msgid "No directory, logging in with HOME=/" +msgstr "沒有目錄,將以 HOME=/ 登入" + +#, c-format +msgid "Cannot execute %s" +msgstr "無法執行 %s" + +#, c-format +msgid "Maximum subsystem depth reached\n" +msgstr "" + +#, c-format +msgid "Invalid root directory '%s'\n" +msgstr "根目錄「%s」無效\n" + +#, c-format +msgid "Can't change root directory to '%s'\n" +msgstr "無法將根目錄變更至「%s」\n" -#, fuzzy, c-format -#| msgid "%s: repository %s not supported\n" -msgid "%s: conversation type %d not supported.\n" -msgstr "%s:不支持 %s 套件存庫。\n" +#, c-format +msgid "%s: out of memory\n" +msgstr "%s:記憶體不足\n" -#, fuzzy, c-format -#| msgid "%s: pam_start: error %d\n" -msgid "%s: (user %s) pam_start failure %d\n" -msgstr "%s:pam_start:錯誤 %d\n" +#, c-format +msgid "%s: Cannot stat %s: %s\n" +msgstr "%s:無法取得 %s 檔案的資訊 (stat):%s\n" -#, fuzzy, c-format -#| msgid "passwd: pam_start() failed, error %d\n" -msgid "" -"%s: (user %s) pam_chauthtok() failed, error:\n" -"%s\n" -msgstr "passwd: pam_start() 失敗,錯誤 %d\n" +#, c-format +msgid "%s: %s is neither a directory, nor a symlink.\n" +msgstr "%s:%s 既不是目錄,也不是符號連結。\n" #, c-format -msgid "Incorrect password for %s.\n" -msgstr "%s 的密碼錯誤。\n" +msgid "%s: Cannot read symbolic link %s: %s\n" +msgstr "%s:無法讀取 %s 符號連結:%s\n" #, c-format -msgid "%s: multiple --root options\n" -msgstr "%s:指定多個 --root 選項\n" +msgid "%s: Suspiciously long symlink: %s\n" +msgstr "%s:符號連結過長:%s\n" #, c-format -msgid "%s: option '%s' requires an argument\n" -msgstr "%s:「%s」選項需要參數\n" +msgid "%s: Cannot create directory %s: %s\n" +msgstr "%s:無法建立 %s 目錄:%s\n" #, c-format -msgid "%s: failed to drop privileges (%s)\n" -msgstr "%s:無法拋棄權限 (%s)\n" +msgid "%s: Cannot change owner of %s: %s\n" +msgstr "%s:無法變更 %s 的所有者:%s\n" #, c-format -msgid "%s: invalid chroot path '%s', only absolute paths are supported.\n" -msgstr "%s:chroot 路徑「%s」無效,僅支持絕對路徑。\n" +msgid "%s: Cannot change mode of %s: %s\n" +msgstr "%s:無法變更 %s 的模式:%s\n" #, c-format -msgid "%s: cannot access chroot directory %s: %s\n" -msgstr "%s:無法存取 chroot 目錄 %s:%s\n" +msgid "%s: unlink: %s: %s\n" +msgstr "%s:取消連結 (unlink):%s:%s\n" #, c-format -msgid "%s: cannot chdir to chroot directory %s: %s\n" -msgstr "%s:無法切換至 chroot 目錄 %s:%s\n" +msgid "%s: Cannot remove directory %s: %s\n" +msgstr "%s:無法移除 %s 目錄:%s\n" #, c-format -msgid "%s: unable to chroot to directory %s: %s\n" -msgstr "%s:無法 chroot 到 %s 目錄:%s\n" +msgid "%s: Cannot rename %s to %s: %s\n" +msgstr "%s:無法將 %s 重命名至 %s:%s\n" #, c-format -msgid "Unable to obtain random bytes.\n" -msgstr "" +msgid "%s: Cannot remove %s: %s\n" +msgstr "%s:無法移除 %s:%s\n" #, c-format -msgid "" -"Invalid ENCRYPT_METHOD value: '%s'.\n" -"Defaulting to DES.\n" -msgstr "" -"ENCRYPT_METHOD 數值:「%s」。\n" -"預設值為 DES。\n" +msgid "%s: Cannot create symbolic link %s: %s\n" +msgstr "%s:無法建立 %s 符號連結:%s\n" #, c-format -msgid "" -"Unable to generate a salt from setting \"%s\", check your settings in " -"ENCRYPT_METHOD and the corresponding configuration for your selected hash " -"method.\n" -msgstr "" +msgid "%s: Cannot change owners of %s: %s\n" +msgstr "%s:無法變更 %s 的所有者:%s\n" #, c-format -msgid "Unable to cd to '%s'\n" -msgstr "無法切換至「%s」目錄\n" +msgid "%s: Cannot lstat %s: %s\n" +msgstr "%s:無法執行 lstat %s:%s\n" -msgid "No directory, logging in with HOME=/" -msgstr "沒有目錄,將以 HOME=/ 登入" +#, c-format +msgid "%s: Warning, user %s has no tcb shadow file.\n" +msgstr "%s:警告,使用者 %s 沒有 tcb 陰影檔案。\n" #, c-format -msgid "Cannot execute %s" -msgstr "無法執行 %s" +msgid "" +"%s: Emergency: %s's tcb shadow is not a regular file with st_nlink=1.\n" +"The account is left locked.\n" +msgstr "" +"%s:緊急情況:%s 的 tcb 陰影檔並非包含 st_nlink=1 的正常檔案。\n" +"已鎖定帳戶。\n" +"\n" #, c-format -msgid "Invalid root directory '%s'\n" -msgstr "根目錄「%s」無效\n" +msgid "%s: mkdir: %s: %s\n" +msgstr "%s:建立目錄 (mkdir):%s:%s\n" #, c-format -msgid "Can't change root directory to '%s'\n" -msgstr "無法將根目錄變更至「%s」\n" +msgid "%s: Cannot open %s: %s\n" +msgstr "%s:無法開啟 %s:%s\n" #, c-format msgid "%s: user %s is currently logged in\n" @@ -650,6 +655,11 @@ msgstr " -M, --maxdays 最長天數 設定密碼變更的最長間隔天 msgid " -R, --root CHROOT_DIR directory to chroot into\n" msgstr " -R, --root CHROOT_目錄 要 chroot 進去的目錄\n" +#, fuzzy +#| msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgstr " -P, --prefix 目錄前綴 目錄前綴\n" + msgid "" " -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n" msgstr " -W, --warndays 警告天數 將過期警告天數設成 <警告天數>\n" @@ -675,12 +685,15 @@ msgstr "密碼停用時間" msgid "Account Expiration Date (YYYY-MM-DD)" msgstr "帳戶過期時間 (YYYY-MM-DD)" -msgid "Last password change\t\t\t\t\t: " -msgstr "最近一次密碼變更時間\t\t\t\t:" - msgid "never" msgstr "永不" +msgid "future" +msgstr "" + +msgid "Last password change\t\t\t\t\t: " +msgstr "最近一次密碼變更時間\t\t\t\t:" + msgid "password must be changed" msgstr "必須變更密碼" @@ -853,14 +866,6 @@ msgstr "%s:「%s」包含無效字元\n" msgid "%s: user '%s' does not exist\n" msgstr "%s:使用者「%s」不存在\n" -#, c-format -msgid "%s: cannot change user '%s' on NIS client.\n" -msgstr "%s:無法在 NIS 客戶端變更使用者「%s」。\n" - -#, c-format -msgid "%s: '%s' is the NIS master for this client.\n" -msgstr "%s:「%s」是此客戶端的 NIS 管理員。\n" - #, c-format msgid "Changing the user information for %s\n" msgstr "正在變更 %s 的使用者資訊\n" @@ -898,6 +903,11 @@ msgid "" " or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds SHA* 加密算法的 SHA 回數\n" +#, fuzzy, c-format +#| msgid "%s: unsupported crypt method: %s\n" +msgid "%s: no crypt method defined\n" +msgstr "%s:加密方式不支援:%s\n" + #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" msgstr "%s:%s 旗標僅允許搭配 %s 旗標\n" @@ -948,6 +958,16 @@ msgstr " -s, --shell SHELL 用於此使用者帳號的新登入 She msgid "Login Shell" msgstr "登入 Shell" +#, fuzzy, c-format +#| msgid "%s: Cannot get the size of %s: %s\n" +msgid "Cannot parse shell files: %s" +msgstr "%s:無法取得 %s 的大小:%s\n" + +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file: %s\n" +msgid "Cannot evaluate entries in shell files: %s" +msgstr "%s:無法建立新的預設檔案:%s\n" + #, c-format msgid "You may not change the shell for '%s'.\n" msgstr "您不能變更「%s」的 Shell。\n" @@ -960,6 +980,11 @@ msgstr "正在變更 %s 的 shell\n" msgid "%s: Invalid entry: %s\n" msgstr "%s:項目無效:%s\n" +#, fuzzy, c-format +#| msgid "%s: %s is an invalid shell\n" +msgid "%s: Warning: %s is an invalid shell\n" +msgstr "%s:%s 為無效 shell\n" + #, c-format msgid "%s: %s is an invalid shell\n" msgstr "%s:%s 為無效 shell\n" @@ -1183,11 +1208,6 @@ msgstr " -p, --password 密碼 對此新群組使用此已加密密碼 msgid " -r, --system create a system account\n" msgstr " -r, --system 建立系統帳號\n" -#, fuzzy -#| msgid " -P, --prefix PREFIX_DIR directory prefix\n" -msgid " -P, --prefix PREFIX_DI directory prefix\n" -msgstr " -P, --prefix 目錄前綴 目錄前綴\n" - #, fuzzy #| msgid " -l, --list list the members of the group\n" msgid " -U, --users USERS list of user members of this group\n" @@ -1202,6 +1222,11 @@ msgstr "無效的使用者名稱「%s」\n" msgid "%s: '%s' is not a valid group name\n" msgstr "%s:「%s」非有效群組名稱\n" +#, fuzzy, c-format +#| msgid "%s: Cannot open %s: %s\n" +msgid "%s: cannot open %s: %s\n" +msgstr "%s:無法開啟 %s:%s\n" + #, c-format msgid "%s: invalid group ID '%s'\n" msgstr "%s:GID「%s」無效\n" @@ -1245,14 +1270,6 @@ msgstr "%s:無法移除「%s」使用者的主要群組\n" msgid "%s: group '%s' does not exist\n" msgstr "%s:「%s」群組不存在\n" -#, c-format -msgid "%s: group '%s' is a NIS group\n" -msgstr "%s:「%s」群組為 NIS 群組\n" - -#, c-format -msgid "%s: %s is the NIS master\n" -msgstr "%s:%s 是 NIS 管理員\n" - #, c-format msgid "%s: user '%s' is already a member of '%s'\n" msgstr "%s:「%s」使用者已是「%s」的一員\n" @@ -1342,10 +1359,6 @@ msgstr " -p, --password 密碼 將密碼變更成此(已加密)< msgid "%s: invalid group name '%s'\n" msgstr "%s:群組名稱「%s」無效\n" -#, c-format -msgid "%s: group %s is a NIS group\n" -msgstr "%s:%s 群組是 NIS 群組\n" - #, c-format msgid "%s: unknown user %s\n" msgstr "%s:未知使用者 %s\n" @@ -1468,8 +1481,12 @@ msgid "" " -b, --before DAYS print only lastlog records older than DAYS\n" msgstr " -b, --before DAYS 僅輸出舊於 DAYS 天的 lastlog 記錄\n" +#, fuzzy +#| msgid "" +#| " -C, --clear clear lastlog record of an user (usable " +#| "only with -u)\n" msgid "" -" -C, --clear clear lastlog record of an user (usable only " +" -C, --clear clear lastlog record of a user (usable only " "with -u)\n" msgstr "" " -C, --clear 清空某使用者的 lastlog 記錄 (僅在使用 -u 時有" @@ -1571,9 +1588,6 @@ msgstr "" msgid "%s: Cannot possibly work without effective root\n" msgstr "%s: 可能無法在無有效 root 時運作\n" -msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" -msgstr "無 utmp 項目。您必須在最低階的 \"sh\" 執行 \"login\"" - #, c-format msgid "" "\n" @@ -1607,14 +1621,6 @@ msgstr "登入錯誤" msgid "Cannot find user (%s)\n" msgstr "找不到使用者 (%s)\n" -#, c-format -msgid "" -"\n" -"%s login: " -msgstr "" -"\n" -" %s 使用者名稱:" - #, c-format msgid "%s: failure forking: %s" msgstr "%s: 無法 fork:%s" @@ -1650,7 +1656,8 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [] [ " +" ] ... \n" msgstr "" #, c-format @@ -1677,20 +1684,15 @@ msgstr "%s:無法移除 %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s:無法解鎖 %s\n" -#, fuzzy, c-format -#| msgid "%s: failed to find tcb directory for %s\n" -msgid "%s: Could not open proc directory for target %u\n" -msgstr "%s:找不到 %s 的 tcb 目錄\n" - #, fuzzy, c-format #| msgid "%s: Failed to create tcb directory for %s\n" -msgid "%s: Could not stat directory for target %u\n" +msgid "%s: Could not stat directory for process\n" msgstr "%s:無法對 %s 建立 tcb 目錄\n" #, c-format msgid "" -"%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, " -"gid:%lu pw_gid:%lu st_gid:%lu\n" +"%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:" +"%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" msgstr "" msgid "Usage: newgrp [-] [group]\n" @@ -1723,14 +1725,14 @@ msgstr "" #, c-format msgid "" -"usage: %s [ ] ... \n" +"usage: %s [|fd:] [ " +" ] ... \n" msgstr "" -#, c-format -msgid "" -"%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu " -"st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" -msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to create tcb directory for %s\n" +msgid "%s: Could not stat directory for target process\n" +msgstr "%s:無法對 %s 建立 tcb 目錄\n" #, fuzzy #| msgid " -q, --quiet quiet mode\n" @@ -1753,6 +1755,10 @@ msgstr "%s:使用者 ID「%s」無效\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s:無效使用者名稱「%s」\n" +#, c-format +msgid "%s: Provide '--crypt-method' before number of rounds\n" +msgstr "" + #, c-format msgid "%s: line %d: invalid line\n" msgstr "%s:第 %d 行:無效行\n" @@ -1773,6 +1779,11 @@ msgstr "%s:第 %d 行:無法建立群組\n" msgid "%s: line %d: user '%s' does not exist in %s\n" msgstr "%s:第 %d 行:「%s」使用者不存在 %s\n" +#, fuzzy, c-format +#| msgid "%s: unlink: %s: %s\n" +msgid "%s: line %d: %s\n" +msgstr "%s:取消連結 (unlink):%s:%s\n" + #, c-format msgid "%s: line %d: can't update password\n" msgstr "%s:第 %d 行:無法更新密碼\n" @@ -1794,14 +1805,14 @@ msgstr "%s:第 %d 行:變更 %s 的擁有權失敗:%s\n" msgid "%s: line %d: can't update entry\n" msgstr "%s:第 %d 行:無法更新項目\n" -#, c-format -msgid "%s: failed to prepare new %s entry\n" -msgstr "%s:無法準備新 %s 項目\n" - #, c-format msgid "%s: can't find subordinate user range\n" msgstr "%s:找不到次級使用者範圍\n" +#, c-format +msgid "%s: failed to prepare new %s entry\n" +msgstr "%s:無法準備新 %s 項目\n" + #, c-format msgid "%s: can't find subordinate group range\n" msgstr "%s:找不到次級群組範圍\n" @@ -1862,6 +1873,11 @@ msgid "" " change to MAX_DAYS\n" msgstr "" +#, fuzzy +#| msgid " -l, --list show account aging information\n" +msgid " -s, --stdin read new token from stdin\n" +msgstr " -l, --list 顯示帳號的時效資訊\n" + msgid "Old password: " msgstr "舊密碼:" @@ -1881,6 +1897,11 @@ msgstr "" "請輸入新密碼(最少 %d 最多 %d 個字元)\n" "請混合使用大小寫字母和數字。\n" +#, fuzzy +#| msgid "%s: fields too long\n" +msgid "Password is too long.\n" +msgstr "%s:欄位過長\n" + msgid "New password: " msgstr "新密碼:" @@ -1923,6 +1944,11 @@ msgstr "" msgid "%s: repository %s not supported\n" msgstr "%s:不支持 %s 套件存庫。\n" +#, fuzzy, c-format +#| msgid "%s: only root can use the -g/--group option\n" +msgid "%s: only root can use --stdin/-s option\n" +msgstr "%s:只有 root 才能使用 -g/--group 選項\n" + #, fuzzy, c-format #| msgid "%s: %s is not authorized to change the password of %s\n" msgid "%s: root is not authorized by SELinux to change the password of %s\n" @@ -2073,11 +2099,9 @@ msgstr "%s: 訊號發生問題\n" msgid "Session terminated, terminating shell..." msgstr "已終止工作階段,正在終止 shell..." -#, c-format msgid " ...killed.\n" msgstr " ...已強制結束。\n" -#, c-format msgid " ...waiting for child to terminate.\n" msgstr " ...等待子處理程序終止。\n" @@ -2149,6 +2173,11 @@ msgstr "%s:目前您尚未授權使用 su\n" msgid "No passwd entry for user '%s'\n" msgstr "沒有使用者「%s」的 passwd 項目\n" +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Overlong user name '%s'\n" +msgstr "無效的使用者名稱「%s」\n" + #, c-format msgid "%s: must be run from a terminal\n" msgstr "%s:必須從終端中執行\n" @@ -2198,6 +2227,13 @@ msgstr "%s: %s 已經建立,但是無法移除\n" msgid "%s: the %s configuration in %s will be ignored\n" msgstr "%1$s: 會忽略 %3$s 中的 %2$s 組態設定檔\n" +#, fuzzy, c-format +#| msgid "%s: the %s configuration in %s will be ignored\n" +msgid "" +"%s: the '%s' configuration in %s has an invalid group, ignoring the bad " +"group\n" +msgstr "%1$s: 會忽略 %3$s 中的 %2$s 組態設定檔\n" + #, c-format msgid "%s: cannot create new defaults file: %s\n" msgstr "%s:無法建立新的預設檔案:%s\n" @@ -2207,10 +2243,6 @@ msgstr "%s:無法建立新的預設檔案:%s\n" msgid "%s: cannot create directory for defaults file\n" msgstr "%s:無法建立新的預設檔案\n" -#, c-format -msgid "%s: cannot create new defaults file\n" -msgstr "%s:無法建立新的預設檔案\n" - #, c-format msgid "%s: cannot open new defaults file\n" msgstr "%s:無法打開新的預設檔案\n" @@ -2227,10 +2259,6 @@ msgstr "%s:無法建立備份檔案 (%s):%s\n" msgid "%s: rename: %s: %s\n" msgstr "%s:重新命名:%s:%s\n" -#, c-format -msgid "%s: group '%s' is a NIS group.\n" -msgstr "%s:群組「%s」是 NIS 群組。\n" - #, c-format msgid "%s: too many groups specified (max %d).\n" msgstr "%s:指定了過多群組(最多 %d)。\n" @@ -2355,6 +2383,16 @@ msgid "" msgstr "" " -Z, --selinux-user SEUSER 使用指定的 SEUSER 來用於 SELinux 使用者映射\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux " +#| "user mapping\n" +msgid "" +" --selinux-range SERANGE use a specific MLS range for the SELinux " +"user mapping\n" +msgstr "" +" -Z, --selinux-user SEUSER 使用指定的 SEUSER 來用於 SELinux 使用者映射\n" + #, c-format msgid "%s: invalid base directory '%s'\n" msgstr "%s:基礎目錄「%s」無效\n" @@ -2488,6 +2526,16 @@ msgstr "找不到 'mail' 群組。將建立模式為 0600 的使用者 mailbox msgid "Setting mailbox file permissions" msgstr "正在設定 mailbox 檔案的權限" +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Synchronize mailbox file" +msgstr "正在建立 mailbox 檔案" + +#, fuzzy +#| msgid "Creating mailbox file" +msgid "Closing mailbox file" +msgstr "正在建立 mailbox 檔案" + #, c-format msgid "%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n" msgstr "" @@ -2610,10 +2658,6 @@ msgstr "%s:無法移除 %s 的內容:%s\n" msgid "%s: Cannot remove tcb files for %s: %s\n" msgstr "%s:無法移除 %s 的 tcb 檔案:%s\n" -#, c-format -msgid "%s: user %s is a NIS user\n" -msgstr "%s:使用者 %s 是 NIS 使用者\n" - #, c-format msgid "%s: %s home directory (%s) not found\n" msgstr "%s:找不到 %s 的家目錄 (%s)\n" @@ -2725,6 +2769,15 @@ msgid "" msgstr "" " -Z, --selinux-user SEUSER 對使用者帳戶設定新 SELinux 使用者映射\n" +#, fuzzy +#| msgid "" +#| " -Z, --selinux-user SEUSER new SELinux user mapping for the user " +#| "account\n" +msgid "" +" --selinux-range SERANGE new SELinux MLS range for the user account\n" +msgstr "" +" -Z, --selinux-user SEUSER 對使用者帳戶設定新 SELinux 使用者映射\n" + #, c-format msgid "" "%s: unlocking the user's password would result in a passwordless account.\n" @@ -2815,10 +2868,20 @@ msgstr "" msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" msgstr "%s: 無法複製使用者編號為 %lu 的 lastlog 項目至使用者 %lu:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n" +msgstr "%s: 無法複製使用者編號為 %lu 的 lastlog 項目至使用者 %lu:%s\n" + #, c-format msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgstr "%s: 無法複製使用者編號為 %lu 的 faillog 項目至使用者 %lu:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to copy the faillog entry of user %ju to user %ju: %s\n" +msgstr "%s: 無法複製使用者編號為 %lu 的 faillog 項目至使用者 %lu:%s\n" + #, c-format msgid "%s: warning: %s not owned by %s\n" msgstr "%s:警告:%s 不屬於 %s\n" @@ -2917,8 +2980,10 @@ msgstr "無法取消暫存檔的連結" msgid "failed to stat edited file" msgstr "無法取得編輯過檔案的資訊" -msgid "failed to allocate memory" -msgstr "無法配置記憶體" +#, fuzzy +#| msgid "%s: can't open file\n" +msgid "asprintf(3) failed" +msgstr "%s:無法打開檔案\n" msgid "failed to create backup file" msgstr "無法建立備份檔案" @@ -2931,6 +2996,55 @@ msgstr "%s:無法復原 %s:%s (您的修改在 %s 中)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s:找不到 %s 的 tcb 目錄\n" +#~ msgid "Environment overflow\n" +#~ msgstr "環境溢位\n" + +#, c-format +#~ msgid "%s: cannot change user '%s' on NIS client.\n" +#~ msgstr "%s:無法在 NIS 客戶端變更使用者「%s」。\n" + +#, c-format +#~ msgid "%s: '%s' is the NIS master for this client.\n" +#~ msgstr "%s:「%s」是此客戶端的 NIS 管理員。\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group\n" +#~ msgstr "%s:「%s」群組為 NIS 群組\n" + +#, c-format +#~ msgid "%s: %s is the NIS master\n" +#~ msgstr "%s:%s 是 NIS 管理員\n" + +#, c-format +#~ msgid "%s: group %s is a NIS group\n" +#~ msgstr "%s:%s 群組是 NIS 群組\n" + +#, c-format +#~ msgid "%s: cannot create new defaults file\n" +#~ msgstr "%s:無法建立新的預設檔案\n" + +#, c-format +#~ msgid "%s: group '%s' is a NIS group.\n" +#~ msgstr "%s:群組「%s」是 NIS 群組。\n" + +#, c-format +#~ msgid "%s: user %s is a NIS user\n" +#~ msgstr "%s:使用者 %s 是 NIS 使用者\n" + +#~ msgid "too simple" +#~ msgstr "過於簡單" + +#~ msgid "No utmp entry. You must exec \"login\" from the lowest level \"sh\"" +#~ msgstr "無 utmp 項目。您必須在最低階的 \"sh\" 執行 \"login\"" + +#, fuzzy, c-format +#~| msgid "%s: failed to find tcb directory for %s\n" +#~ msgid "%s: Could not open proc directory for target %u\n" +#~ msgstr "%s:找不到 %s 的 tcb 目錄\n" + +#~ msgid "failed to allocate memory" +#~ msgstr "無法配置記憶體" + #~ msgid "Usage: id\n" #~ msgstr "用法:id\n" @@ -2946,10 +3060,6 @@ msgstr "%s:找不到 %s 的 tcb 目錄\n" #~ msgid "%s: password expiry information changed.\n" #~ msgstr "%s:已變更密碼過期資訊。\n" -#, c-format -#~ msgid "invalid user name '%s'\n" -#~ msgstr "無效的使用者名稱「%s」\n" - #~ msgid "Username Port From Latest" #~ msgstr "使用者名 埠號 來自 最後登入時間" diff --git a/shadow.spec.in b/shadow.spec.in deleted file mode 100644 index 0f9a958..0000000 --- a/shadow.spec.in +++ /dev/null @@ -1,93 +0,0 @@ -# shadow-utils.spec generated automatically from shadow-utils.spec.in -# $Id$ - -Summary: Shadow password file utilities for Linux -Name: shadow-utils -Version: @VERSION@ -Release: 1 -Copyright: Free -Group: Utilities/System -Source: ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/%{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-root -Obsoletes: adduser - -%description -This package includes the programs necessary to convert traditional -V7 UNIX password files to the SVR4 shadow password format and additional -tools to work with shadow passwords. - - 'pwconv' converts everything to the shadow password format. - - 'pwunconv' converts back to non-shadow passwords. - - 'pwck' checks the integrity of the password and shadow files. - - 'lastlog' prints out the last login times of all users. - - 'useradd', 'userdel', 'usermod' to manage user accounts. - - 'groupadd', 'groupdel', 'groupmod' to manage groups. - -A number of man pages are also included that relate to these utilities, -and shadow passwords in general. - -%prep -%setup - -%build -%configure \ - --disable-shared \ - --prefix=/usr \ - --exec-prefix=/usr -make - -%install -rm -rf $RPM_BUILD_ROOT - -make install DESTDIR=$RPM_BUILD_ROOT - -mkdir -p $RPM_BUILD_ROOT/etc/default - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%doc doc/ANNOUNCE doc/CHANGES doc/HOWTO -%doc doc/LICENSE doc/README doc/README.linux -%dir /etc/default -%config /etc/default/useradd -%config /etc/login.defs -%{_bindir}/chage -%{_bindir}/gpasswd -%{_bindir}/lastlog -%{_mandir}/man1/chage.1* -%{_mandir}/man1/gpasswd.1* -%{_mandir}/man3/shadow.3* -%{_mandir}/man5/shadow.5* -%{_mandir}/man8/chpasswd.8* -%{_mandir}/man8/groupadd.8* -%{_mandir}/man8/groupdel.8* -%{_mandir}/man8/groupmod.8* -%{_mandir}/man8/grpck.8* -%{_mandir}/man8/lastlog.8* -%{_mandir}/man8/newusers.8* -%{_mandir}/man8/pwck.8* -%{_mandir}/man8/pwconv.8* -%{_mandir}/man8/useradd.8* -%{_mandir}/man8/userdel.8* -%{_mandir}/man8/usermod.8* -%{_sbindir}/chpasswd -%{_sbindir}/groupadd -%{_sbindir}/groupdel -%{_sbindir}/groupmod -%{_sbindir}/grpck -%{_sbindir}/grpconv -%{_sbindir}/grpunconv -%{_sbindir}/newusers -%{_sbindir}/pwck -%{_sbindir}/pwconv -%{_sbindir}/pwunconv -%{_sbindir}/useradd -%{_sbindir}/userdel -%{_sbindir}/usermod - -%changelog -* Sun Dec 14 1997 Marek Michalkiewicz -- Lots of changes, see doc/CHANGES for more details - -* Sun Jun 08 1997 Timo Karjalainen -- Initial release diff --git a/src/Makefile.am b/src/Makefile.am index a1a2e4e..b6cb09e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,9 +9,11 @@ sgidperms = 2755 AM_CPPFLAGS = \ -I${top_srcdir}/lib \ - -I$(top_srcdir)/libmisc \ -I$(top_srcdir) \ - -DLOCALEDIR=\"$(datadir)/locale\" + -DLOCALEDIR=\"$(datadir)/locale\" \ + $(ECONF_CPPFLAGS) + +AM_CFLAGS = $(LIBBSD_CFLAGS) # XXX why are login and su in /bin anyway (other than for # historical reasons)? @@ -26,10 +28,13 @@ AM_CPPFLAGS = \ bin_PROGRAMS = groups login sbin_PROGRAMS = nologin -ubin_PROGRAMS = faillog lastlog chage chfn chsh expiry gpasswd newgrp passwd +ubin_PROGRAMS = faillog chage chfn chsh expiry gpasswd newgrp passwd if ENABLE_SUBIDS ubin_PROGRAMS += newgidmap newuidmap endif +if ENABLE_LASTLOG +ubin_PROGRAMS += lastlog +endif if WITH_SU bin_PROGRAMS += su endif @@ -79,7 +84,6 @@ shadowsgidubins = passwd endif LDADD = $(INTLLIBS) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la \ $(LIBTCB) @@ -95,13 +99,13 @@ else LIBCRYPT_NOPAM = $(LIBCRYPT) endif -chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl chfn_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) -chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) +chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -ldl expiry_LDADD = $(LDADD) $(LIBECONF) gpasswd_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl @@ -115,18 +119,18 @@ lastlog_LDADD = $(LDADD) $(LIBAUDIT) $(LIBECONF) login_SOURCES = \ login.c \ login_nopam.c -login_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) +login_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) $(LIBSELINUX) newgrp_LDADD = $(LDADD) $(LIBAUDIT) $(LIBCRYPT) $(LIBECONF) newusers_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -ldl nologin_LDADD = -passwd_LDADD = $(LDADD) $(LIBPAM) $(LIBCRACK) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBECONF) +passwd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBECONF) -ldl pwck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) pwconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) pwunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) su_SOURCES = \ su.c \ suauth.c -su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) +su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) $(LIBSELINUX) sulogin_LDADD = $(LDADD) $(LIBCRYPT) $(LIBECONF) useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -ldl userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF) -ldl @@ -177,59 +181,49 @@ MISCLIBS = \ getsubids_LDADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/libsubid/libsubid.la \ $(MISCLIBS) -ldl getsubids_CPPFLAGS = \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/libmisc \ -I$(top_srcdir) \ - -I$(top_srcdir)/libsubid + -I$(top_builddir)/libsubid get_subid_owners_LDADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/libsubid/libsubid.la \ $(MISCLIBS) -ldl get_subid_owners_CPPFLAGS = \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/libmisc \ -I$(top_srcdir) \ - -I$(top_srcdir)/libsubid + -I$(top_builddir)/libsubid new_subid_range_CPPFLAGS = \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/libmisc \ -I$(top_srcdir) \ - -I$(top_srcdir)/libsubid + -I$(top_builddir)/libsubid new_subid_range_LDADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/libsubid/libsubid.la \ $(MISCLIBS) -ldl free_subid_range_CPPFLAGS = \ -I$(top_srcdir)/lib \ - -I$(top_srcdir)/libmisc \ -I$(top_srcdir) \ - -I$(top_srcdir)/libsubid + -I$(top_builddir)/libsubid free_subid_range_LDADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/libsubid/libsubid.la \ $(MISCLIBS) -ldl check_subid_range_CPPFLAGS = \ -I$(top_srcdir)/lib \ - -I$(top_srcdir) \ - -I$(top_srcdir)/libmisc + -I$(top_srcdir) check_subid_range_LDADD = \ $(top_builddir)/lib/libshadow.la \ - $(top_builddir)/libmisc/libmisc.la \ $(MISCLIBS) -ldl endif diff --git a/src/Makefile.in b/src/Makefile.in index da31572..f62a5cf 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -91,11 +91,12 @@ host_triplet = @host@ bin_PROGRAMS = groups$(EXEEXT) login$(EXEEXT) $(am__EXEEXT_1) \ $(am__EXEEXT_2) sbin_PROGRAMS = nologin$(EXEEXT) -ubin_PROGRAMS = faillog$(EXEEXT) lastlog$(EXEEXT) chage$(EXEEXT) \ - chfn$(EXEEXT) chsh$(EXEEXT) expiry$(EXEEXT) gpasswd$(EXEEXT) \ - newgrp$(EXEEXT) passwd$(EXEEXT) $(am__EXEEXT_4) +ubin_PROGRAMS = faillog$(EXEEXT) chage$(EXEEXT) chfn$(EXEEXT) \ + chsh$(EXEEXT) expiry$(EXEEXT) gpasswd$(EXEEXT) newgrp$(EXEEXT) \ + passwd$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) @ENABLE_SUBIDS_TRUE@am__append_1 = newgidmap newuidmap -@WITH_SU_TRUE@am__append_2 = su +@ENABLE_LASTLOG_TRUE@am__append_2 = lastlog +@WITH_SU_TRUE@am__append_3 = su usbin_PROGRAMS = chgpasswd$(EXEEXT) chpasswd$(EXEEXT) \ groupadd$(EXEEXT) groupdel$(EXEEXT) groupmems$(EXEEXT) \ groupmod$(EXEEXT) grpck$(EXEEXT) grpconv$(EXEEXT) \ @@ -104,12 +105,12 @@ usbin_PROGRAMS = chgpasswd$(EXEEXT) chpasswd$(EXEEXT) \ useradd$(EXEEXT) userdel$(EXEEXT) usermod$(EXEEXT) \ vipw$(EXEEXT) noinst_PROGRAMS = id$(EXEEXT) sulogin$(EXEEXT) $(am__EXEEXT_3) -@WITH_SU_TRUE@am__append_3 = su -@WITH_TCB_FALSE@am__append_4 = passwd -@ACCT_TOOLS_SETUID_TRUE@am__append_5 = chgpasswd chpasswd groupadd groupdel groupmod newusers useradd userdel usermod -@ENABLE_SUBIDS_TRUE@@FCAPS_FALSE@am__append_6 = newgidmap newuidmap -@ENABLE_SUBIDS_TRUE@am__append_7 = getsubids -@ENABLE_SUBIDS_TRUE@am__append_8 = get_subid_owners \ +@WITH_SU_TRUE@am__append_4 = su +@WITH_TCB_FALSE@am__append_5 = passwd +@ACCT_TOOLS_SETUID_TRUE@am__append_6 = chgpasswd chpasswd groupadd groupdel groupmod newusers useradd userdel usermod +@ENABLE_SUBIDS_TRUE@@FCAPS_FALSE@am__append_7 = newgidmap newuidmap +@ENABLE_SUBIDS_TRUE@am__append_8 = getsubids +@ENABLE_SUBIDS_TRUE@am__append_9 = get_subid_owners \ @ENABLE_SUBIDS_TRUE@ new_subid_range \ @ENABLE_SUBIDS_TRUE@ free_subid_range \ @ENABLE_SUBIDS_TRUE@ check_subid_range @@ -142,13 +143,13 @@ am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" \ @ENABLE_SUBIDS_TRUE@ check_subid_range$(EXEEXT) @ENABLE_SUBIDS_TRUE@am__EXEEXT_4 = newgidmap$(EXEEXT) \ @ENABLE_SUBIDS_TRUE@ newuidmap$(EXEEXT) +@ENABLE_LASTLOG_TRUE@am__EXEEXT_5 = lastlog$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) $(sbin_PROGRAMS) \ $(ubin_PROGRAMS) $(usbin_PROGRAMS) chage_SOURCES = chage.c chage_OBJECTS = chage.$(OBJEXT) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) @ACCT_TOOLS_SETUID_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) chage_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ @@ -173,7 +174,6 @@ check_subid_range_OBJECTS = \ @ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) @ENABLE_SUBIDS_TRUE@check_subid_range_DEPENDENCIES = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) chfn_SOURCES = chfn.c chfn_OBJECTS = chfn.$(OBJEXT) @@ -204,14 +204,12 @@ faillog_SOURCES = faillog.c faillog_OBJECTS = faillog.$(OBJEXT) faillog_LDADD = $(LDADD) faillog_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) free_subid_range_SOURCES = free_subid_range.c free_subid_range_OBJECTS = \ free_subid_range-free_subid_range.$(OBJEXT) @ENABLE_SUBIDS_TRUE@free_subid_range_DEPENDENCIES = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) get_subid_owners_SOURCES = get_subid_owners.c @@ -219,14 +217,12 @@ get_subid_owners_OBJECTS = \ get_subid_owners-get_subid_owners.$(OBJEXT) @ENABLE_SUBIDS_TRUE@get_subid_owners_DEPENDENCIES = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) getsubids_SOURCES = getsubids.c getsubids_OBJECTS = getsubids-getsubids.$(OBJEXT) @ENABLE_SUBIDS_TRUE@getsubids_DEPENDENCIES = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) gpasswd_SOURCES = gpasswd.c @@ -258,7 +254,6 @@ groups_SOURCES = groups.c groups_OBJECTS = groups.$(OBJEXT) groups_LDADD = $(LDADD) groups_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) grpck_SOURCES = grpck.c grpck_OBJECTS = grpck.$(OBJEXT) @@ -276,7 +271,6 @@ id_SOURCES = id.c id_OBJECTS = id.$(OBJEXT) id_LDADD = $(LDADD) id_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) lastlog_SOURCES = lastlog.c lastlog_OBJECTS = lastlog.$(OBJEXT) @@ -287,18 +281,16 @@ login_OBJECTS = $(am_login_OBJECTS) login_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_4) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) logoutd_SOURCES = logoutd.c logoutd_OBJECTS = logoutd.$(OBJEXT) logoutd_LDADD = $(LDADD) logoutd_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) new_subid_range_SOURCES = new_subid_range.c new_subid_range_OBJECTS = new_subid_range-new_subid_range.$(OBJEXT) @ENABLE_SUBIDS_TRUE@new_subid_range_DEPENDENCIES = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) newgidmap_SOURCES = newgidmap.c @@ -325,8 +317,7 @@ passwd_SOURCES = passwd.c passwd_OBJECTS = passwd.$(OBJEXT) passwd_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_4) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) pwck_SOURCES = pwck.c pwck_OBJECTS = pwck.$(OBJEXT) pwck_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ @@ -344,7 +335,7 @@ su_OBJECTS = $(am_su_OBJECTS) su_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_4) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) sulogin_SOURCES = sulogin.c sulogin_OBJECTS = sulogin.$(OBJEXT) sulogin_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ @@ -478,6 +469,8 @@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ +CMOCKA_CFLAGS = @CMOCKA_CFLAGS@ +CMOCKA_LIBS = @CMOCKA_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CSCOPE = @CSCOPE@ @@ -496,6 +489,7 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ +FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -511,9 +505,15 @@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBACL = @LIBACL@ +LIBADD_DL = @LIBADD_DL@ +LIBADD_DLD_LINK = @LIBADD_DLD_LINK@ +LIBADD_DLOPEN = @LIBADD_DLOPEN@ +LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@ LIBATTR = @LIBATTR@ LIBAUDIT = @LIBAUDIT@ -LIBCRACK = @LIBCRACK@ +LIBBSD = @LIBBSD@ +LIBBSD_CFLAGS = @LIBBSD_CFLAGS@ +LIBBSD_LIBS = @LIBBSD_LIBS@ LIBCRYPT = @LIBCRYPT@ LIBECONF = @LIBECONF@ LIBICONV = @LIBICONV@ @@ -529,6 +529,7 @@ LIBSUBID_ABI = @LIBSUBID_ABI@ LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ @@ -537,6 +538,8 @@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_DLLOADERS = @LT_DLLOADERS@ +LT_DLPREOPEN = @LT_DLPREOPEN@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ @@ -559,6 +562,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ RANLIB = @RANLIB@ SED = @SED@ @@ -639,17 +645,17 @@ suidperms = 4755 sgidperms = 2755 AM_CPPFLAGS = \ -I${top_srcdir}/lib \ - -I$(top_srcdir)/libmisc \ -I$(top_srcdir) \ - -DLOCALEDIR=\"$(datadir)/locale\" - -suidusbins = $(am__append_5) -suidbins = $(am__append_3) -suidubins = chage chfn chsh expiry gpasswd newgrp $(am__append_4) \ - $(am__append_6) + -DLOCALEDIR=\"$(datadir)/locale\" \ + $(ECONF_CPPFLAGS) + +AM_CFLAGS = $(LIBBSD_CFLAGS) +suidusbins = $(am__append_6) +suidbins = $(am__append_4) +suidubins = chage chfn chsh expiry gpasswd newgrp $(am__append_5) \ + $(am__append_7) @WITH_TCB_TRUE@shadowsgidubins = passwd LDADD = $(INTLLIBS) \ - $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la \ $(LIBTCB) @@ -657,13 +663,13 @@ LDADD = $(INTLLIBS) \ @ACCT_TOOLS_SETUID_TRUE@LIBPAM_SUID = $(LIBPAM) @USE_PAM_FALSE@LIBCRYPT_NOPAM = $(LIBCRYPT) @USE_PAM_TRUE@LIBCRYPT_NOPAM = -chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl chfn_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) -chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) +chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -ldl expiry_LDADD = $(LDADD) $(LIBECONF) gpasswd_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl @@ -678,11 +684,11 @@ login_SOURCES = \ login.c \ login_nopam.c -login_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) +login_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) $(LIBSELINUX) newgrp_LDADD = $(LDADD) $(LIBAUDIT) $(LIBCRYPT) $(LIBECONF) newusers_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -ldl nologin_LDADD = -passwd_LDADD = $(LDADD) $(LIBPAM) $(LIBCRACK) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBECONF) +passwd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBECONF) -ldl pwck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) pwconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) pwunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) @@ -690,7 +696,7 @@ su_SOURCES = \ su.c \ suauth.c -su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) +su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) $(LIBSELINUX) sulogin_LDADD = $(LDADD) $(LIBCRYPT) $(LIBECONF) useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -ldl userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF) -ldl @@ -709,60 +715,50 @@ vipw_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) @ENABLE_SUBIDS_TRUE@getsubids_LDADD = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl @ENABLE_SUBIDS_TRUE@getsubids_CPPFLAGS = \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid +@ENABLE_SUBIDS_TRUE@ -I$(top_builddir)/libsubid @ENABLE_SUBIDS_TRUE@get_subid_owners_LDADD = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl @ENABLE_SUBIDS_TRUE@get_subid_owners_CPPFLAGS = \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid +@ENABLE_SUBIDS_TRUE@ -I$(top_builddir)/libsubid @ENABLE_SUBIDS_TRUE@new_subid_range_CPPFLAGS = \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid +@ENABLE_SUBIDS_TRUE@ -I$(top_builddir)/libsubid @ENABLE_SUBIDS_TRUE@new_subid_range_LDADD = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl @ENABLE_SUBIDS_TRUE@free_subid_range_CPPFLAGS = \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid +@ENABLE_SUBIDS_TRUE@ -I$(top_builddir)/libsubid @ENABLE_SUBIDS_TRUE@free_subid_range_LDADD = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ @ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl @ENABLE_SUBIDS_TRUE@check_subid_range_CPPFLAGS = \ @ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ -@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) @ENABLE_SUBIDS_TRUE@check_subid_range_LDADD = \ @ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ -@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ @ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl all: all-am @@ -1220,22 +1216,25 @@ $(am__depfiles_remade): am--depfiles: $(am__depfiles_remade) .c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< diff --git a/src/chage.c b/src/chage.c index 01570d7..1edab47 100644 --- a/src/chage.c +++ b/src/chage.c @@ -25,21 +25,31 @@ #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ #include -#include "prototypes.h" + +#include "alloc.h" +#include "atoi/str2i.h" #include "defines.h" +#include "memzero.h" +#include "prototypes.h" #include "pwio.h" #include "shadowio.h" #include "shadowlog.h" +#include "string/sprintf.h" +#include "string/strftime.h" +#include "string/strtcpy.h" +#include "time/day_to_str.h" +/*@-exitarg@*/ +#include "exitcodes.h" + #ifdef WITH_TCB #include "tcbfuncs.h" #endif -/*@-exitarg@*/ -#include "exitcodes.h" + /* * Global variables */ -const char *Prog; +static const char Prog[] = "chage"; static bool dflg = false, /* set last password change date */ @@ -52,6 +62,8 @@ static bool Wflg = false; /* set expiration warning days */ static bool amroot = false; +static const char *prefix = ""; + static bool pw_locked = false; /* Indicate if the password file is locked */ static bool spw_locked = false; /* Indicate if the shadow file is locked */ /* The name and UID of the user being worked on */ @@ -66,21 +78,23 @@ static long inactdays; static long expdate; /* local function prototypes */ -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static int new_fields (void); -static void print_date (time_t date); +static void print_day_as_date (long day); static void list_fields (void); static void process_flags (int argc, char **argv); static void check_flags (int argc, int opt_index); static void check_perms (void); static void open_files (bool readonly); static void close_files (void); -static /*@noreturn@*/void fail_exit (int code); +NORETURN static void fail_exit (int code); /* * fail_exit - do some cleanup and exit with the given error code */ -static /*@noreturn@*/void fail_exit (int code) +NORETURN +static void +fail_exit (int code) { if (spw_locked) { if (spw_unlock () == 0) { @@ -101,8 +115,7 @@ static /*@noreturn@*/void fail_exit (int code) #ifdef WITH_AUDIT if (E_SUCCESS != code) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "change age", - user_name, (unsigned int) user_uid, 0); + "change age", user_name, user_uid, 0); } #endif @@ -112,7 +125,9 @@ static /*@noreturn@*/void fail_exit (int code) /* * usage - print command line syntax and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -132,6 +147,7 @@ static /*@noreturn@*/void usage (int status) (void) fputs (_(" -M, --maxdays MAX_DAYS set maximum number of days before password\n" " change to MAX_DAYS\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); + (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout); (void) fputs (_(" -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n"), usageout); (void) fputs ("\n", usageout); exit (status); @@ -148,30 +164,29 @@ static /*@noreturn@*/void usage (int status) */ static int new_fields (void) { - char buf[200]; + char buf[200]; (void) puts (_("Enter the new value, or press ENTER for the default")); (void) puts (""); - (void) snprintf (buf, sizeof buf, "%ld", mindays); + SNPRINTF(buf, "%ld", mindays); change_field (buf, sizeof buf, _("Minimum Password Age")); - if ( (getlong (buf, &mindays) == 0) + if ( (str2sl(&mindays, buf) == -1) || (mindays < -1)) { return 0; } - (void) snprintf (buf, sizeof buf, "%ld", maxdays); + SNPRINTF(buf, "%ld", maxdays); change_field (buf, sizeof buf, _("Maximum Password Age")); - if ( (getlong (buf, &maxdays) == 0) + if ( (str2sl(&maxdays, buf) == -1) || (maxdays < -1)) { return 0; } - if (-1 == lstchgdate || lstchgdate > LONG_MAX / SCALE) { - strcpy (buf, "-1"); - } else { - date_to_str (sizeof(buf), buf, lstchgdate * SCALE); - } + if (-1 == lstchgdate || lstchgdate > LONG_MAX / DAY) + strcpy(buf, "-1"); + else + DAY_TO_STR(buf, lstchgdate); change_field (buf, sizeof buf, _("Last Password Change (YYYY-MM-DD)")); @@ -184,25 +199,24 @@ static int new_fields (void) } } - (void) snprintf (buf, sizeof buf, "%ld", warndays); + SNPRINTF(buf, "%ld", warndays); change_field (buf, sizeof buf, _("Password Expiration Warning")); - if ( (getlong (buf, &warndays) == 0) + if ( (str2sl(&warndays, buf) == -1) || (warndays < -1)) { return 0; } - (void) snprintf (buf, sizeof buf, "%ld", inactdays); + SNPRINTF(buf, "%ld", inactdays); change_field (buf, sizeof buf, _("Password Inactive")); - if ( (getlong (buf, &inactdays) == 0) + if ( (str2sl(&inactdays, buf) == -1) || (inactdays < -1)) { return 0; } - if (-1 == expdate || LONG_MAX / SCALE < expdate) { - strcpy (buf, "-1"); - } else { - date_to_str (sizeof(buf), buf, expdate * SCALE); - } + if (-1 == expdate || LONG_MAX / DAY < expdate) + strcpy(buf, "-1"); + else + DAY_TO_STR(buf, expdate); change_field (buf, sizeof buf, _("Account Expiration Date (YYYY-MM-DD)")); @@ -219,20 +233,33 @@ static int new_fields (void) return 1; } -static void print_date (time_t date) + +static void +print_day_as_date(long day) { - struct tm *tp; - char buf[80]; + char buf[80]; + time_t date; + struct tm tm; - tp = gmtime (&date); - if (NULL == tp) { + if (day < 0) { + puts(_("never")); + return; + } + if (__builtin_mul_overflow(day, DAY, &date)) { + puts(_("future")); + return; + } + + if (gmtime_r(&date, &tm) == NULL) { (void) printf ("time_t: %lu\n", (unsigned long)date); - } else { - (void) strftime (buf, sizeof buf, iflg ? "%Y-%m-%d" : "%b %d, %Y", tp); - (void) puts (buf); + return; } + + STRFTIME(buf, iflg ? "%Y-%m-%d" : "%b %d, %Y", &tm); + (void) puts (buf); } + /* * list_fields - display the current values of the expiration fields * @@ -242,21 +269,15 @@ static void print_date (time_t date) */ static void list_fields (void) { - long changed = 0; - long expires; - /* * The "last change" date is either "never" or the date the password * was last modified. The date is the number of days since 1/1/1970. */ (void) fputs (_("Last password change\t\t\t\t\t: "), stdout); - if (lstchgdate < 0 || lstchgdate > LONG_MAX / SCALE) { - (void) puts (_("never")); - } else if (lstchgdate == 0) { + if (lstchgdate == 0) { (void) puts (_("password must be changed")); } else { - changed = lstchgdate * SCALE; - print_date ((time_t) changed); + print_day_as_date(lstchgdate); } /* @@ -267,13 +288,13 @@ static void list_fields (void) if (lstchgdate == 0) { (void) puts (_("password must be changed")); } else if ( (lstchgdate < 0) - || (maxdays >= (10000 * (DAY / SCALE))) + || (maxdays >= 10000) || (maxdays < 0) - || ((LONG_MAX - changed) / SCALE < maxdays)) { + || (LONG_MAX - lstchgdate < maxdays)) + { (void) puts (_("never")); } else { - expires = changed + maxdays * SCALE; - print_date ((time_t) expires); + print_day_as_date(lstchgdate + maxdays); } /* @@ -287,14 +308,14 @@ static void list_fields (void) (void) puts (_("password must be changed")); } else if ( (lstchgdate < 0) || (inactdays < 0) - || (maxdays >= (10000 * (DAY / SCALE))) + || (maxdays >= 10000) || (maxdays < 0) - || (maxdays > LONG_MAX - inactdays) - || ((LONG_MAX - changed) / SCALE < maxdays + inactdays)) { + || (LONG_MAX - inactdays < maxdays) + || (LONG_MAX - lstchgdate < maxdays + inactdays)) + { (void) puts (_("never")); } else { - expires = changed + (maxdays + inactdays) * SCALE; - print_date ((time_t) expires); + print_day_as_date(lstchgdate + maxdays + inactdays); } /* @@ -302,12 +323,7 @@ static void list_fields (void) * password expiring or not. */ (void) fputs (_("Account expires\t\t\t\t\t\t: "), stdout); - if (expdate < 0 || LONG_MAX / SCALE < expdate) { - (void) puts (_("never")); - } else { - expires = expdate * SCALE; - print_date ((time_t) expires); - } + print_day_as_date(expdate); /* * Start with the easy numbers - the number of days before the @@ -344,12 +360,13 @@ static void process_flags (int argc, char **argv) {"mindays", required_argument, NULL, 'm'}, {"maxdays", required_argument, NULL, 'M'}, {"root", required_argument, NULL, 'R'}, + {"prefix", required_argument, NULL, 'P'}, {"warndays", required_argument, NULL, 'W'}, {"iso8601", no_argument, NULL, 'i'}, {NULL, 0, NULL, '\0'} }; - while ((c = getopt_long (argc, argv, "d:E:hiI:lm:M:R:W:", + while ((c = getopt_long (argc, argv, "d:E:hiI:lm:M:R:P:W:", long_options, NULL)) != -1) { switch (c) { case 'd': @@ -380,7 +397,7 @@ static void process_flags (int argc, char **argv) break; case 'I': Iflg = true; - if ( (getlong (optarg, &inactdays) == 0) + if ( (str2sl(&inactdays, optarg) == -1) || (inactdays < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -393,7 +410,7 @@ static void process_flags (int argc, char **argv) break; case 'm': mflg = true; - if ( (getlong (optarg, &mindays) == 0) + if ( (str2sl(&mindays, optarg) == -1) || (mindays < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -403,7 +420,7 @@ static void process_flags (int argc, char **argv) break; case 'M': Mflg = true; - if ( (getlong (optarg, &maxdays) == 0) + if ( (str2sl(&maxdays, optarg) == -1) || (maxdays < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -413,9 +430,11 @@ static void process_flags (int argc, char **argv) break; case 'R': /* no-op, handled in process_root_flag () */ break; + case 'P': /* no-op, handled in process_prefix_flag () */ + break; case 'W': Wflg = true; - if ( (getlong (optarg, &warndays) == 0) + if ( (str2sl(&warndays, optarg) == -1) || (warndays < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -500,7 +519,7 @@ static void check_perms (void) exit (E_NOPERM); } - retval = pam_start ("chage", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -751,24 +770,23 @@ int main (int argc, char **argv) gid_t rgid; const struct passwd *pw; - /* - * Get the program name so that error messages can use it. - */ - Prog = Basename (argv[0]); + sanitize_env (); + check_fds (); + log_set_progname(Prog); log_set_logfd(stderr); - sanitize_env (); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); process_root_flag ("-R", argc, argv); + prefix = process_prefix_flag ("-P", argc, argv); #ifdef WITH_AUDIT audit_help_open (); #endif - OPENLOG ("chage"); + OPENLOG (Prog); ruid = getuid (); rgid = getgid (); @@ -809,7 +827,7 @@ int main (int argc, char **argv) fail_exit (E_NOPERM); } - STRFCPY (user_name, pw->pw_name); + STRTCPY(user_name, pw->pw_name); #ifdef WITH_TCB if (shadowtcb_set_user (pw->pw_name) == SHADOWTCB_FAILURE) { fail_exit (E_NOPERM); @@ -831,8 +849,7 @@ int main (int argc, char **argv) } #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "display aging info", - user_name, (unsigned int) user_uid, 1); + "display aging info", user_name, user_uid, 1); #endif list_fields (); fail_exit (E_SUCCESS); @@ -854,40 +871,38 @@ int main (int argc, char **argv) else { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "change all aging information", - user_name, (unsigned int) user_uid, 1); + user_name, user_uid, 1); } #endif } else { #ifdef WITH_AUDIT if (Mflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "change max age", - user_name, (unsigned int) user_uid, 1); + "change max age", user_name, user_uid, 1); } if (mflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "change min age", - user_name, (unsigned int) user_uid, 1); + "change min age", user_name, user_uid, 1); } if (dflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "change last change date", - user_name, (unsigned int) user_uid, 1); + user_name, user_uid, 1); } if (Wflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "change passwd warning", - user_name, (unsigned int) user_uid, 1); + user_name, user_uid, 1); } if (Iflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "change inactive days", - user_name, (unsigned int) user_uid, 1); + user_name, user_uid, 1); } if (Eflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "change passwd expiration", - user_name, (unsigned int) user_uid, 1); + user_name, user_uid, 1); } #endif } diff --git a/src/check_subid_range.c b/src/check_subid_range.c index 38703b6..68266f5 100644 --- a/src/check_subid_range.c +++ b/src/check_subid_range.c @@ -12,20 +12,21 @@ #include #include #include + +#include "atoi/str2i.h" #include "defines.h" #include "prototypes.h" #include "subordinateio.h" #include "idmapping.h" #include "shadowlog.h" -const char *Prog; +static const char Prog[] = "check_subid_range"; int main(int argc, char **argv) { char *owner; unsigned long start, count; bool check_uids; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -34,11 +35,10 @@ int main(int argc, char **argv) owner = argv[1]; check_uids = argv[2][0] == 'u'; - start = strtoul(argv[3], NULL, 10); - if (start == ULONG_MAX && errno == ERANGE) + errno = 0; + if (str2ul(&start, argv[3]) == -1) exit(1); - count = strtoul(argv[4], NULL, 10); - if (count == ULONG_MAX && errno == ERANGE) + if (str2ul(&count, argv[4]) == -1) exit(1); if (check_uids) { if (have_sub_uids(owner, start, count)) diff --git a/src/chfn.c b/src/chfn.c index 1c2f1cc..9043212 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -17,6 +17,8 @@ #include #include #include + +#include "alloc.h" #include "defines.h" #include "getdef.h" #include "nscd.h" @@ -30,11 +32,14 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/sprintf.h" +#include "string/strtcpy.h" + /* * Global variables. */ -const char *Prog; +static const char Prog[] = "chfn"; static char fullnm[BUFSIZ]; static char roomno[BUFSIZ]; static char workph[BUFSIZ]; @@ -54,8 +59,8 @@ static bool pw_locked = false; */ /* local function prototypes */ -static void fail_exit (int code); -static /*@noreturn@*/void usage (int status); +NORETURN static void fail_exit (int code); +NORETURN static void usage (int status); static bool may_change_field (int); static void new_fields (void); static char *copy_field (char *, char *, char *); @@ -86,7 +91,9 @@ static void fail_exit (int code) /* * usage - print command line syntax and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -175,19 +182,19 @@ static void new_fields (void) if (may_change_field ('r')) { change_field (roomno, sizeof roomno, _("Room Number")); } else { - printf (_("\t%s: %s\n"), _("Room Number"), fullnm); + printf (_("\t%s: %s\n"), _("Room Number"), roomno); } if (may_change_field ('w')) { change_field (workph, sizeof workph, _("Work Phone")); } else { - printf (_("\t%s: %s\n"), _("Work Phone"), fullnm); + printf (_("\t%s: %s\n"), _("Work Phone"), workph); } if (may_change_field ('h')) { change_field (homeph, sizeof homeph, _("Home Phone")); } else { - printf (_("\t%s: %s\n"), _("Home Phone"), fullnm); + printf (_("\t%s: %s\n"), _("Home Phone"), homeph); } if (amroot) { @@ -271,7 +278,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } fflg = true; - STRFCPY (fullnm, optarg); + STRTCPY(fullnm, optarg); break; case 'h': if (!may_change_field ('h')) { @@ -280,7 +287,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } hflg = true; - STRFCPY (homeph, optarg); + STRTCPY(homeph, optarg); break; case 'o': if (!amroot) { @@ -294,7 +301,7 @@ static void process_flags (int argc, char **argv) _("%s: fields too long\n"), Prog); exit (E_NOPERM); } - STRFCPY (slop, optarg); + STRTCPY(slop, optarg); break; case 'r': if (!may_change_field ('r')) { @@ -303,7 +310,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } rflg = true; - STRFCPY (roomno, optarg); + STRTCPY(roomno, optarg); break; case 'R': /* no-op, handled in process_root_flag () */ break; @@ -317,7 +324,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } wflg = true; - STRFCPY (workph, optarg); + STRTCPY(workph, optarg); break; default: usage (E_USAGE); @@ -358,7 +365,7 @@ static void check_perms (const struct passwd *pw) * check if the change is allowed by SELinux policy. */ if ((pw->pw_uid != getuid ()) - && (check_selinux_permit ("chfn") != 0)) { + && (check_selinux_permit (Prog) != 0)) { fprintf (stderr, _("%s: Permission denied.\n"), Prog); closelog (); exit (E_NOPERM); @@ -373,7 +380,7 @@ static void check_perms (const struct passwd *pw) * --marekm */ if (!amroot && getdef_bool ("CHFN_AUTH")) { - passwd_check (pw->pw_name, pw->pw_passwd, "chfn"); + passwd_check (pw->pw_name, pw->pw_passwd, Prog); } #else /* !USE_PAM */ @@ -385,7 +392,7 @@ static void check_perms (const struct passwd *pw) exit (E_NOPERM); } - retval = pam_start ("chfn", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -504,34 +511,35 @@ static void get_old_fields (const char *gecos) { char *cp; /* temporary character pointer */ char old_gecos[BUFSIZ]; /* buffer for old GECOS fields */ - STRFCPY (old_gecos, gecos); + + STRTCPY(old_gecos, gecos); /* * Now get the full name. It is the first comma separated field in * the GECOS field. */ - cp = copy_field (old_gecos, fflg ? (char *) 0 : fullnm, slop); + cp = copy_field (old_gecos, fflg ? NULL : fullnm, slop); /* * Now get the room number. It is the next comma separated field, * if there is indeed one. */ if (NULL != cp) { - cp = copy_field (cp, rflg ? (char *) 0 : roomno, slop); + cp = copy_field (cp, rflg ? NULL : roomno, slop); } /* * Now get the work phone number. It is the third field. */ if (NULL != cp) { - cp = copy_field (cp, wflg ? (char *) 0 : workph, slop); + cp = copy_field (cp, wflg ? NULL : workph, slop); } /* * Now get the home phone number. It is the fourth field. */ if (NULL != cp) { - cp = copy_field (cp, hflg ? (char *) 0 : homeph, slop); + cp = copy_field (cp, hflg ? NULL : homeph, slop); } /* @@ -608,19 +616,16 @@ static void check_fields (void) */ int main (int argc, char **argv) { - const struct passwd *pw; /* password file entry */ - char new_gecos[BUFSIZ]; /* buffer for new GECOS fields */ - char *user; + char new_gecos[BUFSIZ]; + char *user; + const struct passwd *pw; + + sanitize_env (); + check_fds (); - /* - * Get the program name. The program name is used as a - * prefix to most error messages. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); - sanitize_env (); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); @@ -633,7 +638,7 @@ int main (int argc, char **argv) */ amroot = (getuid () == 0); - OPENLOG ("chfn"); + OPENLOG (Prog); /* parse the command line options */ process_flags (argc, argv); @@ -663,29 +668,6 @@ int main (int argc, char **argv) user = xstrdup (pw->pw_name); } -#ifdef USE_NIS - /* - * Now we make sure this is a LOCAL password entry for this user ... - */ - if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf (stderr, - _("%s: cannot change user '%s' on NIS client.\n"), - Prog, user); - - if (!yp_get_default_domain (&nis_domain) && - !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf (stderr, - _ - ("%s: '%s' is the NIS master for this client.\n"), - Prog, nis_master); - } - fail_exit (E_NOPERM); - } -#endif - /* Check that the caller is allowed to change the gecos of the * specified user */ check_perms (pw); @@ -717,9 +699,9 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: fields too long\n"), Prog); fail_exit (E_NOPERM); } - snprintf (new_gecos, sizeof new_gecos, "%s,%s,%s,%s%s%s", - fullnm, roomno, workph, homeph, - ('\0' != slop[0]) ? "," : "", slop); + SNPRINTF(new_gecos, "%s,%s,%s,%s%s%s", + fullnm, roomno, workph, homeph, + ('\0' != slop[0]) ? "," : "", slop); /* Rewrite the user's gecos in the passwd file */ update_gecos (user, new_gecos); diff --git a/src/chgpasswd.c b/src/chgpasswd.c index d17acb6..1ff6776 100644 --- a/src/chgpasswd.c +++ b/src/chgpasswd.c @@ -16,11 +16,13 @@ #include #include #include + #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ +#include "atoi/str2i.h" #include "defines.h" #include "nscd.h" #include "sssd.h" @@ -33,10 +35,11 @@ #include "exitcodes.h" #include "shadowlog.h" + /* * Global variables */ -const char *Prog; +static const char Prog[] = "chgpasswd"; static bool eflg = false; static bool md5flg = false; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) @@ -62,8 +65,8 @@ static bool sgr_locked = false; static bool gr_locked = false; /* local function prototypes */ -static void fail_exit (int code); -static /*@noreturn@*/void usage (int status); +NORETURN static void fail_exit (int code); +NORETURN static void usage (int status); static void process_flags (int argc, char **argv); static void check_flags (void); static void check_perms (void); @@ -99,7 +102,9 @@ static void fail_exit (int code) /* * usage - display usage message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -184,21 +189,28 @@ static void process_flags (int argc, char **argv) case 's': sflg = true; bad_s = 0; + + if (!crypt_method) { + fprintf (stderr, + _("%s: no crypt method defined\n"), + Prog); + usage (E_USAGE); + } #if defined(USE_SHA_CRYPT) if ( ( ((0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) - && (0 == getlong(optarg, &sha_rounds)))) { + && (-1 == str2sl(&sha_rounds, optarg)))) { bad_s = 1; } #endif /* USE_SHA_CRYPT */ #if defined(USE_BCRYPT) if (( (0 == strcmp (crypt_method, "BCRYPT")) - && (0 == getlong(optarg, &bcrypt_rounds)))) { + && (-1 == str2sl(&bcrypt_rounds, optarg)))) { bad_s = 1; } #endif /* USE_BCRYPT */ #if defined(USE_YESCRYPT) if (( (0 == strcmp (crypt_method, "YESCRYPT")) - && (0 == getlong(optarg, &yescrypt_cost)))) { + && (-1 == str2sl(&yescrypt_cost, optarg)))) { bad_s = 1; } #endif /* USE_YESCRYPT */ @@ -294,7 +306,7 @@ static void check_perms (void) exit (1); } - retval = pam_start ("chgpasswd", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -414,7 +426,6 @@ int main (int argc, char **argv) int errors = 0; int line = 0; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -422,11 +433,17 @@ int main (int argc, char **argv) (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); +#ifdef WITH_SELINUX + if (check_selinux_permit ("passwd") != 0) { + return (E_NOPERM); + } +#endif /* WITH_SELINUX */ + process_root_flag ("-R", argc, argv); process_flags (argc, argv); - OPENLOG ("chgpasswd"); + OPENLOG (Prog); check_perms (); @@ -441,7 +458,7 @@ int main (int argc, char **argv) * group entry for each group will be looked up in the appropriate * file (gshadow or group) and the password changed. */ - while (fgets (buf, (int) sizeof buf, stdin) != (char *) 0) { + while (fgets (buf, (int) sizeof buf, stdin) != NULL) { line++; cp = strrchr (buf, '\n'); if (NULL != cp) { diff --git a/src/chpasswd.c b/src/chpasswd.c index 48d5178..79880f5 100644 --- a/src/chpasswd.c +++ b/src/chpasswd.c @@ -16,9 +16,11 @@ #include #include #include + #ifdef USE_PAM #include "pam_defs.h" #endif /* USE_PAM */ +#include "atoi/str2i.h" #include "defines.h" #include "nscd.h" #include "sssd.h" @@ -30,12 +32,13 @@ #include "exitcodes.h" #include "shadowlog.h" + #define IS_CRYPT_METHOD(str) ((crypt_method != NULL && strcmp(crypt_method, str) == 0) ? true : false) /* * Global variables */ -const char *Prog; +static const char Prog[] = "chpasswd"; static bool eflg = false; static bool md5flg = false; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) @@ -54,13 +57,15 @@ static long bcrypt_rounds = 13; static long yescrypt_cost = 5; #endif +static const char *prefix = ""; + static bool is_shadow_pwd; static bool pw_locked = false; static bool spw_locked = false; /* local function prototypes */ -static void fail_exit (int code); -static /*@noreturn@*/void usage (int status); +NORETURN static void fail_exit (int code); +NORETURN static void usage (int status); static void process_flags (int argc, char **argv); static void check_flags (void); static void check_perms (void); @@ -94,7 +99,9 @@ static void fail_exit (int code) /* * usage - display usage message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -121,6 +128,7 @@ static /*@noreturn@*/void usage (int status) " the MD5 algorithm\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); + (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout); #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" " or YESCRYPT crypt algorithms\n"), @@ -148,6 +156,7 @@ static void process_flags (int argc, char **argv) {"help", no_argument, NULL, 'h'}, {"md5", no_argument, NULL, 'm'}, {"root", required_argument, NULL, 'R'}, + {"prefix", required_argument, NULL, 'P'}, #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) {"sha-rounds", required_argument, NULL, 's'}, #endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ @@ -156,9 +165,9 @@ static void process_flags (int argc, char **argv) while ((c = getopt_long (argc, argv, #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) - "c:ehmR:s:", + "c:ehmR:P:s:", #else - "c:ehmR:", + "c:ehmR:P:", #endif long_options, NULL)) != -1) { switch (c) { @@ -176,25 +185,27 @@ static void process_flags (int argc, char **argv) break; case 'R': /* no-op, handled in process_root_flag () */ break; + case 'P': /* no-op, handled in process_prefix_flag () */ + break; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; bad_s = 0; #if defined(USE_SHA_CRYPT) if ((IS_CRYPT_METHOD("SHA256") || IS_CRYPT_METHOD("SHA512")) - && (0 == getlong(optarg, &sha_rounds))) { + && (-1 == str2sl(&sha_rounds, optarg))) { bad_s = 1; } #endif /* USE_SHA_CRYPT */ #if defined(USE_BCRYPT) if (IS_CRYPT_METHOD("BCRYPT") - && (0 == getlong(optarg, &bcrypt_rounds))) { + && (-1 == str2sl(&bcrypt_rounds, optarg))) { bad_s = 1; } #endif /* USE_BCRYPT */ #if defined(USE_YESCRYPT) if (IS_CRYPT_METHOD("YESCRYPT") - && (0 == getlong(optarg, &yescrypt_cost))) { + && (-1 == str2sl(&yescrypt_cost, optarg))) { bad_s = 1; } #endif /* USE_YESCRYPT */ @@ -294,7 +305,7 @@ static void check_perms (void) exit (1); } - retval = pam_start ("chpasswd", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -442,7 +453,6 @@ int main (int argc, char **argv) int errors = 0; int line = 0; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -450,18 +460,25 @@ int main (int argc, char **argv) (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); +#ifdef WITH_SELINUX + if (check_selinux_permit ("passwd") != 0) { + return (E_NOPERM); + } +#endif /* WITH_SELINUX */ + process_flags (argc, argv); salt = get_salt(); process_root_flag ("-R", argc, argv); + prefix = process_prefix_flag ("-P", argc, argv); #ifdef USE_PAM - if (md5flg || eflg || cflg) { + if (md5flg || eflg || cflg || prefix[0]) { use_pam = false; } #endif /* USE_PAM */ - OPENLOG ("chpasswd"); + OPENLOG (Prog); check_perms (); @@ -482,7 +499,7 @@ int main (int argc, char **argv) * last change date is set in the age only if aging information is * present. */ - while (fgets (buf, (int) sizeof buf, stdin) != (char *) 0) { + while (fgets (buf, sizeof buf, stdin) != NULL) { line++; cp = strrchr (buf, '\n'); if (NULL != cp) { @@ -491,7 +508,7 @@ int main (int argc, char **argv) if (feof (stdin) == 0) { // Drop all remaining characters on this line. - while (fgets (buf, (int) sizeof buf, stdin) != (char *) 0) { + while (fgets (buf, sizeof buf, stdin) != NULL) { cp = strchr (buf, '\n'); if (cp != NULL) { break; @@ -531,7 +548,7 @@ int main (int argc, char **argv) #ifdef USE_PAM if (use_pam) { - if (do_pam_passwd_non_interactive ("chpasswd", name, newpwd) != 0) { + if (do_pam_passwd_non_interactive (Prog, name, newpwd) != 0) { fprintf (stderr, _("%s: (line %d, user %s) password not changed\n"), Prog, line, name); @@ -606,7 +623,7 @@ int main (int argc, char **argv) if (NULL != sp) { newsp = *sp; newsp.sp_pwdp = cp; - newsp.sp_lstchg = (long) gettime () / SCALE; + newsp.sp_lstchg = gettime () / DAY; if (0 == newsp.sp_lstchg) { /* Better disable aging than requiring a * password change */ diff --git a/src/chsh.c b/src/chsh.c index 21d1c3e..c4918c1 100644 --- a/src/chsh.c +++ b/src/chsh.c @@ -16,6 +16,8 @@ #include #include #include + +#include "alloc.h" #include "defines.h" #include "getdef.h" #include "nscd.h" @@ -29,14 +31,22 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/strtcpy.h" #ifndef SHELLS_FILE #define SHELLS_FILE "/etc/shells" #endif + +#ifdef HAVE_VENDORDIR +#include +#define SHELLS "shells" +#define ETCDIR "/etc" +#endif + /* * Global variables */ -const char *Prog; /* Program name */ +static const char Prog[] = "chsh"; /* Program name */ static bool amroot; /* Real UID is root */ static char loginsh[BUFSIZ]; /* Name of new login shell */ /* command line options */ @@ -46,8 +56,8 @@ static bool pw_locked = false; /* external identifiers */ /* local function prototypes */ -static /*@noreturn@*/void fail_exit (int code); -static /*@noreturn@*/void usage (int status); +NORETURN static void fail_exit (int code); +NORETURN static void usage (int status); static void new_fields (void); static bool shell_is_listed (const char *); static bool is_restricted_shell (const char *); @@ -58,7 +68,9 @@ static void update_shell (const char *user, char *loginsh); /* * fail_exit - do some cleanup and exit with the given error code */ -static /*@noreturn@*/void fail_exit (int code) +NORETURN +static void +fail_exit (int code) { if (pw_locked) { if (pw_unlock () == 0) { @@ -76,7 +88,9 @@ static /*@noreturn@*/void fail_exit (int code) /* * usage - print command line syntax and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -127,17 +141,60 @@ static bool is_restricted_shell (const char *sh) * If getusershell() is available (Linux, *BSD, possibly others), use it * instead of re-implementing it. */ + +#ifdef HAVE_VENDORDIR static bool shell_is_listed (const char *sh) { - char *cp; bool found = false; -#ifndef HAVE_GETUSERSHELL - char buf[BUFSIZ]; - FILE *fp; -#endif + size_t size = 0; + econf_err error; + char **keys; + econf_file *key_file; + + error = econf_readDirs(&key_file, + VENDORDIR, + ETCDIR, + SHELLS, + NULL, + "", /* key only */ + "#" /* comment */); + if (error) { + fprintf (stderr, + _("Cannot parse shell files: %s"), + econf_errString(error)); + fail_exit (1); + } + + error = econf_getKeys(key_file, NULL, &size, &keys); + if (error) { + fprintf (stderr, + _("Cannot evaluate entries in shell files: %s"), + econf_errString(error)); + econf_free (key_file); + fail_exit (1); + } + + for (size_t i = 0; i < size; i++) { + if (strcmp (keys[i], sh) == 0) { + found = true; + break; + } + } + econf_free (keys); + econf_free (key_file); + + return found; +} + +#else /* without HAVE_VENDORDIR */ + +static bool shell_is_listed (const char *sh) +{ + bool found = false; #ifdef HAVE_GETUSERSHELL + char *cp; setusershell (); while ((cp = getusershell ())) { if (strcmp (cp, sh) == 0) { @@ -147,18 +204,17 @@ static bool shell_is_listed (const char *sh) } endusershell (); #else + char *buf = NULL; + FILE *fp; + size_t n = 0; + fp = fopen (SHELLS_FILE, "r"); if (NULL == fp) { return false; } - while (fgets (buf, sizeof (buf), fp) == buf) { - cp = strrchr (buf, '\n'); - if (NULL != cp) { - *cp = '\0'; - } - - if (buf[0] == '#') { + while (getline (&buf, &n, fp) != -1) { + if (buf[0] != '/') { continue; } @@ -167,10 +223,13 @@ static bool shell_is_listed (const char *sh) break; } } + + free(buf); fclose (fp); #endif return found; } +#endif /* with HAVE_VENDORDIR */ /* * process_flags - parse the command line options @@ -197,7 +256,7 @@ static void process_flags (int argc, char **argv) break; case 's': sflg = true; - STRFCPY (loginsh, optarg); + STRTCPY(loginsh, optarg); break; default: usage (E_USAGE); @@ -260,7 +319,7 @@ static void check_perms (const struct passwd *pw) * check if the change is allowed by SELinux policy. */ if ((pw->pw_uid != getuid ()) - && (check_selinux_permit("chsh") != 0)) { + && (check_selinux_permit(Prog) != 0)) { SYSLOG ((LOG_WARN, "can't change shell for '%s'", pw->pw_name)); fprintf (stderr, _("You may not change the shell for '%s'.\n"), @@ -277,7 +336,7 @@ static void check_perms (const struct passwd *pw) * chfn/chsh. --marekm */ if (!amroot && getdef_bool ("CHSH_AUTH")) { - passwd_check (pw->pw_name, pw->pw_passwd, "chsh"); + passwd_check (pw->pw_name, pw->pw_passwd, Prog); } #else /* !USE_PAM */ @@ -289,7 +348,7 @@ static void check_perms (const struct passwd *pw) exit (E_NOPERM); } - retval = pam_start ("chsh", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -413,12 +472,8 @@ int main (int argc, char **argv) const struct passwd *pw; /* Password entry from /etc/passwd */ sanitize_env (); + check_fds (); - /* - * Get the program name. The program name is used as a prefix to - * most error messages. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -433,7 +488,7 @@ int main (int argc, char **argv) */ amroot = (getuid () == 0); - OPENLOG ("chsh"); + OPENLOG (Prog); /* parse the command line options */ process_flags (argc, argv); @@ -463,28 +518,6 @@ int main (int argc, char **argv) user = xstrdup (pw->pw_name); } -#ifdef USE_NIS - /* - * Now we make sure this is a LOCAL password entry for this user ... - */ - if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf (stderr, - _("%s: cannot change user '%s' on NIS client.\n"), - Prog, user); - - if (!yp_get_default_domain (&nis_domain) && - !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf (stderr, - _("%s: '%s' is the NIS master for this client.\n"), - Prog, nis_master); - } - fail_exit (1); - } -#endif - check_perms (pw); /* @@ -492,7 +525,7 @@ int main (int argc, char **argv) * file, or use the value from the command line. */ if (!sflg) { - STRFCPY (loginsh, pw->pw_shell); + STRTCPY(loginsh, pw->pw_shell); } /* @@ -514,11 +547,15 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: Invalid entry: %s\n"), Prog, loginsh); fail_exit (1); } - if ( !amroot - && ( is_restricted_shell (loginsh) - || (access (loginsh, X_OK) != 0))) { - fprintf (stderr, _("%s: %s is an invalid shell\n"), Prog, loginsh); - fail_exit (1); + if (loginsh[0] != '/' + || is_restricted_shell (loginsh) + || (access (loginsh, X_OK) != 0)) { + if (amroot) { + fprintf (stderr, _("%s: Warning: %s is an invalid shell\n"), Prog, loginsh); + } else { + fprintf (stderr, _("%s: %s is an invalid shell\n"), Prog, loginsh); + fail_exit (1); + } } /* Even for root, warn if an invalid shell is specified. */ diff --git a/src/expiry.c b/src/expiry.c index dc20b90..12647a2 100644 --- a/src/expiry.c +++ b/src/expiry.c @@ -16,6 +16,8 @@ #include #include #include + +#include "attr.h" #include "defines.h" #include "prototypes.h" /*@-exitarg@*/ @@ -23,18 +25,18 @@ #include "shadowlog.h" /* Global variables */ -const char *Prog; +static const char Prog[] = "expiry"; static bool cflg = false; /* local function prototypes */ -static void catch_signals (unused int sig); -static /*@noreturn@*/void usage (int status); +static void catch_signals (MAYBE_UNUSED int sig); +NORETURN static void usage (int status); static void process_flags (int argc, char **argv); /* * catch_signals - signal catcher */ -static void catch_signals (unused int sig) +static void catch_signals (MAYBE_UNUSED int sig) { _exit (10); } @@ -42,7 +44,9 @@ static void catch_signals (unused int sig) /* * usage - print syntax message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -121,21 +125,19 @@ int main (int argc, char **argv) struct passwd *pwd; struct spwd *spwd; - Prog = Basename (argv[0]); + sanitize_env (); + check_fds (); + log_set_progname(Prog); log_set_logfd(stderr); - sanitize_env (); - /* * Start by disabling all of the keyboard signals. */ (void) signal (SIGHUP, catch_signals); (void) signal (SIGINT, catch_signals); (void) signal (SIGQUIT, catch_signals); -#ifdef SIGTSTP (void) signal (SIGTSTP, catch_signals); -#endif /* * expiry takes one of two arguments. The default action is to give @@ -145,7 +147,7 @@ int main (int argc, char **argv) (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); - OPENLOG ("expiry"); + OPENLOG (Prog); process_flags (argc, argv); diff --git a/src/faillog.c b/src/faillog.c index 0f94836..77c25b8 100644 --- a/src/faillog.c +++ b/src/faillog.c @@ -18,15 +18,21 @@ #include #include #include + +#include "atoi/str2i.h" #include "defines.h" #include "faillog.h" +#include "memzero.h" #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/strftime.h" + + /* local function prototypes */ -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void print_one (/*@null@*/const struct passwd *pw, bool force); static void set_locktime (long locktime); static bool set_locktime_one (uid_t uid, long locktime); @@ -39,7 +45,7 @@ static void reset (void); /* * Global variables */ -const char *Prog; /* Program name */ +static const char Prog[] = "faillog"; /* Program name */ static FILE *fail; /* failure file stream */ static time_t seconds; /* that number of days in seconds */ static unsigned long umin; /* if uflg and has_umin, only display users with uid >= umin */ @@ -57,9 +63,11 @@ static bool rflg = false; /* reset the counters of login failures */ static struct stat statbuf; /* fstat buffer for file size */ -#define NOW (time((time_t *) 0)) +#define NOW time(NULL) -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -81,34 +89,36 @@ static /*@noreturn@*/void usage (int status) exit (status); } -static void print_one (/*@null@*/const struct passwd *pw, bool force) +/* + * Looks up the offset in the faillog file for the given uid. + * Returns -1 on error. + */ +static off_t lookup_faillog(struct faillog *fl, uid_t uid) { - static bool once = false; - struct tm *tm; - off_t offset; - struct faillog fl; - time_t now; - char *cp; - char ptime[80]; - - if (NULL == pw) { - return; + off_t offset, size; + + /* Ensure multiplication does not overflow and retrieving a wrong entry */ + if (__builtin_mul_overflow(uid, sizeof(*fl), &offset)) { + fprintf(stderr, + _("%s: Failed to get the entry for UID %lu\n"), + Prog, (unsigned long)uid); + return -1; } - offset = (off_t) pw->pw_uid * sizeof (fl); - if (offset + sizeof (fl) <= statbuf.st_size) { + if (!__builtin_add_overflow(offset, sizeof(*fl), &size) + && size <= statbuf.st_size) { /* fseeko errors are not really relevant for us. */ - int err = fseeko (fail, offset, SEEK_SET); - assert (0 == err); + int err = fseeko(fail, offset, SEEK_SET); + assert(0 == err); /* faillog is a sparse file. Even if no entries were * entered for this user, which should be able to get the * empty entry in this case. */ - if (fread ((char *) &fl, sizeof (fl), 1, fail) != 1) { - fprintf (stderr, - _("%s: Failed to get the entry for UID %lu\n"), - Prog, (unsigned long int)pw->pw_uid); - return; + if (fread(fl, sizeof(*fl), 1, fail) != 1) { + fprintf(stderr, + _("%s: Failed to get the entry for UID %lu\n"), + Prog, (unsigned long)uid); + return -1; } } else { /* Outsize of the faillog file. @@ -116,7 +126,27 @@ static void print_one (/*@null@*/const struct passwd *pw, bool force) * as if we were reading an non existing entry in the * sparse faillog file). */ - memzero (&fl, sizeof (fl)); + memzero(fl, sizeof(*fl)); + } + + return offset; +} + +static void print_one (/*@null@*/const struct passwd *pw, bool force) +{ + static bool once = false; + struct tm *tm; + struct faillog fl; + time_t now; + char *cp; + char ptime[80]; + + if (NULL == pw) { + return; + } + + if (lookup_faillog(&fl, pw->pw_uid) < 0) { + return; } /* Nothing to report */ @@ -142,7 +172,7 @@ static void print_one (/*@null@*/const struct passwd *pw, bool force) fprintf (stderr, "Cannot read time from faillog.\n"); return; } - strftime (ptime, sizeof (ptime), "%D %H:%M:%S %z", tm); + STRFTIME(ptime, "%D %H:%M:%S %z", tm); cp = ptime; printf ("%-9s %5d %5d ", @@ -164,7 +194,7 @@ static void print_one (/*@null@*/const struct passwd *pw, bool force) static void print (void) { if (uflg && has_umin && has_umax && (umin==umax)) { - print_one (getpwuid ((uid_t)umin), true); + print_one (getpwuid (umin), true); } else { /* We only print records for existing users. * Loop based on the user database instead of reading the @@ -197,28 +227,10 @@ static bool reset_one (uid_t uid) off_t offset; struct faillog fl; - offset = (off_t) uid * sizeof (fl); - if (offset + sizeof (fl) <= statbuf.st_size) { - /* fseeko errors are not really relevant for us. */ - int err = fseeko (fail, offset, SEEK_SET); - assert (0 == err); - /* faillog is a sparse file. Even if no entries were - * entered for this user, which should be able to get the - * empty entry in this case. - */ - if (fread ((char *) &fl, sizeof (fl), 1, fail) != 1) { - fprintf (stderr, - _("%s: Failed to get the entry for UID %lu\n"), - Prog, (unsigned long int)uid); - return true; - } - } else { - /* Outsize of the faillog file. - * Behave as if there were a missing entry (same behavior - * as if we were reading an non existing entry in the - * sparse faillog file). - */ - memzero (&fl, sizeof (fl)); + offset = lookup_faillog(&fl, uid); + if (offset < 0) { + /* failure */ + return true; } if (0 == fl.fail_cnt) { @@ -232,21 +244,21 @@ static bool reset_one (uid_t uid) fl.fail_cnt = 0; if ( (fseeko (fail, offset, SEEK_SET) == 0) - && (fwrite ((char *) &fl, sizeof (fl), 1, fail) == 1)) { + && (fwrite (&fl, sizeof (fl), 1, fail) == 1)) { (void) fflush (fail); return false; } fprintf (stderr, _("%s: Failed to reset fail count for UID %lu\n"), - Prog, (unsigned long int)uid); + Prog, (unsigned long)uid); return true; } static void reset (void) { if (uflg && has_umin && has_umax && (umin==umax)) { - if (reset_one ((uid_t)umin)) { + if (reset_one (umin)) { errors = true; } } else { @@ -258,7 +270,7 @@ static void reset (void) uidmax--; } if (has_umax && (uid_t)umax < uidmax) { - uidmax = (uid_t)umax; + uidmax = umax; } /* Reset all entries in the specified range. @@ -271,7 +283,7 @@ static void reset (void) /* Make sure we stay in the umin-umax range if specified */ if (has_umin) { - uid = (uid_t)umin; + uid = umin; } while (uid <= uidmax) { @@ -289,7 +301,7 @@ static void reset (void) while ( (pwent = getpwent ()) != NULL ) { if ( uflg && ( (has_umin && (pwent->pw_uid < (uid_t)umin)) - || (pwent->pw_uid > (uid_t)uidmax))) { + || (pwent->pw_uid > uidmax))) { continue; } if (reset_one (pwent->pw_uid)) { @@ -311,28 +323,9 @@ static bool setmax_one (uid_t uid, short max) off_t offset; struct faillog fl; - offset = (off_t) uid * sizeof (fl); - if (offset + sizeof (fl) <= statbuf.st_size) { - /* fseeko errors are not really relevant for us. */ - int err = fseeko (fail, offset, SEEK_SET); - assert (0 == err); - /* faillog is a sparse file. Even if no entries were - * entered for this user, which should be able to get the - * empty entry in this case. - */ - if (fread ((char *) &fl, sizeof (fl), 1, fail) != 1) { - fprintf (stderr, - _("%s: Failed to get the entry for UID %lu\n"), - Prog, (unsigned long int)uid); - return true; - } - } else { - /* Outsize of the faillog file. - * Behave as if there were a missing entry (same behavior - * as if we were reading an non existing entry in the - * sparse faillog file). - */ - memzero (&fl, sizeof (fl)); + offset = lookup_faillog(&fl, uid); + if (offset < 0) { + return true; } if (max == fl.fail_max) { @@ -347,21 +340,21 @@ static bool setmax_one (uid_t uid, short max) fl.fail_max = max; if ( (fseeko (fail, offset, SEEK_SET) == 0) - && (fwrite ((char *) &fl, sizeof (fl), 1, fail) == 1)) { + && (fwrite (&fl, sizeof (fl), 1, fail) == 1)) { (void) fflush (fail); return false; } fprintf (stderr, _("%s: Failed to set max for UID %lu\n"), - Prog, (unsigned long int)uid); + Prog, (unsigned long)uid); return true; } static void setmax (short max) { if (uflg && has_umin && has_umax && (umin==umax)) { - if (setmax_one ((uid_t)umin, max)) { + if (setmax_one (umin, max)) { errors = true; } } else { @@ -385,10 +378,10 @@ static void setmax (short max) /* Make sure we stay in the umin-umax range if specified */ if (has_umin) { - uid = (uid_t)umin; + uid = umin; } if (has_umax) { - uidmax = (uid_t)umax; + uidmax = umax; } while (uid <= uidmax) { @@ -428,28 +421,9 @@ static bool set_locktime_one (uid_t uid, long locktime) off_t offset; struct faillog fl; - offset = (off_t) uid * sizeof (fl); - if (offset + sizeof (fl) <= statbuf.st_size) { - /* fseeko errors are not really relevant for us. */ - int err = fseeko (fail, offset, SEEK_SET); - assert (0 == err); - /* faillog is a sparse file. Even if no entries were - * entered for this user, which should be able to get the - * empty entry in this case. - */ - if (fread ((char *) &fl, sizeof (fl), 1, fail) != 1) { - fprintf (stderr, - _("%s: Failed to get the entry for UID %lu\n"), - Prog, (unsigned long int)uid); - return true; - } - } else { - /* Outsize of the faillog file. - * Behave as if there were a missing entry (same behavior - * as if we were reading an non existing entry in the - * sparse faillog file). - */ - memzero (&fl, sizeof (fl)); + offset = lookup_faillog(&fl, uid); + if (offset < 0) { + return true; } if (locktime == fl.fail_locktime) { @@ -464,21 +438,21 @@ static bool set_locktime_one (uid_t uid, long locktime) fl.fail_locktime = locktime; if ( (fseeko (fail, offset, SEEK_SET) == 0) - && (fwrite ((char *) &fl, sizeof (fl), 1, fail) == 1)) { + && (fwrite (&fl, sizeof (fl), 1, fail) == 1)) { (void) fflush (fail); return false; } fprintf (stderr, _("%s: Failed to set locktime for UID %lu\n"), - Prog, (unsigned long int)uid); + Prog, (unsigned long)uid); return true; } static void set_locktime (long locktime) { if (uflg && has_umin && has_umax && (umin==umax)) { - if (set_locktime_one ((uid_t)umin, locktime)) { + if (set_locktime_one (umin, locktime)) { errors = true; } } else { @@ -502,10 +476,10 @@ static void set_locktime (long locktime) /* Make sure we stay in the umin-umax range if specified */ if (has_umin) { - uid = (uid_t)umin; + uid = umin; } if (has_umax) { - uidmax = (uid_t)umax; + uidmax = umax; } while (uid <= uidmax) { @@ -541,11 +515,6 @@ int main (int argc, char **argv) short fail_max = 0; // initialize to silence compiler warning long days = 0; - /* - * Get the program name. The program name is used as a prefix to - * most error messages. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -578,7 +547,7 @@ int main (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'l': - if (getlong (optarg, &fail_locktime) == 0) { + if (str2sl(&fail_locktime, optarg) == -1) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -588,15 +557,16 @@ int main (int argc, char **argv) break; case 'm': { - long int lmax; - if ( (getlong (optarg, &lmax) == 0) - || ((long int)(short) lmax != lmax)) { + long lmax; + + if ( (str2sl(&lmax, optarg) == -1) + || ((long)(short) lmax != lmax)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); exit (E_BAD_ARG); } - fail_max = (short) lmax; + fail_max = lmax; mflg = true; break; } @@ -606,7 +576,7 @@ int main (int argc, char **argv) case 'R': /* no-op, handled in process_root_flag () */ break; case 't': - if (getlong (optarg, &days) == 0) { + if (str2sl(&days, optarg) == -1) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -630,14 +600,14 @@ int main (int argc, char **argv) /* local, no need for xgetpwnam */ pwent = getpwnam (optarg); if (NULL != pwent) { - umin = (unsigned long) pwent->pw_uid; + umin = pwent->pw_uid; has_umin = true; umax = umin; has_umax = true; } else { - if (getrange (optarg, - &umin, &has_umin, - &umax, &has_umax) == 0) { + if (getrange(optarg, + &umin, &has_umin, + &umax, &has_umax) == -1) { fprintf (stderr, _("%s: Unknown user or range: %s\n"), Prog, optarg); diff --git a/src/free_subid_range.c b/src/free_subid_range.c index d9a2cd8..441c227 100644 --- a/src/free_subid_range.c +++ b/src/free_subid_range.c @@ -9,7 +9,7 @@ /* Test program for the subid freeing routine */ -const char *Prog; +static const char Prog[] = "free_subid_range"; static void usage(void) { @@ -25,7 +25,6 @@ int main(int argc, char *argv[]) struct subordinate_range range; bool group = false; // get subuids by default - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); while ((c = getopt(argc, argv, "g")) != EOF) { diff --git a/src/get_subid_owners.c b/src/get_subid_owners.c index 36974b8..e1c1e79 100644 --- a/src/get_subid_owners.c +++ b/src/get_subid_owners.c @@ -6,7 +6,7 @@ #include "prototypes.h" #include "shadowlog.h" -const char *Prog; +static const char Prog[] = "get_subid_owners"; static void usage(void) { @@ -21,7 +21,6 @@ int main(int argc, char *argv[]) int i, n; uid_t *uids; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); if (argc < 2) { diff --git a/src/getsubids.c b/src/getsubids.c index c91ae39..0753abd 100644 --- a/src/getsubids.c +++ b/src/getsubids.c @@ -7,7 +7,7 @@ #include "prototypes.h" #include "shadowlog.h" -const char *Prog; +static const char Prog[] = "getsubids"; static void usage(void) { @@ -23,7 +23,6 @@ int main(int argc, char *argv[]) struct subid_range *ranges; const char *owner; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); if (argc < 2) @@ -45,5 +44,6 @@ int main(int argc, char *argv[]) printf("%d: %s %lu %lu\n", i, owner, ranges[i].start, ranges[i].count); } + free(ranges); return 0; } diff --git a/src/gpasswd.c b/src/gpasswd.c index 5983f78..de6b1c4 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -19,8 +19,13 @@ #include #include #include + +#include "agetpass.h" +#include "alloc.h" +#include "attr.h" #include "defines.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -29,13 +34,16 @@ #endif /*@-exitarg@*/ #include "exitcodes.h" - #include "shadowlog.h" +#include "string/sprintf.h" +#include "string/strtcpy.h" + + /* * Global variables */ /* The name of this command, as it is invoked */ -const char *Prog; +static const char Prog[] = "gpasswd"; #ifdef SHADOWGRP /* Indicate if shadow groups are enabled on the system @@ -73,6 +81,7 @@ static uid_t bywho; #endif /* local function prototypes */ +NORETURN static void failure(void); static void usage (int status); static void catch_signals (int killed); static bool is_valid_user_list (const char *users); @@ -92,14 +101,14 @@ static void update_group (struct group *gr); static void change_passwd (struct group *gr); #endif static void log_gpasswd_failure (const char *suffix); -static void log_gpasswd_failure_system (/*@null@*/unused void *arg); -static void log_gpasswd_failure_group (/*@null@*/unused void *arg); +static void log_gpasswd_failure_system (/*@null@*/MAYBE_UNUSED void *arg); +static void log_gpasswd_failure_group (/*@null@*/MAYBE_UNUSED void *arg); #ifdef SHADOWGRP -static void log_gpasswd_failure_gshadow (/*@null@*/unused void *arg); +static void log_gpasswd_failure_gshadow (/*@null@*/MAYBE_UNUSED void *arg); #endif static void log_gpasswd_success (const char *suffix); -static void log_gpasswd_success_system (/*@null@*/unused void *arg); -static void log_gpasswd_success_group (/*@null@*/unused void *arg); +static void log_gpasswd_success_system (/*@null@*/MAYBE_UNUSED void *arg); +static void log_gpasswd_success_group (/*@null@*/MAYBE_UNUSED void *arg); /* * usage - display usage message @@ -194,11 +203,11 @@ static bool is_valid_user_list (const char *users) return is_valid; } -static void failure (void) +static void failure(void) { - fprintf (stderr, _("%s: Permission denied.\n"), Prog); - log_gpasswd_failure (": Permission denied"); - exit (E_NOPERM); + fprintf(stderr, _("%s: Permission denied.\n"), Prog); + log_gpasswd_failure(": Permission denied"); + exit(E_NOPERM); } /* @@ -376,17 +385,16 @@ static void open_files (void) static void log_gpasswd_failure (const char *suffix) { #ifdef WITH_AUDIT - char buf[1024]; + char buf[1024]; #endif + if (aflg) { SYSLOG ((LOG_ERR, "%s failed to add user %s to group %s%s", myname, user, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to add user %s to group %s%s", - myname, user, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to add user %s to group %s%s", + myname, user, group, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -397,10 +405,8 @@ static void log_gpasswd_failure (const char *suffix) "%s failed to remove user %s from group %s%s", myname, user, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to remove user %s from group %s%s", - myname, user, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to remove user %s from group %s%s", + myname, user, group, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -411,10 +417,8 @@ static void log_gpasswd_failure (const char *suffix) "%s failed to remove password of group %s%s", myname, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to remove password of group %s%s", - myname, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to remove password of group %s%s", + myname, group, suffix); audit_logger (AUDIT_USER_CHAUTHTOK, Prog, buf, group, AUDIT_NO_ID, @@ -425,10 +429,8 @@ static void log_gpasswd_failure (const char *suffix) "%s failed to restrict access to group %s%s", myname, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to restrict access to group %s%s", - myname, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to restrict access to group %s%s", + myname, group, suffix); audit_logger (AUDIT_USER_CHAUTHTOK, Prog, buf, group, AUDIT_NO_ID, @@ -441,10 +443,8 @@ static void log_gpasswd_failure (const char *suffix) "%s failed to set the administrators of group %s to %s%s", myname, group, admins, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to set the administrators of group %s to %s%s", - myname, group, admins, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to set the administrators of group %s to %s%s", + myname, group, admins, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -457,10 +457,8 @@ static void log_gpasswd_failure (const char *suffix) "%s failed to set the members of group %s to %s%s", myname, group, members, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to set the members of group %s to %s%s", - myname, group, members, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to set the members of group %s to %s%s", + myname, group, members, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -472,10 +470,8 @@ static void log_gpasswd_failure (const char *suffix) "%s failed to change password of group %s%s", myname, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "%s failed to change password of group %s%s", - myname, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "%s failed to change password of group %s%s", + myname, group, suffix); audit_logger (AUDIT_USER_CHAUTHTOK, Prog, buf, group, AUDIT_NO_ID, @@ -484,25 +480,25 @@ static void log_gpasswd_failure (const char *suffix) } } -static void log_gpasswd_failure_system (unused void *arg) +static void log_gpasswd_failure_system (MAYBE_UNUSED void *arg) { log_gpasswd_failure (""); } -static void log_gpasswd_failure_group (unused void *arg) +static void log_gpasswd_failure_group (MAYBE_UNUSED void *arg) { - char buf[1024]; - snprintf (buf, 1023, " in %s", gr_dbname ()); - buf[1023] = '\0'; + char buf[1024]; + + SNPRINTF(buf, " in %s", gr_dbname()); log_gpasswd_failure (buf); } #ifdef SHADOWGRP -static void log_gpasswd_failure_gshadow (unused void *arg) +static void log_gpasswd_failure_gshadow (MAYBE_UNUSED void *arg) { - char buf[1024]; - snprintf (buf, 1023, " in %s", sgr_dbname ()); - buf[1023] = '\0'; + char buf[1024]; + + SNPRINTF(buf, " in %s", sgr_dbname()); log_gpasswd_failure (buf); } #endif /* SHADOWGRP */ @@ -510,17 +506,16 @@ static void log_gpasswd_failure_gshadow (unused void *arg) static void log_gpasswd_success (const char *suffix) { #ifdef WITH_AUDIT - char buf[1024]; + char buf[1024]; #endif + if (aflg) { SYSLOG ((LOG_INFO, "user %s added by %s to group %s%s", user, myname, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "user %s added by %s to group %s%s", - user, myname, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "user %s added by %s to group %s%s", + user, myname, group, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -531,10 +526,8 @@ static void log_gpasswd_success (const char *suffix) "user %s removed by %s from group %s%s", user, myname, group, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "user %s removed by %s from group %s%s", - user, myname, group, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "user %s removed by %s from group %s%s", + user, myname, group, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -545,10 +538,8 @@ static void log_gpasswd_success (const char *suffix) "password of group %s removed by %s%s", group, myname, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "password of group %s removed by %s%s", - group, myname, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "password of group %s removed by %s%s", + group, myname, suffix); audit_logger (AUDIT_USER_CHAUTHTOK, Prog, buf, group, AUDIT_NO_ID, @@ -559,10 +550,8 @@ static void log_gpasswd_success (const char *suffix) "access to group %s restricted by %s%s", group, myname, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "access to group %s restricted by %s%s", - group, myname, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "access to group %s restricted by %s%s", + group, myname, suffix); audit_logger (AUDIT_USER_CHAUTHTOK, Prog, buf, group, AUDIT_NO_ID, @@ -575,10 +564,8 @@ static void log_gpasswd_success (const char *suffix) "administrators of group %s set by %s to %s%s", group, myname, admins, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "administrators of group %s set by %s to %s%s", - group, myname, admins, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "administrators of group %s set by %s to %s%s", + group, myname, admins, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -591,10 +578,8 @@ static void log_gpasswd_success (const char *suffix) "members of group %s set by %s to %s%s", group, myname, members, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "members of group %s set by %s to %s%s", - group, myname, members, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "members of group %s set by %s to %s%s", + group, myname, members, suffix); audit_logger (AUDIT_USER_ACCT, Prog, buf, group, AUDIT_NO_ID, @@ -606,10 +591,8 @@ static void log_gpasswd_success (const char *suffix) "password of group %s changed by %s%s", group, myname, suffix)); #ifdef WITH_AUDIT - snprintf (buf, 1023, - "password of group %s changed by %s%s", - group, myname, suffix); - buf[1023] = '\0'; + SNPRINTF(buf, "password of group %s changed by %s%s", + group, myname, suffix); audit_logger (AUDIT_USER_CHAUTHTOK, Prog, buf, group, AUDIT_NO_ID, @@ -618,16 +601,16 @@ static void log_gpasswd_success (const char *suffix) } } -static void log_gpasswd_success_system (unused void *arg) +static void log_gpasswd_success_system (MAYBE_UNUSED void *arg) { log_gpasswd_success (""); } -static void log_gpasswd_success_group (unused void *arg) +static void log_gpasswd_success_group (MAYBE_UNUSED void *arg) { - char buf[1024]; - snprintf (buf, 1023, " in %s", gr_dbname ()); - buf[1023] = '\0'; + char buf[1024]; + + SNPRINTF(buf, " in %s", gr_dbname()); log_gpasswd_success (buf); } @@ -704,8 +687,7 @@ static void check_perms (const struct group *gr) } } else #endif /* SHADOWGRP */ - { -#ifdef FIRST_MEMBER_IS_ADMIN + if (!amroot) { /* * The policy here for changing a group is that * 1) you must be root or @@ -720,20 +702,14 @@ static void check_perms (const struct group *gr) * first group member might be just a normal user. * --marekm */ - if (!amroot) { - if (gr->gr_mem[0] == (char *) 0) { - failure (); - } - - if (strcmp (gr->gr_mem[0], myname) != 0) { - failure (); - } - } -#else /* ! FIRST_MEMBER_IS_ADMIN */ - if (!amroot) { - failure (); - } +#if !defined(FIRST_MEMBER_IS_ADMIN) + failure(); #endif + if (gr->gr_mem[0] == NULL) + failure(); + + if (strcmp(gr->gr_mem[0], myname) != 0) + failure(); } } @@ -834,7 +810,7 @@ static void get_group (struct group *gr) sg->sg_mem = dup_list (gr->gr_mem); - sg->sg_adm = (char **) xmalloc (sizeof (char *) * 2); + sg->sg_adm = XMALLOC(2, char *); #ifdef FIRST_MEMBER_IS_ADMIN if (sg->sg_mem[0]) { sg->sg_adm[0] = xstrdup (sg->sg_mem[0]); @@ -887,25 +863,26 @@ static void change_passwd (struct group *gr) printf (_("Changing the password for group %s\n"), group); for (retries = 0; retries < RETRIES; retries++) { - cp = getpass (_("New Password: ")); + cp = agetpass (_("New Password: ")); if (NULL == cp) { exit (1); } - STRFCPY (pass, cp); - strzero (cp); - cp = getpass (_("Re-enter new password: ")); + STRTCPY(pass, cp); + erase_pass (cp); + cp = agetpass (_("Re-enter new password: ")); if (NULL == cp) { + MEMZERO(pass); exit (1); } if (strcmp (pass, cp) == 0) { - strzero (cp); + erase_pass (cp); break; } - strzero (cp); - memzero (pass, sizeof pass); + erase_pass (cp); + MEMZERO(pass); if (retries + 1 < RETRIES) { puts (_("They don't match; try again")); @@ -925,7 +902,7 @@ static void change_passwd (struct group *gr) Prog, salt, strerror (errno)); exit (1); } - memzero (pass, sizeof pass); + MEMZERO(pass); #ifdef SHADOWGRP if (is_shadowgrp) { gr->gr_passwd = SHADOW_PASSWD_STRING; @@ -953,6 +930,8 @@ int main (int argc, char **argv) #endif sanitize_env (); + check_fds (); + (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); @@ -965,11 +944,10 @@ int main (int argc, char **argv) * with this command. */ bywho = getuid (); - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); - OPENLOG ("gpasswd"); + OPENLOG (Prog); setbuf (stdout, NULL); setbuf (stderr, NULL); @@ -1145,9 +1123,7 @@ int main (int argc, char **argv) (void) signal (SIGINT, catch_signals); (void) signal (SIGQUIT, catch_signals); (void) signal (SIGTERM, catch_signals); -#ifdef SIGTSTP (void) signal (SIGTSTP, catch_signals); -#endif /* Prompt for the new password */ #ifdef SHADOWGRP diff --git a/src/groupadd.c b/src/groupadd.c index 66ccb53..46e6550 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -27,6 +27,7 @@ #include "defines.h" #include "getdef.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -34,6 +35,7 @@ #include "sgroupio.h" #endif #include "shadowlog.h" +#include "run_part.h" /* * exit status values @@ -49,7 +51,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "groupadd"; static /*@null@*/char *group_name; static gid_t group_id; @@ -70,7 +72,7 @@ static bool is_shadow_grp; #endif /* local function prototypes */ -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void new_grent (struct group *grent); #ifdef SHADOWGRP @@ -87,7 +89,9 @@ static void check_perms (void); /* * usage - display usage message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -105,7 +109,7 @@ static /*@noreturn@*/void usage (int status) (void) fputs (_(" -p, --password PASSWORD use this encrypted password for the new group\n"), usageout); (void) fputs (_(" -r, --system create a system account\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); - (void) fputs (_(" -P, --prefix PREFIX_DI directory prefix\n"), usageout); + (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout); (void) fputs (_(" -U, --users USERS list of user members of this group\n"), usageout); (void) fputs ("\n", usageout); exit (status); @@ -262,8 +266,7 @@ static void close_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_GROUP, Prog, "adding group to /etc/group", - group_name, (unsigned int) group_id, - SHADOW_AUDIT_SUCCESS); + group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif SYSLOG ((LOG_INFO, "group added to %s: name=%s, GID=%u", gr_dbname (), group_name, (unsigned int) group_id)); @@ -284,8 +287,7 @@ static void close_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_GROUP, Prog, "adding group to /etc/gshadow", - group_name, (unsigned int) group_id, - SHADOW_AUDIT_SUCCESS); + group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif SYSLOG ((LOG_INFO, "group added to %s: name=%s", sgr_dbname (), group_name)); @@ -299,9 +301,7 @@ static void close_files (void) /* Report success at the system level */ #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_GROUP, Prog, - "", - group_name, (unsigned int) group_id, - SHADOW_AUDIT_SUCCESS); + "", group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif SYSLOG ((LOG_INFO, "new group: name=%s, GID=%u", group_name, (unsigned int) group_id)); @@ -344,8 +344,8 @@ static void open_files (void) /* And now open the databases */ if (gr_open (O_CREAT | O_RDWR) == 0) { - fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - SYSLOG ((LOG_WARN, "cannot open %s", gr_dbname ())); + fprintf (stderr, _("%s: cannot open %s: %s\n"), Prog, gr_dbname (), strerror(errno)); + SYSLOG ((LOG_WARN, "cannot open %s: %s", gr_dbname (), strerror(errno))); exit (E_GRP_UPDATE); } @@ -353,9 +353,9 @@ static void open_files (void) if (is_shadow_grp) { if (sgr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, - _("%s: cannot open %s\n"), - Prog, sgr_dbname ()); - SYSLOG ((LOG_WARN, "cannot open %s", sgr_dbname ())); + _("%s: cannot open %s: %s\n"), + Prog, sgr_dbname (), strerror(errno)); + SYSLOG ((LOG_WARN, "cannot open %s: %s", sgr_dbname (), strerror(errno))); exit (E_GRP_UPDATE); } } @@ -403,7 +403,7 @@ static void process_flags (int argc, char **argv) break; case 'g': gflg = true; - if ( (get_gid (optarg, &group_id) == 0) + if ( (get_gid(optarg, &group_id) == -1) || (group_id == (gid_t)-1)) { fprintf (stderr, _("%s: invalid group ID '%s'\n"), @@ -429,7 +429,7 @@ static void process_flags (int argc, char **argv) } /* terminate name, point to value */ *cp++ = '\0'; - if (putdef_str (optarg, cp) < 0) { + if (putdef_str (optarg, cp, NULL) < 0) { exit (E_BAD_ARG); } break; @@ -511,7 +511,7 @@ static void check_flags (void) } else { fprintf (stderr, _("%s: GID '%lu' already exists\n"), - Prog, (unsigned long int) group_id); + Prog, (unsigned long) group_id); exit (E_GID_IN_USE); } } @@ -543,7 +543,7 @@ static void check_perms (void) exit (1); } - retval = pam_start ("groupadd", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -572,10 +572,6 @@ static void check_perms (void) */ int main (int argc, char **argv) { - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -586,7 +582,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); prefix = process_prefix_flag ("-P", argc, argv); - OPENLOG ("groupadd"); + OPENLOG (Prog); #ifdef WITH_AUDIT audit_help_open (); #endif @@ -605,6 +601,11 @@ int main (int argc, char **argv) check_perms (); + if (run_parts ("/etc/shadow-maint/groupadd-pre.d", group_name, + Prog)) { + exit(1); + } + #ifdef SHADOWGRP is_shadow_grp = sgr_file_present (); #endif @@ -623,6 +624,11 @@ int main (int argc, char **argv) grp_update (); close_files (); + if (run_parts ("/etc/shadow-maint/groupadd-post.d", group_name, + Prog)) { + exit(1); + } + nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); diff --git a/src/groupdel.c b/src/groupdel.c index c84faa7..4bc58aa 100644 --- a/src/groupdel.c +++ b/src/groupdel.c @@ -32,10 +32,11 @@ #include "sgroupio.h" #endif #include "shadowlog.h" +#include "run_part.h" /* * Global variables */ -const char *Prog; +static const char Prog[] = "groupdel"; static char *group_name; static gid_t group_id = -1; @@ -58,7 +59,7 @@ static bool is_shadow_grp; #define E_GRP_UPDATE 10 /* can't update group file */ /* local function prototypes */ -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void grp_update (void); static void close_files (void); static void open_files (void); @@ -68,7 +69,9 @@ static void process_flags (int argc, char **argv); /* * usage - display usage message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -147,8 +150,7 @@ static void close_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_GROUP, Prog, "removing group from /etc/group", - group_name, (unsigned int) group_id, - SHADOW_AUDIT_SUCCESS); + group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif SYSLOG ((LOG_INFO, "group '%s' removed from %s", @@ -172,8 +174,7 @@ static void close_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_GROUP, Prog, "removing group from /etc/gshadow", - group_name, (unsigned int) group_id, - SHADOW_AUDIT_SUCCESS); + group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif SYSLOG ((LOG_INFO, "group '%s' removed from %s", @@ -188,9 +189,7 @@ static void close_files (void) /* Report success at the system level */ #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_GROUP, Prog, - "", - group_name, (unsigned int) group_id, - SHADOW_AUDIT_SUCCESS); + "", group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif SYSLOG ((LOG_INFO, "group '%s' removed\n", group_name)); del_cleanup (cleanup_report_del_group); @@ -275,7 +274,7 @@ static void group_busy (gid_t gid) * If pwd isn't NULL, it stopped because the gid's matched. */ - if (pwd == (struct passwd *) 0) { + if (pwd == NULL) { return; } @@ -350,10 +349,6 @@ int main (int argc, char **argv) #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -364,7 +359,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); prefix = process_prefix_flag ("-P", argc, argv); - OPENLOG ("groupdel"); + OPENLOG (Prog); #ifdef WITH_AUDIT audit_help_open (); #endif @@ -390,7 +385,7 @@ int main (int argc, char **argv) exit (1); } - retval = pam_start ("groupdel", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); } if (PAM_SUCCESS == retval) { @@ -434,28 +429,6 @@ int main (int argc, char **argv) group_id = grp->gr_gid; } -#ifdef USE_NIS - /* - * Make sure this isn't a NIS group - */ - if (__isgrNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf (stderr, - _("%s: group '%s' is a NIS group\n"), - Prog, group_name); - - if (!yp_get_default_domain (&nis_domain) && - !yp_master (nis_domain, "group.byname", &nis_master)) { - fprintf (stderr, - _("%s: %s is the NIS master\n"), - Prog, nis_master); - } - exit (E_NOTFOUND); - } -#endif - /* * Make sure this isn't the primary group of anyone. */ @@ -463,6 +436,11 @@ int main (int argc, char **argv) group_busy (group_id); } + if (run_parts ("/etc/shadow-maint/groupdel-pre.d", group_name, + Prog)) { + exit(1); + } + /* * Do the hard stuff - open the files, delete the group entries, * then close and update the files. @@ -473,6 +451,11 @@ int main (int argc, char **argv) close_files (); + if (run_parts ("/etc/shadow-maint/groupdel-post.d", group_name, + Prog)) { + exit(1); + } + nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); diff --git a/src/groupmems.c b/src/groupmems.c index a0e3266..a369a61 100644 --- a/src/groupmems.c +++ b/src/groupmems.c @@ -18,6 +18,8 @@ #include "pam_defs.h" #endif /* USE_PAM */ #include + +#include "alloc.h" #include "defines.h" #include "prototypes.h" #include "groupio.h" @@ -42,7 +44,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "groupmems"; static char *adduser = NULL; static char *deluser = NULL; @@ -66,10 +68,10 @@ static void remove_user (const char *user, const struct group *grp); static void purge_members (const struct group *grp); static void display_members (const char *const *members); -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void process_flags (int argc, char **argv); static void check_perms (void); -static void fail_exit (int code); +NORETURN static void fail_exit (int code); #define isroot() (getuid () == 0) static char *whoami (void) @@ -89,7 +91,7 @@ static char *whoami (void) } /* - * add_user - Add an user to the specified group + * add_user - Add a user to the specified group */ static void add_user (const char *user, const struct group *grp) @@ -125,7 +127,7 @@ static void add_user (const char *user, static struct sgrp sgrent; sgrent.sg_name = xstrdup (newgrp->gr_name); sgrent.sg_mem = dup_list (newgrp->gr_mem); - sgrent.sg_adm = (char **) xmalloc (sizeof (char *)); + sgrent.sg_adm = XMALLOC(1, char *); #ifdef FIRST_MEMBER_IS_ADMIN if (sgrent.sg_mem[0]) { sgrent.sg_adm[0] = xstrdup (sgrent.sg_mem[0]); @@ -172,7 +174,7 @@ static void add_user (const char *user, } /* - * remove_user - Remove an user from a given group + * remove_user - Remove a user from a given group */ static void remove_user (const char *user, const struct group *grp) @@ -208,7 +210,7 @@ static void remove_user (const char *user, static struct sgrp sgrent; sgrent.sg_name = xstrdup (newgrp->gr_name); sgrent.sg_mem = dup_list (newgrp->gr_mem); - sgrent.sg_adm = (char **) xmalloc (sizeof (char *)); + sgrent.sg_adm = XMALLOC(1, char *); #ifdef FIRST_MEMBER_IS_ADMIN if (sgrent.sg_mem[0]) { sgrent.sg_adm[0] = xstrdup (sgrent.sg_mem[0]); @@ -281,9 +283,9 @@ static void purge_members (const struct group *grp) /* Create a shadow group based on this group */ static struct sgrp sgrent; sgrent.sg_name = xstrdup (newgrp->gr_name); - sgrent.sg_mem = (char **) xmalloc (sizeof (char *)); + sgrent.sg_mem = XMALLOC(1, char *); sgrent.sg_mem[0] = NULL; - sgrent.sg_adm = (char **) xmalloc (sizeof (char *)); + sgrent.sg_adm = XMALLOC(1, char *); sgrent.sg_adm[0] = NULL; /* Move any password to gshadow */ @@ -339,7 +341,9 @@ static void display_members (const char *const *members) } } -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (EXIT_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -439,7 +443,7 @@ static void check_perms (void) fail_exit (1); } - retval = pam_start ("groupmems", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); if (PAM_SUCCESS == retval) { retval = pam_authenticate (pamh, 0); @@ -569,10 +573,6 @@ int main (int argc, char **argv) char *name; const struct group *grp; - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -582,7 +582,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("groupmems"); + OPENLOG (Prog); #ifdef SHADOWGRP is_shadowgrp = sgr_file_present (); diff --git a/src/groupmod.c b/src/groupmod.c index 006eca1..989d7ea 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -15,7 +15,9 @@ #include #include #include +#include #include +#include #include #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM @@ -23,6 +25,8 @@ #include #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ + +#include "alloc.h" #include "chkname.h" #include "defines.h" #include "groupio.h" @@ -34,6 +38,8 @@ #include "sgroupio.h" #endif #include "shadowlog.h" +#include "string/stpecpy.h" +#include "string/stpeprintf.h" /* * exit status values */ @@ -53,7 +59,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "groupmod"; #ifdef SHADOWGRP static bool is_shadow_grp; @@ -224,7 +230,7 @@ static void grp_update (void) * shadowed password, we force the creation of a * gshadow entry when a new password is requested. */ - memset (&sgrp, 0, sizeof sgrp); + bzero(&sgrp, sizeof sgrp); sgrp.sg_name = xstrdup (grp.gr_name); sgrp.sg_passwd = xstrdup (grp.gr_passwd); sgrp.sg_adm = ∅ @@ -244,10 +250,8 @@ static void grp_update (void) if (!aflg) { // requested to replace the existing groups - if (NULL != grp.gr_mem[0]) - gr_free_members(&grp); - grp.gr_mem = (char **)xmalloc(sizeof(char *)); - grp.gr_mem[0] = (char *)0; + grp.gr_mem = XMALLOC(1, char *); + grp.gr_mem[0] = NULL; } else { // append to existing groups if (NULL != grp.gr_mem[0]) @@ -333,7 +337,7 @@ static void check_new_gid (void) */ fprintf (stderr, _("%s: GID '%lu' already exists\n"), - Prog, (unsigned long int) group_newid); + Prog, (unsigned long) group_newid); exit (E_GID_IN_USE); } @@ -408,7 +412,7 @@ static void process_flags (int argc, char **argv) break; case 'g': gflg = true; - if ( (get_gid (optarg, &group_newid) == 0) + if ( (get_gid(optarg, &group_newid) == -1) || (group_newid == (gid_t)-1)) { fprintf (stderr, _("%s: invalid group ID '%s'\n"), @@ -542,95 +546,74 @@ static void close_files (void) */ static void prepare_failure_reports (void) { + char *gr, *gr_end; +#ifdef SHADOWGRP + char *sgr, *sgr_end; +#endif + char *pw, *pw_end; + info_group.name = group_name; #ifdef SHADOWGRP info_gshadow.name = group_name; #endif info_passwd.name = group_name; - info_group.audit_msg = xmalloc (512); + gr = XMALLOC(512, char); + info_group.audit_msg = gr; + gr_end = gr + 512; #ifdef SHADOWGRP - info_gshadow.audit_msg = xmalloc (512); + sgr = XMALLOC(512, char); + info_gshadow.audit_msg = sgr; + sgr_end = sgr + 512; #endif - info_passwd.audit_msg = xmalloc (512); + pw = XMALLOC(512, char); + info_passwd.audit_msg = pw; + pw_end = pw + 512; - (void) snprintf (info_group.audit_msg, 511, - "changing %s; ", gr_dbname ()); + gr = stpeprintf(gr, gr_end, "changing %s; ", gr_dbname ()); #ifdef SHADOWGRP - (void) snprintf (info_gshadow.audit_msg, 511, - "changing %s; ", sgr_dbname ()); + sgr = stpeprintf(sgr, sgr_end, "changing %s; ", sgr_dbname ()); #endif - (void) snprintf (info_passwd.audit_msg, 511, - "changing %s; ", pw_dbname ()); + pw = stpeprintf(pw, pw_end, "changing %s; ", pw_dbname ()); - info_group.action = info_group.audit_msg - + strlen (info_group.audit_msg); + info_group.action = gr; #ifdef SHADOWGRP - info_gshadow.action = info_gshadow.audit_msg - + strlen (info_gshadow.audit_msg); + info_gshadow.action = sgr; #endif - info_passwd.action = info_passwd.audit_msg - + strlen (info_passwd.audit_msg); + info_passwd.action = pw; - (void) snprintf (info_group.action, - 511 - strlen (info_group.audit_msg), - "group %s/%lu", - group_name, (unsigned long int) group_id); + gr = stpeprintf(gr, gr_end, + "group %s/%ju", group_name, (uintmax_t) group_id); #ifdef SHADOWGRP - (void) snprintf (info_gshadow.action, - 511 - strlen (info_group.audit_msg), + sgr = stpeprintf(sgr, sgr_end, "group %s", group_name); #endif - (void) snprintf (info_passwd.action, - 511 - strlen (info_group.audit_msg), - "group %s/%lu", - group_name, (unsigned long int) group_id); + pw = stpeprintf(pw, pw_end, + "group %s/%ju", group_name, (uintmax_t) group_id); if (nflg) { - strncat (info_group.action, ", new name: ", - 511 - strlen (info_group.audit_msg)); - strncat (info_group.action, group_newname, - 511 - strlen (info_group.audit_msg)); - + gr = stpecpy(gr, gr_end, ", new name: "); + gr = stpecpy(gr, gr_end, group_newname); #ifdef SHADOWGRP - strncat (info_gshadow.action, ", new name: ", - 511 - strlen (info_gshadow.audit_msg)); - strncat (info_gshadow.action, group_newname, - 511 - strlen (info_gshadow.audit_msg)); + sgr = stpecpy(sgr, sgr_end, ", new name: "); + sgr = stpecpy(sgr, sgr_end, group_newname); #endif - - strncat (info_passwd.action, ", new name: ", - 511 - strlen (info_passwd.audit_msg)); - strncat (info_passwd.action, group_newname, - 511 - strlen (info_passwd.audit_msg)); + pw = stpecpy(pw, pw_end, ", new name: "); + pw = stpecpy(pw, pw_end, group_newname); } if (pflg) { - strncat (info_group.action, ", new password", - 511 - strlen (info_group.audit_msg)); - + gr = stpecpy(gr, gr_end, ", new password"); #ifdef SHADOWGRP - strncat (info_gshadow.action, ", new password", - 511 - strlen (info_gshadow.audit_msg)); + sgr = stpecpy(sgr, sgr_end, ", new password"); #endif } if (gflg) { - strncat (info_group.action, ", new gid: ", - 511 - strlen (info_group.audit_msg)); - (void) snprintf (info_group.action+strlen (info_group.action), - 511 - strlen (info_group.audit_msg), - "%lu", (unsigned long int) group_newid); - - strncat (info_passwd.action, ", new gid: ", - 511 - strlen (info_passwd.audit_msg)); - (void) snprintf (info_passwd.action+strlen (info_passwd.action), - 511 - strlen (info_passwd.audit_msg), - "%lu", (unsigned long int) group_newid); - } - info_group.audit_msg[511] = '\0'; -#ifdef SHADOWGRP - info_gshadow.audit_msg[511] = '\0'; -#endif - info_passwd.audit_msg[511] = '\0'; + gr = stpecpy(gr, gr_end, ", new gid: "); + stpeprintf(gr, gr_end, "%ju", (uintmax_t) group_newid); + + pw = stpecpy(pw, pw_end, ", new gid: "); + stpeprintf(pw, pw_end, "%ju", (uintmax_t) group_newid); + } // FIXME: add a system cleanup add_cleanup (cleanup_report_mod_group, &info_group); @@ -766,10 +749,6 @@ int main (int argc, char **argv) #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -780,7 +759,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); prefix = process_prefix_flag ("-P", argc, argv); - OPENLOG ("groupmod"); + OPENLOG (Prog); #ifdef WITH_AUDIT audit_help_open (); #endif @@ -806,7 +785,7 @@ int main (int argc, char **argv) exit (E_PAM_USERNAME); } - retval = pam_start ("groupmod", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); } if (PAM_SUCCESS == retval) { @@ -849,28 +828,6 @@ int main (int argc, char **argv) } } -#ifdef USE_NIS - /* - * Now make sure it isn't an NIS group. - */ - if (__isgrNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf (stderr, - _("%s: group %s is a NIS group\n"), - Prog, group_name); - - if (!yp_get_default_domain (&nis_domain) && - !yp_master (nis_domain, "group.byname", &nis_master)) { - fprintf (stderr, - _("%s: %s is the NIS master\n"), - Prog, nis_master); - } - exit (E_NOTFOUND); - } -#endif - if (gflg) { check_new_gid (); } diff --git a/src/groups.c b/src/groups.c index 12bd224..d19a80a 100644 --- a/src/groups.c +++ b/src/groups.c @@ -14,13 +14,16 @@ #include #include #include + +#include "alloc.h" #include "defines.h" #include "prototypes.h" #include "shadowlog.h" + /* * Global variables */ -const char *Prog; +static const char Prog[] = "groups"; /* local function prototypes */ static void print_groups (const char *member); @@ -88,16 +91,12 @@ int main (int argc, char **argv) GETGROUPS_T *groups; sys_ngroups = sysconf (_SC_NGROUPS_MAX); - groups = (GETGROUPS_T *) malloc (sizeof (GETGROUPS_T) * sys_ngroups); + groups = XMALLOC(sys_ngroups, GETGROUPS_T); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); - /* - * Get the program name so that error messages can use it. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); diff --git a/src/grpck.c b/src/grpck.c index 881fb4d..4ef1b15 100644 --- a/src/grpck.c +++ b/src/grpck.c @@ -43,7 +43,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "grpck"; static const char *grp_file = GROUP_FILE; static bool use_system_grp_file = true; @@ -62,7 +62,7 @@ static bool silence_warnings = false; /* local function prototypes */ static void fail_exit (int status); -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void delete_member (char **, const char *); static void process_flags (int argc, char **argv); static void open_files (void); @@ -114,7 +114,9 @@ static void fail_exit (int status) /* * usage - print syntax message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; #ifdef SHADOWGRP @@ -814,10 +816,6 @@ int main (int argc, char **argv) int errors = 0; bool changed = false; - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -827,7 +825,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("grpck"); + OPENLOG (Prog); /* Parse the command line arguments */ process_flags (argc, argv); diff --git a/src/grpconv.c b/src/grpconv.c index 57d8d58..4d941cd 100644 --- a/src/grpconv.c +++ b/src/grpconv.c @@ -21,9 +21,12 @@ #include #include #include +#include #include #include #include + +#include "attr.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -36,7 +39,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "grpconv"; static bool gr_locked = false; static bool sgr_locked = false; @@ -123,7 +126,6 @@ int main (int argc, char **argv) const struct sgrp *sg; struct sgrp sgent; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -133,7 +135,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("grpconv"); + OPENLOG (Prog); process_flags (argc, argv); @@ -198,7 +200,7 @@ int main (int argc, char **argv) static char *empty = 0; /* add new shadow group entry */ - memset (&sgent, 0, sizeof sgent); + bzero(&sgent, sizeof sgent); sgent.sg_name = gr->gr_name; sgent.sg_passwd = gr->gr_passwd; sgent.sg_adm = ∅ @@ -259,7 +261,7 @@ int main (int argc, char **argv) return 0; } #else /* !SHADOWGRP */ -int main (int unused(argc), char **argv) +int main (MAYBE_UNUSED int argc, char **argv) { fprintf (stderr, "%s: not configured for shadow group support.\n", argv[0]); diff --git a/src/grpunconv.c b/src/grpunconv.c index fc6cecf..d001ece 100644 --- a/src/grpunconv.c +++ b/src/grpunconv.c @@ -24,6 +24,8 @@ #include #include #include + +#include "attr.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -36,7 +38,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "grpunconv"; static bool gr_locked = false; static bool sgr_locked = false; @@ -122,7 +124,6 @@ int main (int argc, char **argv) struct group grent; const struct sgrp *sg; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -132,7 +133,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("grpunconv"); + OPENLOG (Prog); process_flags (argc, argv); @@ -222,7 +223,7 @@ int main (int argc, char **argv) return 0; } #else /* !SHADOWGRP */ -int main (int unused(argc), char **argv) +int main (MAYBE_UNUSED int argc, char **argv) { fprintf (stderr, "%s: not configured for shadow group support.\n", argv[0]); diff --git a/src/id.c b/src/id.c index 4952109..673693e 100644 --- a/src/id.c +++ b/src/id.c @@ -23,7 +23,10 @@ #include #include #include + +#include "alloc.h" #include "defines.h" + /* local function prototypes */ static void usage (void); @@ -33,7 +36,8 @@ static void usage (void) exit (EXIT_FAILURE); } - /*ARGSUSED*/ int main (int argc, char **argv) +int +main(int argc, char *argv[]) { uid_t ruid, euid; gid_t rgid, egid; @@ -63,7 +67,7 @@ static void usage (void) * work if the system library is recompiled. */ sys_ngroups = sysconf (_SC_NGROUPS_MAX); - groups = (GETGROUPS_T *) malloc (sizeof (GETGROUPS_T) * sys_ngroups); + groups = MALLOC(sys_ngroups, GETGROUPS_T); /* * See if the -a flag has been given to print out the concurrent @@ -71,11 +75,10 @@ static void usage (void) */ if (argc > 1) { - if ((argc > 2) || (strcmp (argv[1], "-a") != 0)) { - usage (); - } else { + if (argc > 2 || strcmp(argv[1], "-a") != 0) + usage(); + else aflg = true; - } } ruid = getuid (); diff --git a/src/lastlog.c b/src/lastlog.c index f5c0a5c..3914b72 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -22,12 +22,18 @@ #ifdef HAVE_LL_HOST #include #endif + +#include "atoi/str2i.h" #include "defines.h" #include "prototypes.h" #include "getdef.h" +#include "memzero.h" /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/strftime.h" + + /* * Needed for MkLinux DR1/2/2.1 - J. @@ -39,7 +45,7 @@ /* * Global variables */ -const char *Prog; /* Program name */ +static const char Prog[] = "lastlog"; /* Program name */ static FILE *lastlogfile; /* lastlog file stream */ static unsigned long umin; /* if uflg and has_umin, only display users with uid >= umin */ static bool has_umin = false; @@ -50,15 +56,17 @@ static time_t inverse_seconds; /* that number of days in seconds */ static struct stat statbuf; /* fstat buffer for file size */ -static bool uflg = false; /* print only an user of range of users */ +static bool uflg = false; /* print only a user of range of users */ static bool tflg = false; /* print is restricted to most recent days */ static bool bflg = false; /* print excludes most recent days */ static bool Cflg = false; /* clear record for user */ static bool Sflg = false; /* set record for user */ -#define NOW (time ((time_t *) 0)) +#define NOW time(NULL) -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -67,7 +75,7 @@ static /*@noreturn@*/void usage (int status) "Options:\n"), Prog); (void) fputs (_(" -b, --before DAYS print only lastlog records older than DAYS\n"), usageout); - (void) fputs (_(" -C, --clear clear lastlog record of an user (usable only with -u)\n"), usageout); + (void) fputs (_(" -C, --clear clear lastlog record of a user (usable only with -u)\n"), usageout); (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); (void) fputs (_(" -S, --set set lastlog record to current time (usable only with -u)\n"), usageout); @@ -114,10 +122,10 @@ static void print_one (/*@null@*/const struct passwd *pw) * entered for this user, which should be able to get the * empty entry in this case. */ - if (fread ((char *) &ll, sizeof (ll), 1, lastlogfile) != 1) { + if (fread (&ll, sizeof (ll), 1, lastlogfile) != 1) { fprintf (stderr, _("%s: Failed to get the entry for UID %lu\n"), - Prog, (unsigned long int)pw->pw_uid); + Prog, (unsigned long)pw->pw_uid); exit (EXIT_FAILURE); } } else { @@ -141,7 +149,7 @@ static void print_one (/*@null@*/const struct passwd *pw) /* Print the header only once */ if (!once) { #ifdef HAVE_LL_HOST - printf (_("Username Port From%*sLatest\n"), maxIPv6Addrlen-3, " "); + printf (_("Username Port From%*sLatest\n"), maxIPv6Addrlen-4, " "); #else puts (_("Username Port Latest")); #endif @@ -153,7 +161,7 @@ static void print_one (/*@null@*/const struct passwd *pw) if (tm == NULL) { cp = "(unknown)"; } else { - strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm); + STRFTIME(ptime, "%a %b %e %H:%M:%S %z %Y", tm); cp = ptime; } if (ll.ll_time == (time_t) 0) { @@ -182,7 +190,7 @@ static void print (void) } if (uflg && has_umin && has_umax && (umin == umax)) { - print_one (getpwuid ((uid_t)umin)); + print_one (getpwuid (umin)); } else { setpwent (); while ( (pwent = getpwent ()) != NULL ) { @@ -225,21 +233,21 @@ static void update_one (/*@null@*/const struct passwd *pw) #ifdef WITH_AUDIT audit_logger (AUDIT_ACCT_UNLOCK, Prog, "clearing-lastlog", - pw->pw_name, (unsigned int) pw->pw_uid, SHADOW_AUDIT_SUCCESS); + pw->pw_name, pw->pw_uid, SHADOW_AUDIT_SUCCESS); #endif } #ifdef WITH_AUDIT else { audit_logger (AUDIT_ACCT_UNLOCK, Prog, "refreshing-lastlog", - pw->pw_name, (unsigned int) pw->pw_uid, SHADOW_AUDIT_SUCCESS); + pw->pw_name, pw->pw_uid, SHADOW_AUDIT_SUCCESS); } #endif if (fwrite (&ll, sizeof(ll), 1, lastlogfile) != 1) { fprintf (stderr, _("%s: Failed to update the entry for UID %lu\n"), - Prog, (unsigned long int)pw->pw_uid); + Prog, (unsigned long)pw->pw_uid); exit (EXIT_FAILURE); } } @@ -261,7 +269,7 @@ static void update (void) } if (has_umin && has_umax && (umin == umax)) { - update_one (getpwuid ((uid_t)umin)); + update_one (getpwuid (umin)); } else { setpwent (); while ( (pwent = getpwent ()) != NULL ) { @@ -288,7 +296,6 @@ int main (int argc, char **argv) * Get the program name. The program name is used as a prefix to * most error messages. */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -321,7 +328,7 @@ int main (int argc, char **argv) case 'b': { unsigned long inverse_days; - if (getulong (optarg, &inverse_days) == 0) { + if (str2ul(&inverse_days, optarg) == -1) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -349,7 +356,7 @@ int main (int argc, char **argv) case 't': { unsigned long days; - if (getulong (optarg, &days) == 0) { + if (str2ul(&days, optarg) == -1) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -373,14 +380,14 @@ int main (int argc, char **argv) /* local, no need for xgetpwnam */ pwent = getpwnam (optarg); if (NULL != pwent) { - umin = (unsigned long) pwent->pw_uid; + umin = pwent->pw_uid; has_umin = true; umax = umin; has_umax = true; } else { - if (getrange (optarg, - &umin, &has_umin, - &umax, &has_umax) == 0) { + if (getrange(optarg, + &umin, &has_umin, + &umax, &has_umax) == -1) { fprintf (stderr, _("%s: Unknown user or range: %s\n"), Prog, optarg); diff --git a/src/login.c b/src/login.c index 0048281..9fed7b3 100644 --- a/src/login.c +++ b/src/login.c @@ -14,7 +14,9 @@ #include #include #ifndef USE_PAM +#ifdef ENABLE_LASTLOG #include +#endif /* ENABLE_LASTLOG */ #endif /* !USE_PAM */ #include #include @@ -22,15 +24,24 @@ #include #include #include + +#include "alloc.h" +#include "attr.h" +#include "chkname.h" #include "defines.h" #include "faillog.h" #include "failure.h" #include "getdef.h" +#include "memzero.h" #include "prototypes.h" #include "pwauth.h" /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/sprintf.h" +#include "string/strftime.h" +#include "string/strtcpy.h" + #ifdef USE_PAM #include "pam_defs.h" @@ -60,14 +71,16 @@ static pam_handle_t *pamh = NULL; /* * Global variables */ -const char *Prog; +static const char Prog[] = "login"; static const char *hostname = ""; static /*@null@*/ /*@only@*/char *username = NULL; static int reason = PW_LOGIN; #ifndef USE_PAM +#ifdef ENABLE_LASTLOG static struct lastlog ll; +#endif /* ENABLE_LASTLOG */ #endif /* !USE_PAM */ static bool pflg = false; static bool fflg = false; @@ -89,7 +102,6 @@ static char tmsg[256]; extern char **newenvp; extern size_t newenvc; -extern char **environ; #ifndef ALARM #define ALARM 60 @@ -104,15 +116,6 @@ static void usage (void); static void setup_tty (void); static void process_flags (int argc, char *const *argv); static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *user); -static void update_utmp (const char *user, - const char *tty, - const char *host, -#ifdef USE_UTMPX - /*@null@*/const struct utmpx *utent -#else - /*@null@*/const struct utmp *utent -#endif - ); #ifndef USE_PAM static struct faillog faillog; @@ -125,6 +128,7 @@ static void get_pam_user (char **ptr_pam_user); static void init_env (void); static void alarm_handler (int); +static void exit_handler (int); /* * usage - print login command usage and exit @@ -172,10 +176,10 @@ static void setup_tty (void) #endif /* leave these values unchanged if not specified in login.defs */ - erasechar = getdef_num ("ERASECHAR", (int) termio.c_cc[VERASE]); - killchar = getdef_num ("KILLCHAR", (int) termio.c_cc[VKILL]); - termio.c_cc[VERASE] = (cc_t) erasechar; - termio.c_cc[VKILL] = (cc_t) killchar; + erasechar = getdef_num ("ERASECHAR", termio.c_cc[VERASE]); + killchar = getdef_num ("KILLCHAR", termio.c_cc[VKILL]); + termio.c_cc[VERASE] = erasechar; + termio.c_cc[VKILL] = killchar; /* Make sure the values were valid. * getdef_num cannot validate this. */ @@ -396,13 +400,18 @@ static void init_env (void) #endif /* !USE_PAM */ } - -static void alarm_handler (unused int sig) +static void exit_handler (MAYBE_UNUSED int sig) { - write (STDERR_FILENO, tmsg, strlen (tmsg)); _exit (0); } +static void alarm_handler (MAYBE_UNUSED int sig) +{ + write_full(STDERR_FILENO, tmsg, strlen(tmsg)); + signal(SIGALRM, exit_handler); + alarm(2); +} + #ifdef USE_PAM /* * get_pam_user - Get the username according to PAM @@ -411,17 +420,17 @@ static void alarm_handler (unused int sig) */ static void get_pam_user (char **ptr_pam_user) { - int retcode; - void *ptr_user; + int retcode; + const void *ptr_user; assert (NULL != ptr_pam_user); - retcode = pam_get_item (pamh, PAM_USER, (const void **)&ptr_user); + retcode = pam_get_item (pamh, PAM_USER, &ptr_user); PAM_FAIL_CHECK; free (*ptr_pam_user); if (NULL != ptr_user) { - *ptr_pam_user = xstrdup ((const char *)ptr_user); + *ptr_pam_user = xstrdup (ptr_user); } else { *ptr_pam_user = NULL; } @@ -430,7 +439,7 @@ static void get_pam_user (char **ptr_pam_user) /* * get_failent_user - Return a string that can be used to log failure - * from an user. + * from a user. * * This will be either the user argument, or "UNKNOWN". * @@ -452,38 +461,6 @@ static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *use return failent_user; } -/* - * update_utmp - Update or create an utmp entry in utmp, wtmp, utmpw, and - * wtmpx - * - * utent should be the utmp entry returned by get_current_utmp (or - * NULL). - */ -static void update_utmp (const char *user, - const char *tty, - const char *host, -#ifdef USE_UTMPX - /*@null@*/const struct utmpx *utent -#else - /*@null@*/const struct utmp *utent -#endif - ) -{ -#ifdef USE_UTMPX - struct utmpx *utx = prepare_utmpx (user, tty, host, utent); -#else - struct utmp *ut = prepare_utmp (user, tty, host, utent); -#endif /* USE_UTMPX */ - -#ifndef USE_UTMPX - (void) setutmp (ut); /* make entry in the utmp & wtmp files */ - free (ut); -#else - (void) setutmpx (utx); /* make entry in the utmpx & wtmpx files */ - free (utx); -#endif /* USE_UTMPX */ -} - /* * login - create a new login session for a user * @@ -503,42 +480,36 @@ static void update_utmp (const char *user, */ int main (int argc, char **argv) { - const char *tmptty; - char tty[BUFSIZ]; - -#ifdef RLOGIN - char term[128] = ""; -#endif /* RLOGIN */ -#if !defined(USE_PAM) - char ptime[80]; -#endif - unsigned int delay; - unsigned int retries; - bool subroot = false; -#ifndef USE_PAM + int err; + bool subroot = false; + char **envp = environ; + char *host = NULL; + char tty[BUFSIZ]; + char fromhost[512]; + const char *failent_user; + const char *tmptty; + const char *cp; + const char *tmp; + unsigned int delay; + unsigned int retries; + unsigned int timeout; + struct passwd *pwd = NULL; + +#if defined(USE_PAM) + int retcode; + char *pam_user = NULL; + pid_t child; +#else bool is_console; + struct spwd *spwd = NULL; +# if defined(ENABLE_LASTLOG) + char ptime[80]; +# endif #endif - int err; - unsigned int timeout; - const char *cp; - const char *tmp; - char fromhost[512]; - struct passwd *pwd = NULL; - char **envp = environ; - const char *failent_user; -#ifdef USE_UTMPX - /*@null@*/struct utmpx *utent; -#else - /*@null@*/struct utmp *utent; +#if defined(RLOGIN) + char term[128] = ""; #endif -#ifdef USE_PAM - int retcode; - pid_t child; - char *pam_user = NULL; -#else - struct spwd *spwd = NULL; -#endif /* * Some quick initialization. */ @@ -552,7 +523,6 @@ int main (int argc, char **argv) initenv (); amroot = (getuid () == 0); - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -567,25 +537,23 @@ int main (int argc, char **argv) exit (1); /* must be a terminal */ } - utent = get_current_utmp (); + err = get_session_host(&host); /* * Be picky if run by normal users (possible if installed setuid - * root), but not if run by root. This way it still allows logins - * even if your getty is broken, or if something corrupts utmp, - * but users must "exec login" which will use the existing utmp - * entry (will not overwrite remote hostname). --marekm + * root), but not if run by root. */ - if (!amroot && (NULL == utent)) { - (void) puts (_("No utmp entry. You must exec \"login\" from the lowest level \"sh\"")); + if (!amroot && (err != 0)) { + SYSLOG ((LOG_ERR, + "No session entry, error %d. You must exec \"login\" from the lowest level \"sh\"", + err)); exit (1); } - /* NOTE: utent might be NULL afterwards */ tmptty = ttyname (0); if (NULL == tmptty) { tmptty = "UNKNOWN"; } - STRFCPY (tty, tmptty); + STRTCPY(tty, tmptty); #ifndef USE_PAM is_console = console (tty); @@ -606,10 +574,14 @@ int main (int argc, char **argv) } #ifdef RLOGIN if (rflg) { + size_t max_size; + + max_size = login_name_max_size(); assert (NULL == username); - username = xmalloc (USER_NAME_MAX_LENGTH + 1); - username[USER_NAME_MAX_LENGTH] = '\0'; - if (do_rlogin (hostname, username, USER_NAME_MAX_LENGTH, term, sizeof term)) { + username = XMALLOC(max_size, char); + username[max_size - 1] = '\0'; + if (do_rlogin(hostname, username, max_size, term, sizeof(term))) + { preauth_flag = true; } else { free (username); @@ -618,7 +590,7 @@ int main (int argc, char **argv) } #endif /* RLOGIN */ - OPENLOG ("login"); + OPENLOG (Prog); setup_tty (); @@ -674,27 +646,23 @@ int main (int argc, char **argv) if (rflg || hflg) { cp = hostname; -#if defined(HAVE_STRUCT_UTMP_UT_HOST) || defined(USE_UTMPX) - } else if ((NULL != utent) && ('\0' != utent->ut_host[0])) { - cp = utent->ut_host; -#endif /* HAVE_STRUCT_UTMP_UT_HOST */ + } else if ((host != NULL) && (host[0] != '\0')) { + cp = host; } else { cp = ""; } if ('\0' != *cp) { - snprintf (fromhost, sizeof fromhost, - " on '%.100s' from '%.200s'", tty, cp); + SNPRINTF(fromhost, " on '%.100s' from '%.200s'", tty, cp); } else { - snprintf (fromhost, sizeof fromhost, - " on '%.100s'", tty); + SNPRINTF(fromhost, " on '%.100s'", tty); } + free(host); top: /* only allow ALARM sec. for login */ timeout = getdef_unum ("LOGIN_TIMEOUT", ALARM); - snprintf (tmsg, sizeof tmsg, - _("\nLogin timed out after %u seconds.\n"), timeout); + SNPRINTF(tmsg, _("\nLogin timed out after %u seconds.\n"), timeout); (void) signal (SIGALRM, alarm_handler); if (timeout > 0) { (void) alarm (timeout); @@ -705,7 +673,7 @@ int main (int argc, char **argv) retries = getdef_unum ("LOGIN_RETRIES", RETRIES); #ifdef USE_PAM - retcode = pam_start ("login", username, &conv, &pamh); + retcode = pam_start (Prog, username, &conv, &pamh); if (retcode != PAM_SUCCESS) { fprintf (stderr, _("login: PAM Failure, aborting: %s\n"), @@ -733,18 +701,15 @@ int main (int argc, char **argv) #endif /* if fflg, then the user has already been authenticated */ if (!fflg) { - unsigned int failcount = 0; - char hostn[256]; - char loginprompt[256]; /* That's one hell of a prompt :) */ + char hostn[256]; + char loginprompt[256]; //That's one hell of a prompt :) + unsigned int failcount = 0; /* Make the login prompt look like we want it */ if (gethostname (hostn, sizeof (hostn)) == 0) { - snprintf (loginprompt, - sizeof (loginprompt), - _("%s login: "), hostn); + SNPRINTF(loginprompt, _("%s login: "), hostn); } else { - strncpy (loginprompt, _("login: "), - sizeof (loginprompt)); + STRTCPY(loginprompt, _("login: ")); } retcode = pam_set_item (pamh, PAM_USER_PROMPT, loginprompt); @@ -919,14 +884,17 @@ int main (int argc, char **argv) failed = false; /* haven't failed authentication yet */ if (NULL == username) { /* need to get a login id */ + size_t max_size; + + max_size = login_name_max_size(); if (subroot) { closelog (); exit (1); } preauth_flag = false; - username = xmalloc (USER_NAME_MAX_LENGTH + 1); - username[USER_NAME_MAX_LENGTH] = '\0'; - login_prompt (_("\n%s login: "), username, USER_NAME_MAX_LENGTH); + username = XMALLOC(max_size, char); + username[max_size - 1] = '\0'; + login_prompt(username, max_size); if ('\0' == username[0]) { /* Prompt for a new login */ @@ -956,7 +924,8 @@ int main (int argc, char **argv) } if (strcmp (user_passwd, "") == 0) { - char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); + const char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); + if (prevent_no_auth == NULL) { prevent_no_auth = "superuser"; } @@ -992,7 +961,7 @@ int main (int argc, char **argv) goto auth_ok; } - if (pw_auth (user_passwd, username, reason, (char *) 0) == 0) { + if (pw_auth (user_passwd, username, reason, NULL) == 0) { goto auth_ok; } @@ -1035,23 +1004,9 @@ int main (int argc, char **argv) if ((NULL != pwd) && getdef_bool ("FAILLOG_ENAB")) { failure (pwd->pw_uid, tty, &faillog); } - if (getdef_str ("FTMP_FILE") != NULL) { -#ifdef USE_UTMPX - struct utmpx *failent = - prepare_utmpx (failent_user, - tty, - /* FIXME: or fromhost? */hostname, - utent); -#else /* !USE_UTMPX */ - struct utmp *failent = - prepare_utmp (failent_user, - tty, - hostname, - utent); -#endif /* !USE_UTMPX */ - failtmp (failent_user, failent); - free (failent); - } +#ifndef ENABLE_LOGIND + record_failure(failent_user, tty, hostname); +#endif /* ENABLE_LOGIND */ retries--; if (retries <= 0) { @@ -1067,7 +1022,7 @@ int main (int argc, char **argv) * all). --marekm */ if (user_passwd[0] == '\0') { - pw_auth ("!", username, reason, (char *) 0); + pw_auth ("!", username, reason, NULL); } /* @@ -1107,7 +1062,7 @@ int main (int argc, char **argv) * by Ivan Nejgebauer . --marekm */ if ( getdef_bool ("PORTTIME_CHECKS_ENAB") - && !isttytime (username, tty, time ((time_t *) 0))) { + && !isttytime (username, tty, time (NULL))) { SYSLOG ((LOG_WARN, "invalid login time for '%s'%s", username, fromhost)); closelog (); @@ -1151,11 +1106,13 @@ int main (int argc, char **argv) #endif /* WITH_AUDIT */ #ifndef USE_PAM /* pam_lastlog handles this */ +#ifdef ENABLE_LASTLOG if ( getdef_bool ("LASTLOG_ENAB") && pwd->pw_uid <= (uid_t) getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL)) { /* give last login and log this one */ dolastlog (&ll, pwd, tty, hostname); } +#endif /* ENABLE_LASTLOG */ #endif #ifndef USE_PAM /* PAM handles this as well */ @@ -1220,11 +1177,16 @@ int main (int argc, char **argv) } } +#ifndef ENABLE_LOGIND /* * The utmp entry needs to be updated to indicate the new status * of the session, the new PID and SID. */ - update_utmp (username, tty, hostname, utent); + err = update_utmp (username, tty, hostname); + if (err != 0) { + SYSLOG ((LOG_WARN, "Unable to update utmp entry for %s", username)); + } +#endif /* ENABLE_LOGIND */ /* The pwd and spwd entries for the user have been copied. * @@ -1289,14 +1251,16 @@ int main (int argc, char **argv) username, (int) faillog.fail_cnt)); } } +#ifdef ENABLE_LASTLOG if ( getdef_bool ("LASTLOG_ENAB") && pwd->pw_uid <= (uid_t) getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL) - && (ll.ll_time != 0)) { - time_t ll_time = ll.ll_time; + && (ll.ll_time != 0)) + { + time_t ll_time = ll.ll_time; + struct tm tm; - (void) strftime (ptime, sizeof (ptime), - "%a %b %e %H:%M:%S %z %Y", - localtime (&ll_time)); + localtime_r(&ll_time, &tm); + STRFTIME(ptime, "%a %b %e %H:%M:%S %z %Y", &tm); printf (_("Last login: %s on %s"), ptime, ll.ll_line); #ifdef HAVE_LL_HOST /* __linux__ || SUN4 */ @@ -1307,6 +1271,7 @@ int main (int argc, char **argv) #endif printf (".\n"); } +#endif /* ENABLE_LASTLOG */ agecheck (spwd); mailcheck (); /* report on the status of mail */ @@ -1334,7 +1299,7 @@ int main (int argc, char **argv) err = shell (tmp, pwd->pw_shell, newenvp); /* fake shell */ } else { /* exec the shell finally */ - err = shell (pwd->pw_shell, (char *) 0, newenvp); + err = shell (pwd->pw_shell, NULL, newenvp); } return ((err == ENOENT) ? E_CMD_NOTFOUND : E_CMD_NOEXEC); diff --git a/src/login_nopam.c b/src/login_nopam.c index df6ba88..e6f77d1 100644 --- a/src/login_nopam.c +++ b/src/login_nopam.c @@ -39,12 +39,11 @@ * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. */ #include +#include #include #include #include -#ifdef HAVE_NETDB_H #include -#endif #include #ifdef PRIMARY_GROUP_MATCH #include @@ -57,6 +56,8 @@ #include #include /* for inet_ntoa() */ +#include "sizeof.h" + #if !defined(MAXHOSTNAMELEN) || (MAXHOSTNAMELEN < 64) #undef MAXHOSTNAMELEN #define MAXHOSTNAMELEN 256 @@ -98,11 +99,11 @@ int login_access (const char *user, const char *from) if (NULL != fp) { int lineno = 0; /* for diagnostics */ while ( !match - && (fgets (line, (int) sizeof (line), fp) == line)) { - int end; + && (fgets (line, sizeof (line), fp) == line)) { + ptrdiff_t end; lineno++; - end = (int) strlen (line) - 1; - if (line[end] != '\n') { + end = strlen (line) - 1; + if (line[0] == '\0' || line[end] != '\n') { SYSLOG ((LOG_ERR, "%s: line %d: missing newline or line too long", TABLE, lineno)); @@ -119,9 +120,9 @@ int login_access (const char *user, const char *from) continue; } if ( ((perm = strtok (line, fs)) == NULL) - || ((users = strtok ((char *) 0, fs)) == NULL) - || ((froms = strtok ((char *) 0, fs)) == NULL) - || (strtok ((char *) 0, fs) != NULL)) { + || ((users = strtok (NULL, fs)) == NULL) + || ((froms = strtok (NULL, fs)) == NULL) + || (strtok (NULL, fs) != NULL)) { SYSLOG ((LOG_ERR, "%s: line %d: bad field count", TABLE, lineno)); @@ -156,7 +157,7 @@ static bool list_match (char *list, const char *item, bool (*match_fn) (const ch * a match, look for an "EXCEPT" list and recurse to determine whether * the match is affected by any exceptions. */ - for (tok = strtok (list, sep); tok != NULL; tok = strtok ((char *) 0, sep)) { + for (tok = strtok (list, sep); tok != NULL; tok = strtok (NULL, sep)) { if (strcasecmp (tok, "EXCEPT") == 0) { /* EXCEPT: give up */ break; } @@ -168,10 +169,10 @@ static bool list_match (char *list, const char *item, bool (*match_fn) (const ch /* Process exceptions to matches. */ if (match) { - while ( ((tok = strtok ((char *) 0, sep)) != NULL) + while ( ((tok = strtok (NULL, sep)) != NULL) && (strcasecmp (tok, "EXCEPT") != 0)) /* VOID */ ; - if (tok == 0 || !list_match ((char *) 0, item, match_fn)) { + if (tok == 0 || !list_match (NULL, item, match_fn)) { return (match); } } @@ -195,9 +196,9 @@ static char *myhostname (void) static bool netgroup_match (const char *group, const char *machine, const char *user) { - static char *mydomain = (char *)0; + static char *mydomain = NULL; - if (mydomain == (char *)0) { + if (mydomain == NULL) { static char domain[MAXHOSTNAMELEN + 1]; getdomainname (domain, MAXHOSTNAMELEN); @@ -230,7 +231,7 @@ static bool user_match (const char *tok, const char *string) && from_match (at + 1, myhostname ())); #if HAVE_INNETGR } else if (tok[0] == '@') { /* netgroup */ - return (netgroup_match (tok + 1, (char *) 0, string)); + return (netgroup_match (tok + 1, NULL, string)); #endif } else if (string_match (tok, string)) { /* ALL or exact match */ return true; @@ -244,7 +245,7 @@ static bool user_match (const char *tok, const char *string) } #ifdef PRIMARY_GROUP_MATCH /* - * If the string is an user whose initial GID matches the token, + * If the string is a user whose initial GID matches the token, * accept it. May avoid excessively long lines in /etc/group. * Radu-Adrian Feurdean * @@ -265,19 +266,28 @@ static bool user_match (const char *tok, const char *string) static const char *resolve_hostname (const char *string) { - /* - * Resolve hostname to numeric IP address, as suggested - * by Dave Hagewood . --marekm - */ - struct hostent *hp; + int gai_err; + const char *addr_str; + struct addrinfo *addrs; + + static char host[MAXHOSTNAMELEN]; + + gai_err = getaddrinfo(string, NULL, NULL, &addrs); + if (gai_err != 0) { + SYSLOG ((LOG_ERR, "getaddrinfo(%s): %s", string, gai_strerror(gai_err))); + return string; + } - hp = gethostbyname (string); - if (NULL != hp) { - return inet_ntoa (*((struct in_addr *) *(hp->h_addr_list))); + addr_str = host; + gai_err = getnameinfo(addrs[0].ai_addr, addrs[0].ai_addrlen, + host, NITEMS(host), NULL, 0, NI_NUMERICHOST); + if (gai_err != 0) { + SYSLOG ((LOG_ERR, "getnameinfo(%s): %s", string, gai_strerror(gai_err))); + addr_str = string; } - SYSLOG ((LOG_ERR, "%s - unknown host", string)); - return string; + freeaddrinfo(addrs); + return addr_str; } /* from_match - match a host or tty against a list of tokens */ @@ -296,7 +306,7 @@ static bool from_match (const char *tok, const char *string) */ #if HAVE_INNETGR if (tok[0] == '@') { /* netgroup */ - return (netgroup_match (tok + 1, string, (char *) 0)); + return (netgroup_match (tok + 1, string, NULL)); } else #endif if (string_match (tok, string)) { /* ALL or exact match */ @@ -313,7 +323,7 @@ static bool from_match (const char *tok, const char *string) if (strchr (string, '.') == NULL) { return true; } - } else if ( (tok[(tok_len = strlen (tok)) - 1] == '.') /* network */ + } else if ( (tok[0] != '\0' && tok[(tok_len = strlen (tok)) - 1] == '.') /* network */ && (strncmp (tok, resolve_hostname (string), tok_len) == 0)) { return true; } @@ -337,5 +347,5 @@ static bool string_match (const char *tok, const char *string) } #else /* !USE_PAM */ -extern int errno; /* warning: ANSI C forbids an empty source file */ +extern int ISO_C_forbids_an_empty_translation_unit; #endif /* !USE_PAM */ diff --git a/src/logoutd.c b/src/logoutd.c index 03680f3..c870510 100644 --- a/src/logoutd.c +++ b/src/logoutd.c @@ -15,13 +15,16 @@ #include #include #include +#include #include "defines.h" #include "prototypes.h" #include "shadowlog.h" +#include "sizeof.h" +#include "string/zustr2stp.h" /* * Global variables */ -const char *Prog; +static const char Prog[] = "logoutd"; #ifndef DEFAULT_HUP_MESG #define DEFAULT_HUP_MESG _("login time exceeded\n\n") @@ -31,38 +34,31 @@ const char *Prog; #define HUP_MESG_FILE "/etc/logoutd.mesg" #endif + /* local function prototypes */ -#ifdef USE_UTMPX static int check_login (const struct utmpx *ut); -#else /* !USE_UTMPX */ -static int check_login (const struct utmp *ut); -#endif /* !USE_UTMPX */ static void send_mesg_to_tty (int tty_fd); + /* - * check_login - check if user (struct utmpx/utmp) allowed to stay logged in + * check_login - check if user (struct utmpx) allowed to stay logged in */ -#ifdef USE_UTMPX -static int check_login (const struct utmpx *ut) -#else /* !USE_UTMPX */ -static int check_login (const struct utmp *ut) -#endif /* !USE_UTMPX */ +static int +check_login(const struct utmpx *ut) { - char user[sizeof (ut->ut_user) + 1]; - time_t now; + char user[sizeof(ut->ut_user) + 1]; + char line[sizeof(ut->ut_line) + 1]; + time_t now; - /* - * ut_user may not have the terminating NUL. - */ - strncpy (user, ut->ut_user, sizeof (ut->ut_user)); - user[sizeof (ut->ut_user)] = '\0'; + ZUSTR2STP(user, ut->ut_user); + ZUSTR2STP(line, ut->ut_line); (void) time (&now); /* * Check if they are allowed to be logged in right now. */ - if (!isttytime (user, ut->ut_line, now)) { + if (!isttytime(user, line, now)) { return 0; } return 1; @@ -116,23 +112,20 @@ static void send_mesg_to_tty (int tty_fd) * * logoutd is started at system boot time and enforces the login * time and port restrictions specified in /etc/porttime. The - * utmpx/utmp file is periodically scanned and offending users are logged + * utmp file is periodically scanned and offending users are logged * off from the system. */ -int main (int argc, char **argv) +int +main(int argc, char **argv) { - int i; - int status; - pid_t pid; - -#ifdef USE_UTMPX - struct utmpx *ut; -#else /* !USE_UTMPX */ - struct utmp *ut; -#endif /* !USE_UTMPX */ - char user[sizeof (ut->ut_user) + 1]; /* terminating NUL */ - char tty_name[sizeof (ut->ut_line) + 6]; /* /dev/ + NUL */ - int tty_fd; + int i; + int status; + pid_t pid; + + struct utmpx *ut; + char user[sizeof (ut->ut_user) + 1]; /* terminating NUL */ + char tty_name[sizeof (ut->ut_line) + 6]; /* /dev/ + NUL */ + int tty_fd; if (1 != argc) { (void) fputs (_("Usage: logoutd\n"), stderr); @@ -164,39 +157,29 @@ int main (int argc, char **argv) /* * Start syslogging everything */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); - OPENLOG ("logoutd"); + OPENLOG (Prog); /* - * Scan the utmpx/utmp file once per minute looking for users that + * Scan the utmp file once per minute looking for users that * are not supposed to still be logged in. */ while (true) { /* - * Attempt to re-open the utmpx/utmp file. The file is only + * Attempt to re-open the utmp file. The file is only * open while it is being used. */ -#ifdef USE_UTMPX - setutxent (); -#else /* !USE_UTMPX */ - setutent (); -#endif /* !USE_UTMPX */ + setutxent(); /* - * Read all of the entries in the utmpx/utmp file. The entries + * Read all of the entries in the utmp file. The entries * for login sessions will be checked to see if the user * is permitted to be signed on at this time. */ -#ifdef USE_UTMPX - while ((ut = getutxent ()) != NULL) -#else /* !USE_UTMPX */ - while ((ut = getutent ()) != NULL) -#endif /* !USE_UTMPX */ - { + while ((ut = getutxent()) != NULL) { if (ut->ut_type != USER_PROCESS) { continue; } @@ -228,7 +211,7 @@ int main (int argc, char **argv) tty_name[0] = '\0'; } - strncat (tty_name, ut->ut_line, UT_LINESIZE); + strncat(tty_name, ut->ut_line, NITEMS(ut->ut_line)); #ifndef O_NOCTTY #define O_NOCTTY 0 #endif @@ -246,8 +229,7 @@ int main (int argc, char **argv) kill (-ut->ut_pid, SIGKILL); } - strncpy (user, ut->ut_user, sizeof (user) - 1); - user[sizeof (user) - 1] = '\0'; + ZUSTR2STP(user, ut->ut_user); SYSLOG ((LOG_NOTICE, "logged off user '%s' on '%s'", user, @@ -259,11 +241,7 @@ int main (int argc, char **argv) exit (EXIT_SUCCESS); } -#ifdef USE_UTMPX - endutxent (); -#else /* !USE_UTMPX */ - endutent (); -#endif /* !USE_UTMPX */ + endutxent(); #ifndef DEBUG sleep (60); diff --git a/src/new_subid_range.c b/src/new_subid_range.c index 523d480..1ef71f3 100644 --- a/src/new_subid_range.c +++ b/src/new_subid_range.c @@ -9,7 +9,7 @@ /* Test program for the subid creation routine */ -const char *Prog; +static const char Prog[] = "new_subid_range"; static void usage(void) { @@ -28,7 +28,6 @@ int main(int argc, char *argv[]) bool group = false; // get subuids by default bool ok; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); while ((c = getopt(argc, argv, "gn")) != EOF) { diff --git a/src/newgidmap.c b/src/newgidmap.c index 5b42431..96a89de 100644 --- a/src/newgidmap.c +++ b/src/newgidmap.c @@ -23,7 +23,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "newgidmap"; static bool verify_range(struct passwd *pw, struct map_range *range, bool *allow_setgroups) @@ -69,7 +69,7 @@ static void verify_ranges(struct passwd *pw, int ranges, static void usage(void) { - fprintf(stderr, _("usage: %s [ ] ... \n"), Prog); + fprintf(stderr, _("usage: %s [] [ ] ... \n"), Prog); exit(EXIT_FAILURE); } @@ -143,18 +143,14 @@ out: */ int main(int argc, char **argv) { - char proc_dir_name[32]; char *target_str; - pid_t target; int proc_dir_fd; int ranges; struct map_range *mappings; struct stat st; struct passwd *pw; - int written; bool allow_setgroups = false; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -168,25 +164,19 @@ int main(int argc, char **argv) /* Find the process that needs its user namespace * gid mapping set. */ - target_str = argv[1]; - if (!get_pid(target_str, &target)) - usage(); - /* max string length is 6 + 10 + 1 + 1 = 18, allocate 32 bytes */ - written = snprintf(proc_dir_name, sizeof(proc_dir_name), "/proc/%u/", - target); - if ((written <= 0) || (written >= sizeof(proc_dir_name))) { - fprintf(stderr, "%s: snprintf of proc path failed: %s\n", - Prog, strerror(errno)); - } - - proc_dir_fd = open(proc_dir_name, O_DIRECTORY); - if (proc_dir_fd < 0) { - fprintf(stderr, _("%s: Could not open proc directory for target %u\n"), - Prog, target); - return EXIT_FAILURE; + target_str = argv[1]; + if (strlen(target_str) > 3 && strncmp(target_str, "fd:", 3) == 0) { + /* the user passed in a /proc/pid fd for the process */ + target_str = &target_str[3]; + proc_dir_fd = get_pidfd_from_fd(target_str); + if (proc_dir_fd < 0) + usage(); + } else { + proc_dir_fd = open_pidfd(target_str); + if (proc_dir_fd < 0) + usage(); } - /* Who am i? */ pw = get_my_pwent (); if (NULL == pw) { @@ -200,8 +190,8 @@ int main(int argc, char **argv) /* Get the effective uid and effective gid of the target process */ if (fstat(proc_dir_fd, &st) < 0) { - fprintf(stderr, _("%s: Could not stat directory for target %u\n"), - Prog, target); + fprintf(stderr, _("%s: Could not stat directory for process\n"), + Prog); return EXIT_FAILURE; } @@ -213,10 +203,10 @@ int main(int argc, char **argv) (!getdef_bool("GRANT_AUX_GROUP_SUBIDS") && (getgid() != pw->pw_gid)) || (pw->pw_uid != st.st_uid) || (getgid() != st.st_gid)) { - fprintf(stderr, _( "%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" ), - Prog, target, - (unsigned long int)getuid(), (unsigned long int)pw->pw_uid, (unsigned long int)st.st_uid, - (unsigned long int)getgid(), (unsigned long int)pw->pw_gid, (unsigned long int)st.st_gid); + fprintf(stderr, _( "%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" ), + Prog, + (unsigned long)getuid(), (unsigned long)pw->pw_uid, (unsigned long)st.st_uid, + (unsigned long)getgid(), (unsigned long)pw->pw_gid, (unsigned long)st.st_gid); return EXIT_FAILURE; } diff --git a/src/newgrp.c b/src/newgrp.c index 9982083..1b3d76b 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -16,20 +16,24 @@ #include #include #include + +#include "agetpass.h" +#include "alloc.h" #include "defines.h" #include "getdef.h" #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/sprintf.h" + /* * Global variables */ -const char *Prog; +static const char *Prog; extern char **newenvp; -extern char **environ; #ifdef HAVE_SETGROUPS static int ngroups; @@ -158,7 +162,7 @@ static void check_perms (const struct group *grp, * get the password from her, and set the salt for * the decryption from the group file. */ - cp = getpass (_("Password: ")); + cp = agetpass (_("Password: ")); if (NULL == cp) { goto failure; } @@ -169,7 +173,7 @@ static void check_perms (const struct group *grp, * must match the previously encrypted value in the file. */ cpasswd = pw_encrypt (cp, grp->gr_passwd); - strzero (cp); + erase_pass (cp); if (NULL == cpasswd) { fprintf (stderr, @@ -184,12 +188,10 @@ static void check_perms (const struct group *grp, if (grp->gr_passwd[0] == '\0' || strcmp (cpasswd, grp->gr_passwd) != 0) { #ifdef WITH_AUDIT - snprintf (audit_buf, sizeof(audit_buf), - "authentication new-gid=%lu", - (unsigned long) grp->gr_gid); + SNPRINTF(audit_buf, "authentication new-gid=%lu", + (unsigned long) grp->gr_gid); audit_logger (AUDIT_GRP_AUTH, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); #endif SYSLOG ((LOG_INFO, "Invalid password for group '%s' from '%s'", @@ -199,12 +201,10 @@ static void check_perms (const struct group *grp, goto failure; } #ifdef WITH_AUDIT - snprintf (audit_buf, sizeof(audit_buf), - "authentication new-gid=%lu", - (unsigned long) grp->gr_gid); + SNPRINTF(audit_buf, "authentication new-gid=%lu", + (unsigned long) grp->gr_gid); audit_logger (AUDIT_GRP_AUTH, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 1); + audit_buf, NULL, getuid (), 1); #endif } @@ -217,21 +217,17 @@ failure: closelog (); #ifdef WITH_AUDIT if (groupname) { - snprintf (audit_buf, sizeof(audit_buf), - "changing new-group=%s", groupname); + SNPRINTF(audit_buf, "changing new-group=%s", groupname); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); } else { audit_logger (AUDIT_CHGRP_ID, Prog, - "changing", NULL, - (unsigned int) getuid (), 0); + "changing", NULL, getuid (), 0); } #endif exit (EXIT_FAILURE); } -#ifdef USE_SYSLOG /* * syslog_sg - log the change of group to syslog * @@ -292,6 +288,9 @@ static void syslog_sg (const char *name, const char *group) (void) signal (SIGTSTP, SIG_IGN); (void) signal (SIGTTIN, SIG_IGN); (void) signal (SIGTTOU, SIG_IGN); + /* set SIGCHLD to default for waitpid */ + (void) signal(SIGCHLD, SIG_DFL); + child = fork (); if ((pid_t)-1 == child) { /* error in fork() */ @@ -299,15 +298,13 @@ static void syslog_sg (const char *name, const char *group) is_newgrp ? "newgrp" : "sg", strerror (errno)); #ifdef WITH_AUDIT if (group) { - snprintf (audit_buf, sizeof(audit_buf), - "changing new-group=%s", group); + SNPRINTF(audit_buf, + "changing new-group=%s", group); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); } else { audit_logger (AUDIT_CHGRP_ID, Prog, - "changing", NULL, - (unsigned int) getuid (), 0); + "changing", NULL, getuid (), 0); } #endif exit (EXIT_FAILURE); @@ -365,7 +362,6 @@ static void syslog_sg (const char *name, const char *group) free(free_login); free(free_tty); } -#endif /* USE_SYSLOG */ /* * newgrp - change the invokers current real and effective group id @@ -394,12 +390,15 @@ int main (int argc, char **argv) #ifdef WITH_AUDIT audit_help_open (); #endif + + check_fds (); + (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); /* - * Save my name for error messages and save my real gid incase of + * Save my name for error messages and save my real gid in case of * errors. If there is an error i have to exec a new login shell for * the user since her old shell won't have fork'd to create the * process. Skip over the program name to the next command line @@ -421,11 +420,18 @@ int main (int argc, char **argv) * but we do not need to restore the previous process persona and we * don't need to re-exec anything. -- JWP */ - Prog = Basename (argv[0]); + + /* + * Ensure that "Prog" is always either "newgrp" or "sg" to avoid + * injecting arbitrary strings into our stderr/stdout, as this can + * be an exploit vector. + */ + is_newgrp = (strcmp (Basename (argv[0]), "newgrp") == 0); + Prog = is_newgrp ? "newgrp" : "sg"; + log_set_progname(Prog); log_set_logfd(stderr); - is_newgrp = (strcmp (Prog, "newgrp") == 0); - OPENLOG (is_newgrp ? "newgrp" : "sg"); + OPENLOG (Prog); argc--; argv++; @@ -437,8 +443,7 @@ int main (int argc, char **argv) Prog); #ifdef WITH_AUDIT audit_logger (AUDIT_CHGRP_ID, Prog, - "changing", NULL, - (unsigned int) getuid (), 0); + "changing", NULL, getuid (), 0); #endif SYSLOG ((LOG_WARN, "Cannot determine the user name of the caller (UID %lu)", (unsigned long) getuid ())); @@ -507,7 +512,7 @@ int main (int argc, char **argv) if ((argc > 0) && (argv[0][0] == '-')) { usage (); goto failure; - } else if (argv[0] != (char *) 0) { + } else if (argv[0] != NULL) { group = argv[0]; } else { /* @@ -541,7 +546,7 @@ int main (int argc, char **argv) /* don't use getgroups(0, 0) - it doesn't work on some systems */ i = 16; for (;;) { - grouplist = (GETGROUPS_T *) xmalloc (i * sizeof (GETGROUPS_T)); + grouplist = XMALLOC(i, GETGROUPS_T); ngroups = getgroups (i, grouplist); if (i > ngroups && !(ngroups == -1 && errno == EINVAL)) { break; @@ -554,15 +559,12 @@ int main (int argc, char **argv) perror ("getgroups"); #ifdef WITH_AUDIT if (group) { - snprintf (audit_buf, sizeof(audit_buf), - "changing new-group=%s", group); + SNPRINTF(audit_buf, "changing new-group=%s", group); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); } else { audit_logger (AUDIT_CHGRP_ID, Prog, - "changing", NULL, - (unsigned int) getuid (), 0); + "changing", NULL, getuid (), 0); } #endif exit (EXIT_FAILURE); @@ -628,7 +630,7 @@ int main (int argc, char **argv) } #endif /* HAVE_SETGROUPS */ /* - * For splitted groups (due to limitations of NIS), check all + * For split groups (due to limitations of NIS), check all * groups of the same GID like the requested group for * membership of the current user. */ @@ -665,11 +667,9 @@ int main (int argc, char **argv) * all successful validations pass through this point. The group id * will be set, and the group added to the concurrent groupset. */ -#ifdef USE_SYSLOG if (getdef_bool ("SYSLOG_SG_ENAB")) { syslog_sg (name, group); } -#endif /* USE_SYSLOG */ gid = grp->gr_gid; @@ -718,11 +718,9 @@ int main (int argc, char **argv) if (setgid (gid) != 0) { perror ("setgid"); #ifdef WITH_AUDIT - snprintf (audit_buf, sizeof(audit_buf), - "changing new-gid=%lu", (unsigned long) gid); + SNPRINTF(audit_buf, "changing new-gid=%lu", (unsigned long) gid); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); #endif exit (EXIT_FAILURE); } @@ -730,11 +728,9 @@ int main (int argc, char **argv) if (setuid (getuid ()) != 0) { perror ("setuid"); #ifdef WITH_AUDIT - snprintf (audit_buf, sizeof(audit_buf), - "changing new-gid=%lu", (unsigned long) gid); + SNPRINTF(audit_buf, "changing new-gid=%lu", (unsigned long) gid); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); #endif exit (EXIT_FAILURE); } @@ -745,13 +741,11 @@ int main (int argc, char **argv) */ if (cflag) { closelog (); - execl (SHELL, "sh", "-c", command, (char *) 0); + execl (SHELL, "sh", "-c", command, (char *) NULL); #ifdef WITH_AUDIT - snprintf (audit_buf, sizeof(audit_buf), - "changing new-gid=%lu", (unsigned long) gid); + SNPRINTF(audit_buf, "changing new-gid=%lu", (unsigned long) gid); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); #endif perror (SHELL); exit ((errno == ENOENT) ? E_CMD_NOTFOUND : E_CMD_NOEXEC); @@ -815,17 +809,15 @@ int main (int argc, char **argv) } #ifdef WITH_AUDIT - snprintf (audit_buf, sizeof(audit_buf), "changing new-gid=%lu", - (unsigned long) gid); + SNPRINTF(audit_buf, "changing new-gid=%lu", (unsigned long) gid); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 1); + audit_buf, NULL, getuid (), 1); #endif /* * Exec the login shell and go away. We are trying to get back to * the previous environment which should be the user's login shell. */ - err = shell (prog, initflag ? (char *) 0 : progbase, newenvp); + err = shell (prog, initflag ? NULL : progbase, newenvp); exit ((err == ENOENT) ? E_CMD_NOTFOUND : E_CMD_NOEXEC); /*@notreached@*/ failure: @@ -843,15 +835,12 @@ int main (int argc, char **argv) closelog (); #ifdef WITH_AUDIT if (NULL != group) { - snprintf (audit_buf, sizeof(audit_buf), - "changing new-group=%s", group); + SNPRINTF(audit_buf, "changing new-group=%s", group); audit_logger (AUDIT_CHGRP_ID, Prog, - audit_buf, NULL, - (unsigned int) getuid (), 0); + audit_buf, NULL, getuid (), 0); } else { audit_logger (AUDIT_CHGRP_ID, Prog, - "changing", NULL, - (unsigned int) getuid (), 0); + "changing", NULL, getuid (), 0); } #endif exit (EXIT_FAILURE); diff --git a/src/newuidmap.c b/src/newuidmap.c index 546856a..e2652b5 100644 --- a/src/newuidmap.c +++ b/src/newuidmap.c @@ -23,7 +23,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "newuidmap"; static bool verify_range(struct passwd *pw, struct map_range *range) { @@ -64,7 +64,7 @@ static void verify_ranges(struct passwd *pw, int ranges, static void usage(void) { - fprintf(stderr, _("usage: %s [ ] ... \n"), Prog); + fprintf(stderr, _("usage: %s [|fd:] [ ] ... \n"), Prog); exit(EXIT_FAILURE); } @@ -73,17 +73,13 @@ static void usage(void) */ int main(int argc, char **argv) { - char proc_dir_name[32]; char *target_str; - pid_t target; int proc_dir_fd; int ranges; struct map_range *mappings; struct stat st; struct passwd *pw; - int written; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -94,26 +90,20 @@ int main(int argc, char **argv) if (argc < 2) usage(); + target_str = argv[1]; /* Find the process that needs its user namespace * uid mapping set. */ - target_str = argv[1]; - if (!get_pid(target_str, &target)) - usage(); - - /* max string length is 6 + 10 + 1 + 1 = 18, allocate 32 bytes */ - written = snprintf(proc_dir_name, sizeof(proc_dir_name), "/proc/%u/", - target); - if ((written <= 0) || (written >= sizeof(proc_dir_name))) { - fprintf(stderr, "%s: snprintf of proc path failed: %s\n", - Prog, strerror(errno)); - } - - proc_dir_fd = open(proc_dir_name, O_DIRECTORY); - if (proc_dir_fd < 0) { - fprintf(stderr, _("%s: Could not open proc directory for target %u\n"), - Prog, target); - return EXIT_FAILURE; + if (strlen(target_str) > 3 && strncmp(target_str, "fd:", 3) == 0) { + /* the user passed in a /proc/pid fd for the process */ + target_str = &target_str[3]; + proc_dir_fd = get_pidfd_from_fd(target_str); + if (proc_dir_fd < 0) + usage(); + } else { + proc_dir_fd = open_pidfd(target_str); + if (proc_dir_fd < 0) + usage(); } /* Who am i? */ @@ -129,8 +119,7 @@ int main(int argc, char **argv) /* Get the effective uid and effective gid of the target process */ if (fstat(proc_dir_fd, &st) < 0) { - fprintf(stderr, _("%s: Could not stat directory for target %u\n"), - Prog, target); + fprintf(stderr, _("%s: Could not stat directory for target process\n"), Prog); return EXIT_FAILURE; } @@ -142,10 +131,10 @@ int main(int argc, char **argv) (!getdef_bool("GRANT_AUX_GROUP_SUBIDS") && (getgid() != pw->pw_gid)) || (pw->pw_uid != st.st_uid) || (getgid() != st.st_gid)) { - fprintf(stderr, _( "%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" ), - Prog, target, - (unsigned long int)getuid(), (unsigned long int)pw->pw_uid, (unsigned long int)st.st_uid, - (unsigned long int)getgid(), (unsigned long int)pw->pw_gid, (unsigned long int)st.st_gid); + fprintf(stderr, _( "%s: Target process is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" ), + Prog, + (unsigned long)getuid(), (unsigned long)pw->pw_uid, (unsigned long)st.st_uid, + (unsigned long)getgid(), (unsigned long)pw->pw_gid, (unsigned long)st.st_gid); return EXIT_FAILURE; } diff --git a/src/newusers.c b/src/newusers.c index deeb361..0705b57 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -29,6 +29,9 @@ #include #include #include + +#include "alloc.h" +#include "atoi/str2i.h" #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" @@ -48,17 +51,19 @@ #endif /* ENABLE_SUBIDS */ #include "chkname.h" #include "shadowlog.h" +#include "string/sprintf.h" + /* * Global variables */ -const char *Prog; +static const char Prog[] = "newusers"; static bool rflg = false; /* create a system account */ #ifndef USE_PAM static /*@null@*//*@observer@*/char *crypt_method = NULL; #define cflg (NULL != crypt_method) -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) static bool sflg = false; #endif #ifdef USE_SHA_CRYPT @@ -88,8 +93,8 @@ static bool sub_gid_locked = false; #endif /* ENABLE_SUBIDS */ /* local function prototypes */ -static void usage (int status); -static void fail_exit (int); +NORETURN static void usage (int status); +NORETURN static void fail_exit (int); static int add_group (const char *, const char *, gid_t *, gid_t); static int get_user_id (const char *, uid_t *); static int add_user (const char *, uid_t, gid_t); @@ -235,7 +240,7 @@ static int add_group (const char *name, const char *gid, gid_t *ngid, uid_t uid) * new group, or an existing group. */ - if (get_gid (gid, &grent.gr_gid) == 0) { + if (get_gid(gid, &grent.gr_gid) == -1) { fprintf (stderr, _("%s: invalid group ID '%s'\n"), Prog, gid); @@ -245,11 +250,11 @@ static int add_group (const char *name, const char *gid, gid_t *ngid, uid_t uid) /* Look in both the system database (getgrgid) and in the * internal database (gr_locate_gid), which may contain * uncommitted changes */ - if ( (getgrgid ((gid_t) grent.gr_gid) != NULL) - || (gr_locate_gid ((gid_t) grent.gr_gid) != NULL)) { + if ( (getgrgid (grent.gr_gid) != NULL) + || (gr_locate_gid (grent.gr_gid) != NULL)) { /* The user will use this ID for her * primary group */ - *ngid = (gid_t) grent.gr_gid; + *ngid = grent.gr_gid; return 0; } @@ -339,7 +344,7 @@ static int get_user_id (const char *uid, uid_t *nuid) { * caller provided, or the next available UID. */ if (isdigit (uid[0])) { - if ((get_uid (uid, nuid) == 0) || (*nuid == (uid_t)-1)) { + if ((get_uid(uid, nuid) == -1) || (*nuid == (uid_t)-1)) { fprintf (stderr, _("%s: invalid user ID '%s'\n"), Prog, uid); @@ -350,22 +355,20 @@ static int get_user_id (const char *uid, uid_t *nuid) { const struct passwd *pwd; /* local, no need for xgetpwnam */ pwd = getpwnam (uid); - if (NULL == pwd) { + if (pwd == NULL) pwd = pw_locate (uid); - } - if (NULL != pwd) { - *nuid = pwd->pw_uid; - } else { + if (pwd == NULL) { fprintf (stderr, _("%s: user '%s' does not exist\n"), Prog, uid); return -1; } + + *nuid = pwd->pw_uid; } else { - if (find_new_uid (rflg, nuid, NULL) < 0) { + if (find_new_uid (rflg, nuid, NULL) < 0) return -1; - } } } @@ -527,7 +530,7 @@ static int add_passwd (struct passwd *pwd, const char *password) } spent.sp_pwdp = cp; } - spent.sp_lstchg = (long) gettime () / SCALE; + spent.sp_lstchg = gettime () / DAY; if (0 == spent.sp_lstchg) { /* Better disable aging than requiring a password * change */ @@ -584,7 +587,7 @@ static int add_passwd (struct passwd *pwd, const char *password) */ spent.sp_pwdp = "!"; #endif - spent.sp_lstchg = (long) gettime () / SCALE; + spent.sp_lstchg = gettime () / DAY; if (0 == spent.sp_lstchg) { /* Better disable aging than requiring a password change */ spent.sp_lstchg = -1; @@ -662,21 +665,28 @@ static void process_flags (int argc, char **argv) case 's': sflg = true; bad_s = 0; + + if (!crypt_method){ + fprintf(stderr, + _("%s: Provide '--crypt-method' before number of rounds\n"), + Prog); + usage (EXIT_FAILURE); + } #if defined(USE_SHA_CRYPT) if ( ( ((0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) - && (0 == getlong(optarg, &sha_rounds)))) { + && (-1 == str2sl(&sha_rounds, optarg)))) { bad_s = 1; } #endif /* USE_SHA_CRYPT */ #if defined(USE_BCRYPT) if (( (0 == strcmp (crypt_method, "BCRYPT")) - && (0 == getlong(optarg, &bcrypt_rounds)))) { + && (-1 == str2sl(&bcrypt_rounds, optarg)))) { bad_s = 1; } #endif /* USE_BCRYPT */ #if defined(USE_YESCRYPT) if (( (0 == strcmp (crypt_method, "YESCRYPT")) - && (0 == getlong(optarg, &yescrypt_cost)))) { + && (-1 == str2sl(&yescrypt_cost, optarg)))) { bad_s = 1; } #endif /* USE_YESCRYPT */ @@ -702,8 +712,9 @@ static void process_flags (int argc, char **argv) if (argv[optind] != NULL) { if (freopen (argv[optind], "r", stdin) == NULL) { - char buf[BUFSIZ]; - snprintf (buf, sizeof buf, "%s: %s", Prog, argv[1]); + char buf[BUFSIZ]; + + SNPRINTF(buf, "%s: %s", Prog, argv[1]); perror (buf); fail_exit (EXIT_FAILURE); } @@ -1039,7 +1050,6 @@ int main (int argc, char **argv) char *cp; const struct passwd *pw; struct passwd newpw; - int errors = 0; int line = 0; uid_t uid; gid_t gid; @@ -1050,7 +1060,6 @@ int main (int argc, char **argv) unsigned int nusers = 0; #endif /* USE_PAM */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -1088,19 +1097,16 @@ int main (int argc, char **argv) * over 100 is allocated. The pw_gid field will be updated with that * value. */ - while (fgets (buf, (int) sizeof buf, stdin) != (char *) 0) { + while (fgets (buf, sizeof buf, stdin) != NULL) { line++; cp = strrchr (buf, '\n'); - if (NULL != cp) { + if (cp == NULL && feof (stdin) == 0) { + fprintf (stderr, _("%s: line %d: line too long\n"), + Prog, line); + fail_exit (EXIT_FAILURE); + } + if (cp != NULL) { *cp = '\0'; - } else { - if (feof (stdin) == 0) { - fprintf (stderr, - _("%s: line %d: line too long\n"), - Prog, line); - errors++; - continue; - } } /* @@ -1111,39 +1117,35 @@ int main (int argc, char **argv) for (cp = buf, nfields = 0; nfields < 7; nfields++) { fields[nfields] = cp; cp = strchr (cp, ':'); - if (NULL != cp) { - *cp = '\0'; - cp++; - } else { + if (cp == NULL) break; - } + + *cp = '\0'; + cp++; } if (nfields != 6) { fprintf (stderr, _("%s: line %d: invalid line\n"), Prog, line); - errors++; - continue; + fail_exit (EXIT_FAILURE); } /* - * First check if we have to create or update an user + * First check if we have to create or update a user */ pw = pw_locate (fields[0]); /* local, no need for xgetpwnam */ - if ( (NULL == pw) - && (getpwnam (fields[0]) != NULL)) { - fprintf (stderr, _("%s: cannot update the entry of user %s (not in the passwd database)\n"), Prog, fields[0]); - errors++; - continue; + if (NULL == pw && getpwnam(fields[0]) != NULL) { + fprintf (stderr, + _("%s: cannot update the entry of user %s (not in the passwd database)\n"), + Prog, fields[0]); + fail_exit (EXIT_FAILURE); } - if ( (NULL == pw) - && (get_user_id (fields[2], &uid) != 0)) { + if (NULL == pw && get_user_id(fields[2], &uid) != 0) { fprintf (stderr, _("%s: line %d: can't create user\n"), Prog, line); - errors++; - continue; + fail_exit (EXIT_FAILURE); } /* @@ -1163,8 +1165,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %d: can't create group\n"), Prog, line); - errors++; - continue; + fail_exit (EXIT_FAILURE); } /* @@ -1179,8 +1180,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %d: can't create user\n"), Prog, line); - errors++; - continue; + fail_exit (EXIT_FAILURE); } /* @@ -1192,17 +1192,22 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %d: user '%s' does not exist in %s\n"), Prog, line, fields[0], pw_dbname ()); - errors++; - continue; + fail_exit (EXIT_FAILURE); } newpw = *pw; #ifdef USE_PAM /* keep the list of user/password for later update by PAM */ nusers++; - lines = realloc (lines, sizeof (lines[0]) * nusers); - usernames = realloc (usernames, sizeof (usernames[0]) * nusers); - passwords = realloc (passwords, sizeof (passwords[0]) * nusers); + lines = REALLOCF(lines, nusers, int); + usernames = REALLOCF(usernames, nusers, char *); + passwords = REALLOCF(passwords, nusers, char *); + if (lines == NULL || usernames == NULL || passwords == NULL) { + fprintf (stderr, + _("%s: line %d: %s\n"), + Prog, line, strerror(errno)); + fail_exit (EXIT_FAILURE); + } lines[nusers-1] = line; usernames[nusers-1] = strdup (fields[0]); passwords[nusers-1] = strdup (fields[1]); @@ -1211,8 +1216,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %d: can't update password\n"), Prog, line); - errors++; - continue; + fail_exit (EXIT_FAILURE); } if ('\0' != fields[4][0]) { newpw.pw_gecos = fields[4]; @@ -1235,21 +1239,24 @@ int main (int argc, char **argv) fprintf(stderr, _("%s: line %d: homedir must be an absolute path\n"), Prog, line); - errors++; - continue; - }; + fail_exit (EXIT_FAILURE); + } if (mkdir (newpw.pw_dir, mode) != 0) { fprintf (stderr, _("%s: line %d: mkdir %s failed: %s\n"), Prog, line, newpw.pw_dir, strerror (errno)); - } else if (chown (newpw.pw_dir, - newpw.pw_uid, - newpw.pw_gid) != 0) { + if (errno != EEXIST) { + fail_exit (EXIT_FAILURE); + } + } + if (chown(newpw.pw_dir, newpw.pw_uid, newpw.pw_gid) != 0) + { fprintf (stderr, _("%s: line %d: chown %s failed: %s\n"), Prog, line, newpw.pw_dir, strerror (errno)); + fail_exit (EXIT_FAILURE); } } @@ -1260,8 +1267,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %d: can't update entry\n"), Prog, line); - errors++; - continue; + fail_exit (EXIT_FAILURE); } #ifdef ENABLE_SUBIDS @@ -1271,17 +1277,19 @@ int main (int argc, char **argv) if (is_sub_uid && want_subuids() && !local_sub_uid_assigned(fields[0])) { uid_t sub_uid_start = 0; unsigned long sub_uid_count = 0; - if (find_new_sub_uids(&sub_uid_start, &sub_uid_count) == 0) { - if (sub_uid_add(fields[0], sub_uid_start, sub_uid_count) == 0) { - fprintf (stderr, - _("%s: failed to prepare new %s entry\n"), - Prog, sub_uid_dbname ()); - } - } else { + if (find_new_sub_uids(&sub_uid_start, &sub_uid_count) != 0) + { fprintf (stderr, _("%s: can't find subordinate user range\n"), Prog); - errors++; + fail_exit (EXIT_FAILURE); + } + if (sub_uid_add(fields[0], sub_uid_start, sub_uid_count) == 0) + { + fprintf (stderr, + _("%s: failed to prepare new %s entry\n"), + Prog, sub_uid_dbname ()); + fail_exit (EXIT_FAILURE); } } @@ -1291,17 +1299,17 @@ int main (int argc, char **argv) if (is_sub_gid && want_subgids() && !local_sub_gid_assigned(fields[0])) { gid_t sub_gid_start = 0; unsigned long sub_gid_count = 0; - if (find_new_sub_gids(&sub_gid_start, &sub_gid_count) == 0) { - if (sub_gid_add(fields[0], sub_gid_start, sub_gid_count) == 0) { - fprintf (stderr, - _("%s: failed to prepare new %s entry\n"), - Prog, sub_uid_dbname ()); - } - } else { + if (find_new_sub_gids(&sub_gid_start, &sub_gid_count) != 0) { fprintf (stderr, _("%s: can't find subordinate group range\n"), Prog); - errors++; + fail_exit (EXIT_FAILURE); + } + if (sub_gid_add(fields[0], sub_gid_start, sub_gid_count) == 0) { + fprintf (stderr, + _("%s: failed to prepare new %s entry\n"), + Prog, sub_uid_dbname ()); + fail_exit (EXIT_FAILURE); } } #endif /* ENABLE_SUBIDS */ @@ -1314,12 +1322,6 @@ int main (int argc, char **argv) * changes to be written out all at once, and then unlocked * afterwards. */ - if (0 != errors) { - fprintf (stderr, - _("%s: error detected, changes ignored\n"), Prog); - fail_exit (EXIT_FAILURE); - } - close_files (); nscd_flush_cache ("passwd"); @@ -1334,11 +1336,11 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: (line %d, user %s) password not changed\n"), Prog, lines[i], usernames[i]); - errors++; + exit (EXIT_FAILURE); } } #endif /* USE_PAM */ - return ((0 == errors) ? EXIT_SUCCESS : EXIT_FAILURE); + exit (EXIT_SUCCESS); } diff --git a/src/passwd.c b/src/passwd.c index 8c6f81a..2999a3c 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -19,8 +19,13 @@ #include #include #include + +#include "agetpass.h" +#include "alloc.h" +#include "atoi/str2i.h" #include "defines.h" #include "getdef.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -28,6 +33,10 @@ #include "pwio.h" #include "shadowio.h" #include "shadowlog.h" +#include "string/strtcpy.h" +#include "time/day_to_str.h" + + /* * exit status values @@ -43,12 +52,14 @@ /* * Global variables */ -const char *Prog; /* Program name */ +static const char Prog[] = "passwd"; /* Program name */ static char *name; /* The name of user whose password is being changed */ static char *myname; /* The current user's name */ static bool amroot; /* The caller's real UID was 0 */ +static const char *prefix = ""; + static bool aflg = false, /* -a - show status for all users */ dflg = false, /* -d - delete password */ @@ -61,7 +72,8 @@ static bool Sflg = false, /* -S - show password status */ uflg = false, /* -u - unlock the user's password */ wflg = false, /* -w - set warning days */ - xflg = false; /* -x - set maximum days */ + xflg = false, /* -x - set maximum days */ + sflg = false; /* -s - read passwd from stdin */ /* * set to 1 if there are any flags which require root privileges, @@ -74,14 +86,16 @@ static long age_max = 0; /* Maximum days until change */ static long warn = 0; /* Warning days before change */ static long inact = 0; /* Days without change before locked */ -#ifndef USE_PAM static bool do_update_age = false; -#endif /* ! USE_PAM */ +#ifdef USE_PAM +static bool use_pam = true; +#else +static bool use_pam = false; +#endif /* USE_PAM */ static bool pw_locked = false; static bool spw_locked = false; -#ifndef USE_PAM /* * Size of the biggest passwd: * $6$ 3 @@ -97,25 +111,21 @@ static bool spw_locked = false; */ static char crypt_passwd[256]; static bool do_update_pwd = false; -#endif /* !USE_PAM */ /* * External identifiers */ /* local function prototypes */ -static /*@noreturn@*/void usage (int); +NORETURN static void usage (int); -#ifndef USE_PAM -static bool reuse (const char *, const struct passwd *); static int new_password (const struct passwd *); static void check_password (const struct passwd *, const struct spwd *); -#endif /* !USE_PAM */ static /*@observer@*/const char *pw_status (const char *); static void print_status (const struct passwd *); -static /*@noreturn@*/void fail_exit (int); -static /*@noreturn@*/void oom (void); +NORETURN static void fail_exit (int); +NORETURN static void oom (void); static char *update_crypt_pw (char *); static void update_noshadow (void); @@ -124,7 +134,9 @@ static void update_shadow (void); /* * usage - print command usage and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -145,37 +157,17 @@ static /*@noreturn@*/void usage (int status) (void) fputs (_(" -q, --quiet quiet mode\n"), usageout); (void) fputs (_(" -r, --repository REPOSITORY change password in REPOSITORY repository\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); + (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout); (void) fputs (_(" -S, --status report password status on the named account\n"), usageout); (void) fputs (_(" -u, --unlock unlock the password of the named account\n"), usageout); (void) fputs (_(" -w, --warndays WARN_DAYS set expiration warning days to WARN_DAYS\n"), usageout); (void) fputs (_(" -x, --maxdays MAX_DAYS set maximum number of days before password\n" " change to MAX_DAYS\n"), usageout); + (void) fputs (_(" -s, --stdin read new token from stdin\n"), usageout); (void) fputs ("\n", usageout); exit (status); } -#ifndef USE_PAM -static bool reuse (const char *pass, const struct passwd *pw) -{ -#ifdef HAVE_LIBCRACK_HIST - const char *reason; - -#ifdef HAVE_LIBCRACK_PW - const char *FascistHistoryPw (const char *, const struct passwd *); - - reason = FascistHistory (pass, pw); -#else /* !HAVE_LIBCRACK_PW */ - const char *FascistHistory (const char *, int); - - reason = FascistHistory (pass, pw->pw_uid); -#endif /* !HAVE_LIBCRACK_PW */ - if (NULL != reason) { - (void) printf (_("Bad password: %s. "), reason); - return true; - } -#endif /* HAVE_LIBCRACK_HIST */ - return false; -} /* * new_password - validate old password and replace with new (both old and @@ -186,25 +178,22 @@ static int new_password (const struct passwd *pw) char *clear; /* Pointer to clear text */ char *cipher; /* Pointer to cipher text */ const char *salt; /* Pointer to new salt */ - char *cp; /* Pointer to getpass() response */ - char orig[200]; /* Original password */ - char pass[200]; /* New password */ + char *cp; /* Pointer to agetpass() response */ + char orig[PASS_MAX + 1]; /* Original password */ + char pass[PASS_MAX + 1]; /* New password */ int i; /* Counter for retries */ + int ret; bool warned; int pass_max_len = -1; const char *method; -#ifdef HAVE_LIBCRACK_HIST - int HistUpdate (const char *, const char *); -#endif /* HAVE_LIBCRACK_HIST */ - /* * Authenticate the user. The user will be prompted for their own * password. */ if (!amroot && ('\0' != crypt_passwd[0])) { - clear = getpass (_("Old password: ")); + clear = agetpass (_("Old password: ")); if (NULL == clear) { return -1; } @@ -212,7 +201,7 @@ static int new_password (const struct passwd *pw) cipher = pw_encrypt (clear, crypt_passwd); if (NULL == cipher) { - strzero (clear); + erase_pass (clear); fprintf (stderr, _("%s: failed to crypt password with previous salt: %s\n"), Prog, strerror (errno)); @@ -223,7 +212,7 @@ static int new_password (const struct passwd *pw) } if (strcmp (cipher, crypt_passwd) != 0) { - strzero (clear); + erase_pass (clear); strzero (cipher); SYSLOG ((LOG_WARN, "incorrect password for %s", pw->pw_name)); @@ -233,8 +222,8 @@ static int new_password (const struct passwd *pw) pw->pw_name); return -1; } - STRFCPY (orig, clear); - strzero (clear); + STRTCPY(orig, clear); + erase_pass (clear); strzero (cipher); } else { orig[0] = '\0'; @@ -270,7 +259,7 @@ static int new_password (const struct passwd *pw) pass_max_len = getdef_num ("PASS_MAX_LEN", 8); } } - if (!qflg) { + if (!qflg && !sflg) { if (pass_max_len == -1) { (void) printf (_( "Enter the new password (minimum of %d characters)\n" @@ -284,62 +273,87 @@ static int new_password (const struct passwd *pw) } } - warned = false; - for (i = getdef_num ("PASS_CHANGE_TRIES", 5); i > 0; i--) { - cp = getpass (_("New password: ")); + if (sflg) { + /* + * root is setting the passphrase from stdin + */ + cp = agetpass_stdin (); if (NULL == cp) { - memzero (orig, sizeof orig); - memzero (pass, sizeof pass); return -1; } - if (warned && (strcmp (pass, cp) != 0)) { - warned = false; + ret = STRTCPY (pass, cp); + erase_pass (cp); + if (ret == -1) { + (void) fputs (_("Password is too long.\n"), stderr); + MEMZERO(pass); + return -1; } - STRFCPY (pass, cp); - strzero (cp); + } else { + warned = false; + for (i = getdef_num ("PASS_CHANGE_TRIES", 5); i > 0; i--) { + cp = agetpass (_("New password: ")); + if (NULL == cp) { + MEMZERO(orig); + MEMZERO(pass); + return -1; + } + if (warned && (strcmp (pass, cp) != 0)) { + warned = false; + } + ret = STRTCPY (pass, cp); + erase_pass (cp); + if (ret == -1) { + (void) fputs (_("Password is too long.\n"), stderr); + MEMZERO(orig); + MEMZERO(pass); + return -1; + } - if (!amroot && (!obscure (orig, pass, pw) || reuse (pass, pw))) { - (void) puts (_("Try again.")); - continue; - } + if (!amroot && !obscure(orig, pass, pw)) { + (void) puts (_("Try again.")); + continue; + } - /* - * If enabled, warn about weak passwords even if you are - * root (enter this password again to use it anyway). - * --marekm - */ - if (amroot && !warned && getdef_bool ("PASS_ALWAYS_WARN") - && (!obscure (orig, pass, pw) || reuse (pass, pw))) { - (void) puts (_("\nWarning: weak password (enter it again to use it anyway).")); - warned = true; - continue; + /* + * If enabled, warn about weak passwords even if you are + * root (enter this password again to use it anyway). + * --marekm + */ + if (amroot && !warned && getdef_bool ("PASS_ALWAYS_WARN") + && !obscure(orig, pass, pw)) { + (void) puts (_("\nWarning: weak password (enter it again to use it anyway).")); + warned = true; + continue; + } + cp = agetpass (_("Re-enter new password: ")); + if (NULL == cp) { + MEMZERO(orig); + MEMZERO(pass); + return -1; + } + if (strcmp (cp, pass) != 0) { + erase_pass (cp); + (void) fputs (_("They don't match; try again.\n"), stderr); + } else { + erase_pass (cp); + break; + } } - cp = getpass (_("Re-enter new password: ")); - if (NULL == cp) { - memzero (orig, sizeof orig); - memzero (pass, sizeof pass); + MEMZERO(orig); + + if (i == 0) { + MEMZERO(pass); return -1; } - if (strcmp (cp, pass) != 0) { - (void) fputs (_("They don't match; try again.\n"), stderr); - } else { - strzero (cp); - break; - } } - memzero (orig, sizeof orig); - if (i == 0) { - memzero (pass, sizeof pass); - return -1; - } /* * Encrypt the password, then wipe the cleartext password. */ salt = crypt_make_salt (NULL, NULL); cp = pw_encrypt (pass, salt); - memzero (pass, sizeof pass); + MEMZERO(pass); if (NULL == cp) { fprintf (stderr, @@ -348,10 +362,7 @@ static int new_password (const struct passwd *pw) return -1; } -#ifdef HAVE_LIBCRACK_HIST - HistUpdate (pw->pw_name, crypt_passwd); -#endif /* HAVE_LIBCRACK_HIST */ - STRFCPY (crypt_passwd, cp); + STRTCPY(crypt_passwd, cp); return 0; } @@ -363,7 +374,6 @@ static int new_password (const struct passwd *pw) */ static void check_password (const struct passwd *pw, const struct spwd *sp) { - time_t now; int exp_status; exp_status = isexpired (pw, sp); @@ -383,8 +393,6 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) return; } - (void) time (&now); - /* * Expired accounts cannot be changed ever. Passwords which are * locked may not be changed. Passwords where min > max may not be @@ -407,10 +415,12 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) * Passwords may only be changed after sp_min time is up. */ if (sp->sp_lstchg > 0) { - time_t ok; - ok = (time_t) sp->sp_lstchg * SCALE; - if (sp->sp_min > 0) { - ok += (time_t) sp->sp_min * SCALE; + long now, ok; + now = time(NULL) / DAY; + ok = sp->sp_lstchg; + if ( (sp->sp_min > 0) + && __builtin_add_overflow(ok, sp->sp_min, &ok)) { + ok = LONG_MAX; } if (now < ok) { @@ -423,7 +433,6 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) } } } -#endif /* !USE_PAM */ static /*@observer@*/const char *pw_status (const char *pass) { @@ -444,17 +453,17 @@ static void print_status (const struct passwd *pw) char date[80]; struct spwd *sp; - sp = getspnam (pw->pw_name); /* local, no need for xgetspnam */ + sp = prefix_getspnam (pw->pw_name); /* local, no need for xprefix_getspnam */ if (NULL != sp) { - date_to_str (sizeof(date), date, sp->sp_lstchg * SCALE), - (void) printf ("%s %s %s %lld %lld %lld %lld\n", + DAY_TO_STR(date, sp->sp_lstchg); + (void) printf ("%s %s %s %ld %ld %ld %ld\n", pw->pw_name, pw_status (sp->sp_pwdp), date, - ((long long)sp->sp_min * SCALE) / DAY, - ((long long)sp->sp_max * SCALE) / DAY, - ((long long)sp->sp_warn * SCALE) / DAY, - ((long long)sp->sp_inact * SCALE) / DAY); + sp->sp_min, + sp->sp_max, + sp->sp_warn, + sp->sp_inact); } else if (NULL != pw->pw_passwd) { (void) printf ("%s %s\n", pw->pw_name, pw_status (pw->pw_passwd)); @@ -465,7 +474,9 @@ static void print_status (const struct passwd *pw) } -static /*@noreturn@*/void fail_exit (int status) +NORETURN +static void +fail_exit (int status) { if (pw_locked) { if (pw_unlock () == 0) { @@ -486,7 +497,9 @@ static /*@noreturn@*/void fail_exit (int status) exit (status); } -static /*@noreturn@*/void oom (void) +NORETURN +static void +oom (void) { (void) fprintf (stderr, _("%s: out of memory\n"), Prog); fail_exit (E_FAILURE); @@ -494,11 +507,12 @@ static /*@noreturn@*/void oom (void) static char *update_crypt_pw (char *cp) { -#ifndef USE_PAM - if (do_update_pwd) { - cp = xstrdup (crypt_passwd); + if (!use_pam) + { + if (do_update_pwd) { + cp = xstrdup (crypt_passwd); + } } -#endif /* !USE_PAM */ if (dflg) { *cp = '\0'; @@ -517,15 +531,16 @@ static char *update_crypt_pw (char *cp) } if (lflg && *cp != '!') { - char *newpw = xmalloc (strlen (cp) + 2); + char *newpw = XMALLOC(strlen(cp) + 2, char); strcpy (newpw, "!"); strcat (newpw, cp); -#ifndef USE_PAM - if (do_update_pwd) { - free (cp); + if (!use_pam) + { + if (do_update_pwd) { + free (cp); + } } -#endif /* USE_PAM */ cp = newpw; } return cp; @@ -626,27 +641,28 @@ static void update_shadow (void) } nsp->sp_pwdp = update_crypt_pw (nsp->sp_pwdp); if (xflg) { - nsp->sp_max = (age_max * DAY) / SCALE; + nsp->sp_max = age_max; } if (nflg) { - nsp->sp_min = (age_min * DAY) / SCALE; + nsp->sp_min = age_min; } if (wflg) { - nsp->sp_warn = (warn * DAY) / SCALE; + nsp->sp_warn = warn; } if (iflg) { - nsp->sp_inact = (inact * DAY) / SCALE; + nsp->sp_inact = inact; } -#ifndef USE_PAM - if (do_update_age) { - nsp->sp_lstchg = (long) gettime () / SCALE; - if (0 == nsp->sp_lstchg) { - /* Better disable aging than requiring a password - * change */ - nsp->sp_lstchg = -1; + if (!use_pam) + { + if (do_update_age) { + nsp->sp_lstchg = gettime () / DAY; + if (0 == nsp->sp_lstchg) { + /* Better disable aging than requiring a password + * change */ + nsp->sp_lstchg = -1; + } } } -#endif /* !USE_PAM */ /* * Force change on next login, like SunOS 4.x passwd -e or Solaris @@ -690,18 +706,16 @@ static void update_shadow (void) * * -d delete the password for the named account (*) * -e expire the password for the named account (*) - * -f execute chfn command to interpret flags - * -g execute gpasswd command to interpret flags * -i # set sp_inact to # days (*) * -k change password only if expired * -l lock the password of the named account (*) * -n # set sp_min to # days (*) * -r # change password in # repository - * -s execute chsh command to interpret flags * -S show password status of named account * -u unlock the password of the named account (*) * -w # set sp_warn to # days (*) * -x # set sp_max to # days (*) + * -s read password from stdin (*) * * (*) requires root permission to execute. * @@ -713,19 +727,13 @@ int main (int argc, char **argv) { const struct passwd *pw; /* Password file entry for user */ -#ifndef USE_PAM char *cp; /* Miscellaneous character pointing */ const struct spwd *sp; /* Shadow file entry for user */ -#endif /* !USE_PAM */ sanitize_env (); + check_fds (); - /* - * Get the program name. The program name is used as a prefix to - * most error messages. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -734,6 +742,12 @@ int main (int argc, char **argv) (void) textdomain (PACKAGE); process_root_flag ("-R", argc, argv); + prefix = process_prefix_flag ("-P", argc, argv); + + if (prefix[0]) { + use_pam = false; + do_update_age = true; + } /* * The program behaves differently when executed by root than when @@ -741,7 +755,7 @@ int main (int argc, char **argv) */ amroot = (getuid () == 0); - OPENLOG ("passwd"); + OPENLOG (Prog); { /* @@ -760,14 +774,16 @@ int main (int argc, char **argv) {"quiet", no_argument, NULL, 'q'}, {"repository", required_argument, NULL, 'r'}, {"root", required_argument, NULL, 'R'}, + {"prefix", required_argument, NULL, 'P'}, {"status", no_argument, NULL, 'S'}, {"unlock", no_argument, NULL, 'u'}, {"warndays", required_argument, NULL, 'w'}, {"maxdays", required_argument, NULL, 'x'}, + {"stdin", no_argument, NULL, 's'}, {NULL, 0, NULL, '\0'} }; - while ((c = getopt_long (argc, argv, "adehi:kln:qr:R:Suw:x:", + while ((c = getopt_long (argc, argv, "adehi:kln:qr:R:P:Suw:x:s", long_options, NULL)) != -1) { switch (c) { case 'a': @@ -785,7 +801,7 @@ int main (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'i': - if ( (getlong (optarg, &inact) == 0) + if ( (str2sl(&inact, optarg) == -1) || (inact < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -804,7 +820,7 @@ int main (int argc, char **argv) anyflag = true; break; case 'n': - if ( (getlong (optarg, &age_min) == 0) + if ( (str2sl(&age_min, optarg) == -1) || (age_min < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -829,6 +845,8 @@ int main (int argc, char **argv) break; case 'R': /* no-op, handled in process_root_flag () */ break; + case 'P': /* no-op, handled in process_prefix_flag () */ + break; case 'S': Sflg = true; /* ok for users */ break; @@ -837,7 +855,7 @@ int main (int argc, char **argv) anyflag = true; break; case 'w': - if ( (getlong (optarg, &warn) == 0) + if ( (str2sl(&warn, optarg) == -1) || (warn < -1)) { (void) fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -848,7 +866,7 @@ int main (int argc, char **argv) anyflag = true; break; case 'x': - if ( (getlong (optarg, &age_max) == 0) + if ( (str2sl(&age_max, optarg) == -1) || (age_max < -1)) { (void) fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -858,6 +876,15 @@ int main (int argc, char **argv) xflg = true; anyflag = true; break; + case 's': + if (!amroot) { + (void) fprintf (stderr, + _("%s: only root can use --stdin/-s option\n"), + Prog); + usage (E_BAD_ARG); + } + sflg = true; + break; default: usage (E_BAD_ARG); } @@ -906,11 +933,11 @@ int main (int argc, char **argv) Prog); exit (E_NOPERM); } - setpwent (); - while ( (pw = getpwent ()) != NULL ) { + prefix_setpwent (); + while ( (pw = prefix_getpwent ()) != NULL ) { print_status (pw); } - endpwent (); + prefix_endpwent (); exit (E_SUCCESS); } #if 0 @@ -947,7 +974,7 @@ int main (int argc, char **argv) exit (E_NOPERM); } - pw = xgetpwnam (name); + pw = xprefix_getpwnam (name); if (NULL == pw) { (void) fprintf (stderr, _("%s: user '%s' does not exist\n"), @@ -957,7 +984,7 @@ int main (int argc, char **argv) #ifdef WITH_SELINUX /* only do this check when getuid()==0 because it's a pre-condition for changing a password without entering the old one */ - if (amroot && (check_selinux_permit ("passwd") != 0)) { + if (amroot && (check_selinux_permit (Prog) != 0)) { SYSLOG ((LOG_ALERT, "root is not authorized by SELinux to change the password of %s", name)); @@ -977,8 +1004,8 @@ int main (int argc, char **argv) _("%s: You may not view or modify password information for %s.\n"), Prog, name); SYSLOG ((LOG_WARN, - "%s: can't view or modify password information for %s", - Prog, name)); + "can't view or modify password information for %s", + name)); closelog (); exit (E_NOPERM); } @@ -987,53 +1014,55 @@ int main (int argc, char **argv) print_status (pw); exit (E_SUCCESS); } -#ifndef USE_PAM - /* - * The user name is valid, so let's get the shadow file entry. - */ - sp = getspnam (name); /* !USE_PAM, no need for xgetspnam */ - if (NULL == sp) { - if (errno == EACCES) { - (void) fprintf (stderr, - _("%s: Permission denied.\n"), - Prog); - exit (E_NOPERM); - } - sp = pwd_to_spwd (pw); - } - - cp = sp->sp_pwdp; - - /* - * If there are no other flags, just change the password. - */ - if (!anyflag) { - STRFCPY (crypt_passwd, cp); - + if (!use_pam) + { /* - * See if the user is permitted to change the password. - * Otherwise, go ahead and set a new password. + * The user name is valid, so let's get the shadow file entry. */ - check_password (pw, sp); + sp = prefix_getspnam (name); /* !use_pam, no need for xprefix_getspnam */ + if (NULL == sp) { + if (errno == EACCES) { + (void) fprintf (stderr, + _("%s: Permission denied.\n"), + Prog); + exit (E_NOPERM); + } + sp = pwd_to_spwd (pw); + } + + cp = sp->sp_pwdp; /* - * Let the user know whose password is being changed. + * If there are no other flags, just change the password. */ - if (!qflg) { - (void) printf (_("Changing password for %s\n"), name); - } + if (!anyflag) { + STRTCPY(crypt_passwd, cp); + + /* + * See if the user is permitted to change the password. + * Otherwise, go ahead and set a new password. + */ + check_password (pw, sp); + + /* + * Let the user know whose password is being changed. + */ + if (!qflg) { + (void) printf (_("Changing password for %s\n"), name); + } - if (new_password (pw) != 0) { - (void) fprintf (stderr, - _("The password for %s is unchanged.\n"), - name); - closelog (); - exit (E_NOPERM); + if (new_password (pw) != 0) { + (void) fprintf (stderr, + _("The password for %s is unchanged.\n"), + name); + closelog (); + exit (E_NOPERM); + } + do_update_pwd = true; + do_update_age = true; } - do_update_pwd = true; - do_update_age = true; } -#endif /* !USE_PAM */ + /* * Before going any further, raise the ulimit to prevent colliding * into a lowered ulimit, and set the real UID to root to protect @@ -1046,8 +1075,17 @@ int main (int argc, char **argv) /* * Don't set the real UID for PAM... */ - if (!anyflag) { - do_pam_passwd (name, qflg, kflg); + if (!anyflag && use_pam) { + if (sflg) { + cp = agetpass_stdin (); + if (cp == NULL) { + exit (E_FAILURE); + } + do_pam_passwd_non_interactive ("passwd", name, cp); + erase_pass (cp); + } else { + do_pam_passwd (name, qflg, kflg); + } exit (E_SUCCESS); } #endif /* USE_PAM */ @@ -1081,4 +1119,3 @@ int main (int argc, char **argv) return E_SUCCESS; } - diff --git a/src/pwck.c b/src/pwck.c index eaa4163..70ff5e6 100644 --- a/src/pwck.c +++ b/src/pwck.c @@ -47,7 +47,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "pwck"; static bool use_system_pw_file = true; static bool use_system_spw_file = true; @@ -66,7 +66,7 @@ static bool quiet = false; /* don't report warnings, only errors */ /* local function prototypes */ static void fail_exit (int code); -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void process_flags (int argc, char **argv); static void open_files (void); static void close_files (bool changed); @@ -109,7 +109,9 @@ static void fail_exit (int code) /* * usage - print syntax message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; #ifdef WITH_TCB @@ -367,8 +369,8 @@ static void check_pw_file (int *errors, bool *changed) struct commonio_entry *pfe, *tpfe; struct passwd *pwd; const struct spwd *spw; - uid_t min_sys_id = (uid_t) getdef_ulong ("SYS_UID_MIN", 101UL); - uid_t max_sys_id = (uid_t) getdef_ulong ("SYS_UID_MAX", 999UL); + uid_t min_sys_id = getdef_ulong ("SYS_UID_MIN", 101UL); + uid_t max_sys_id = getdef_ulong ("SYS_UID_MAX", 999UL); /* * Loop through the entire password file. @@ -607,7 +609,7 @@ static void check_pw_file (int *errors, bool *changed) sp.sp_inact = -1; sp.sp_expire = -1; sp.sp_flag = SHADOW_SP_FLAG_UNSET; - sp.sp_lstchg = (long) gettime () / SCALE; + sp.sp_lstchg = gettime () / DAY; if (0 == sp.sp_lstchg) { /* Better disable aging than * requiring a password change @@ -812,9 +814,9 @@ static void check_spw_file (int *errors, bool *changed) * Warn if last password change in the future. --marekm */ if (!quiet) { - time_t t = time ((time_t *) 0); + time_t t = time (NULL); if ( (t != 0) - && (spw->sp_lstchg > (long) t / SCALE)) { + && (spw->sp_lstchg > t / DAY)) { printf (_("user %s: last password change in the future\n"), spw->sp_namp); *errors += 1; @@ -831,10 +833,6 @@ int main (int argc, char **argv) int errors = 0; bool changed = false; - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -844,7 +842,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("pwck"); + OPENLOG (Prog); /* Parse the command line arguments */ process_flags (argc, argv); diff --git a/src/pwconv.c b/src/pwconv.c index 21d36e7..7dd327a 100644 --- a/src/pwconv.c +++ b/src/pwconv.c @@ -40,9 +40,11 @@ #include #include #include +#include #include #include #include + #include "defines.h" #include "getdef.h" #include "prototypes.h" @@ -66,7 +68,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "pwconv"; static bool spw_locked = false; static bool pw_locked = false; @@ -153,7 +155,6 @@ int main (int argc, char **argv) const struct spwd *sp; struct spwd spent; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -163,7 +164,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("pwconv"); + OPENLOG (Prog); process_flags (argc, argv); @@ -237,7 +238,7 @@ int main (int argc, char **argv) spent = *sp; } else { /* add new shadow entry */ - memset (&spent, 0, sizeof spent); + bzero(&spent, sizeof spent); spent.sp_namp = pw->pw_name; spent.sp_min = getdef_num ("PASS_MIN_DAYS", -1); spent.sp_max = getdef_num ("PASS_MAX_DAYS", -1); @@ -247,7 +248,7 @@ int main (int argc, char **argv) spent.sp_flag = SHADOW_SP_FLAG_UNSET; } spent.sp_pwdp = pw->pw_passwd; - spent.sp_lstchg = (long) gettime () / SCALE; + spent.sp_lstchg = gettime () / DAY; if (0 == spent.sp_lstchg) { /* Better disable aging than requiring a password * change */ diff --git a/src/pwunconv.c b/src/pwunconv.c index b862435..fe18113 100644 --- a/src/pwunconv.c +++ b/src/pwunconv.c @@ -18,6 +18,7 @@ #include #include #include "defines.h" +#include "getdef.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -30,7 +31,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "pwunconv"; static bool spw_locked = false; static bool pw_locked = false; @@ -114,7 +115,6 @@ int main (int argc, char **argv) struct passwd pwent; const struct spwd *spwd; - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -124,7 +124,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - OPENLOG ("pwunconv"); + OPENLOG (Prog); process_flags (argc, argv); diff --git a/src/su.c b/src/su.c index 6cd82fc..80c0859 100644 --- a/src/su.c +++ b/src/su.c @@ -45,6 +45,10 @@ #include #include #endif /* !USE_PAM */ + +#include "alloc.h" +#include "attr.h" +#include "cast.h" #include "prototypes.h" #include "defines.h" #include "pwauth.h" @@ -55,11 +59,14 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" +#include "string/sprintf.h" +#include "string/strtcpy.h" + /* * Global variables */ -const char *Prog; +static const char Prog[] = "su"; static /*@observer@*/const char *caller_tty = NULL; /* Name of tty SU is run from */ static bool caller_is_root = false; static uid_t caller_uid; @@ -95,8 +102,8 @@ static pid_t pid_child = 0; * External identifiers */ -extern char **newenvp; /* libmisc/env.c */ -extern size_t newenvc; /* libmisc/env.c */ +extern char **newenvp; /* lib/env.c */ +extern size_t newenvc; /* lib/env.c */ /* local function prototypes */ @@ -104,15 +111,16 @@ static void execve_shell (const char *shellname, char *args[], char *const envp[]); #ifdef USE_PAM -static void kill_child (int unused(s)); +static void kill_child (MAYBE_UNUSED int s); static void prepare_pam_close_session (void); #else /* !USE_PAM */ static void die (int); static bool iswheel (const char *); #endif /* !USE_PAM */ static bool restricted_shell (const char *shellname); -static /*@noreturn@*/void su_failure (const char *tty, bool su_to_root); +NORETURN static void su_failure (const char *tty, bool su_to_root); static /*@only@*/struct passwd * check_perms (void); +static /*@only@*/struct passwd * do_check_perms (void); #ifdef USE_PAM static void check_perms_pam (const struct passwd *pw); #else /* !USE_PAM */ @@ -157,13 +165,13 @@ static bool iswheel (const char *username) return is_on_list (grp->gr_mem, username); } #else /* USE_PAM */ -static void kill_child (int unused(s)) +static void kill_child (MAYBE_UNUSED int s) { if (0 != pid_child) { (void) kill (-pid_child, SIGKILL); - (void) write (STDERR_FILENO, kill_msg, strlen (kill_msg)); + (void) write_full(STDERR_FILENO, kill_msg, strlen(kill_msg)); } else { - (void) write (STDERR_FILENO, wait_msg, strlen (wait_msg)); + (void) write_full(STDERR_FILENO, wait_msg, strlen(wait_msg)); } _exit (255); } @@ -185,10 +193,11 @@ static bool restricted_shell (const char *shellname) return true; } -static /*@noreturn@*/void su_failure (const char *tty, bool su_to_root) +NORETURN +static void +su_failure (const char *tty, bool su_to_root) { sulog (tty, false, caller_name, name); /* log failed attempt */ -#ifdef USE_SYSLOG if (getdef_bool ("SYSLOG_SU_ENAB")) { SYSLOG ((su_to_root ? LOG_NOTICE : LOG_INFO, "- %s %s:%s", tty, @@ -196,7 +205,6 @@ static /*@noreturn@*/void su_failure (const char *tty, bool su_to_root) ('\0' != name[0]) ? name : "???")); } closelog (); -#endif #ifdef WITH_AUDIT audit_fd = audit_open (); @@ -225,7 +233,7 @@ static void execve_shell (const char *shellname, char *const envp[]) { int err; - (void) execve (shellname, (char **) args, envp); + (void) execve (shellname, args, envp); err = errno; if (access (shellname, R_OK|X_OK) == 0) { @@ -238,7 +246,7 @@ static void execve_shell (const char *shellname, while (NULL != args[n_args]) { n_args++; } - targs = (char **) xmalloc ((n_args + 3) * sizeof (args[0])); + targs = XMALLOC(n_args + 3, char *); targs[0] = "sh"; targs[1] = "-"; targs[2] = xstrdup (shellname); @@ -382,8 +390,8 @@ static void prepare_pam_close_session (void) stderr); (void) kill (-pid_child, caught); - snprintf (kill_msg, sizeof kill_msg, _(" ...killed.\n")); - snprintf (wait_msg, sizeof wait_msg, _(" ...waiting for child to terminate.\n")); + SNPRINTF(kill_msg, _(" ...killed.\n")); + SNPRINTF(wait_msg, _(" ...waiting for child to terminate.\n")); /* Any signals other than SIGCHLD and SIGALRM will no longer have any effect, * so it's time to block all of them. */ @@ -430,6 +438,7 @@ static void prepare_pam_close_session (void) /* * usage - print command line syntax and exit */ +NORETURN static void usage (int status) { (void) @@ -501,7 +510,8 @@ static void check_perms_nopam (const struct passwd *pw) } if (strcmp (pw->pw_passwd, "") == 0) { - char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); + const char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); + if (prevent_no_auth == NULL) { prevent_no_auth = "superuser"; } @@ -577,7 +587,7 @@ static void check_perms_nopam (const struct passwd *pw) * The first character of an administrator defined method is an '@' * character. */ - if (pw_auth (password, name, PW_SU, (char *) 0) != 0) { + if (pw_auth (password, name, PW_SU, NULL) != 0) { SYSLOG (((pw->pw_uid != 0)? LOG_NOTICE : LOG_WARN, "Authentication failed for %s", name)); fprintf(stderr, _("%s: Authentication failure\n"), Prog); @@ -600,7 +610,7 @@ static void check_perms_nopam (const struct passwd *pw) * there is a "SU" entry in the /etc/porttime file denying access to * the account. */ - if (!isttytime (name, "SU", time ((time_t *) 0))) { + if (!isttytime (name, "SU", time (NULL))) { SYSLOG (((0 != pw->pw_uid) ? LOG_WARN : LOG_CRIT, "SU by %s to restricted account %s", caller_name, name)); @@ -615,14 +625,30 @@ static void check_perms_nopam (const struct passwd *pw) /* * check_perms - check permissions to switch to the user 'name' * - * In case of subsystem login, the user is first authenticated in the - * caller's root subsystem, and then in the user's target subsystem. + * The user is authenticated in all subsystems iterately. */ static /*@only@*/struct passwd * check_perms (void) +{ + struct passwd *pw = NULL; + + while (pw == NULL) + pw = do_check_perms(); + return pw; +} + +/* + * do_check_perms - check permissions to switch to the user 'name' + * + * The user is authenticated in current subsystem, if any. Returns + * NULL if permissions have to be checked in next subsystem, in + * which case the subsystem has already been entered. + */ +static /*@only@*/struct passwd * do_check_perms (void) { #ifdef USE_PAM - const char *tmp_name; - int ret; + int ret; + const char *tmp_name; + const void *item; #endif /* !USE_PAM */ /* * The password file entries for the user is gotten and the account @@ -642,7 +668,7 @@ static /*@only@*/struct passwd * check_perms (void) #ifdef USE_PAM check_perms_pam (pw); /* PAM authentication can request a change of account */ - ret = pam_get_item(pamh, PAM_USER, (const void **) &tmp_name); + ret = pam_get_item(pamh, PAM_USER, &item); if (ret != PAM_SUCCESS) { SYSLOG((LOG_ERR, "pam_get_item: internal PAM error\n")); (void) fprintf (stderr, @@ -651,12 +677,18 @@ static /*@only@*/struct passwd * check_perms (void) (void) pam_end (pamh, ret); su_failure (caller_tty, 0 == pw->pw_uid); } + tmp_name = item; if (strcmp (name, tmp_name) != 0) { SYSLOG ((LOG_INFO, "Change user from '%s' to '%s' as requested by PAM", name, tmp_name)); - strncpy (name, tmp_name, sizeof(name) - 1); - name[sizeof(name) - 1] = '\0'; + if (STRTCPY(name, tmp_name) == -1) { + fprintf (stderr, _("Overlong user name '%s'\n"), + tmp_name); + SYSLOG ((LOG_NOTICE, "Overlong user name '%s'", + tmp_name)); + su_failure (caller_tty, true); + } pw = xgetpwnam (name); if (NULL == pw) { (void) fprintf (stderr, @@ -684,7 +716,7 @@ static /*@only@*/struct passwd * check_perms (void) endpwent (); /* close the old password databases */ endspent (); pw_free (pw); - return check_perms (); /* authenticate in the subsystem */ + return NULL; /* authenticate in the subsystem */ } return pw; @@ -706,11 +738,6 @@ static void save_caller_context (char **argv) const char *password = NULL; #endif /* SU_ACCESS */ #endif /* !USE_PAM */ - /* - * Get the program name. The program name is used as a prefix to - * most error messages. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -752,7 +779,7 @@ static void save_caller_context (char **argv) (unsigned long) caller_uid)); su_failure (caller_tty, true); /* unknown target UID*/ } - STRFCPY (caller_name, pw->pw_name); + STRTCPY(caller_name, pw->pw_name); #ifndef USE_PAM #ifdef SU_ACCESS @@ -808,7 +835,7 @@ static void process_flags (int argc, char **argv) case 'm': case 'p': /* This will only have an effect if the target - * user do not have a restricted shell, or if + * user does not have a restricted shell, or if * su is called by root. */ change_environment = false; @@ -827,7 +854,7 @@ static void process_flags (int argc, char **argv) } if (optind < argc) { - STRFCPY (name, argv[optind++]); /* use this login id */ + STRTCPY(name, argv[optind++]); /* use this login id */ } if ('\0' == name[0]) { /* use default user */ struct passwd *root_pw = getpwnam ("root"); @@ -980,20 +1007,22 @@ int main (int argc, char **argv) int ret; #endif /* USE_PAM */ + check_fds (); + (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); save_caller_context (argv); - OPENLOG ("su"); + OPENLOG (Prog); process_flags (argc, argv); initenv (); #ifdef USE_PAM - ret = pam_start ("su", name, &conv, &pamh); + ret = pam_start (Prog, name, &conv, &pamh); if (PAM_SUCCESS != ret) { SYSLOG ((LOG_ERR, "pam_start: error %d", ret); fprintf (stderr, @@ -1002,9 +1031,9 @@ int main (int argc, char **argv) exit (1); } - ret = pam_set_item (pamh, PAM_TTY, (const void *) caller_tty); + ret = pam_set_item (pamh, PAM_TTY, caller_tty); if (PAM_SUCCESS == ret) { - ret = pam_set_item (pamh, PAM_RUSER, (const void *) caller_name); + ret = pam_set_item (pamh, PAM_RUSER, caller_name); } if (PAM_SUCCESS != ret) { SYSLOG ((LOG_ERR, "pam_set_item: %s", @@ -1017,7 +1046,7 @@ int main (int argc, char **argv) pw = check_perms (); - /* If the user do not want to change the environment, + /* If the user does not want to change the environment, * use the current SHELL. * (unless another shell is required by the command line) */ @@ -1050,13 +1079,11 @@ int main (int argc, char **argv) } sulog (caller_tty, true, caller_name, name); /* save SU information */ -#ifdef USE_SYSLOG if (getdef_bool ("SYSLOG_SU_ENAB")) { SYSLOG ((LOG_INFO, "+ %s %s:%s", caller_tty, ('\0' != caller_name[0]) ? caller_name : "???", ('\0' != name[0]) ? name : "???")); } -#endif #ifdef USE_PAM /* set primary group id and supplementary groups */ @@ -1135,7 +1162,7 @@ int main (int argc, char **argv) int fd = open ("/dev/tty", O_RDWR); if (fd >= 0) { - err = ioctl (fd, TIOCNOTTY, (char *) 0); + err = ioctl (fd, TIOCNOTTY, (char *) NULL); (void) close (fd); } else if (ENXIO == errno) { /* There are no controlling terminal already */ @@ -1178,7 +1205,7 @@ int main (int argc, char **argv) cp = Basename (shellstr); } - arg0 = xmalloc (strlen (cp) + 2); + arg0 = XMALLOC(strlen(cp) + 2, char); arg0[0] = '-'; strcpy (arg0 + 1, cp); cp = arg0; @@ -1199,7 +1226,7 @@ int main (int argc, char **argv) * Use the shell and create an argv * with the rest of the command line included. */ - argv[-1] = cp; + argv[-1] = const_cast(char *, cp); execve_shell (shellstr, &argv[-1], environ); err = errno; (void) fprintf (stderr, diff --git a/src/suauth.c b/src/suauth.c index 2641d33..4d63190 100644 --- a/src/suauth.c +++ b/src/suauth.c @@ -68,8 +68,9 @@ int check_su_auth (const char *actual_id, while (fgets (temp, sizeof (temp), authfile_fd) != NULL) { lines++; + endline = strlen(temp) - 1; - if (temp[endline = strlen (temp) - 1] != '\n') { + if (temp[0] == '\0' || temp[endline] != '\n') { SYSLOG ((LOG_ERR, "%s, line %d: line too long or missing newline", SUAUTHFILE, lines)); @@ -91,9 +92,9 @@ int check_su_auth (const char *actual_id, continue; } if (!(to_users = strtok (temp + posn, field)) - || !(from_users = strtok ((char *) NULL, field)) - || !(action = strtok ((char *) NULL, field)) - || strtok ((char *) NULL, field)) { + || !(from_users = strtok (NULL, field)) + || !(action = strtok (NULL, field)) + || strtok (NULL, field)) { SYSLOG ((LOG_ERR, "%s, line %d. Bad number of fields.\n", SUAUTHFILE, lines)); diff --git a/src/sulogin.c b/src/sulogin.c index 2c5e094..2097174 100644 --- a/src/sulogin.c +++ b/src/sulogin.c @@ -16,6 +16,11 @@ #include #include #include +#include + +#include "agetpass.h" +#include "alloc.h" +#include "attr.h" #include "defines.h" #include "getdef.h" #include "prototypes.h" @@ -24,113 +29,76 @@ #include "exitcodes.h" #include "shadowlog.h" + /* * Global variables */ -const char *Prog; - -static char name[BUFSIZ]; -static char pass[BUFSIZ]; +static const char Prog[] = "sulogin"; -static struct passwd pwent; extern char **newenvp; -extern size_t newenvc; - -extern char **environ; #ifndef ALARM #define ALARM 60 #endif -/* local function prototypes */ + static void catch_signals (int); +static int pw_entry(const char *name, struct passwd *pwent); -static void catch_signals (unused int sig) + +static void catch_signals (MAYBE_UNUSED int sig) { _exit (1); } -/* - * syslogd is usually not running at the time when sulogin is typically - * called, cluttering the screen with unnecessary messages. Suggested by - * Ivan Nejgebauer . --marekm - */ -#undef USE_SYSLOG - /*ARGSUSED*/ int main (int argc, char **argv) +int +main(int argc, char *argv[]) { + int err = 0; + char **envp = environ; + TERMIO termio; + struct passwd pwent = {}; + bool done; #ifndef USE_PAM - const char *env; -#endif /* !USE_PAM */ - char **envp = environ; - TERMIO termio; - int err = 0; - -#ifdef USE_TERMIO - ioctl (0, TCGETA, &termio); - termio.c_iflag |= (ICRNL | IXON); - termio.c_oflag |= (OPOST | ONLCR); - termio.c_cflag |= (CREAD); - termio.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK); - ioctl (0, TCSETAF, &termio); + const char *env; #endif -#ifdef USE_TERMIOS + + tcgetattr (0, &termio); termio.c_iflag |= (ICRNL | IXON); termio.c_oflag |= (CREAD); termio.c_lflag |= (ECHO | ECHOE | ECHOK | ICANON | ISIG); tcsetattr (0, TCSANOW, &termio); -#endif - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); -#ifdef USE_SYSLOG - OPENLOG ("sulogin"); -#endif - initenv (); + initenv(); if (argc > 1) { - close (0); - close (1); - close (2); - - if (open (argv[1], O_RDWR) >= 0) { - dup (0); - dup (0); - } else { -#ifdef USE_SYSLOG - SYSLOG (LOG_WARN, "cannot open %s\n", argv[1]); - closelog (); -#endif - exit (1); - } + close(0); + close(1); + close(2); + + if (open(argv[1], O_RDWR) == -1) + exit(1); + dup(0); + dup(0); } if (access (PASSWD_FILE, F_OK) == -1) { /* must be a password file! */ (void) puts (_("No password file")); -#ifdef USE_SYSLOG - SYSLOG (LOG_WARN, "No password file\n"); - closelog (); -#endif exit (1); } #if !defined(DEBUG) && defined(SULOGIN_ONLY_INIT) if (getppid () != 1) { /* parent must be INIT */ -#ifdef USE_SYSLOG - SYSLOG (LOG_WARN, "Pid == %d, not 1\n", getppid ()); - closelog (); -#endif exit (1); } #endif if ((isatty (0) == 0) || (isatty (1) == 0) || (isatty (2) == 0)) { -#ifdef USE_SYSLOG - closelog (); -#endif exit (1); /* must be a terminal */ } /* If we were init, we need to start a new session */ @@ -156,24 +124,17 @@ static void catch_signals (unused int sig) } #endif /* !USE_PAM */ - (void) strcpy (name, "root"); /* KLUDGE!!! */ - (void) signal (SIGALRM, catch_signals); /* exit if the timer expires */ (void) alarm (ALARM); /* only wait so long ... */ - while (true) { /* repeatedly get login/password pairs */ - char *cp; - pw_entry (name, &pwent); /* get entry from password file */ - if (pwent.pw_name == (char *) 0) { + do { /* repeatedly get login/password pairs */ + char *pass; + if (pw_entry("root", &pwent) == -1) { /* get entry from password file */ /* * Fail secure */ - (void) puts (_("No password entry for 'root'")); -#ifdef USE_SYSLOG - SYSLOG (LOG_WARN, "No password entry for 'root'\n"); - closelog (); -#endif - exit (1); + (void) puts(_("No password entry for 'root'")); + exit(1); } /* @@ -182,7 +143,7 @@ static void catch_signals (unused int sig) */ /* get a password for root */ - cp = getpass (_( + pass = agetpass (_( "\n" "Type control-d to proceed with normal startup,\n" "(or give root password for system maintenance):")); @@ -192,46 +153,65 @@ static void catch_signals (unused int sig) * it will work with standard getpass() (no NULL on EOF). * --marekm */ - if ((NULL == cp) || ('\0' == *cp)) { -#ifdef USE_SYSLOG - SYSLOG (LOG_INFO, "Normal startup\n"); - closelog (); -#endif + if ((NULL == pass) || ('\0' == *pass)) { + erase_pass (pass); (void) puts (""); #ifdef TELINIT - execl (PATH_TELINIT, "telinit", RUNLEVEL, (char *) 0); + execl (PATH_TELINIT, "telinit", RUNLEVEL, (char *) NULL); #endif exit (0); - } else { - STRFCPY (pass, cp); - strzero (cp); - } - if (valid (pass, &pwent)) { /* check encrypted passwords ... */ - break; /* ... encrypted passwords matched */ } -#ifdef USE_SYSLOG - SYSLOG (LOG_WARN, "Incorrect root password\n"); -#endif - sleep (2); - (void) puts (_("Login incorrect")); - } - memzero (pass, sizeof pass); + done = valid(pass, &pwent); + erase_pass (pass); + + if (!done) { /* check encrypted passwords ... */ + /* ... encrypted passwords did not match */ + sleep (2); + (void) puts (_("Login incorrect")); + } + } while (!done); (void) alarm (0); (void) signal (SIGALRM, SIG_DFL); environ = newenvp; /* make new environment active */ (void) puts (_("Entering System Maintenance Mode")); -#ifdef USE_SYSLOG - SYSLOG (LOG_INFO, "System Maintenance Mode\n"); -#endif -#ifdef USE_SYSLOG - closelog (); -#endif /* exec the shell finally. */ - err = shell (pwent.pw_shell, (char *) 0, environ); + err = shell (pwent.pw_shell, NULL, environ); return ((err == ENOENT) ? E_CMD_NOTFOUND : E_CMD_NOEXEC); } + +static int +pw_entry(const char *name, struct passwd *pwent) +{ + struct spwd *spwd; + struct passwd *passwd; + + if (!(passwd = getpwnam(name))) /* local, no need for xgetpwnam */ + return -1; + + free(pwent->pw_name); + pwent->pw_name = xstrdup(passwd->pw_name); + pwent->pw_uid = passwd->pw_uid; + pwent->pw_gid = passwd->pw_gid; + free(pwent->pw_gecos); + pwent->pw_gecos = xstrdup(passwd->pw_gecos); + free(pwent->pw_dir); + pwent->pw_dir = xstrdup(passwd->pw_dir); + free(pwent->pw_shell); + pwent->pw_shell = xstrdup(passwd->pw_shell); +#if !defined(AUTOSHADOW) + /* local, no need for xgetspnam */ + if ((spwd = getspnam(name))) { + free(pwent->pw_passwd); + pwent->pw_passwd = xstrdup(spwd->sp_pwdp); + return 0; + } +#endif + free(pwent->pw_passwd); + pwent->pw_passwd = xstrdup(passwd->pw_passwd); + return 0; +} diff --git a/src/useradd.c b/src/useradd.c index 7ea0a9c..347334a 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -17,9 +17,12 @@ #include #include #include +#ifdef ENABLE_LASTLOG #include +#endif /* ENABLE_LASTLOG */ #include #include +#include #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" @@ -32,11 +35,15 @@ #include #include #include + +#include "alloc.h" +#include "atoi/str2i.h" #include "chkname.h" #include "defines.h" #include "faillog.h" #include "getdef.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -57,10 +64,15 @@ #include "tcbfuncs.h" #endif #include "shadowlog.h" +#include "string/sprintf.h" + #ifndef SKEL_DIR #define SKEL_DIR "/etc/skel" #endif +#ifndef USRSKELDIR +#define USRSKELDIR "/usr/etc/skel" +#endif #ifndef USER_DEFAULTS_FILE #define USER_DEFAULTS_FILE "/etc/default/useradd" #define NEW_USER_FILE "/etc/default/nuaddXXXXXX" @@ -74,16 +86,18 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "useradd"; /* * These defaults are used if there is no defaults file. */ static gid_t def_group = 1000; +static const char *def_groups = ""; static const char *def_gname = "other"; static const char *def_home = "/home"; static const char *def_shell = "/bin/bash"; static const char *def_template = SKEL_DIR; +static const char *def_usrtemplate = USRSKELDIR; static const char *def_create_mail_spool = "yes"; static const char *def_log_init = "yes"; @@ -106,6 +120,7 @@ static const char *prefix_user_home = NULL; #ifdef WITH_SELINUX static /*@notnull@*/const char *user_selinux = ""; +static const char *user_selinux_range = NULL; #endif /* WITH_SELINUX */ static long user_expire = -1; @@ -183,25 +198,26 @@ static bool home_added = false; #endif /* ENABLE_SUBIDS */ #define DGROUP "GROUP=" +#define DGROUPS "GROUPS=" #define DHOME "HOME=" #define DSHELL "SHELL=" #define DINACT "INACTIVE=" #define DEXPIRE "EXPIRE=" #define DSKEL "SKEL=" +#define DUSRSKEL "USRSKEL=" #define DCREATE_MAIL_SPOOL "CREATE_MAIL_SPOOL=" #define DLOG_INIT "LOG_INIT=" /* local function prototypes */ -static void fail_exit (int); +NORETURN static void fail_exit (int); static void get_defaults (void); static void show_defaults (void); static int set_defaults (void); static int get_groups (char *); static struct group * get_local_group (char * grp_name); -static void usage (int status); +NORETURN static void usage (int status); static void new_pwent (struct passwd *); -static long scale_age (long); static void new_spent (struct spwd *); static void grp_update (void); @@ -213,118 +229,97 @@ static void open_files (void); static void open_group_files (void); static void open_shadow (void); static void faillog_reset (uid_t); +#ifdef ENABLE_LASTLOG static void lastlog_reset (uid_t); +#endif /* ENABLE_LASTLOG */ static void tallylog_reset (const char *); static void usr_update (unsigned long subuid_count, unsigned long subgid_count); static void create_home (void); static void create_mail (void); static void check_uid_range(int rflg, uid_t user_id); +static FILE *fmkstemp(char *template); + + /* * fail_exit - undo as much as possible */ static void fail_exit (int code) { - if (home_added) { - if (rmdir (prefix_user_home) != 0) { - fprintf (stderr, - _("%s: %s was created, but could not be removed\n"), - Prog, prefix_user_home); - SYSLOG ((LOG_ERR, "failed to remove %s", prefix_user_home)); - } + if (home_added && rmdir(prefix_user_home) != 0) { + fprintf(stderr, + _("%s: %s was created, but could not be removed\n"), + Prog, prefix_user_home); + SYSLOG((LOG_ERR, "failed to remove %s", prefix_user_home)); } - if (spw_locked) { - if (spw_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); + if (spw_locked && spw_unlock() == 0) { + fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname()); + SYSLOG((LOG_ERR, "failed to unlock %s", spw_dbname())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking shadow file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); + audit_logger(AUDIT_ADD_USER, Prog, "unlocking shadow file", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - /* continue */ - } + /* continue */ } - if (pw_locked) { - if (pw_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); + if (pw_locked && pw_unlock() == 0) { + fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname()); + SYSLOG((LOG_ERR, "failed to unlock %s", pw_dbname())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking passwd file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); + audit_logger(AUDIT_ADD_USER, Prog, "unlocking passwd file", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - /* continue */ - } + /* continue */ } - if (gr_locked) { - if (gr_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); + if (gr_locked && gr_unlock() == 0) { + fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname()); + SYSLOG((LOG_ERR, "failed to unlock %s", gr_dbname())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking group file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); + audit_logger(AUDIT_ADD_USER, Prog, "unlocking group file", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - /* continue */ - } + /* continue */ } -#ifdef SHADOWGRP - if (sgr_locked) { - if (sgr_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking gshadow file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif - /* continue */ - } +#ifdef SHADOWGRP + if (sgr_locked && sgr_unlock() == 0) { + fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname()); + SYSLOG((LOG_ERR, "failed to unlock %s", sgr_dbname())); +# ifdef WITH_AUDIT + audit_logger(AUDIT_ADD_USER, Prog, "unlocking gshadow file", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); +# endif + /* continue */ } #endif #ifdef ENABLE_SUBIDS - if (sub_uid_locked) { - if (sub_uid_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking subordinate user file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif - /* continue */ - } + if (sub_uid_locked && sub_uid_unlock() == 0) { + fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname()); + SYSLOG((LOG_ERR, "failed to unlock %s", sub_uid_dbname())); +# ifdef WITH_AUDIT + audit_logger(AUDIT_ADD_USER, Prog, + "unlocking subordinate user file", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); +# endif + /* continue */ } - if (sub_gid_locked) { - if (sub_gid_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking subordinate group file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif - /* continue */ - } + if (sub_gid_locked && sub_gid_unlock() == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname()); + SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname())); +# ifdef WITH_AUDIT + audit_logger(AUDIT_ADD_USER, Prog, + "unlocking subordinate group file", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); +# endif + /* continue */ } -#endif /* ENABLE_SUBIDS */ +#endif /* ENABLE_SUBIDS */ #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "adding user", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); + audit_logger(AUDIT_ADD_USER, Prog, "adding user", + user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - SYSLOG ((LOG_INFO, "failed adding user '%s', exit code: %d", user_name, code)); - exit (code); + SYSLOG((LOG_INFO, "failed adding user '%s', exit code: %d", user_name, code)); + exit(code); } #define MATCH(x,y) (strncmp((x),(y),strlen(y)) == 0) @@ -338,21 +333,15 @@ static void fail_exit (int code) */ static void get_defaults (void) { - FILE *fp; - char *default_file = USER_DEFAULTS_FILE; - char buf[1024]; - char *cp; + FILE *fp; + char *default_file = USER_DEFAULTS_FILE; + char buf[1024]; + char *cp; + const char *ccp; if (prefix[0]) { - size_t len; - int wlen; - - len = strlen(prefix) + strlen(USER_DEFAULTS_FILE) + 2; - default_file = malloc(len); - if (default_file == NULL) - return; - wlen = snprintf(default_file, len, "%s/%s", prefix, USER_DEFAULTS_FILE); - assert (wlen == (int) len -1); + if (asprintf(&default_file, "%s/%s", prefix, USER_DEFAULTS_FILE) == -1) + return; } /* @@ -368,7 +357,7 @@ static void get_defaults (void) * Read the file a line at a time. Only the lines that have relevant * values are used, everything else can be ignored. */ - while (fgets (buf, (int) sizeof buf, fp) == buf) { + while (fgets (buf, sizeof buf, fp) == buf) { cp = strrchr (buf, '\n'); if (NULL != cp) { *cp = '\0'; @@ -399,29 +388,42 @@ static void get_defaults (void) } } + ccp = cp; + + if (MATCH (buf, DGROUPS)) { + if (get_groups (cp) != 0) { + fprintf (stderr, + _("%s: the '%s' configuration in %s has an invalid group, ignoring the bad group\n"), + Prog, DGROUPS, default_file); + } + if (user_groups[0] != NULL) { + do_grp_update = true; + def_groups = xstrdup (cp); + } + } /* * Default HOME filesystem */ else if (MATCH (buf, DHOME)) { - def_home = xstrdup (cp); + def_home = xstrdup(ccp); } /* * Default Login Shell command */ else if (MATCH (buf, DSHELL)) { - def_shell = xstrdup (cp); + def_shell = xstrdup(ccp); } /* * Default Password Inactive value */ else if (MATCH (buf, DINACT)) { - if ( (getlong (cp, &def_inactive) == 0) + if ( (str2sl(&def_inactive, ccp) == -1) || (def_inactive < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), - Prog, cp); + Prog, ccp); fprintf (stderr, _("%s: the %s configuration in %s will be ignored\n"), Prog, DINACT, default_file); @@ -433,52 +435,60 @@ static void get_defaults (void) * Default account expiration date */ else if (MATCH (buf, DEXPIRE)) { - def_expire = xstrdup (cp); + def_expire = xstrdup(ccp); } /* * Default Skeleton information */ else if (MATCH (buf, DSKEL)) { - if ('\0' == *cp) { - cp = SKEL_DIR; /* XXX warning: const */ - } + if ('\0' == *ccp) + ccp = SKEL_DIR; if (prefix[0]) { - size_t len; - int wlen; - char* _def_template; /* avoid const warning */ - - len = strlen(prefix) + strlen(cp) + 2; - _def_template = xmalloc(len); - wlen = snprintf(_def_template, len, "%s/%s", prefix, cp); - assert (wlen == (int) len -1); - def_template = _def_template; - } - else { - def_template = xstrdup (cp); + char *dt; + + xasprintf(&dt, "%s/%s", prefix, ccp); + def_template = dt; + } else { + def_template = xstrdup(ccp); } } + /* + * Default Usr Skeleton information + */ + else if (MATCH (buf, DUSRSKEL)) { + if ('\0' == *ccp) + ccp = USRSKELDIR; + + if (prefix[0]) { + char *dut; + + xasprintf(&dut, "%s/%s", prefix, ccp); + def_usrtemplate = dut; + } else { + def_usrtemplate = xstrdup(ccp); + } + } /* * Create by default user mail spool or not ? */ else if (MATCH (buf, DCREATE_MAIL_SPOOL)) { - if (*cp == '\0') { - cp = "no"; /* XXX warning: const */ - } + if (*ccp == '\0') + ccp = "no"; - def_create_mail_spool = xstrdup (cp); + def_create_mail_spool = xstrdup(ccp); } /* * By default do we add the user to the lastlog and faillog databases ? */ else if (MATCH (buf, DLOG_INIT)) { - if (*cp == '\0') { - cp = def_log_init; /* XXX warning: const */ - } - def_log_init = xstrdup (cp); + if (*ccp == '\0') + ccp = def_log_init; + + def_log_init = xstrdup(ccp); } } (void) fclose (fp); @@ -497,11 +507,13 @@ static void get_defaults (void) static void show_defaults (void) { printf ("GROUP=%u\n", (unsigned int) def_group); + printf ("GROUPS=%s\n", def_groups); printf ("HOME=%s\n", def_home); printf ("INACTIVE=%ld\n", def_inactive); printf ("EXPIRE=%s\n", def_expire); printf ("SHELL=%s\n", def_shell); printf ("SKEL=%s\n", def_template); + printf ("USRSKEL=%s\n", def_usrtemplate); printf ("CREATE_MAIL_SPOOL=%s\n", def_create_mail_spool); printf ("LOG_INIT=%s\n", def_log_init); } @@ -515,49 +527,41 @@ static void show_defaults (void) */ static int set_defaults (void) { - FILE *ifp; - FILE *ofp; - char buf[1024]; - char *new_file = NULL; - char *new_file_dup = NULL; - char *default_file = USER_DEFAULTS_FILE; - char *cp; - int ofd; - int wlen; - bool out_group = false; - bool out_home = false; - bool out_inactive = false; - bool out_expire = false; - bool out_shell = false; - bool out_skel = false; - bool out_create_mail_spool = false; - bool out_log_init = false; - size_t len; - int ret = -1; - - - len = strlen(prefix) + strlen(NEW_USER_FILE) + 2; - new_file = malloc(len); - if (new_file == NULL) { - fprintf (stderr, - _("%s: cannot create new defaults file: %s\n"), - Prog, strerror(errno)); + int ret = -1; + bool out_group = false; + bool out_groups = false; + bool out_home = false; + bool out_inactive = false; + bool out_expire = false; + bool out_shell = false; + bool out_skel = false; + bool out_usrskel = false; + bool out_create_mail_spool = false; + bool out_log_init = false; + char buf[1024]; + char *new_file = NULL; + char *new_file_dup = NULL; + char *default_file = USER_DEFAULTS_FILE; + char *cp; + FILE *ifp; + FILE *ofp; + + + if (asprintf(&new_file, "%s%s%s", prefix, prefix[0]?"/":"", NEW_USER_FILE) == -1) + { + fprintf(stderr, _("%s: cannot create new defaults file: %s\n"), + Prog, strerror(errno)); return -1; } - wlen = snprintf(new_file, len, "%s%s%s", prefix, prefix[0]?"/":"", NEW_USER_FILE); - assert (wlen <= (int) len -1); if (prefix[0]) { - len = strlen(prefix) + strlen(USER_DEFAULTS_FILE) + 2; - default_file = malloc(len); - if (default_file == NULL) { - fprintf (stderr, - _("%s: cannot create new defaults file: %s\n"), - Prog, strerror(errno)); - goto setdef_err; + if (asprintf(&default_file, "%s/%s", prefix, USER_DEFAULTS_FILE) == -1) + { + fprintf(stderr, + _("%s: cannot create new defaults file: %s\n"), + Prog, strerror(errno)); + goto err_free_new; } - wlen = snprintf(default_file, len, "%s/%s", prefix, USER_DEFAULTS_FILE); - assert (wlen == (int) len -1); } new_file_dup = strdup(new_file); @@ -565,36 +569,27 @@ static int set_defaults (void) fprintf (stderr, _("%s: cannot create directory for defaults file\n"), Prog); - goto setdef_err; + goto err_free_def; } ret = mkdir(dirname(new_file_dup), 0755); + free(new_file_dup); if (-1 == ret && EEXIST != errno) { fprintf (stderr, _("%s: cannot create directory for defaults file\n"), Prog); - free(new_file_dup); - goto setdef_err; + goto err_free_def; } - free(new_file_dup); /* * Create a temporary file to copy the new output to. */ - ofd = mkstemp (new_file); - if (-1 == ofd) { - fprintf (stderr, - _("%s: cannot create new defaults file\n"), - Prog); - goto setdef_err; - } - - ofp = fdopen (ofd, "w"); + ofp = fmkstemp(new_file); if (NULL == ofp) { fprintf (stderr, _("%s: cannot open new defaults file\n"), Prog); - goto setdef_err; + goto err_free_def; } /* @@ -608,7 +603,7 @@ static int set_defaults (void) goto skip; } - while (fgets (buf, (int) sizeof buf, ifp) == buf) { + while (fgets (buf, sizeof buf, ifp) == buf) { cp = strrchr (buf, '\n'); if (NULL != cp) { *cp = '\0'; @@ -620,14 +615,18 @@ static int set_defaults (void) fprintf (stderr, _("%s: line too long in %s: %s..."), Prog, default_file, buf); - (void) fclose (ifp); - goto setdef_err; + fclose(ifp); + fclose(ofp); + goto err_free_def; } } if (!out_group && MATCH (buf, DGROUP)) { fprintf (ofp, DGROUP "%u\n", (unsigned int) def_group); out_group = true; + } else if (!out_groups && MATCH (buf, DGROUPS)) { + fprintf (ofp, DGROUPS "%s\n", def_groups); + out_groups = true; } else if (!out_home && MATCH (buf, DHOME)) { fprintf (ofp, DHOME "%s\n", def_home); out_home = true; @@ -643,6 +642,9 @@ static int set_defaults (void) } else if (!out_skel && MATCH (buf, DSKEL)) { fprintf (ofp, DSKEL "%s\n", def_template); out_skel = true; + } else if (!out_usrskel && MATCH (buf, DUSRSKEL)) { + fprintf (ofp, DUSRSKEL "%s\n", def_usrtemplate); + out_usrskel = true; } else if (!out_create_mail_spool && MATCH (buf, DCREATE_MAIL_SPOOL)) { fprintf (ofp, @@ -668,6 +670,8 @@ static int set_defaults (void) */ if (!out_group) fprintf (ofp, DGROUP "%u\n", (unsigned int) def_group); + if (!out_groups) + fprintf (ofp, DGROUPS "%s\n", def_groups); if (!out_home) fprintf (ofp, DHOME "%s\n", def_home); if (!out_inactive) @@ -678,6 +682,8 @@ static int set_defaults (void) fprintf (ofp, DSHELL "%s\n", def_shell); if (!out_skel) fprintf (ofp, DSKEL "%s\n", def_template); + if (!out_usrskel) + fprintf (ofp, DUSRSKEL "%s\n", def_usrtemplate); if (!out_create_mail_spool) fprintf (ofp, DCREATE_MAIL_SPOOL "%s\n", def_create_mail_spool); @@ -690,16 +696,16 @@ static int set_defaults (void) (void) fflush (ofp); if ( (ferror (ofp) != 0) || (fsync (fileno (ofp)) != 0) - || (fclose (ofp) != 0)) { + || (fclose (ofp) != 0)) + { unlink (new_file); - goto setdef_err; + goto err_free_def; } /* * Rename the current default file to its backup name. */ - wlen = snprintf (buf, sizeof buf, "%s-", default_file); - assert (wlen < (int) sizeof buf); + assert(SNPRINTF(buf, "%s-", default_file) != -1); unlink (buf); if ((link (default_file, buf) != 0) && (ENOENT != errno)) { int err = errno; @@ -707,7 +713,7 @@ static int set_defaults (void) _("%s: Cannot create backup file (%s): %s\n"), Prog, buf, strerror (err)); unlink (new_file); - goto setdef_err; + goto err_free_def; } /* @@ -718,7 +724,7 @@ static int set_defaults (void) fprintf (stderr, _("%s: rename: %s: %s\n"), Prog, new_file, strerror (err)); - goto setdef_err; + goto err_free_def; } #ifdef WITH_AUDIT audit_logger (AUDIT_USYS_CONFIG, Prog, @@ -733,11 +739,12 @@ static int set_defaults (void) def_inactive, def_expire, def_template, def_create_mail_spool, def_log_init)); ret = 0; - setdef_err: - free(new_file); - if (prefix[0]) { + +err_free_def: + if (prefix[0]) free(default_file); - } +err_free_new: + free(new_file); return ret; } @@ -807,20 +814,6 @@ static int get_groups (char *list) continue; } -#ifdef USE_NIS - /* - * Don't add this group if they are an NIS group. Tell - * the user to go to the server for this group. - */ - if (__isgrNIS ()) { - fprintf (stderr, - _("%s: group '%s' is a NIS group.\n"), - Prog, grp->gr_name); - gr_free(grp); - continue; - } -#endif - if (ngroups == sys_ngroups) { fprintf (stderr, _("%s: too many groups specified (max %d).\n"), @@ -839,7 +832,7 @@ static int get_groups (char *list) close_group_files (); unlock_group_files (); - user_groups[ngroups] = (char *) 0; + user_groups[ngroups] = NULL; /* * Any errors in finding group names are fatal @@ -860,17 +853,17 @@ static int get_groups (char *list) */ static struct group * get_local_group(char * grp_name) { + char *end; const struct group *grp; struct group *result_grp = NULL; - long long int gid; - char *endptr; + long long gid; - gid = strtoll (grp_name, &endptr, 10); + gid = strtoll(grp_name, &end, 10); if ( ('\0' != *grp_name) - && ('\0' == *endptr) + && ('\0' == *end) && (ERANGE != errno) && (gid == (gid_t)gid)) { - grp = gr_locate_gid ((gid_t) gid); + grp = gr_locate_gid (gid); } else { grp = gr_locate(grp_name); @@ -923,8 +916,10 @@ static void usage (int status) (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); (void) fputs (_(" -k, --skel SKEL_DIR use this alternative skeleton directory\n"), usageout); (void) fputs (_(" -K, --key KEY=VALUE override /etc/login.defs defaults\n"), usageout); +#ifdef ENABLE_LASTLOG (void) fputs (_(" -l, --no-log-init do not add the user to the lastlog and\n" " faillog databases\n"), usageout); +#endif /* ENABLE_LASTLOG */ (void) fputs (_(" -m, --create-home create the user's home directory\n"), usageout); (void) fputs (_(" -M, --no-create-home do not create the user's home directory\n"), usageout); (void) fputs (_(" -N, --no-user-group do not create a group with the same name as\n" @@ -940,6 +935,7 @@ static void usage (int status) (void) fputs (_(" -U, --user-group create a group with the same name as the user\n"), usageout); #ifdef WITH_SELINUX (void) fputs (_(" -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping\n"), usageout); + (void) fputs (_(" --selinux-range SERANGE use a specific MLS range for the SELinux user mapping\n"), usageout); #endif /* WITH_SELINUX */ (void) fputs ("\n", usageout); exit (status); @@ -968,15 +964,6 @@ static void new_pwent (struct passwd *pwent) pwent->pw_shell = (char *) user_shell; } -static long scale_age (long x) -{ - if (x <= 0) { - return x; - } - - return x * (DAY / SCALE); -} - /* * new_spent - initialize the values in a shadow password file entry * @@ -988,17 +975,17 @@ static void new_spent (struct spwd *spent) memzero (spent, sizeof *spent); spent->sp_namp = (char *) user_name; spent->sp_pwdp = (char *) user_pass; - spent->sp_lstchg = (long) gettime () / SCALE; + spent->sp_lstchg = gettime () / DAY; if (0 == spent->sp_lstchg) { /* Better disable aging than requiring a password change */ spent->sp_lstchg = -1; } if (!rflg) { - spent->sp_min = scale_age (getdef_num ("PASS_MIN_DAYS", -1)); - spent->sp_max = scale_age (getdef_num ("PASS_MAX_DAYS", -1)); - spent->sp_warn = scale_age (getdef_num ("PASS_WARN_AGE", -1)); - spent->sp_inact = scale_age (def_inactive); - spent->sp_expire = scale_age (user_expire); + spent->sp_min = getdef_num ("PASS_MIN_DAYS", -1); + spent->sp_max = getdef_num ("PASS_MAX_DAYS", -1); + spent->sp_warn = getdef_num ("PASS_WARN_AGE", -1); + spent->sp_inact = def_inactive; + spent->sp_expire = user_expire; } else { spent->sp_min = -1; spent->sp_max = -1; @@ -1223,6 +1210,7 @@ static void process_flags (int argc, char **argv) {"user-group", no_argument, NULL, 'U'}, #ifdef WITH_SELINUX {"selinux-user", required_argument, NULL, 'Z'}, + {"selinux-range", required_argument, NULL, 202}, #endif /* WITH_SELINUX */ {NULL, 0, NULL, '\0'} }; @@ -1310,7 +1298,7 @@ static void process_flags (int argc, char **argv) eflg = true; break; case 'f': - if ( (getlong (optarg, &def_inactive) == 0) + if ( (str2sl(&def_inactive, optarg) == -1) || (def_inactive < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -1382,7 +1370,7 @@ static void process_flags (int argc, char **argv) /* terminate name, point to value */ *cp = '\0'; cp++; - if (putdef_str (optarg, cp) < 0) { + if (putdef_str (optarg, cp, NULL) < 0) { exit (E_BAD_ARG); } break; @@ -1442,7 +1430,7 @@ static void process_flags (int argc, char **argv) sflg = true; break; case 'u': - if ( (get_uid (optarg, &user_id) == 0) + if ( (get_uid(optarg, &user_id) == -1) || (user_id == (gid_t)-1)) { fprintf (stderr, _("%s: invalid user ID '%s'\n"), @@ -1472,6 +1460,9 @@ static void process_flags (int argc, char **argv) exit (E_BAD_ARG); } break; + case 202: + user_selinux_range = optarg; + break; #endif /* WITH_SELINUX */ default: usage (E_USAGE); @@ -1519,6 +1510,14 @@ static void process_flags (int argc, char **argv) Prog, "-m", "-M"); usage (E_USAGE); } +#ifdef WITH_SELINUX + if (user_selinux_range && !Zflg) { + fprintf (stderr, + _("%s: %s flag is only allowed with the %s flag\n"), + Prog, "--selinux-range", "--selinux-user"); + usage (E_USAGE); + } +#endif /* WITH_SELINUX */ /* * Either -D or username is required. Defaults can be set with -D @@ -1551,26 +1550,17 @@ static void process_flags (int argc, char **argv) exit (E_BAD_ARG); } if (!dflg) { - char *uh; - size_t len = strlen (def_home) + strlen (user_name) + 2; - int wlen; - - uh = xmalloc (len); - wlen = snprintf (uh, len, "%s/%s", def_home, user_name); - assert (wlen == (int) len -1); + char *uh; + xasprintf(&uh, "%s/%s", def_home, user_name); user_home = uh; } if (prefix[0]) { - size_t len = strlen(prefix) + strlen(user_home) + 2; - int wlen; - char* _prefix_user_home; /* to avoid const warning */ - _prefix_user_home = xmalloc(len); - wlen = snprintf(_prefix_user_home, len, "%s/%s", prefix, user_home); - assert (wlen == (int) len -1); - prefix_user_home = _prefix_user_home; - } - else { + char *puh; /* to avoid const warning */ + + xasprintf(&puh, "%s/%s", prefix, user_home); + prefix_user_home = puh; + } else { prefix_user_home = user_home; } } @@ -1716,23 +1706,25 @@ static void close_files (void) */ static void close_group_files (void) { - if (do_grp_update) { - if (gr_close () == 0) { - fprintf (stderr, - _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); - SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (E_GRP_UPDATE); - } + if (!do_grp_update) + return; + + if (gr_close() == 0) { + fprintf(stderr, + _("%s: failure while writing changes to %s\n"), + Prog, gr_dbname()); + SYSLOG((LOG_ERR, "failure while writing changes to %s", gr_dbname())); + fail_exit(E_GRP_UPDATE); + } #ifdef SHADOWGRP - if (is_shadow_grp && (sgr_close () == 0)) { - fprintf (stderr, - _("%s: failure while writing changes to %s\n"), - Prog, sgr_dbname ()); - SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (E_GRP_UPDATE); - } -#endif /* SHADOWGRP */ + if (is_shadow_grp && sgr_close() == 0) { + fprintf(stderr, + _("%s: failure while writing changes to %s\n"), + Prog, sgr_dbname()); + SYSLOG((LOG_ERR, "failure while writing changes to %s", sgr_dbname())); + fail_exit(E_GRP_UPDATE); } +#endif /* SHADOWGRP */ } /* @@ -2013,14 +2005,14 @@ static void faillog_reset (uid_t uid) return; } if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write (fd, &fl, sizeof (fl)) != (ssize_t) sizeof (fl)) + || (write_full(fd, &fl, sizeof (fl)) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to reset the faillog entry of UID %lu: %s\n"), Prog, (unsigned long) uid, strerror (errno)); SYSLOG ((LOG_WARN, "failed to reset the faillog entry of UID %lu", (unsigned long) uid)); } - if (close (fd) != 0) { + if (close (fd) != 0 && errno != EINTR) { fprintf (stderr, _("%s: failed to close the faillog file for UID %lu: %s\n"), Prog, (unsigned long) uid, strerror (errno)); @@ -2028,6 +2020,7 @@ static void faillog_reset (uid_t uid) } } +#ifdef ENABLE_LASTLOG static void lastlog_reset (uid_t uid) { struct lastlog ll; @@ -2040,7 +2033,7 @@ static void lastlog_reset (uid_t uid) return; } - max_uid = (uid_t) getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL); + max_uid = getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL); if (uid > max_uid) { /* do not touch lastlog for large uids */ return; @@ -2057,7 +2050,7 @@ static void lastlog_reset (uid_t uid) return; } if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll)) + || (write_full (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll)) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to reset the lastlog entry of UID %lu: %s\n"), @@ -2065,7 +2058,7 @@ static void lastlog_reset (uid_t uid) SYSLOG ((LOG_WARN, "failed to reset the lastlog entry of UID %lu", (unsigned long) uid)); /* continue */ } - if (close (fd) != 0) { + if (close (fd) != 0 && errno != EINTR) { fprintf (stderr, _("%s: failed to close the lastlog file for UID %lu: %s\n"), Prog, (unsigned long) uid, strerror (errno)); @@ -2073,6 +2066,7 @@ static void lastlog_reset (uid_t uid) /* continue */ } } +#endif /* ENABLE_LASTLOG */ static void tallylog_reset (const char *user_name) { @@ -2085,6 +2079,9 @@ static void tallylog_reset (const char *user_name) if (access(pam_tally2, X_OK) == -1) return; + /* set SIGCHLD to default for waitpid */ + signal(SIGCHLD, SIG_DFL); + failed = 0; switch (childpid = fork()) { @@ -2159,7 +2156,9 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) /* local, no need for xgetpwuid */ if ((!lflg) && (prefix_getpwuid (user_id) == NULL)) { faillog_reset (user_id); +#ifdef ENABLE_LASTLOG lastlog_reset (user_id); +#endif /* ENABLE_LASTLOG */ } /* @@ -2182,20 +2181,19 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, "adding shadow password", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif fail_exit (E_PW_UPDATE); } #ifdef ENABLE_SUBIDS - if (is_sub_uid && + if (is_sub_uid && !local_sub_uid_assigned(user_name) && (sub_uid_add(user_name, sub_uid_start, subuid_count) == 0)) { fprintf (stderr, _("%s: failed to prepare the new %s entry\n"), Prog, sub_uid_dbname ()); fail_exit (E_SUB_UID_UPDATE); } - if (is_sub_gid && + if (is_sub_gid && !local_sub_gid_assigned(user_name) && (sub_gid_add(user_name, sub_gid_start, subgid_count) == 0)) { fprintf (stderr, _("%s: failed to prepare the new %s entry\n"), @@ -2205,9 +2203,14 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) #endif /* ENABLE_SUBIDS */ #ifdef WITH_AUDIT + /* + * Even though we have the ID of the user, we won't send it now + * because its not written to disk yet. After close_files it is + * and we can use the real ID thereafter. + */ audit_logger (AUDIT_ADD_USER, Prog, "adding user", - user_name, (unsigned int) user_id, + user_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); #endif /* @@ -2227,123 +2230,120 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) */ static void create_home (void) { - if (access (prefix_user_home, F_OK) != 0) { - char path[strlen (prefix_user_home) + 2]; - char *bhome, *cp; + char path[strlen(prefix_user_home) + 2]; + char *bhome, *cp; + mode_t mode; - path[0] = '\0'; - bhome = strdup (prefix_user_home); - if (!bhome) { - fprintf (stderr, - _("%s: error while duplicating string %s\n"), - Prog, user_home); - fail_exit (E_HOMEDIR); - } + if (access (prefix_user_home, F_OK) == 0) + return; + + path[0] = '\0'; + bhome = strdup(prefix_user_home); + if (!bhome) { + fprintf(stderr, + _("%s: error while duplicating string %s\n"), + Prog, user_home); + fail_exit(E_HOMEDIR); + } #ifdef WITH_SELINUX - if (set_selinux_file_context (prefix_user_home, S_IFDIR) != 0) { - fprintf (stderr, - _("%s: cannot set SELinux context for home directory %s\n"), - Prog, user_home); - fail_exit (E_HOMEDIR); - } + if (set_selinux_file_context(prefix_user_home, S_IFDIR) != 0) { + fprintf(stderr, + _("%s: cannot set SELinux context for home directory %s\n"), + Prog, user_home); + fail_exit(E_HOMEDIR); + } #endif - /* Check for every part of the path, if the directory - exists. If not, create it with permissions 755 and - owner root:root. + /* Check for every part of the path, if the directory + exists. If not, create it with permissions 755 and + owner root:root. + */ + for (cp = strtok(bhome, "/"); cp != NULL; cp = strtok(NULL, "/")) { + /* Avoid turning a relative path into an absolute path. */ + if (bhome[0] == '/' || strlen(path) != 0) { + strcat(path, "/"); + } + strcat(path, cp); + if (access(path, F_OK) == 0) { + continue; + } + + /* Check if parent directory is BTRFS, fail if requesting + subvolume but no BTRFS. The paths could be different by the + trailing slash */ - cp = strtok (bhome, "/"); - while (cp) { - /* Avoid turning a relative path into an absolute path. - */ - if (bhome[0] == '/' || strlen (path) != 0) { - strcat (path, "/"); - } - strcat (path, cp); - if (access (path, F_OK) != 0) { - /* Check if parent directory is BTRFS, fail if requesting - subvolume but no BTRFS. The paths cound be different by the - trailing slash - */ #if WITH_BTRFS - if (subvolflg && (strlen(prefix_user_home) - (int)strlen(path)) <= 1) { - char *btrfs_check = strdup(path); - - if (!btrfs_check) { - fprintf (stderr, - _("%s: error while duplicating string in BTRFS check %s\n"), - Prog, path); - fail_exit (E_HOMEDIR); - } - btrfs_check[strlen(path) - strlen(cp) - 1] = '\0'; - if (is_btrfs(btrfs_check) <= 0) { - fprintf (stderr, - _("%s: home directory \"%s\" must be mounted on BTRFS\n"), - Prog, path); - fail_exit (E_HOMEDIR); - } - // make subvolume to mount for user instead of directory - if (btrfs_create_subvolume(path)) { - fprintf (stderr, - _("%s: failed to create BTRFS subvolume: %s\n"), - Prog, path); - fail_exit (E_HOMEDIR); - } - } - else + if (subvolflg && (strlen(prefix_user_home) - (int)strlen(path)) <= 1) { + char *btrfs_check = strdup(path); + + if (!btrfs_check) { + fprintf(stderr, + _("%s: error while duplicating string in BTRFS check %s\n"), + Prog, path); + fail_exit(E_HOMEDIR); + } + btrfs_check[strlen(path) - strlen(cp) - 1] = '\0'; + if (is_btrfs(btrfs_check) <= 0) { + fprintf(stderr, + _("%s: home directory \"%s\" must be mounted on BTRFS\n"), + Prog, path); + fail_exit(E_HOMEDIR); + } + free(btrfs_check); + // make subvolume to mount for user instead of directory + if (btrfs_create_subvolume(path)) { + fprintf(stderr, + _("%s: failed to create BTRFS subvolume: %s\n"), + Prog, path); + fail_exit(E_HOMEDIR); + } + } + else #endif - if (mkdir (path, 0) != 0) { - fprintf (stderr, - _("%s: cannot create directory %s\n"), - Prog, path); + if (mkdir(path, 0) != 0) { + fprintf(stderr, _("%s: cannot create directory %s\n"), + Prog, path); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "adding home directory", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + audit_logger(AUDIT_ADD_USER, Prog, "adding home directory", + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif - fail_exit (E_HOMEDIR); + fail_exit(E_HOMEDIR); } - if (chown (path, 0, 0) < 0) { - fprintf (stderr, - _("%s: warning: chown on `%s' failed: %m\n"), - Prog, path); - } - if (chmod (path, 0755) < 0) { - fprintf (stderr, - _("%s: warning: chmod on `%s' failed: %m\n"), - Prog, path); - } - } - cp = strtok (NULL, "/"); + if (chown(path, 0, 0) < 0) { + fprintf(stderr, + _("%s: warning: chown on `%s' failed: %m\n"), + Prog, path); } - free (bhome); - - (void) chown (prefix_user_home, user_id, user_gid); - mode_t mode = getdef_num ("HOME_MODE", - 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK)); - if (chmod (prefix_user_home, mode)) { - fprintf (stderr, _("%s: warning: chown on '%s' failed: %m\n"), - Prog, path); + if (chmod(path, 0755) < 0) { + fprintf(stderr, + _("%s: warning: chmod on `%s' failed: %m\n"), + Prog, path); } - home_added = true; + } + free(bhome); + + (void) chown(prefix_user_home, user_id, user_gid); + mode = getdef_num("HOME_MODE", + 0777 & ~getdef_num("UMASK", GETDEF_DEFAULT_UMASK)); + if (chmod(prefix_user_home, mode)) { + fprintf(stderr, _("%s: warning: chown on '%s' failed: %m\n"), + Prog, path); + } + home_added = true; #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "adding home directory", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + audit_logger(AUDIT_ADD_USER, Prog, "adding home directory", + user_name, user_id, SHADOW_AUDIT_SUCCESS); #endif #ifdef WITH_SELINUX - /* Reset SELinux to create files with default contexts */ - if (reset_selinux_file_context () != 0) { - fprintf (stderr, - _("%s: cannot reset SELinux file creation context\n"), - Prog); - fail_exit (E_HOMEDIR); - } -#endif + /* Reset SELinux to create files with default contexts */ + if (reset_selinux_file_context() != 0) { + fprintf(stderr, + _("%s: cannot reset SELinux file creation context\n"), + Prog); + fail_exit(E_HOMEDIR); } +#endif } /* @@ -2355,72 +2355,79 @@ static void create_home (void) */ static void create_mail (void) { - if (strcasecmp (create_mail_spool, "yes") == 0) { - const char *spool; - char *file; - int fd; - struct group *gr; - gid_t gid; - mode_t mode; - - spool = getdef_str ("MAIL_DIR"); + int fd; + char *file; + gid_t gid; + mode_t mode; + const char *spool; + struct group *gr; + + if (strcasecmp(create_mail_spool, "yes") != 0) + return; + + spool = getdef_str("MAIL_DIR"); #ifdef MAIL_SPOOL_DIR - if ((NULL == spool) && (getdef_str ("MAIL_FILE") == NULL)) { - spool = MAIL_SPOOL_DIR; - } + if ((NULL == spool) && (getdef_str("MAIL_FILE") == NULL)) { + spool = MAIL_SPOOL_DIR; + } #endif /* MAIL_SPOOL_DIR */ - if (NULL == spool) { - return; - } - file = alloca (strlen (prefix) + strlen (spool) + strlen (user_name) + 3); - if (prefix[0]) - sprintf (file, "%s/%s/%s", prefix, spool, user_name); - else - sprintf (file, "%s/%s", spool, user_name); + if (NULL == spool) { + return; + } + if (prefix[0]) + xasprintf(&file, "%s/%s/%s", prefix, spool, user_name); + else + xasprintf(&file, "%s/%s", spool, user_name); #ifdef WITH_SELINUX - if (set_selinux_file_context (file, S_IFREG) != 0) { - fprintf (stderr, - _("%s: cannot set SELinux context for mailbox file %s\n"), - Prog, file); - fail_exit (E_MAILBOXFILE); - } + if (set_selinux_file_context(file, S_IFREG) != 0) { + fprintf(stderr, + _("%s: cannot set SELinux context for mailbox file %s\n"), + Prog, file); + fail_exit(E_MAILBOXFILE); + } #endif - fd = open (file, O_CREAT | O_WRONLY | O_TRUNC | O_EXCL, 0); - if (fd < 0) { - perror (_("Creating mailbox file")); - return; - } + fd = open(file, O_CREAT | O_WRONLY | O_TRUNC | O_EXCL, 0); + free(file); - gr = prefix_getgrnam ("mail"); /* local, no need for xgetgrnam */ - if (NULL == gr) { - fputs (_("Group 'mail' not found. Creating the user mailbox file with 0600 mode.\n"), - stderr); - gid = user_gid; - mode = 0600; - } else { - gid = gr->gr_gid; - mode = 0660; - } + if (fd < 0) { + perror(_("Creating mailbox file")); + return; + } - if ( (fchown (fd, user_id, gid) != 0) - || (fchmod (fd, mode) != 0)) { - perror (_("Setting mailbox file permissions")); - } + gr = prefix_getgrnam("mail"); /* local, no need for xgetgrnam */ + if (NULL == gr) { + fputs(_("Group 'mail' not found. Creating the user mailbox file with 0600 mode.\n"), + stderr); + gid = user_gid; + mode = 0600; + } else { + gid = gr->gr_gid; + mode = 0660; + } + + if (fchown(fd, user_id, gid) != 0 + || fchmod(fd, mode) != 0) + { + perror(_("Setting mailbox file permissions")); + } - fsync (fd); - close (fd); + if (fsync(fd) != 0) { + perror (_("Synchronize mailbox file")); + } + if (close(fd) != 0 && errno != EINTR) { + perror (_("Closing mailbox file")); + } #ifdef WITH_SELINUX - /* Reset SELinux to create files with default contexts */ - if (reset_selinux_file_context () != 0) { - fprintf (stderr, - _("%s: cannot reset SELinux file creation context\n"), - Prog); - fail_exit (E_MAILBOXFILE); - } -#endif + /* Reset SELinux to create files with default contexts */ + if (reset_selinux_file_context() != 0) { + fprintf(stderr, + _("%s: cannot reset SELinux file creation context\n"), + Prog); + fail_exit(E_MAILBOXFILE); } +#endif } static void check_uid_range(int rflg, uid_t user_id) @@ -2428,13 +2435,13 @@ static void check_uid_range(int rflg, uid_t user_id) uid_t uid_min ; uid_t uid_max ; if (rflg) { - uid_max = (uid_t)getdef_ulong("SYS_UID_MAX",getdef_ulong("UID_MIN",1000UL)-1); + uid_max = getdef_ulong("SYS_UID_MAX",getdef_ulong("UID_MIN",1000UL)-1); if (user_id > uid_max) { fprintf(stderr, _("%s warning: %s's uid %d is greater than SYS_UID_MAX %d\n"), Prog, user_name, user_id, uid_max); } }else{ - uid_min = (uid_t)getdef_ulong("UID_MIN", 1000UL); - uid_max = (uid_t)getdef_ulong("UID_MAX", 6000UL); + uid_min = getdef_ulong("UID_MIN", 1000UL); + uid_max = getdef_ulong("UID_MAX", 6000UL); if (uid_min <= uid_max) { if (user_id < uid_min || user_id >uid_max) fprintf(stderr, _("%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n"), Prog, user_name, user_id, uid_min, uid_max); @@ -2461,10 +2468,6 @@ int main (int argc, char **argv) unsigned long subuid_count = 0; unsigned long subgid_count = 0; - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -2476,17 +2479,17 @@ int main (int argc, char **argv) prefix = process_prefix_flag("-P", argc, argv); - OPENLOG ("useradd"); + OPENLOG (Prog); #ifdef WITH_AUDIT audit_help_open (); #endif sys_ngroups = sysconf (_SC_NGROUPS_MAX); - user_groups = (char **) xmalloc ((1 + sys_ngroups) * sizeof (char *)); + user_groups = XMALLOC(1 + sys_ngroups, char *); /* * Initialize the list to be empty */ - user_groups[0] = (char *) 0; + user_groups[0] = NULL; is_shadow_pwd = spw_file_present (); @@ -2499,8 +2502,8 @@ int main (int argc, char **argv) process_flags (argc, argv); #ifdef ENABLE_SUBIDS - uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL); - uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL); + uid_min = getdef_ulong ("UID_MIN", 1000UL); + uid_max = getdef_ulong ("UID_MAX", 60000UL); subuid_count = getdef_ulong ("SUB_UID_COUNT", 65536); subgid_count = getdef_ulong ("SUB_GID_COUNT", 65536); is_sub_uid = subuid_count > 0 && sub_uid_file_present () && @@ -2528,7 +2531,7 @@ int main (int argc, char **argv) fail_exit (1); } - retval = pam_start ("useradd", pampw?pampw->pw_name:"root", &conv, &pamh); + retval = pam_start (Prog, pampw?pampw->pw_name:"root", &conv, &pamh); } if (PAM_SUCCESS == retval) { @@ -2629,7 +2632,7 @@ int main (int argc, char **argv) #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, "adding user", - user_name, (unsigned int) user_id, + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif fail_exit (E_UID_IN_USE); @@ -2701,14 +2704,14 @@ int main (int argc, char **argv) #ifdef WITH_SELINUX if (Zflg) { - if (set_seuser (user_name, user_selinux) != 0) { + if (set_seuser (user_name, user_selinux, user_selinux_range) != 0) { fprintf (stderr, _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"), Prog, user_name, user_selinux); #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, "adding SELinux user mapping", - user_name, (unsigned int) user_id, 0); + user_name, user_id, 0); #endif /* WITH_AUDIT */ fail_exit (E_SE_UPDATE); } @@ -2720,6 +2723,8 @@ int main (int argc, char **argv) if (home_added) { copy_tree (def_template, prefix_user_home, false, true, (uid_t)-1, user_id, (gid_t)-1, user_gid); + copy_tree (def_usrtemplate, prefix_user_home, false, true, + (uid_t)-1, user_id, (gid_t)-1, user_gid); } else { fprintf (stderr, _("%s: warning: the home directory %s already exists.\n" @@ -2742,3 +2747,23 @@ int main (int argc, char **argv) return E_SUCCESS; } + +static FILE * +fmkstemp(char *template) +{ + int fd; + FILE *fp; + + fd = mkstemp(template); + if (fd == -1) + return NULL; + + fp = fdopen(fd, "w"); + if (fp == NULL) { + close(fd); + unlink(template); + return NULL; + } + + return fp; +} diff --git a/src/userdel.c b/src/userdel.c index 7012b0e..ff1f7dd 100644 --- a/src/userdel.c +++ b/src/userdel.c @@ -19,6 +19,8 @@ #include #include #include + +#include "alloc.h" #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" @@ -50,6 +52,8 @@ #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #include "shadowlog.h" +#include "string/sprintf.h" + /* * exit status values @@ -68,7 +72,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "userdel"; static char *user_name; static uid_t user_id; @@ -204,8 +208,7 @@ static void update_groups (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting user from group", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + user_name, user_id, SHADOW_AUDIT_SUCCESS); #endif /* WITH_AUDIT */ SYSLOG ((LOG_INFO, "delete '%s' from group '%s'\n", user_name, ngrp->gr_name)); @@ -266,8 +269,7 @@ static void update_groups (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting user from shadow group", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + user_name, user_id, SHADOW_AUDIT_SUCCESS); #endif /* WITH_AUDIT */ SYSLOG ((LOG_INFO, "delete '%s' from shadow group '%s'\n", user_name, nsgrp->sg_name)); @@ -526,8 +528,7 @@ static void fail_exit (int code) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting user", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ exit (code); @@ -548,8 +549,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "locking password file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_PW_UPDATE); } @@ -560,8 +560,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "opening password file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_PW_UPDATE); } @@ -573,8 +572,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "locking shadow password file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_PW_UPDATE); } @@ -586,8 +584,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "opening shadow password file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_PW_UPDATE); } @@ -599,8 +596,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "locking group file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_GRP_UPDATE); } @@ -610,8 +606,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "opening group file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_GRP_UPDATE); } @@ -624,8 +619,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "locking shadow group file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_GRP_UPDATE); } @@ -636,8 +630,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "opening shadow group file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_GRP_UPDATE); } @@ -652,8 +645,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "locking subordinate user file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SUB_UID_UPDATE); } @@ -664,8 +656,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "opening subordinate user file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SUB_UID_UPDATE); } @@ -678,8 +669,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "locking subordinate group file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SUB_GID_UPDATE); } @@ -690,8 +680,7 @@ static void open_files (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "opening subordinate group file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SUB_GID_UPDATE); } @@ -738,8 +727,7 @@ static void update_user (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting user entries", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + user_name, user_id, SHADOW_AUDIT_SUCCESS); #endif /* WITH_AUDIT */ SYSLOG ((LOG_INFO, "delete user '%s'\n", user_name)); } @@ -763,7 +751,7 @@ static void user_cancel (const char *user) } argv[0] = cmd; argv[1] = user; - argv[2] = (char *)0; + argv[2] = NULL; (void) run_command (cmd, argv, NULL, &status); } @@ -802,11 +790,9 @@ static int is_owner (uid_t uid, const char *path) static int remove_mailbox (void) { - const char *maildir; - char* mailfile; - int i; - int errors = 0; - size_t len; + int i, errors = 0; + char *mailfile; + const char *maildir; maildir = getdef_str ("MAIL_DIR"); #ifdef MAIL_SPOOL_DIR @@ -818,18 +804,11 @@ static int remove_mailbox (void) return 0; } - len = strlen (prefix) + strlen (maildir) + strlen (user_name) + 2; - mailfile = xmalloc (len); - if (prefix[0]) { - (void) snprintf (mailfile, len, "%s/%s/%s", - prefix, maildir, user_name); - } - else { - (void) snprintf (mailfile, len, "%s/%s", - maildir, user_name); + xasprintf(&mailfile, "%s/%s/%s", prefix, maildir, user_name); + } else { + xasprintf(&mailfile, "%s/%s", maildir, user_name); } - mailfile[len-1] = '\0'; if (access (mailfile, F_OK) != 0) { if (ENOENT == errno) { @@ -846,8 +825,7 @@ static int remove_mailbox (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting mail file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ free(mailfile); return -1; @@ -863,8 +841,7 @@ static int remove_mailbox (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting mail file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ errors = 1; /* continue */ @@ -874,8 +851,7 @@ static int remove_mailbox (void) { audit_logger (AUDIT_DEL_USER, Prog, "deleting mail file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + user_name, user_id, SHADOW_AUDIT_SUCCESS); } #endif /* WITH_AUDIT */ free(mailfile); @@ -892,8 +868,7 @@ static int remove_mailbox (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting mail file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ free(mailfile); return 1; @@ -909,8 +884,7 @@ static int remove_mailbox (void) #ifdef WITH_AUDIT audit_logger (AUDIT_DEL_USER, Prog, "deleting mail file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ errors = 1; /* continue */ @@ -920,8 +894,7 @@ static int remove_mailbox (void) { audit_logger (AUDIT_DEL_USER, Prog, "deleting mail file", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + user_name, user_id, SHADOW_AUDIT_SUCCESS); } #endif /* WITH_AUDIT */ free(mailfile); @@ -931,22 +904,19 @@ static int remove_mailbox (void) #ifdef WITH_TCB static int remove_tcbdir (const char *user_name, uid_t user_id) { - char *buf; - int ret = 0; - size_t buflen = (sizeof TCB_DIR) + strlen (user_name) + 2; + int ret = 0; + char *buf; if (!getdef_bool ("USE_TCB")) { return 0; } - buf = malloc (buflen); - if (NULL == buf) { - fprintf (stderr, _("%s: Can't allocate memory, " - "tcb entry for %s not removed.\n"), - Prog, user_name); + if (asprintf(&buf, TCB_DIR "/%s", user_name) == -1) { + fprintf(stderr, + _("%s: Can't allocate memory, tcb entry for %s not removed.\n"), + Prog, user_name); return 1; } - snprintf (buf, buflen, TCB_DIR "/%s", user_name); if (shadowtcb_drop_priv () == SHADOWTCB_FAILURE) { fprintf (stderr, _("%s: Cannot drop privileges: %s\n"), Prog, strerror (errno)); @@ -989,10 +959,6 @@ int main (int argc, char **argv) #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); @@ -1002,7 +968,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); prefix = process_prefix_flag ("-P", argc, argv); - OPENLOG ("userdel"); + OPENLOG (Prog); #ifdef WITH_AUDIT audit_help_open (); #endif /* WITH_AUDIT */ @@ -1086,7 +1052,7 @@ int main (int argc, char **argv) exit (E_PW_UPDATE); } - retval = pam_start ("userdel", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); } if (PAM_SUCCESS == retval) { @@ -1148,15 +1114,9 @@ int main (int argc, char **argv) user_gid = pwd->pw_gid; if (prefix[0]) { - - size_t len = strlen(prefix) + strlen(pwd->pw_dir) + 2; - int wlen; - user_home = xmalloc(len); - wlen = snprintf(user_home, len, "%s/%s", prefix, pwd->pw_dir); - assert (wlen == (int) len -1); - } - else { - user_home = xstrdup (pwd->pw_dir); + xasprintf(&user_home, "%s/%s", prefix, pwd->pw_dir); + } else { + user_home = xstrdup(pwd->pw_dir); } pw_close(); } @@ -1165,26 +1125,6 @@ int main (int argc, char **argv) exit (E_NOTFOUND); } #endif /* WITH_TCB */ -#ifdef USE_NIS - - /* - * Now make sure it isn't an NIS user. - */ - if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf (stderr, - _("%s: user %s is a NIS user\n"), Prog, user_name); - if ( !yp_get_default_domain (&nis_domain) - && !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf (stderr, - _("%s: %s is the NIS master\n"), - Prog, nis_master); - } - exit (E_NOTFOUND); - } -#endif /* USE_NIS */ /* * Check to make certain the user isn't logged in. * Note: This is a best effort basis. The user may log in between, @@ -1290,8 +1230,7 @@ int main (int argc, char **argv) { audit_logger (AUDIT_DEL_USER, Prog, "deleting home directory", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_SUCCESS); + user_name, user_id, SHADOW_AUDIT_SUCCESS); } #endif /* WITH_AUDIT */ } @@ -1313,8 +1252,7 @@ int main (int argc, char **argv) #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, "removing SELinux user mapping", - user_name, (unsigned int) user_id, - SHADOW_AUDIT_FAILURE); + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SE_UPDATE); } diff --git a/src/usermod.c b/src/usermod.c index c1a5b2c..f889698 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -17,7 +17,9 @@ #include #include #include +#ifdef ENABLE_LASTLOG #include +#endif /* ENABLE_LASTLOG */ #include #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM @@ -25,14 +27,19 @@ #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ #include +#include #include #include #include + +#include "alloc.h" +#include "atoi/str2i.h" #include "chkname.h" #include "defines.h" #include "faillog.h" #include "getdef.h" #include "groupio.h" +#include "memzero.h" #include "nscd.h" #include "sssd.h" #include "prototypes.h" @@ -52,6 +59,9 @@ #include "tcbfuncs.h" #endif #include "shadowlog.h" +#include "string/sprintf.h" +#include "time/day_to_str.h" + /* * exit status values @@ -82,7 +92,7 @@ /* * Global variables */ -const char *Prog; +static const char Prog[] = "usermod"; static char *user_name; static char *user_newname; @@ -98,6 +108,7 @@ static char *user_newhome; static char *user_shell; #ifdef WITH_SELINUX static const char *user_selinux = ""; +static const char *user_selinux_range = NULL; #endif /* WITH_SELINUX */ static char *user_newshell; static long user_expire; @@ -163,14 +174,16 @@ static bool sub_gid_locked = false; /* local function prototypes */ static int get_groups (char *); -static /*@noreturn@*/void usage (int status); +NORETURN static void usage (int status); static void new_pwent (struct passwd *); static void new_spent (struct spwd *); -static /*@noreturn@*/void fail_exit (int); -static void update_group (void); +NORETURN static void fail_exit (int); +static void update_group_file(void); +static void update_group(const struct group *grp); #ifdef SHADOWGRP -static void update_gshadow (void); +static void update_gshadow_file(void); +static void update_gshadow(const struct sgrp *sgrp); #endif static void grp_update (void); @@ -179,7 +192,9 @@ static void close_files (void); static void open_files (void); static void usr_update (void); static void move_home (void); +#ifdef ENABLE_LASTLOG static void update_lastlog (void); +#endif /* ENABLE_LASTLOG */ static void update_faillog (void); #ifndef NO_MOVE_MAILBOX @@ -198,14 +213,14 @@ extern int allow_bad_names; static int get_groups (char *list) { char *cp; - const struct group *grp; + struct group *grp; int errors = 0; int ngroups = 0; /* * Initialize the list to be empty */ - user_groups[0] = (char *) 0; + user_groups[0] = NULL; if ('\0' == *list) { return 0; @@ -251,25 +266,11 @@ static int get_groups (char *list) continue; } -#ifdef USE_NIS - /* - * Don't add this group if they are an NIS group. Tell the - * user to go to the server for this group. - */ - if (__isgrNIS ()) { - fprintf (stderr, - _("%s: group '%s' is a NIS group.\n"), - Prog, grp->gr_name); - gr_free ((struct group *)grp); - continue; - } -#endif - if (ngroups == sys_ngroups) { fprintf (stderr, _("%s: too many groups specified (max %d).\n"), Prog, ngroups); - gr_free ((struct group *)grp); + gr_free (grp); break; } @@ -277,10 +278,10 @@ static int get_groups (char *list) * Add the group name to the user's list of groups. */ user_groups[ngroups++] = xstrdup (grp->gr_name); - gr_free ((struct group *)grp); + gr_free (grp); } while (NULL != list); - user_groups[ngroups] = (char *) 0; + user_groups[ngroups] = NULL; /* * Any errors in finding group names are fatal @@ -307,21 +308,28 @@ static struct ulong_range getulong_range(const char *str) errno = 0; first = strtoll(str, &pos, 10); - if (('\0' == *str) || ('-' != *pos ) || (ERANGE == errno) || - (first != (unsigned long int)first)) + if (('\0' == *str) || ('-' != *pos ) || (0 != errno) || + (first != (unsigned long)first)) goto out; errno = 0; last = strtoll(pos + 1, &pos, 10); - if (('\0' != *pos ) || (ERANGE == errno) || - (last != (unsigned long int)last)) + if (('\0' != *pos ) || (0 != errno) || + (last != (unsigned long)last)) goto out; if (first > last) goto out; - result.first = (unsigned long int)first; - result.last = (unsigned long int)last; + /* + * uid_t in linux is an unsigned int, anything over this is an invalid + * range will be later refused anyway by get_map_ranges(). + */ + if (first > UINT_MAX || last > UINT_MAX) + goto out; + + result.first = (unsigned long)first; + result.last = (unsigned long)last; out: return result; } @@ -342,7 +350,7 @@ static int prepend_range(const char *str, struct ulong_range_list_entry **head) if (range.first > range.last) return 0; - entry = malloc(sizeof(*entry)); + entry = MALLOC(1, struct ulong_range_list_entry); if (!entry) { fprintf (stderr, _("%s: failed to allocate memory: %s\n"), @@ -359,7 +367,9 @@ static int prepend_range(const char *str, struct ulong_range_list_entry **head) /* * usage - display usage message and exit */ -static /*@noreturn@*/void usage (int status) +NORETURN +static void +usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; (void) fprintf (usageout, @@ -401,6 +411,7 @@ static /*@noreturn@*/void usage (int status) #endif /* ENABLE_SUBIDS */ #ifdef WITH_SELINUX (void) fputs (_(" -Z, --selinux-user SEUSER new SELinux user mapping for the user account\n"), usageout); + (void) fputs (_(" --selinux-range SERANGE new SELinux MLS range for the user account\n"), usageout); #endif /* WITH_SELINUX */ (void) fputs ("\n", usageout); exit (status); @@ -413,20 +424,17 @@ static /*@noreturn@*/void usage (int status) static char *new_pw_passwd (char *pw_pass) { if (Lflg && ('!' != pw_pass[0])) { - char *buf = xmalloc (strlen (pw_pass) + 2); + char *buf = XMALLOC(strlen(pw_pass) + 2, char); #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "updating passwd", - user_newname, (unsigned int) user_newid, 0); + "updating passwd", user_newname, user_newid, 0); #endif SYSLOG ((LOG_INFO, "lock user '%s' password", user_newname)); strcpy (buf, "!"); strcat (buf, pw_pass); pw_pass = buf; } else if (Uflg && pw_pass[0] == '!') { - char *s; - if (pw_pass[1] == '\0') { fprintf (stderr, _("%s: unlocking the user's password would result in a passwordless account.\n" @@ -437,20 +445,14 @@ static char *new_pw_passwd (char *pw_pass) #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "updating password", - user_newname, (unsigned int) user_newid, 0); + "updating password", user_newname, user_newid, 0); #endif SYSLOG ((LOG_INFO, "unlock user '%s' password", user_newname)); - s = pw_pass; - while ('\0' != *s) { - *s = *(s + 1); - s++; - } + memmove(pw_pass, pw_pass + 1, strlen(pw_pass)); } else if (pflg) { #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing password", - user_newname, (unsigned int) user_newid, 1); + "changing password", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' password", user_newname)); pw_pass = xstrdup (user_pass); @@ -479,8 +481,7 @@ static void new_pwent (struct passwd *pwent) } #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing name", - user_newname, (unsigned int) user_newid, 1); + "changing name", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user name '%s' to '%s'", @@ -500,8 +501,7 @@ static void new_pwent (struct passwd *pwent) if (uflg) { #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing uid", - user_newname, (unsigned int) user_newid, 1); + "changing uid", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' UID from '%d' to '%d'", @@ -512,7 +512,7 @@ static void new_pwent (struct passwd *pwent) #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing primary group", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' GID from '%d' to '%d'", @@ -522,8 +522,7 @@ static void new_pwent (struct passwd *pwent) if (cflg) { #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing comment", - user_newname, (unsigned int) user_newid, 1); + "changing comment", user_newname, user_newid, 1); #endif pwent->pw_gecos = user_newcomment; } @@ -532,7 +531,7 @@ static void new_pwent (struct passwd *pwent) #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing home directory", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' home from '%s' to '%s'", @@ -549,7 +548,7 @@ static void new_pwent (struct passwd *pwent) #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing user shell", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' shell from '%s' to '%s'", @@ -580,7 +579,7 @@ static void new_spent (struct spwd *spent) #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing inactive days", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' inactive from '%ld' to '%ld'", @@ -590,12 +589,13 @@ static void new_spent (struct spwd *spent) if (eflg) { /* log dates rather than numbers of days. */ char new_exp[16], old_exp[16]; - date_to_str (sizeof(new_exp), new_exp, user_newexpire * DAY); - date_to_str (sizeof(old_exp), old_exp, user_expire * DAY); + + DAY_TO_STR(new_exp, user_newexpire); + DAY_TO_STR(old_exp, user_expire); #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing expiration date", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' expiration from '%s' to '%s'", @@ -615,7 +615,7 @@ static void new_spent (struct spwd *spent) spent->sp_pwdp = new_pw_passwd (spent->sp_pwdp); if (pflg) { - spent->sp_lstchg = (long) gettime () / SCALE; + spent->sp_lstchg = gettime () / DAY; if (0 == spent->sp_lstchg) { /* Better disable aging than requiring a password * change. */ @@ -627,7 +627,9 @@ static void new_spent (struct spwd *spent) /* * fail_exit - exit with an error code after unlocking files */ -static /*@noreturn@*/void fail_exit (int code) +NORETURN +static void +fail_exit (int code) { if (gr_locked) { if (gr_unlock () == 0) { @@ -685,263 +687,277 @@ static /*@noreturn@*/void fail_exit (int code) } -static void update_group (void) +static void +update_group_file(void) { - bool is_member; - bool was_member; - bool changed; - const struct group *grp; - struct group *ngrp; - - changed = false; + const struct group *grp; /* * Scan through the entire group file looking for the groups that * the user is a member of. */ - while ((grp = gr_next ()) != NULL) { - /* - * See if the user specified this group as one of their - * concurrent groups. - */ - was_member = is_on_list (grp->gr_mem, user_name); - is_member = Gflg && ( (was_member && aflg) - || is_on_list (user_groups, grp->gr_name)); + while ((grp = gr_next()) != NULL) + update_group(grp); +} - if (!was_member && !is_member) { - continue; - } - /* - * If rflg+Gflg is passed in AKA -rG invert is_member flag, which removes - * mentioned groups while leaving the others. - */ - if (Gflg && rflg) { - is_member = !is_member; - } +static void +update_group(const struct group *grp) +{ + bool changed; + bool is_member; + bool was_member; + struct group *ngrp; - ngrp = __gr_dup (grp); - if (NULL == ngrp) { - fprintf (stderr, - _("%s: Out of memory. Cannot update %s.\n"), - Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); - } + changed = false; - if (was_member) { - if ((!Gflg) || is_member) { - /* User was a member and is still a member - * of this group. - * But the user might have been renamed. - */ - if (lflg) { - ngrp->gr_mem = del_list (ngrp->gr_mem, - user_name); - ngrp->gr_mem = add_list (ngrp->gr_mem, - user_newname); - changed = true; -#ifdef WITH_AUDIT - audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing group member", - user_newname, AUDIT_NO_ID, 1); -#endif - SYSLOG ((LOG_INFO, - "change '%s' to '%s' in group '%s'", - user_name, user_newname, - ngrp->gr_name)); - } - } else { - /* User was a member but is no more a - * member of this group. - */ - ngrp->gr_mem = del_list (ngrp->gr_mem, user_name); + /* + * See if the user specified this group as one of their + * concurrent groups. + */ + was_member = is_on_list (grp->gr_mem, user_name); + is_member = Gflg && ( (was_member && aflg) + || is_on_list (user_groups, grp->gr_name)); + + if (!was_member && !is_member) + return; + + /* + * If rflg+Gflg is passed in AKA -rG invert is_member flag, which removes + * mentioned groups while leaving the others. + */ + if (Gflg && rflg) { + is_member = !is_member; + } + + ngrp = __gr_dup (grp); + if (NULL == ngrp) { + fprintf (stderr, + _("%s: Out of memory. Cannot update %s.\n"), + Prog, gr_dbname ()); + fail_exit (E_GRP_UPDATE); + } + + if (was_member) { + if ((!Gflg) || is_member) { + /* User was a member and is still a member + * of this group. + * But the user might have been renamed. + */ + if (lflg) { + ngrp->gr_mem = del_list (ngrp->gr_mem, + user_name); + ngrp->gr_mem = add_list (ngrp->gr_mem, + user_newname); changed = true; #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "removing group member", - user_name, AUDIT_NO_ID, 1); + "changing group member", + user_newname, AUDIT_NO_ID, 1); #endif SYSLOG ((LOG_INFO, - "delete '%s' from group '%s'", - user_name, ngrp->gr_name)); + "change '%s' to '%s' in group '%s'", + user_name, user_newname, + ngrp->gr_name)); } - } else if (is_member) { - /* User was not a member but is now a member this - * group. + } else { + /* User was a member but is no more a + * member of this group. */ - ngrp->gr_mem = add_list (ngrp->gr_mem, user_newname); + ngrp->gr_mem = del_list (ngrp->gr_mem, user_name); changed = true; #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "adding user to group", - user_name, AUDIT_NO_ID, 1); + "removing group member", + user_name, AUDIT_NO_ID, 1); #endif - SYSLOG ((LOG_INFO, "add '%s' to group '%s'", - user_newname, ngrp->gr_name)); - } - if (!changed) { - continue; - } - - changed = false; - if (gr_update (ngrp) == 0) { - fprintf (stderr, - _("%s: failed to prepare the new %s entry '%s'\n"), - Prog, gr_dbname (), ngrp->gr_name); - SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", gr_dbname (), ngrp->gr_name)); - fail_exit (E_GRP_UPDATE); + SYSLOG ((LOG_INFO, + "delete '%s' from group '%s'", + user_name, ngrp->gr_name)); } + } else if (is_member) { + /* User was not a member but is now a member this + * group. + */ + ngrp->gr_mem = add_list (ngrp->gr_mem, user_newname); + changed = true; +#ifdef WITH_AUDIT + audit_logger (AUDIT_USER_CHAUTHTOK, Prog, + "adding user to group", + user_name, AUDIT_NO_ID, 1); +#endif + SYSLOG ((LOG_INFO, "add '%s' to group '%s'", + user_newname, ngrp->gr_name)); + } + if (!changed) + goto free_ngrp; - gr_free(ngrp); + if (gr_update (ngrp) == 0) { + fprintf (stderr, + _("%s: failed to prepare the new %s entry '%s'\n"), + Prog, gr_dbname (), ngrp->gr_name); + SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", gr_dbname (), ngrp->gr_name)); + fail_exit (E_GRP_UPDATE); } + +free_ngrp: + gr_free(ngrp); } + #ifdef SHADOWGRP -static void update_gshadow (void) +static void +update_gshadow_file(void) { - bool is_member; - bool was_member; - bool was_admin; - bool changed; - const struct sgrp *sgrp; - struct sgrp *nsgrp; - - changed = false; + const struct sgrp *sgrp; /* * Scan through the entire shadow group file looking for the groups * that the user is a member of. */ - while ((sgrp = sgr_next ()) != NULL) { + while ((sgrp = sgr_next()) != NULL) + update_gshadow(sgrp); +} +#endif /* SHADOWGRP */ - /* - * See if the user was a member of this group - */ - was_member = is_on_list (sgrp->sg_mem, user_name); - /* - * See if the user was an administrator of this group - */ - was_admin = is_on_list (sgrp->sg_adm, user_name); +#ifdef SHADOWGRP +static void +update_gshadow(const struct sgrp *sgrp) +{ + bool changed; + bool is_member; + bool was_member; + bool was_admin; + struct sgrp *nsgrp; - /* - * See if the user specified this group as one of their - * concurrent groups. - */ - is_member = Gflg && ( (was_member && aflg) - || is_on_list (user_groups, sgrp->sg_name)); + changed = false; - if (!was_member && !was_admin && !is_member) { - continue; - } + /* + * See if the user was a member of this group + */ + was_member = is_on_list (sgrp->sg_mem, user_name); - /* - * If rflg+Gflg is passed in AKA -rG invert is_member, to remove targeted - * groups while leaving the user apart of groups not mentioned - */ - if (Gflg && rflg) { - is_member = !is_member; - } + /* + * See if the user was an administrator of this group + */ + was_admin = is_on_list (sgrp->sg_adm, user_name); - nsgrp = __sgr_dup (sgrp); - if (NULL == nsgrp) { - fprintf (stderr, - _("%s: Out of memory. Cannot update %s.\n"), - Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); - } + /* + * See if the user specified this group as one of their + * concurrent groups. + */ + is_member = Gflg && ( (was_member && aflg) + || is_on_list (user_groups, sgrp->sg_name)); - if (was_admin && lflg) { - /* User was an admin of this group but the user - * has been renamed. - */ - nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name); - nsgrp->sg_adm = add_list (nsgrp->sg_adm, user_newname); - changed = true; -#ifdef WITH_AUDIT - audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing admin name in shadow group", - user_name, AUDIT_NO_ID, 1); -#endif - SYSLOG ((LOG_INFO, - "change admin '%s' to '%s' in shadow group '%s'", - user_name, user_newname, nsgrp->sg_name)); - } - - if (was_member) { - if ((!Gflg) || is_member) { - /* User was a member and is still a member - * of this group. - * But the user might have been renamed. - */ - if (lflg) { - nsgrp->sg_mem = del_list (nsgrp->sg_mem, - user_name); - nsgrp->sg_mem = add_list (nsgrp->sg_mem, - user_newname); - changed = true; + if (!was_member && !was_admin && !is_member) + return; + + /* + * If rflg+Gflg is passed in AKA -rG invert is_member, to remove targeted + * groups while leaving the user apart of groups not mentioned + */ + if (Gflg && rflg) { + is_member = !is_member; + } + + nsgrp = __sgr_dup (sgrp); + if (NULL == nsgrp) { + fprintf (stderr, + _("%s: Out of memory. Cannot update %s.\n"), + Prog, sgr_dbname ()); + fail_exit (E_GRP_UPDATE); + } + + if (was_admin && lflg) { + /* User was an admin of this group but the user + * has been renamed. + */ + nsgrp->sg_adm = del_list (nsgrp->sg_adm, user_name); + nsgrp->sg_adm = add_list (nsgrp->sg_adm, user_newname); + changed = true; #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "changing member in shadow group", - user_name, AUDIT_NO_ID, 1); + audit_logger (AUDIT_USER_CHAUTHTOK, Prog, + "changing admin name in shadow group", + user_name, AUDIT_NO_ID, 1); #endif - SYSLOG ((LOG_INFO, - "change '%s' to '%s' in shadow group '%s'", - user_name, user_newname, - nsgrp->sg_name)); - } - } else { - /* User was a member but is no more a - * member of this group. - */ - nsgrp->sg_mem = del_list (nsgrp->sg_mem, user_name); + SYSLOG ((LOG_INFO, + "change admin '%s' to '%s' in shadow group '%s'", + user_name, user_newname, nsgrp->sg_name)); + } + + if (was_member) { + if ((!Gflg) || is_member) { + /* User was a member and is still a member + * of this group. + * But the user might have been renamed. + */ + if (lflg) { + nsgrp->sg_mem = del_list (nsgrp->sg_mem, + user_name); + nsgrp->sg_mem = add_list (nsgrp->sg_mem, + user_newname); changed = true; #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "removing user from shadow group", - user_name, AUDIT_NO_ID, 1); + "changing member in shadow group", + user_name, AUDIT_NO_ID, 1); #endif SYSLOG ((LOG_INFO, - "delete '%s' from shadow group '%s'", - user_name, nsgrp->sg_name)); + "change '%s' to '%s' in shadow group '%s'", + user_name, user_newname, + nsgrp->sg_name)); } - } else if (is_member) { - /* User was not a member but is now a member this - * group. + } else { + /* User was a member but is no more a + * member of this group. */ - nsgrp->sg_mem = add_list (nsgrp->sg_mem, user_newname); + nsgrp->sg_mem = del_list (nsgrp->sg_mem, user_name); changed = true; #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, - "adding user to shadow group", - user_newname, AUDIT_NO_ID, 1); + "removing user from shadow group", + user_name, AUDIT_NO_ID, 1); #endif - SYSLOG ((LOG_INFO, "add '%s' to shadow group '%s'", - user_newname, nsgrp->sg_name)); - } - if (!changed) { - continue; + SYSLOG ((LOG_INFO, + "delete '%s' from shadow group '%s'", + user_name, nsgrp->sg_name)); } - - changed = false; - - /* - * Update the group entry to reflect the changes. + } else if (is_member) { + /* User was not a member but is now a member this + * group. */ - if (sgr_update (nsgrp) == 0) { - fprintf (stderr, - _("%s: failed to prepare the new %s entry '%s'\n"), - Prog, sgr_dbname (), nsgrp->sg_name); - SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", - sgr_dbname (), nsgrp->sg_name)); - fail_exit (E_GRP_UPDATE); - } + nsgrp->sg_mem = add_list (nsgrp->sg_mem, user_newname); + changed = true; +#ifdef WITH_AUDIT + audit_logger (AUDIT_USER_CHAUTHTOK, Prog, + "adding user to shadow group", + user_newname, AUDIT_NO_ID, 1); +#endif + SYSLOG ((LOG_INFO, "add '%s' to shadow group '%s'", + user_newname, nsgrp->sg_name)); + } + if (!changed) + goto free_nsgrp; - free (nsgrp); + /* + * Update the group entry to reflect the changes. + */ + if (sgr_update (nsgrp) == 0) { + fprintf (stderr, + _("%s: failed to prepare the new %s entry '%s'\n"), + Prog, sgr_dbname (), nsgrp->sg_name); + SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", + sgr_dbname (), nsgrp->sg_name)); + fail_exit (E_GRP_UPDATE); } + +free_nsgrp: + free (nsgrp); } #endif /* SHADOWGRP */ + /* * grp_update - add user to secondary group set * @@ -950,10 +966,10 @@ static void update_gshadow (void) */ static void grp_update (void) { - update_group (); + update_group_file(); #ifdef SHADOWGRP if (is_shadow_grp) { - update_gshadow (); + update_gshadow_file(); } #endif } @@ -967,7 +983,6 @@ static void grp_update (void) */ static void process_flags (int argc, char **argv) { - const struct group *grp; struct stat st; bool anyflag = false; @@ -978,6 +993,7 @@ static void process_flags (int argc, char **argv) int c; static struct option long_options[] = { {"append", no_argument, NULL, 'a'}, + {"badname", no_argument, NULL, 'b'}, {"badnames", no_argument, NULL, 'b'}, {"comment", required_argument, NULL, 'c'}, {"home", required_argument, NULL, 'd'}, @@ -1000,11 +1016,12 @@ static void process_flags (int argc, char **argv) #ifdef ENABLE_SUBIDS {"add-subuids", required_argument, NULL, 'v'}, {"del-subuids", required_argument, NULL, 'V'}, - {"add-subgids", required_argument, NULL, 'w'}, - {"del-subgids", required_argument, NULL, 'W'}, + {"add-subgids", required_argument, NULL, 'w'}, + {"del-subgids", required_argument, NULL, 'W'}, #endif /* ENABLE_SUBIDS */ #ifdef WITH_SELINUX - {"selinux-user", required_argument, NULL, 'Z'}, + {"selinux-user", required_argument, NULL, 'Z'}, + {"selinux-range", required_argument, NULL, 202}, #endif /* WITH_SELINUX */ {NULL, 0, NULL, '\0'} }; @@ -1058,11 +1075,10 @@ static void process_flags (int argc, char **argv) Prog, optarg); exit (E_BAD_ARG); } - user_newexpire *= DAY / SCALE; eflg = true; break; case 'f': - if ( (getlong (optarg, &user_newinactive) == 0) + if ( (str2sl(&user_newinactive, optarg) == -1) || (user_newinactive < -1)) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), @@ -1072,7 +1088,10 @@ static void process_flags (int argc, char **argv) fflg = true; break; case 'g': - grp = getgr_nam_gid (optarg); + { + struct group *grp; + + grp = prefix_getgr_nam_gid (optarg); if (NULL == grp) { fprintf (stderr, _("%s: group '%s' does not exist\n"), @@ -1083,6 +1102,7 @@ static void process_flags (int argc, char **argv) gflg = true; gr_free (grp); break; + } case 'G': if (get_groups (optarg) != 0) { exit (E_NOTFOUND); @@ -1146,7 +1166,7 @@ static void process_flags (int argc, char **argv) sflg = true; break; case 'u': - if ( (get_uid (optarg, &user_newid) ==0) + if ( (get_uid(optarg, &user_newid) == -1) || (user_newid == (uid_t)-1)) { fprintf (stderr, _("%s: invalid user ID '%s'\n"), @@ -1214,6 +1234,9 @@ static void process_flags (int argc, char **argv) exit (E_BAD_ARG); } break; + case 202: + user_selinux_range = optarg; + break; #endif /* WITH_SELINUX */ default: usage (E_USAGE); @@ -1258,46 +1281,16 @@ static void process_flags (int argc, char **argv) user_newgid = user_gid; } if (prefix[0]) { - size_t len = strlen(prefix) + strlen(user_home) + 2; - int wlen; - prefix_user_home = xmalloc(len); - wlen = snprintf(prefix_user_home, len, "%s/%s", prefix, user_home); - assert (wlen == (int) len -1); + xasprintf(&prefix_user_home, "%s/%s", prefix, user_home); if (user_newhome) { - len = strlen(prefix) + strlen(user_newhome) + 2; - prefix_user_newhome = xmalloc(len); - wlen = snprintf(prefix_user_newhome, len, "%s/%s", prefix, user_newhome); - assert (wlen == (int) len -1); + xasprintf(&prefix_user_newhome, "%s/%s", + prefix, user_newhome); } - - } - else { + } else { prefix_user_home = user_home; prefix_user_newhome = user_newhome; } -#ifdef USE_NIS - /* - * Now make sure it isn't an NIS user. - */ - if (__ispwNIS ()) { - char *nis_domain; - char *nis_master; - - fprintf (stderr, - _("%s: user %s is a NIS user\n"), - Prog, user_name); - - if ( !yp_get_default_domain (&nis_domain) - && !yp_master (nis_domain, "passwd.byname", &nis_master)) { - fprintf (stderr, - _("%s: %s is the NIS master\n"), - Prog, nis_master); - } - exit (E_NOTFOUND); - } -#endif - { const struct spwd *spwd = NULL; /* local, no need for xgetspnam */ @@ -1354,6 +1347,15 @@ static void process_flags (int argc, char **argv) usage (E_USAGE); } +#ifdef WITH_SELINUX + if (user_selinux_range && !Zflg) { + fprintf (stderr, + _("%s: %s flag is only allowed with the %s flag\n"), + Prog, "--selinux-range", "--selinux-user"); + usage (E_USAGE); + } +#endif /* WITH_SELINUX */ + if (user_newid == user_id) { uflg = false; oflg = false; @@ -1723,7 +1725,7 @@ static void usr_update (void) * a shadowed password * + aging information is requested */ - memset (&spent, 0, sizeof spent); + bzero(&spent, sizeof spent); spent.sp_namp = user_name; /* The user explicitly asked for a shadow feature. @@ -1732,7 +1734,7 @@ static void usr_update (void) spent.sp_pwdp = xstrdup (pwent.pw_passwd); pwent.pw_passwd = xstrdup (SHADOW_PASSWD_STRING); - spent.sp_lstchg = (long) gettime () / SCALE; + spent.sp_lstchg = gettime () / DAY; if (0 == spent.sp_lstchg) { /* Better disable aging than * requiring a password change */ @@ -1819,7 +1821,7 @@ static void move_home (void) if (uflg || gflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing home directory owner", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); } #endif @@ -1838,8 +1840,7 @@ static void move_home (void) #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "moving home directory", - user_newname, (unsigned int) user_newid, - 1); + user_newname, user_newid, 1); #endif return; } else { @@ -1869,7 +1870,7 @@ static void move_home (void) Prog, "moving home directory", user_newname, - (unsigned int) user_newid, + user_newid, 1); #endif return; @@ -1897,6 +1898,7 @@ static void move_home (void) * left alone in case the UID was shared. It doesn't hurt anything * to just leave it be. */ +#ifdef ENABLE_LASTLOG static void update_lastlog (void) { struct lastlog ll; @@ -1909,7 +1911,7 @@ static void update_lastlog (void) return; } - max_uid = (uid_t) getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL); + max_uid = getdef_ulong ("LASTLOG_UID_MAX", 0xFFFFFFFFUL); if (user_newid > max_uid) { /* do not touch lastlog for large uids */ return; @@ -1928,7 +1930,7 @@ static void update_lastlog (void) && (read (fd, &ll, sizeof ll) == (ssize_t) sizeof ll)) { /* Copy the old entry to its new location */ if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write (fd, &ll, sizeof ll) != (ssize_t) sizeof ll) + || (write_full(fd, &ll, sizeof ll) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), @@ -1944,7 +1946,7 @@ static void update_lastlog (void) /* Reset the new uid's lastlog entry */ memzero (&ll, sizeof (ll)); if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write (fd, &ll, sizeof ll) != (ssize_t) sizeof ll) + || (write_full(fd, &ll, sizeof ll) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), @@ -1953,8 +1955,13 @@ static void update_lastlog (void) } } - (void) close (fd); + if (close (fd) != 0 && errno != EINTR) { + fprintf (stderr, + _("%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n"), + Prog, (uintmax_t) user_id, (uintmax_t) user_newid, strerror (errno)); + } } +#endif /* ENABLE_LASTLOG */ /* * update_faillog - update the faillog file @@ -1984,10 +1991,10 @@ static void update_faillog (void) } if ( (lseek (fd, off_uid, SEEK_SET) == off_uid) - && (read (fd, (char *) &fl, sizeof fl) == (ssize_t) sizeof fl)) { + && (read (fd, &fl, sizeof fl) == (ssize_t) sizeof fl)) { /* Copy the old entry to its new location */ if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write (fd, &fl, sizeof fl) != (ssize_t) sizeof fl) + || (write_full(fd, &fl, sizeof fl) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), @@ -2003,7 +2010,8 @@ static void update_faillog (void) /* Reset the new uid's faillog entry */ memzero (&fl, sizeof (fl)); if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write (fd, &fl, sizeof fl) != (ssize_t) sizeof fl)) { + || (write_full(fd, &fl, sizeof fl) == -1)) + { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); @@ -2011,7 +2019,11 @@ static void update_faillog (void) } } - (void) close (fd); + if (close (fd) != 0 && errno != EINTR) { + fprintf (stderr, + _("%s: failed to copy the faillog entry of user %ju to user %ju: %s\n"), + Prog, (uintmax_t) user_id, (uintmax_t) user_newid, strerror (errno)); + } } #ifndef NO_MOVE_MAILBOX @@ -2024,12 +2036,10 @@ static void update_faillog (void) */ static void move_mailbox (void) { - const char *maildir; - char* mailfile; - char* newmailfile; - int fd; - struct stat st; - size_t len; + int fd; + char *mailfile; + const char *maildir; + struct stat st; maildir = getdef_str ("MAIL_DIR"); #ifdef MAIL_SPOOL_DIR @@ -2040,8 +2050,6 @@ static void move_mailbox (void) if (NULL == maildir) { return; } - len = strlen (prefix) + strlen (maildir) + strlen (user_name) + 2; - mailfile = alloca (len); /* * O_NONBLOCK is to make sure open won't hang on mandatory locks. @@ -2050,14 +2058,10 @@ static void move_mailbox (void) * between stat and chown). --marekm */ if (prefix[0]) { - (void) snprintf (mailfile, len, "%s/%s/%s", - prefix, maildir, user_name); - } - else { - (void) snprintf (mailfile, len, "%s/%s", - maildir, user_name); + xasprintf(&mailfile, "%s/%s/%s", prefix, maildir, user_name); + } else { + xasprintf(&mailfile, "%s/%s", maildir, user_name); } - mailfile[len-1] = '\0'; fd = open (mailfile, O_RDONLY | O_NONBLOCK, 0); if (fd < 0) { @@ -2065,11 +2069,13 @@ static void move_mailbox (void) if (errno != ENOENT) { perror (mailfile); } + free(mailfile); return; } if (fstat (fd, &st) < 0) { perror ("fstat"); (void) close (fd); + free(mailfile); return; } if (st.st_uid != user_id) { @@ -2077,6 +2083,7 @@ static void move_mailbox (void) fprintf (stderr, _("%s: warning: %s not owned by %s\n"), Prog, mailfile, user_name); (void) close (fd); + free(mailfile); return; } if (uflg) { @@ -2087,7 +2094,7 @@ static void move_mailbox (void) else { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing mail file owner", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); } #endif } @@ -2095,17 +2102,14 @@ static void move_mailbox (void) (void) close (fd); if (lflg) { - len = strlen (prefix) + strlen (maildir) + strlen (user_newname) + 2; - newmailfile = alloca(len); + char *newmailfile; + if (prefix[0]) { - (void) snprintf (newmailfile, len, "%s/%s/%s", - prefix, maildir, user_newname); - } - else { - (void) snprintf (newmailfile, len, "%s/%s", - maildir, user_newname); + xasprintf(&newmailfile, "%s/%s/%s", + prefix, maildir, user_newname); + } else { + xasprintf(&newmailfile, "%s/%s", maildir, user_newname); } - newmailfile[len - 1] = '\0'; if ( (link (mailfile, newmailfile) != 0) || (unlink (mailfile) != 0)) { perror (_("failed to rename mailbox")); @@ -2114,10 +2118,14 @@ static void move_mailbox (void) else { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing mail file name", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); } + + free(newmailfile); #endif } + + free(mailfile); } #endif @@ -2133,10 +2141,6 @@ int main (int argc, char **argv) #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ - /* - * Get my name so that I can use it to report errors. - */ - Prog = Basename (argv[0]); log_set_progname(Prog); log_set_logfd(stderr); @@ -2147,14 +2151,14 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); prefix = process_prefix_flag ("-P", argc, argv); - OPENLOG ("usermod"); + OPENLOG (Prog); #ifdef WITH_AUDIT audit_help_open (); #endif sys_ngroups = sysconf (_SC_NGROUPS_MAX); - user_groups = (char **) malloc (sizeof (char *) * (1 + sys_ngroups)); - user_groups[0] = (char *) 0; + user_groups = XMALLOC(sys_ngroups + 1, char *); + user_groups[0] = NULL; is_shadow_pwd = spw_file_present (); #ifdef SHADOWGRP @@ -2193,7 +2197,7 @@ int main (int argc, char **argv) exit (1); } - retval = pam_start ("usermod", pampw->pw_name, &conv, &pamh); + retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); } if (PAM_SUCCESS == retval) { @@ -2305,14 +2309,14 @@ int main (int argc, char **argv) #ifdef WITH_SELINUX if (Zflg) { if ('\0' != *user_selinux) { - if (set_seuser (user_name, user_selinux) != 0) { + if (set_seuser (user_name, user_selinux, user_selinux_range) != 0) { fprintf (stderr, _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"), Prog, user_name, user_selinux); #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "modifying User mapping ", - user_name, (unsigned int) user_id, + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SE_UPDATE); @@ -2325,7 +2329,7 @@ int main (int argc, char **argv) #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, "removing SELinux user mapping", - user_name, (unsigned int) user_id, + user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ fail_exit (E_SE_UPDATE); @@ -2345,7 +2349,9 @@ int main (int argc, char **argv) #endif /* NO_MOVE_MAILBOX */ if (uflg) { +#ifdef ENABLE_LASTLOG update_lastlog (); +#endif /* ENABLE_LASTLOG */ update_faillog (); } @@ -2367,7 +2373,7 @@ int main (int argc, char **argv) if (uflg || gflg) { audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing home directory owner", - user_newname, (unsigned int) user_newid, 1); + user_newname, user_newid, 1); } #endif if (chown_tree (dflg ? prefix_user_newhome : prefix_user_home, diff --git a/src/vipw.c b/src/vipw.c index 488a97d..c30b32d 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -26,7 +26,10 @@ #include #include #include + +#include "alloc.h" #include "defines.h" +#include "getdef.h" #include "groupio.h" #include "nscd.h" #include "sssd.h" @@ -41,6 +44,8 @@ #include "tcbfuncs.h" #endif /* WITH_TCB */ #include "shadowlog.h" +#include "string/sprintf.h" + #define MSG_WARN_EDIT_OTHER_FILE _( \ "You have modified %s.\n"\ @@ -50,7 +55,7 @@ /* * Global variables */ -const char *Prog; +static const char *Prog; static const char *filename, *fileeditname; static bool filelocked = false; @@ -190,18 +195,17 @@ static void vipwexit (const char *msg, int syserr, int ret) static void vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) { - const char *editor; - pid_t pid; - struct stat st1, st2; - int status; - FILE *f; - pid_t orig_pgrp, editor_pgrp = -1; - sigset_t mask, omask; + int status; + char *to_rename; + FILE *f; + pid_t pid, orig_pgrp, editor_pgrp = -1; + sigset_t mask, omask; + const char *editor; + struct stat st1, st2; /* FIXME: the following should have variable sizes */ - char filebackup[1024], fileedit[1024]; - char *to_rename; + char filebackup[1024], fileedit[1024]; - snprintf (filebackup, sizeof filebackup, "%s-", file); + SNPRINTF(filebackup, "%s-", file); #ifdef WITH_TCB if (tcb_mode) { if ( (mkdir (TCB_DIR "/" SHADOWTCB_SCRATCHDIR, 0700) != 0) @@ -211,12 +215,12 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) if (shadowtcb_drop_priv () == SHADOWTCB_FAILURE) { vipwexit (_("failed to drop privileges"), errno, 1); } - snprintf (fileedit, sizeof fileedit, - TCB_DIR "/" SHADOWTCB_SCRATCHDIR "/.vipw.shadow.%s", - user); + SNPRINTF(fileedit, + TCB_DIR "/" SHADOWTCB_SCRATCHDIR "/.vipw.shadow.%s", + user); } else { #endif /* WITH_TCB */ - snprintf (fileedit, sizeof fileedit, "%s.edit", file); + SNPRINTF(fileedit, "%s.edit", file); #ifdef WITH_TCB } #endif /* WITH_TCB */ @@ -292,7 +296,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) } else if (0 == pid) { /* use the system() call to invoke the editor so that it accepts command line args in the EDITOR and VISUAL environment vars */ - char *buf; + char *buf; /* Wait for parent to make us the foreground pgrp. */ if (orig_pgrp != -1) { @@ -302,9 +306,8 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) continue; } - buf = (char *) malloc (strlen (editor) + strlen (fileedit) + 2); - snprintf (buf, strlen (editor) + strlen (fileedit) + 2, - "%s %s", editor, fileedit); + xasprintf(&buf, "%s %s", editor, fileedit); + status = system (buf); if (-1 == status) { fprintf (stderr, _("%s: %s: %s\n"), Prog, editor, @@ -418,13 +421,11 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) if (stat (file, &st1) != 0) { vipwexit (_("failed to stat edited file"), errno, 1); } - to_rename = malloc (strlen (file) + 2); - if (NULL == to_rename) { - vipwexit (_("failed to allocate memory"), errno, 1); - } - snprintf (to_rename, strlen (file) + 2, "%s+", file); + if (asprintf(&to_rename, "%s+", file) == -1) + vipwexit (_("asprintf(3) failed"), errno, 1); + if (create_backup_file (f, to_rename, &st1) != 0) { - free (to_rename); + free(to_rename); vipwexit (_("failed to create backup file"), errno, 1); } (void) fclose (f); @@ -442,7 +443,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) Prog, file, strerror (errno), to_rename); #ifdef WITH_TCB if (tcb_mode) { - free (to_rename); + free(to_rename); } #endif /* WITH_TCB */ vipwexit (0, 0, 1); @@ -450,7 +451,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) #ifdef WITH_TCB if (tcb_mode) { - free (to_rename); + free(to_rename); if (shadowtcb_gain_priv () == SHADOWTCB_FAILURE) { vipwexit (_("failed to gain privileges"), errno, 1); } @@ -467,10 +468,12 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) int main (int argc, char **argv) { - bool editshadow = false; - bool do_vipw; + bool editshadow = false; + bool do_vigr; + + do_vigr = (strcmp(Basename(argv[0]), "vigr") == 0); - Prog = Basename (argv[0]); + Prog = do_vigr ? "vigr" : "vipw"; log_set_progname(Prog); log_set_logfd(stderr); @@ -480,9 +483,7 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - do_vipw = (strcmp (Prog, "vigr") != 0); - - OPENLOG (do_vipw ? "vipw" : "vigr"); + OPENLOG(Prog); { /* @@ -510,13 +511,13 @@ int main (int argc, char **argv) long_options, NULL)) != -1) { switch (c) { case 'g': - do_vipw = false; + do_vigr = true; break; case 'h': usage (E_SUCCESS); break; case 'p': - do_vipw = true; + do_vigr = false; break; case 'q': quiet = true; @@ -541,7 +542,27 @@ int main (int argc, char **argv) } } - if (do_vipw) { + if (do_vigr) { +#ifdef SHADOWGRP + if (editshadow) { + vipwedit (sgr_dbname (), sgr_lock, sgr_unlock); + printf (MSG_WARN_EDIT_OTHER_FILE, + sgr_dbname (), + gr_dbname (), + "vigr"); + } else { +#endif /* SHADOWGRP */ + vipwedit (gr_dbname (), gr_lock, gr_unlock); +#ifdef SHADOWGRP + if (sgr_file_present ()) { + printf (MSG_WARN_EDIT_OTHER_FILE, + gr_dbname (), + sgr_dbname (), + "vigr -s"); + } + } +#endif /* SHADOWGRP */ + } else { if (editshadow) { #ifdef WITH_TCB if (getdef_bool ("USE_TCB") && (NULL != user)) { @@ -568,26 +589,6 @@ int main (int argc, char **argv) "vipw -s"); } } - } else { -#ifdef SHADOWGRP - if (editshadow) { - vipwedit (sgr_dbname (), sgr_lock, sgr_unlock); - printf (MSG_WARN_EDIT_OTHER_FILE, - sgr_dbname (), - gr_dbname (), - "vigr"); - } else { -#endif /* SHADOWGRP */ - vipwedit (gr_dbname (), gr_lock, gr_unlock); -#ifdef SHADOWGRP - if (sgr_file_present ()) { - printf (MSG_WARN_EDIT_OTHER_FILE, - gr_dbname (), - sgr_dbname (), - "vigr -s"); - } - } -#endif /* SHADOWGRP */ } nscd_flush_cache ("passwd"); diff --git a/test-driver b/test-driver new file mode 100755 index 0000000..be73b80 --- /dev/null +++ b/test-driver @@ -0,0 +1,153 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 2011-2021 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <"$log_file" +"$@" >>"$log_file" 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>"$log_file" + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/tests/tests/README b/tests/tests/README new file mode 100644 index 0000000..2e5fdf8 --- /dev/null +++ b/tests/tests/README @@ -0,0 +1,19 @@ +This testsuite is NOT SECURE: it will temporarily change your passwords file +with known passwords. +You should run it on a chroot, or on a secured dedicated system. + + + +To test a Debian system: + $ mkdir sid-chroot + $ sudo debootstrap sid sid-chroot/ http://deb.debian.org/debian/ +edit or copy a sources.list + $ sudo cp /etc/apt/sources.list sid-chroot/etc/apt/ +edit or copy a resolv.conf + $ sudo cp /etc/resolv.conf sid-chroot/etc/ + $ su - root -c "chroot sid-chroot/ /bin/bash" + # mount -t proc proc /proc + # mount -t devpts devpts /dev/pts + # aptitude update + # aptitude install expect + # cd /dev ; mknod --mode=666 /dev/ptmx c 5 2 diff --git a/tests/tests/bug332198-test.exp b/tests/tests/bug332198-test.exp new file mode 100755 index 0000000..fd365bb --- /dev/null +++ b/tests/tests/bug332198-test.exp @@ -0,0 +1,61 @@ +#!/usr/bin/expect -f + +# This is a script for repeatedly logging into the localhost +# using `rlogin` in order to apparently see a symptoms described +# in bug #332198. +# As described in the bug log, sometimes `rlogind` will fail to +# establish a connection, because it starts "login" process and +# the latter fails with "unable to determine TTY name, got /dev/pts/1" +# message. +# +# BUGS +# +# * the script rlogins to localhost +# * the script doesn't handle passwdord prompt, because it's intended +# to use .rhosts auth and expects shell prompt immediately after +# `rlogin` +# * the regexp for shell prompt is hardcoded + +log_user 0 +match_max 8192 + +while {1} { + set rlogin_spawn [spawn rlogin localhost] + if { $rlogin_spawn == 0 } { exit 1 } + expect { + -timeout 10 -re "^.*(Last login\[^\r\n\]*).*\n(\[^\r\n\]*\[#$\] )$" { + send_error "$expect_out(1,string)\n" + send_error "$expect_out(2,string)\n" +# send_error "$expect_out(0,string)\n" + } + timeout { + send_error "TIMEOUT/prompt\n" + send_error "$expect_out(buffer)\n" + send_error "RETRYING\n" + log_user 1 + send "tty /\r" + expect -timeout 2 -re "^.*\r?\n(\[^\r\n\]*# )$" {} + send "tty /\r" + expect -timeout 2 -re "^.*\r?\n(\[^\r\n\]*# )$" {} + send_error "\n" + exit 2 + } + } + send "tty\r" + expect { + -timeout 4 -re "tty\r?\n(\[^\r\n\]*)\r?\n(\[^\r\n\]*\[#$\] )$" { + send_error "$expect_out(2,string)$expect_out(1,string)\n" +# send_error "$expect_out(0,string)\n" + } + timeout { send_error "TIMEOUT/tty\n" ; exit 3 } + } + send "exit\r" + expect { + -timeout 2 eof { +# send_error "OK4: EOF\n" + } + timeout { send_error "TIMEOUT/eof\n" ; exit 4 } + } + wait +} +# vi: set sw=4: diff --git a/tests/tests/bug334803-test.exp b/tests/tests/bug334803-test.exp new file mode 100755 index 0000000..19d9334 --- /dev/null +++ b/tests/tests/bug334803-test.exp @@ -0,0 +1,83 @@ +#!/usr/bin/expect -- + +# This is a script for switching to another user and then +# suspending (`suspend -f`) and resuming (`fg`) his shell + +package require cmdline +set opts { + {s.arg "sudo su -" "user switching method"} + {u.arg "" "username to switch to"} +} +set usage ": \[options]\noptions:" +array set conf [::cmdline::getoptions argv $opts $usage] + +log_user 1 +match_max 8192 +expect_after { + timeout { send_error "TIMEOUT\n" ; exit 1 } + eof { send_error "EXITED\n" ; exit 2 } +} +set timeout 2 + +# user switching command, by default `sudo su -` +set swcmd $conf(s) +# ending of typical shell prompt (zsh/sh): +set shpmt "(%|#|\\$) \\Z" +catch {set shpmt $env(EXPECT_PROMPT)} +# initial username: +set user0 [exec id -un] +# user we switch to (with $swcmd), by default initial user +if {$conf(u) != ""} {set swuser $conf(u)} else {set swuser $user0} + +# 1. start shell +spawn bash +expect -re "$shpmt" {} + +# 2. sudo-ing swuser's shell: +send "$swcmd $swuser\r" +expect { + -re "$swuser.*$shpmt" {} + -re "assword: ?\\Z" { + stty -echo + expect_user -timeout -1 -re "(.*)\n" {set swpwd $expect_out(1,string)} + stty echo + send "$swpwd\r" + expect -re "$swuser.*$shpmt" {} + } +} + +# 3. getting pid and ppid of swuser's shell (needed for 5b): +send "echo \$\$:\$PPID\r" +expect -re "(?n)^(\[\[:digit:\]\]*):(\[\[:digit:\]\]*)\r?\n(.*)$shpmt" {} +set swpid $expect_out(1,string) +set swppid $expect_out(2,string) + +#send_error "$user0:$swpid:$swppid\n" + +# 4. suspending swuser's shell (trying to return to parent shell): +send "suspend -f\r" +expect { + -re "$shpmt" { + # 5a. got to parent shell -- resuming swuser's shell by `fg`: + send "fg\r" + set hung no + } + timeout { + # 5b. `suspend -f` has hung -- resuming swuser's shell by SIGCONT: + send_error "kill $swppid\n" + send_error [exec kill -CONT $swppid] + set hung yes + } +} +expect -re "$shpmt" {} + +# 6. exiting [both] shells +#set swstat [wait -nowait] +#send_error [pid]:[exp_pid]:$swstat\n +send "exit\rexit\r" +expect eof {} +#send_error [wait -nowait]\n +#exec kill -KILL -[exp_pid] +if {$hung} {send_error "BUGGY\n" ; exit 3 } + +# vi:set sw=4: diff --git a/tests/tests/chage/01/data/chage1 b/tests/tests/chage/01/data/chage1 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/01/data/chage1 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/01/data/chage2 b/tests/tests/chage/01/data/chage2 new file mode 100644 index 0000000..7efdc0c --- /dev/null +++ b/tests/tests/chage/01/data/chage2 @@ -0,0 +1,7 @@ +Last password change : Jul 28, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 1 +Maximum number of days between password change : 99996 +Number of days of warning before password expires : 5 diff --git a/tests/tests/chage/01/data/chage3 b/tests/tests/chage/01/data/chage3 new file mode 100644 index 0000000..a263db9 --- /dev/null +++ b/tests/tests/chage/01/data/chage3 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : Jan 01, 1970 +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/01/data/chage4 b/tests/tests/chage/01/data/chage4 new file mode 100644 index 0000000..11e2f2d --- /dev/null +++ b/tests/tests/chage/01/data/chage4 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : Jan 02, 1970 +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/01/data/chage5 b/tests/tests/chage/01/data/chage5 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/01/data/chage5 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/01/data/chage6 b/tests/tests/chage/01/data/chage6 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/01/data/chage6 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/01/data/chage7 b/tests/tests/chage/01/data/chage7 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/01/data/chage7 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/01/data/chage7b b/tests/tests/chage/01/data/chage7b new file mode 100644 index 0000000..0cea901 --- /dev/null +++ b/tests/tests/chage/01/data/chage7b @@ -0,0 +1,7 @@ +Last password change : Jul 26, 2005 +Password expires : Aug 09, 2005 +Password inactive : Sep 13, 2005 +Account expires : Jul 27, 2012 +Minimum number of days between password change : 13 +Maximum number of days between password change : 14 +Number of days of warning before password expires : 9 diff --git a/tests/tests/chage/01/data/chage8 b/tests/tests/chage/01/data/chage8 new file mode 100644 index 0000000..25151a2 --- /dev/null +++ b/tests/tests/chage/01/data/chage8 @@ -0,0 +1 @@ +chage: user 'myuser8' does not exist in /etc/passwd diff --git a/tests/tests/chage/01/data/group b/tests/tests/chage/01/data/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/01/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/01/data/gshadow b/tests/tests/chage/01/data/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/01/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/01/data/passwd b/tests/tests/chage/01/data/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/01/data/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/01/data/shadow b/tests/tests/chage/01/data/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/01/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/01/data/usage b/tests/tests/chage/01/data/usage new file mode 100644 index 0000000..19177f7 --- /dev/null +++ b/tests/tests/chage/01/data/usage @@ -0,0 +1,16 @@ +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/01/run b/tests/tests/chage/01/run new file mode 100755 index 0000000..4434fcf --- /dev/null +++ b/tests/tests/chage/01/run @@ -0,0 +1,206 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test chage options + +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + [ -f /etc/$i- ] && cp /etc/$i- tmp/$i- + done + + true +} + +restore() +{ + for i in passwd group shadow gshadow + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + [ -f tmp/$i- ] && cp tmp/$i- /etc/$i- && rm tmp/$i- + done + rm -f tmp/out + rmdir tmp +} + +save + +# restore the files on exit +trap 'if [ "$?" != "0" ]; then echo "FAIL"; fi; restore' 0 + +for i in passwd group shadow gshadow +do + cp data/$i /etc +done + +echo -n "testing option -l" +chage -l myuser1 > tmp/out +diff -au data/chage1 tmp/out +echo -n . +chage -l myuser2 > tmp/out +diff -au data/chage2 tmp/out +echo -n . +chage -l myuser3 > tmp/out +diff -au data/chage3 tmp/out +echo -n . +chage -l myuser4 > tmp/out +diff -au data/chage4 tmp/out +echo -n . +chage -l myuser5 > tmp/out +diff -au data/chage5 tmp/out +echo -n . +chage -l myuser6 > tmp/out +diff -au data/chage6 tmp/out +echo -n . +chage --list myuser7 > tmp/out +diff -au data/chage7 tmp/out +echo -n . +msg=$(chage -l myuser8 2> tmp/out) || err=$? +[ "$err" = "1" ] && [ "$msg" = "" ] || exit 1 +diff -au data/chage8 tmp/out +echo . + +echo "testing option -d" +chage -d 2001-10-02 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:11597:0:99999:7:1::' ] || exit 1 +echo "testing option -d -1" +chage -d -1 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.::0:99999:7:1::' ] || exit 1 +echo "testing option -d 0" +chage -d 0 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:0:0:99999:7:1::' ] || exit 1 +echo "testing option --lastday" +chage --lastday 2011-11-02 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:1::' ] || exit 1 + +echo "testing option -E" +chage -E 2010-10-02 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:1:14884:' ] || exit 1 +echo "testing option -E -1" +chage -E -1 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:1::' ] || exit 1 +echo "testing option -E 0" +chage -E 0 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:1:0:' ] || exit 1 +echo "testing option --expiredate" +chage --expiredate 2020-02-02 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:1:18294:' ] || exit 1 + +echo "testing option -I" +# NOTE: I could pass a date to -I +chage -I 42 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:42:18294:' ] || exit 1 +echo "testing option -I -1" +# NOTE: this behavior is not documented +chage -I -1 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7::18294:' ] || exit 1 +echo "testing option -I 0" +# NOTE: We should check that this is the expected behavior +chage -I 0 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:0:18294:' ] || exit 1 +echo "testing option --inactive" +chage --inactive 12 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:12:18294:' ] || exit 1 + +echo "testing option -m" +chage -m 24 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:24:99999:7:12:18294:' ] || exit 1 +echo "testing option -m -1" +# NOTE: this behavior is not documented +chage -m -1 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280::99999:7:12:18294:' ] || exit 1 +echo "testing option -m 0" +chage -m 0 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:12:18294:' ] || exit 1 +echo "testing option --mindays" +chage --min 1 myuser7 +# NOTE: that shouldn't have work +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:99999:7:12:18294:' ] || exit 1 + +echo "testing option -M" +chage -M 25 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:25:7:12:18294:' ] || exit 1 +echo "testing option -M -1" +# NOTE: this behavior is not documented +chage -M -1 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1::7:12:18294:' ] || exit 1 +echo "testing option -M 0" +chage -M 0 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:0:7:12:18294:' ] || exit 1 +echo "testing option --maxdays" +chage --max 2 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2:7:12:18294:' ] || exit 1 + +echo "testing option -W" +chage -W 26 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2:26:12:18294:' ] || exit 1 +echo "testing option -W -1" +# NOTE: this behavior is not documented +chage -W -1 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2::12:18294:' ] || exit 1 +echo "testing option -W 0" +chage -W 0 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2:0:12:18294:' ] || exit 1 +echo "testing option --warndays" +chage --warndays 3 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2:3:12:18294:' ] || exit 1 + +echo "testing with all options" +chage -d 2030-03-02 -E 1979-11-24 -I 10 -m 11 -M 12 --warndays 4 myuser7 +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:21975:11:12:4:10:3614:' ] || exit 1 + +echo "interactive test" +./run1.exp +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12990:13:14:9:35:15548:' ] || exit 1 + +echo "interactive test (default)" +./run2.exp +ent=$(getent shadow myuser7) +[ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12990:13:14:9:35:15548:' ] || exit 1 +chage -l myuser7 > tmp/out +diff -au data/chage7b tmp/out + +echo "usage" +chage -h > tmp/out || { + if [ "$?" != "2" ]; then false; fi +} +diff -au data/usage tmp/out + +echo "OK" diff --git a/tests/tests/chage/01/run1.exp b/tests/tests/chage/01/run1.exp new file mode 100755 index 0000000..0160fb1 --- /dev/null +++ b/tests/tests/chage/01/run1.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser7 +expect -re "Minimum Password Age .11\]: " +send "13\r" +expect -re "Maximum Password Age .12\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2030-03-02\]: " +send "2005-07-26\r" +expect -re "Password Expiration Warning .4\]: " +send "9\r" +expect -re "Password Inactive .10\]: " +send "35\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .1979-11-24\]: " +send "2012-07-27\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/01/run2.exp b/tests/tests/chage/01/run2.exp new file mode 100755 index 0000000..f4f342f --- /dev/null +++ b/tests/tests/chage/01/run2.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser7 +expect -re "Minimum Password Age .13\]: " +send "\r" +expect -re "Maximum Password Age .14\]: " +send "\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-26\]: " +send "\r" +expect -re "Password Expiration Warning .9\]: " +send "\r" +expect -re "Password Inactive .35\]: " +send "\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .2012-07-27\]: " +send "\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/02/data/group b/tests/tests/chage/02/data/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/02/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/02/data/gshadow b/tests/tests/chage/02/data/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/02/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/02/data/passwd b/tests/tests/chage/02/data/passwd new file mode 100644 index 0000000..5bec374 --- /dev/null +++ b/tests/tests/chage/02/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/02/data/shadow b/tests/tests/chage/02/data/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chage/02/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chage/02/run b/tests/tests/chage/02/run new file mode 100755 index 0000000..a792f0c --- /dev/null +++ b/tests/tests/chage/02/run @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test chage with bogus inputs + +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + [ -f /etc/$i- ] && cp /etc/$i- tmp/$i- + done + + true +} + +restore() +{ + for i in passwd group shadow gshadow + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + [ -f tmp/$i- ] && cp tmp/$i- /etc/$i- && rm tmp/$i- + done + rm -f tmp/out + rmdir tmp +} + +save + +# restore the files on exit +trap 'if [ "$?" != "0" ]; then echo "FAIL"; fi; restore' 0 + +for i in passwd group shadow gshadow +do + cp data/$i /etc +done + +echo "interactive test" +./run.exp $(date "+%Y-%m-%d") + +echo "OK" diff --git a/tests/tests/chage/02/run.exp b/tests/tests/chage/02/run.exp new file mode 100755 index 0000000..0dbb27d --- /dev/null +++ b/tests/tests/chage/02/run.exp @@ -0,0 +1,83 @@ +#!/usr/bin/expect + +set timeout 5 + +proc expect_error {} { + expect { + "chage: error changing fields" { + expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } + } + } default { + puts "\nFAIL" + exit 1 + } + } +} + + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser +expect -re "Minimum Password Age .0\]: " +send -- "-2\r" +expect_error + +spawn /usr/bin/chage myuser +expect -re "Minimum Password Age .0\]: " +send "foo\r" +expect_error + +# chage accepts to be given only spaces +#spawn /usr/bin/chage myuser +#expect -re "Minimum Password Age .0\]: " +#send -- " \r" +#expect_error +# +#chage may not parse all the arguments. +#This may be a problem is a date is provided instead of just a number +#spawn /usr/bin/chage myuser +#expect -re "Minimum Password Age .0\]: " +#send -- "1 2\r" +#expect_error + +spawn /usr/bin/chage myuser +expect -re "Minimum Password Age .0\]: " +send "11\r" +expect -re "Maximum Password Age .99999\]: " +send -- "-2\r" +expect_error + +spawn /usr/bin/chage myuser +expect -re "Minimum Password Age .0\]: " +send "\r" +expect -re "Maximum Password Age .99999\]: " +send "foo\r" +expect_error + +# chage should verify the range of the arguments +#spawn /usr/bin/chage myuser +#expect -re "Minimum Password Age .0\]: " +#send "\r" +#expect -re "Maximum Password Age .99999\]: " +#send "100000\r" +#expect_error + +#spawn /usr/bin/chage myuser +#expect -re "Minimum Password Age .0\]: " +#send "\r" +#expect -re "Maximum Password Age .99999\]: " +#send "\r" +#expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-25]: " +#send "12\n" +#expect_error + + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/03_chsh_usage/chage.test b/tests/tests/chage/03_chsh_usage/chage.test new file mode 100755 index 0000000..db6200c --- /dev/null +++ b/tests/tests/chage/03_chsh_usage/chage.test @@ -0,0 +1,48 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage can display its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get chage usage (chage -h)..." +chage -h >tmp/usage.out +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/03_chsh_usage/config.txt b/tests/tests/chage/03_chsh_usage/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/03_chsh_usage/config/etc/group b/tests/tests/chage/03_chsh_usage/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/03_chsh_usage/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/03_chsh_usage/config/etc/gshadow b/tests/tests/chage/03_chsh_usage/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/03_chsh_usage/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/03_chsh_usage/config/etc/passwd b/tests/tests/chage/03_chsh_usage/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/03_chsh_usage/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/03_chsh_usage/config/etc/shadow b/tests/tests/chage/03_chsh_usage/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/03_chsh_usage/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/03_chsh_usage/data/usage.out b/tests/tests/chage/03_chsh_usage/data/usage.out new file mode 100644 index 0000000..19177f7 --- /dev/null +++ b/tests/tests/chage/03_chsh_usage/data/usage.out @@ -0,0 +1,16 @@ +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/chage.test b/tests/tests/chage/04_chsh_usage_invalid_option/chage.test new file mode 100755 index 0000000..1ba8163 --- /dev/null +++ b/tests/tests/chage/04_chsh_usage_invalid_option/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when an invalid option is used" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chage with an invalid option (chage -Z bin)..." +chage -Z bin 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/config.txt b/tests/tests/chage/04_chsh_usage_invalid_option/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/group b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/gshadow b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/passwd b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/shadow b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/04_chsh_usage_invalid_option/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/04_chsh_usage_invalid_option/data/usage.out b/tests/tests/chage/04_chsh_usage_invalid_option/data/usage.out new file mode 100644 index 0000000..4428283 --- /dev/null +++ b/tests/tests/chage/04_chsh_usage_invalid_option/data/usage.out @@ -0,0 +1,17 @@ +chage: invalid option -- 'Z' +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/05_chsh_usage_2_users/chage.test b/tests/tests/chage/05_chsh_usage_2_users/chage.test new file mode 100755 index 0000000..5860393 --- /dev/null +++ b/tests/tests/chage/05_chsh_usage_2_users/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when 2 users are provided" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chage with 2 users (chage -I 12 bin nobody)..." +chage -I 12 bin nobody 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/05_chsh_usage_2_users/config.txt b/tests/tests/chage/05_chsh_usage_2_users/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/05_chsh_usage_2_users/config/etc/group b/tests/tests/chage/05_chsh_usage_2_users/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/05_chsh_usage_2_users/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/05_chsh_usage_2_users/config/etc/gshadow b/tests/tests/chage/05_chsh_usage_2_users/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/05_chsh_usage_2_users/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/05_chsh_usage_2_users/config/etc/passwd b/tests/tests/chage/05_chsh_usage_2_users/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/05_chsh_usage_2_users/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/05_chsh_usage_2_users/config/etc/shadow b/tests/tests/chage/05_chsh_usage_2_users/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/05_chsh_usage_2_users/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/05_chsh_usage_2_users/data/usage.out b/tests/tests/chage/05_chsh_usage_2_users/data/usage.out new file mode 100644 index 0000000..19177f7 --- /dev/null +++ b/tests/tests/chage/05_chsh_usage_2_users/data/usage.out @@ -0,0 +1,16 @@ +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/06_chsh_usage_no_users/chage.test b/tests/tests/chage/06_chsh_usage_no_users/chage.test new file mode 100755 index 0000000..0851d6e --- /dev/null +++ b/tests/tests/chage/06_chsh_usage_no_users/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when no users are provided" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chage without an user (chage -I 12)..." +chage -I 12 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/06_chsh_usage_no_users/config.txt b/tests/tests/chage/06_chsh_usage_no_users/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/06_chsh_usage_no_users/config/etc/group b/tests/tests/chage/06_chsh_usage_no_users/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/06_chsh_usage_no_users/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/06_chsh_usage_no_users/config/etc/gshadow b/tests/tests/chage/06_chsh_usage_no_users/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/06_chsh_usage_no_users/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/06_chsh_usage_no_users/config/etc/passwd b/tests/tests/chage/06_chsh_usage_no_users/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/06_chsh_usage_no_users/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/06_chsh_usage_no_users/config/etc/shadow b/tests/tests/chage/06_chsh_usage_no_users/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/06_chsh_usage_no_users/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/06_chsh_usage_no_users/data/usage.out b/tests/tests/chage/06_chsh_usage_no_users/data/usage.out new file mode 100644 index 0000000..19177f7 --- /dev/null +++ b/tests/tests/chage/06_chsh_usage_no_users/data/usage.out @@ -0,0 +1,16 @@ +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/chage.test b/tests/tests/chage/07_chsh_usage-l_exclusive/chage.test new file mode 100755 index 0000000..9036f09 --- /dev/null +++ b/tests/tests/chage/07_chsh_usage-l_exclusive/chage.test @@ -0,0 +1,57 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when -l is used with another option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +for opt in "-m 12" "-M 12" "-d 2011-09-11" "-W 12" "-I 12" "-E 2011-09-11" +do + echo -n "Use chage with -l and $opt (chage -l $opt bin)..." + chage -l $opt bin 2>tmp/usage.out && exit 1 || { + status=$? + } + echo "OK" + + echo -n "Check returned status ($status)..." + test "$status" = "2" + echo "OK" + + echo "chage reported:" + echo "=======================================================================" + cat tmp/usage.out + echo "=======================================================================" + echo -n "Check the usage message..." + diff -au data/usage.out tmp/usage.out + echo "usage message OK." + rm -f tmp/usage.out +done + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/config.txt b/tests/tests/chage/07_chsh_usage-l_exclusive/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/group b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/gshadow b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/passwd b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/shadow b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/07_chsh_usage-l_exclusive/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/07_chsh_usage-l_exclusive/data/usage.out b/tests/tests/chage/07_chsh_usage-l_exclusive/data/usage.out new file mode 100644 index 0000000..e6c2635 --- /dev/null +++ b/tests/tests/chage/07_chsh_usage-l_exclusive/data/usage.out @@ -0,0 +1,17 @@ +chage: do not include "l" with other flags +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/chage.test b/tests/tests/chage/08_chsh_usage_invalid_date/chage.test new file mode 100755 index 0000000..90007fc --- /dev/null +++ b/tests/tests/chage/08_chsh_usage_invalid_date/chage.test @@ -0,0 +1,59 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when -l is used with another option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +for opt in "-d 2011-09" "-E 2011-09-09-11" +do + echo -n "Use chage with an invalid date (chage $opt bin)..." + chage $opt bin 2>tmp/usage.out && exit 1 || { + status=$? + } + echo "OK" + + echo -n "Check returned status ($status)..." + test "$status" = "2" + echo "OK" + + echo "chage reported:" + echo "=======================================================================" + cat tmp/usage.out + echo "=======================================================================" + d=$(echo $opt | cut -d' ' -f2) + sed -e "s/'$d'/'DATE'/" -i tmp/usage.out + echo -n "Check the usage message..." + diff -au data/usage.out tmp/usage.out + echo "usage message OK." + rm -f tmp/usage.out +done + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/config.txt b/tests/tests/chage/08_chsh_usage_invalid_date/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/group b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/gshadow b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/passwd b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/shadow b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/08_chsh_usage_invalid_date/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/08_chsh_usage_invalid_date/data/usage.out b/tests/tests/chage/08_chsh_usage_invalid_date/data/usage.out new file mode 100644 index 0000000..d284dd5 --- /dev/null +++ b/tests/tests/chage/08_chsh_usage_invalid_date/data/usage.out @@ -0,0 +1,17 @@ +chage: invalid date 'DATE' +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/chage.test b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/chage.test new file mode 100755 index 0000000..36d11e5 --- /dev/null +++ b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/chage.test @@ -0,0 +1,59 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when -l is used with another option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +for opt in "-I -12" "-m -12" "-M -12" "-W -12" "-I a" "-m 12.5" "-M 12a" "-W a12" +do + echo -n "Use chage with an invalid date (chage $opt bin)..." + chage $opt bin 2>tmp/usage.out && exit 1 || { + status=$? + } + echo "OK" + + echo -n "Check returned status ($status)..." + test "$status" = "2" + echo "OK" + + echo "chage reported:" + echo "=======================================================================" + cat tmp/usage.out + echo "=======================================================================" + v=$(echo $opt | cut -d' ' -f2) + sed -e "s/'$v'/'VAL'/" -i tmp/usage.out + echo -n "Check the usage message..." + diff -au data/usage.out tmp/usage.out + echo "usage message OK." + rm -f tmp/usage.out +done + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config.txt b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/group b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/gshadow b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/passwd b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/shadow b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/data/usage.out b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/data/usage.out new file mode 100644 index 0000000..1ac46cf --- /dev/null +++ b/tests/tests/chage/09_chsh_usage_invalid_numeric_arg/data/usage.out @@ -0,0 +1,17 @@ +chage: invalid numeric argument 'VAL' +Usage: chage [options] LOGIN + +Options: + -d, --lastday LAST_DAY set date of last password change to LAST_DAY + -E, --expiredate EXPIRE_DATE set account expiration date to EXPIRE_DATE + -h, --help display this help message and exit + -I, --inactive INACTIVE set password inactive after expiration + to INACTIVE + -l, --list show account aging information + -m, --mindays MIN_DAYS set minimum number of days before password + change to MIN_DAYS + -M, --maxdays MAX_DAYS set maximum number of days before password + change to MAX_DAYS + -R, --root CHROOT_DIR directory to chroot into + -W, --warndays WARN_DAYS set expiration warning days to WARN_DAYS + diff --git a/tests/tests/chage/10_chsh-l/chage.test b/tests/tests/chage/10_chsh-l/chage.test new file mode 100755 index 0000000..394c981 --- /dev/null +++ b/tests/tests/chage/10_chsh-l/chage.test @@ -0,0 +1,51 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage displays its usage message when -l is used with another option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +for user in $(ls data/) +do + echo -n "Get $user aging info (chage -l $user)..." + chage -l $user >tmp/$user + echo "OK" + + echo "chage reported:" + echo "=======================================================================" + cat tmp/$user + echo "=======================================================================" + echo -n "Compare with expected output..." + diff -au data/$user tmp/$user + echo "OK" + rm -f tmp/$user +done + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/10_chsh-l/config.txt b/tests/tests/chage/10_chsh-l/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/10_chsh-l/config/etc/group b/tests/tests/chage/10_chsh-l/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/10_chsh-l/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/10_chsh-l/config/etc/gshadow b/tests/tests/chage/10_chsh-l/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/10_chsh-l/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/10_chsh-l/config/etc/passwd b/tests/tests/chage/10_chsh-l/config/etc/passwd new file mode 100644 index 0000000..31046cf --- /dev/null +++ b/tests/tests/chage/10_chsh-l/config/etc/passwd @@ -0,0 +1,32 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash +myuser8:x:424249:424242::/home:/bin/bash +myuser9:x:424250:424242::/home:/bin/bash +myuser10:x:424251:424242::/home:/bin/bash +myuser11:x:424252:424242::/home:/bin/bash +myuser12:x:424253:424242::/home:/bin/bash +myuser13:x:424254:424242::/home:/bin/bash diff --git a/tests/tests/chage/10_chsh-l/config/etc/shadow b/tests/tests/chage/10_chsh-l/config/etc/shadow new file mode 100644 index 0000000..4b81469 --- /dev/null +++ b/tests/tests/chage/10_chsh-l/config/etc/shadow @@ -0,0 +1,30 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:9999:7:1:: +myuser8:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.::0:9999:7:1:: +myuser9:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:0:0:9999:7:1:: +myuser10:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0::7:1:: +#myuser11:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:9999:7:1:: diff --git a/tests/tests/chage/10_chsh-l/data/myuser1 b/tests/tests/chage/10_chsh-l/data/myuser1 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser1 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser10 b/tests/tests/chage/10_chsh-l/data/myuser10 new file mode 100644 index 0000000..8a9e5d1 --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser10 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : -1 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser11 b/tests/tests/chage/10_chsh-l/data/myuser11 new file mode 100644 index 0000000..a54ec7a --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser11 @@ -0,0 +1,7 @@ +Last password change : never +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : -1 +Maximum number of days between password change : -1 +Number of days of warning before password expires : -1 diff --git a/tests/tests/chage/10_chsh-l/data/myuser2 b/tests/tests/chage/10_chsh-l/data/myuser2 new file mode 100644 index 0000000..7efdc0c --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser2 @@ -0,0 +1,7 @@ +Last password change : Jul 28, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 1 +Maximum number of days between password change : 99996 +Number of days of warning before password expires : 5 diff --git a/tests/tests/chage/10_chsh-l/data/myuser3 b/tests/tests/chage/10_chsh-l/data/myuser3 new file mode 100644 index 0000000..a263db9 --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser3 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : Jan 01, 1970 +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser4 b/tests/tests/chage/10_chsh-l/data/myuser4 new file mode 100644 index 0000000..11e2f2d --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser4 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : Jan 02, 1970 +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser5 b/tests/tests/chage/10_chsh-l/data/myuser5 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser5 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser6 b/tests/tests/chage/10_chsh-l/data/myuser6 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser6 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser7 b/tests/tests/chage/10_chsh-l/data/myuser7 new file mode 100644 index 0000000..63debfb --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser7 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : Dec 11, 2032 +Password inactive : Dec 12, 2032 +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 9999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser8 b/tests/tests/chage/10_chsh-l/data/myuser8 new file mode 100644 index 0000000..4a3f4bd --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser8 @@ -0,0 +1,7 @@ +Last password change : never +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 9999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/10_chsh-l/data/myuser9 b/tests/tests/chage/10_chsh-l/data/myuser9 new file mode 100644 index 0000000..09f6fdc --- /dev/null +++ b/tests/tests/chage/10_chsh-l/data/myuser9 @@ -0,0 +1,7 @@ +Last password change : password must be changed +Password expires : password must be changed +Password inactive : password must be changed +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 9999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/chage.test b/tests/tests/chage/11_chsh_usage_invalid_user/chage.test new file mode 100755 index 0000000..46d9d65 --- /dev/null +++ b/tests/tests/chage/11_chsh_usage_invalid_user/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage warns in case of invalid user" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chage with an invalid user (chage -I 12 foo)..." +chage -I 12 foo 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/config.txt b/tests/tests/chage/11_chsh_usage_invalid_user/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/group b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/gshadow b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/passwd b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/shadow b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/11_chsh_usage_invalid_user/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/11_chsh_usage_invalid_user/data/usage.out b/tests/tests/chage/11_chsh_usage_invalid_user/data/usage.out new file mode 100644 index 0000000..cdc8a1f --- /dev/null +++ b/tests/tests/chage/11_chsh_usage_invalid_user/data/usage.out @@ -0,0 +1 @@ +chage: user 'foo' does not exist in /etc/passwd diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/chage.test b/tests/tests/chage/12_chsh_usage-l_invalid_user2/chage.test new file mode 100755 index 0000000..d3b5255 --- /dev/null +++ b/tests/tests/chage/12_chsh_usage-l_invalid_user2/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage warns in case of invalid user" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chage with an invalid user (chage -l foo)..." +chage -l foo 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/config.txt b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/group b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/gshadow b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/passwd b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/shadow b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/12_chsh_usage-l_invalid_user2/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/12_chsh_usage-l_invalid_user2/data/usage.out b/tests/tests/chage/12_chsh_usage-l_invalid_user2/data/usage.out new file mode 100644 index 0000000..cdc8a1f --- /dev/null +++ b/tests/tests/chage/12_chsh_usage-l_invalid_user2/data/usage.out @@ -0,0 +1 @@ +chage: user 'foo' does not exist in /etc/passwd diff --git a/tests/tests/chage/13_chsh_locked_passwd/chage.test b/tests/tests/chage/13_chsh_locked_passwd/chage.test new file mode 100755 index 0000000..aeeb412 --- /dev/null +++ b/tests/tests/chage/13_chsh_locked_passwd/chage.test @@ -0,0 +1,59 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage warns when passwd is already locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/passwd.lock' 0 + +change_config + +echo -n "Create lock file for /etc/passwd..." +touch /etc/passwd.lock +echo "done" + +echo -n "Use chage with an invalid user (chage -I 12 bin)..." +chage -I 12 bin 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" +rm -f /etc/passwd.lock + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/13_chsh_locked_passwd/config.txt b/tests/tests/chage/13_chsh_locked_passwd/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/13_chsh_locked_passwd/config/etc/group b/tests/tests/chage/13_chsh_locked_passwd/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/13_chsh_locked_passwd/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/13_chsh_locked_passwd/config/etc/gshadow b/tests/tests/chage/13_chsh_locked_passwd/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/13_chsh_locked_passwd/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/13_chsh_locked_passwd/config/etc/passwd b/tests/tests/chage/13_chsh_locked_passwd/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/13_chsh_locked_passwd/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/13_chsh_locked_passwd/config/etc/shadow b/tests/tests/chage/13_chsh_locked_passwd/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/13_chsh_locked_passwd/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/13_chsh_locked_passwd/data/usage.out b/tests/tests/chage/13_chsh_locked_passwd/data/usage.out new file mode 100644 index 0000000..caa44b5 --- /dev/null +++ b/tests/tests/chage/13_chsh_locked_passwd/data/usage.out @@ -0,0 +1,2 @@ +chage: existing lock file /etc/passwd.lock without a PID +chage: cannot lock /etc/passwd; try again later. diff --git a/tests/tests/chage/14_chsh_locked_shadow/chage.test b/tests/tests/chage/14_chsh_locked_shadow/chage.test new file mode 100755 index 0000000..3474d95 --- /dev/null +++ b/tests/tests/chage/14_chsh_locked_shadow/chage.test @@ -0,0 +1,59 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage warns when shadow is already locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/shadow.lock' 0 + +change_config + +echo -n "Create lock file for /etc/shadow..." +touch /etc/shadow.lock +echo "done" + +echo -n "Use chage with an invalid user (chage -I 12 bin)..." +chage -I 12 bin 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" +rm -f /etc/shadow.lock + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/14_chsh_locked_shadow/config.txt b/tests/tests/chage/14_chsh_locked_shadow/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/14_chsh_locked_shadow/config/etc/group b/tests/tests/chage/14_chsh_locked_shadow/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/14_chsh_locked_shadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/14_chsh_locked_shadow/config/etc/gshadow b/tests/tests/chage/14_chsh_locked_shadow/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/14_chsh_locked_shadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/14_chsh_locked_shadow/config/etc/passwd b/tests/tests/chage/14_chsh_locked_shadow/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/14_chsh_locked_shadow/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/14_chsh_locked_shadow/config/etc/shadow b/tests/tests/chage/14_chsh_locked_shadow/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/14_chsh_locked_shadow/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/14_chsh_locked_shadow/data/usage.out b/tests/tests/chage/14_chsh_locked_shadow/data/usage.out new file mode 100644 index 0000000..f396f3c --- /dev/null +++ b/tests/tests/chage/14_chsh_locked_shadow/data/usage.out @@ -0,0 +1,2 @@ +chage: existing lock file /etc/shadow.lock without a PID +chage: cannot lock /etc/shadow; try again later. diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/chage.test b/tests/tests/chage/15_chage-I_no_shadow_entry/chage.test new file mode 100755 index 0000000..77a06a2 --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change bin's inactivity period (chage -I 12 bin)..." +chage -I 12 bin +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/config.txt b/tests/tests/chage/15_chage-I_no_shadow_entry/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/group b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/gshadow b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/login.defs b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/passwd b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/passwd new file mode 100644 index 0000000..8656be4 --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/shadow b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/shadow new file mode 100644 index 0000000..88faec2 --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/data/passwd b/tests/tests/chage/15_chage-I_no_shadow_entry/data/passwd new file mode 100644 index 0000000..d9ad1e2 --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/data/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/15_chage-I_no_shadow_entry/data/shadow b/tests/tests/chage/15_chage-I_no_shadow_entry/data/shadow new file mode 100644 index 0000000..d32d937 --- /dev/null +++ b/tests/tests/chage/15_chage-I_no_shadow_entry/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +bin:*:::::12:: diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/chage.test b/tests/tests/chage/16_chage-m_no_shadow_entry/chage.test new file mode 100755 index 0000000..778a65a --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change bin's mindays (chage -m 12 bin)..." +chage -m 12 bin +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/config.txt b/tests/tests/chage/16_chage-m_no_shadow_entry/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/group b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/gshadow b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/login.defs b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/passwd b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/passwd new file mode 100644 index 0000000..8656be4 --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/shadow b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/shadow new file mode 100644 index 0000000..88faec2 --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/data/passwd b/tests/tests/chage/16_chage-m_no_shadow_entry/data/passwd new file mode 100644 index 0000000..d9ad1e2 --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/data/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/16_chage-m_no_shadow_entry/data/shadow b/tests/tests/chage/16_chage-m_no_shadow_entry/data/shadow new file mode 100644 index 0000000..dc6bc8b --- /dev/null +++ b/tests/tests/chage/16_chage-m_no_shadow_entry/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +bin:*::12::::: diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/chage.test b/tests/tests/chage/17_chage-M_no_shadow_entry/chage.test new file mode 100755 index 0000000..6b70f06 --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change bin's mindays (chage -M 12 bin)..." +chage -M 12 bin +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/config.txt b/tests/tests/chage/17_chage-M_no_shadow_entry/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/group b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/gshadow b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/login.defs b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/passwd b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/passwd new file mode 100644 index 0000000..8656be4 --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/shadow b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/shadow new file mode 100644 index 0000000..88faec2 --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/data/passwd b/tests/tests/chage/17_chage-M_no_shadow_entry/data/passwd new file mode 100644 index 0000000..d9ad1e2 --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/data/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/17_chage-M_no_shadow_entry/data/shadow b/tests/tests/chage/17_chage-M_no_shadow_entry/data/shadow new file mode 100644 index 0000000..fb623f7 --- /dev/null +++ b/tests/tests/chage/17_chage-M_no_shadow_entry/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +bin:*:::12:::: diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/chage.test b/tests/tests/chage/18_chage-d_no_shadow_entry/chage.test new file mode 100755 index 0000000..fb56cef --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change bin's mindays (chage -d 2011-09-11 bin)..." +chage -d 2011-09-11 bin +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/config.txt b/tests/tests/chage/18_chage-d_no_shadow_entry/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/group b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/gshadow b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/login.defs b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/passwd b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/passwd new file mode 100644 index 0000000..8656be4 --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/shadow b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/shadow new file mode 100644 index 0000000..88faec2 --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/data/passwd b/tests/tests/chage/18_chage-d_no_shadow_entry/data/passwd new file mode 100644 index 0000000..d9ad1e2 --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/data/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/18_chage-d_no_shadow_entry/data/shadow b/tests/tests/chage/18_chage-d_no_shadow_entry/data/shadow new file mode 100644 index 0000000..df82e6c --- /dev/null +++ b/tests/tests/chage/18_chage-d_no_shadow_entry/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +bin:*:15228:::::: diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/chage.test b/tests/tests/chage/19_chage-W_no_shadow_entry/chage.test new file mode 100755 index 0000000..410ccbb --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change bin's mindays (chage -W 12 bin)..." +chage -W 12 bin +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/config.txt b/tests/tests/chage/19_chage-W_no_shadow_entry/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/group b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/gshadow b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/login.defs b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/passwd b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/passwd new file mode 100644 index 0000000..8656be4 --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/shadow b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/shadow new file mode 100644 index 0000000..88faec2 --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/data/passwd b/tests/tests/chage/19_chage-W_no_shadow_entry/data/passwd new file mode 100644 index 0000000..d9ad1e2 --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/data/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/19_chage-W_no_shadow_entry/data/shadow b/tests/tests/chage/19_chage-W_no_shadow_entry/data/shadow new file mode 100644 index 0000000..3265423 --- /dev/null +++ b/tests/tests/chage/19_chage-W_no_shadow_entry/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +bin:*::::12::: diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/chage.test b/tests/tests/chage/20_chage-E_no_shadow_entry/chage.test new file mode 100755 index 0000000..52079f7 --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change bin's mindays (chage -E 2011-09-11 bin)..." +chage -E 2011-09-11 bin +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/config.txt b/tests/tests/chage/20_chage-E_no_shadow_entry/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/group b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/gshadow b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/login.defs b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/passwd b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/passwd new file mode 100644 index 0000000..8656be4 --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/shadow b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/shadow new file mode 100644 index 0000000..88faec2 --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/data/passwd b/tests/tests/chage/20_chage-E_no_shadow_entry/data/passwd new file mode 100644 index 0000000..d9ad1e2 --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/data/passwd @@ -0,0 +1,20 @@ +root:*:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:*:102:102::/var/spool/exim4:/bin/false +foo:abc:1000:1000::/nonexistent:/bin/sh diff --git a/tests/tests/chage/20_chage-E_no_shadow_entry/data/shadow b/tests/tests/chage/20_chage-E_no_shadow_entry/data/shadow new file mode 100644 index 0000000..752a49a --- /dev/null +++ b/tests/tests/chage/20_chage-E_no_shadow_entry/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +bin:*::::::15228: diff --git a/tests/tests/chage/21_chage_no_shadow_file/chage.test b/tests/tests/chage/21_chage_no_shadow_file/chage.test new file mode 100755 index 0000000..c2e8d0e --- /dev/null +++ b/tests/tests/chage/21_chage_no_shadow_file/chage.test @@ -0,0 +1,58 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage warns when shadow is not enabled" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Remove /etc/shadow..." +rm -f /etc/shadow +echo "OK" + +echo -n "Use chage with an invalid user (chage -I 12 bin)..." +chage -I 12 bin 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "15" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +test ! -f /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/21_chage_no_shadow_file/config.txt b/tests/tests/chage/21_chage_no_shadow_file/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/21_chage_no_shadow_file/config/etc/group b/tests/tests/chage/21_chage_no_shadow_file/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/21_chage_no_shadow_file/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/21_chage_no_shadow_file/config/etc/gshadow b/tests/tests/chage/21_chage_no_shadow_file/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/21_chage_no_shadow_file/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/21_chage_no_shadow_file/config/etc/passwd b/tests/tests/chage/21_chage_no_shadow_file/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/21_chage_no_shadow_file/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/21_chage_no_shadow_file/config/etc/shadow b/tests/tests/chage/21_chage_no_shadow_file/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/21_chage_no_shadow_file/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/21_chage_no_shadow_file/data/usage.out b/tests/tests/chage/21_chage_no_shadow_file/data/usage.out new file mode 100644 index 0000000..07d7a30 --- /dev/null +++ b/tests/tests/chage/21_chage_no_shadow_file/data/usage.out @@ -0,0 +1 @@ +chage: the shadow password file is not present diff --git a/tests/tests/chage/22_chage_myuser-l/chage.test b/tests/tests/chage/22_chage_myuser-l/chage.test new file mode 100755 index 0000000..34ad36d --- /dev/null +++ b/tests/tests/chage/22_chage_myuser-l/chage.test @@ -0,0 +1,51 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage can be used to show one's aging info" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +for user in $(ls data/) +do + echo -n "Get $user aging info (chage -l $user)..." + su myuser1 -c "chage -l $user" >tmp/$user + echo "OK" + + echo "chage reported:" + echo "=======================================================================" + cat tmp/$user + echo "=======================================================================" + echo -n "Compare with expected output..." + diff -au data/$user tmp/$user + echo "OK" + rm -f tmp/$user +done + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/22_chage_myuser-l/config.txt b/tests/tests/chage/22_chage_myuser-l/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/22_chage_myuser-l/config/etc/group b/tests/tests/chage/22_chage_myuser-l/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/22_chage_myuser-l/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/22_chage_myuser-l/config/etc/gshadow b/tests/tests/chage/22_chage_myuser-l/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/22_chage_myuser-l/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/22_chage_myuser-l/config/etc/passwd b/tests/tests/chage/22_chage_myuser-l/config/etc/passwd new file mode 100644 index 0000000..31046cf --- /dev/null +++ b/tests/tests/chage/22_chage_myuser-l/config/etc/passwd @@ -0,0 +1,32 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash +myuser8:x:424249:424242::/home:/bin/bash +myuser9:x:424250:424242::/home:/bin/bash +myuser10:x:424251:424242::/home:/bin/bash +myuser11:x:424252:424242::/home:/bin/bash +myuser12:x:424253:424242::/home:/bin/bash +myuser13:x:424254:424242::/home:/bin/bash diff --git a/tests/tests/chage/22_chage_myuser-l/config/etc/shadow b/tests/tests/chage/22_chage_myuser-l/config/etc/shadow new file mode 100644 index 0000000..4b81469 --- /dev/null +++ b/tests/tests/chage/22_chage_myuser-l/config/etc/shadow @@ -0,0 +1,30 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:9999:7:1:: +myuser8:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.::0:9999:7:1:: +myuser9:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:0:0:9999:7:1:: +myuser10:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0::7:1:: +#myuser11:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:9999:7:1:: diff --git a/tests/tests/chage/22_chage_myuser-l/data/myuser1 b/tests/tests/chage/22_chage_myuser-l/data/myuser1 new file mode 100644 index 0000000..64754ca --- /dev/null +++ b/tests/tests/chage/22_chage_myuser-l/data/myuser1 @@ -0,0 +1,7 @@ +Last password change : Jul 27, 2005 +Password expires : never +Password inactive : never +Account expires : never +Minimum number of days between password change : 0 +Maximum number of days between password change : 99999 +Number of days of warning before password expires : 7 diff --git a/tests/tests/chage/23_chage_myuser-I/chage.test b/tests/tests/chage/23_chage_myuser-I/chage.test new file mode 100755 index 0000000..0bd7043 --- /dev/null +++ b/tests/tests/chage/23_chage_myuser-I/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage forbids to change aging info" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "myusers1 uses chage to change myuser1 aging info (chage -I 12 myuser2)..." +su myuser1 -c "chage -I 12 myuser1" 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/23_chage_myuser-I/config.txt b/tests/tests/chage/23_chage_myuser-I/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/23_chage_myuser-I/config/etc/group b/tests/tests/chage/23_chage_myuser-I/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/23_chage_myuser-I/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/23_chage_myuser-I/config/etc/gshadow b/tests/tests/chage/23_chage_myuser-I/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/23_chage_myuser-I/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/23_chage_myuser-I/config/etc/passwd b/tests/tests/chage/23_chage_myuser-I/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/23_chage_myuser-I/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/23_chage_myuser-I/config/etc/shadow b/tests/tests/chage/23_chage_myuser-I/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/23_chage_myuser-I/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/23_chage_myuser-I/data/usage.out b/tests/tests/chage/23_chage_myuser-I/data/usage.out new file mode 100644 index 0000000..dc0d6ca --- /dev/null +++ b/tests/tests/chage/23_chage_myuser-I/data/usage.out @@ -0,0 +1 @@ +chage: Permission denied. diff --git a/tests/tests/chage/24_chage_myuser-l_other/chage.test b/tests/tests/chage/24_chage_myuser-l_other/chage.test new file mode 100755 index 0000000..ef2f8e2 --- /dev/null +++ b/tests/tests/chage/24_chage_myuser-l_other/chage.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage forbids to get other accounts aging info" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "myusers1 uses chage to get myuser2 aging info (chage -l myuser2)..." +su myuser1 -c "chage -l myuser2" 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chage reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/24_chage_myuser-l_other/config.txt b/tests/tests/chage/24_chage_myuser-l_other/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chage/24_chage_myuser-l_other/config/etc/group b/tests/tests/chage/24_chage_myuser-l_other/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chage/24_chage_myuser-l_other/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chage/24_chage_myuser-l_other/config/etc/gshadow b/tests/tests/chage/24_chage_myuser-l_other/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chage/24_chage_myuser-l_other/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chage/24_chage_myuser-l_other/config/etc/passwd b/tests/tests/chage/24_chage_myuser-l_other/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/24_chage_myuser-l_other/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/24_chage_myuser-l_other/config/etc/shadow b/tests/tests/chage/24_chage_myuser-l_other/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/24_chage_myuser-l_other/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/24_chage_myuser-l_other/data/usage.out b/tests/tests/chage/24_chage_myuser-l_other/data/usage.out new file mode 100644 index 0000000..dc0d6ca --- /dev/null +++ b/tests/tests/chage/24_chage_myuser-l_other/data/usage.out @@ -0,0 +1 @@ +chage: Permission denied. diff --git a/tests/tests/chage/25_chage_interactive/chage.test b/tests/tests/chage/25_chage_interactive/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/25_chage_interactive/config.txt b/tests/tests/chage/25_chage_interactive/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/25_chage_interactive/config/etc/group b/tests/tests/chage/25_chage_interactive/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/25_chage_interactive/config/etc/gshadow b/tests/tests/chage/25_chage_interactive/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/25_chage_interactive/config/etc/login.defs b/tests/tests/chage/25_chage_interactive/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/25_chage_interactive/config/etc/passwd b/tests/tests/chage/25_chage_interactive/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/25_chage_interactive/config/etc/shadow b/tests/tests/chage/25_chage_interactive/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/25_chage_interactive/data/shadow b/tests/tests/chage/25_chage_interactive/data/shadow new file mode 100644 index 0000000..334494a --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12990:13:14:9:35:15548: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/25_chage_interactive/run.exp b/tests/tests/chage/25_chage_interactive/run.exp new file mode 100755 index 0000000..5b4b1d0 --- /dev/null +++ b/tests/tests/chage/25_chage_interactive/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "2005-07-26\r" +expect -re "Password Expiration Warning .7\]: " +send "9\r" +expect -re "Password Inactive .-1\]: " +send "35\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "2012-07-27\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/26_chage_interactive_date_0/chage.test b/tests/tests/chage/26_chage_interactive_date_0/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/26_chage_interactive_date_0/config.txt b/tests/tests/chage/26_chage_interactive_date_0/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/26_chage_interactive_date_0/config/etc/group b/tests/tests/chage/26_chage_interactive_date_0/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/26_chage_interactive_date_0/config/etc/gshadow b/tests/tests/chage/26_chage_interactive_date_0/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/26_chage_interactive_date_0/config/etc/login.defs b/tests/tests/chage/26_chage_interactive_date_0/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/26_chage_interactive_date_0/config/etc/passwd b/tests/tests/chage/26_chage_interactive_date_0/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/26_chage_interactive_date_0/config/etc/shadow b/tests/tests/chage/26_chage_interactive_date_0/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/26_chage_interactive_date_0/data/shadow b/tests/tests/chage/26_chage_interactive_date_0/data/shadow new file mode 100644 index 0000000..293987c --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:0:13:14:9:35:0: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/26_chage_interactive_date_0/run.exp b/tests/tests/chage/26_chage_interactive_date_0/run.exp new file mode 100755 index 0000000..2f97abb --- /dev/null +++ b/tests/tests/chage/26_chage_interactive_date_0/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "0\r" +expect -re "Password Expiration Warning .7\]: " +send "9\r" +expect -re "Password Inactive .-1\]: " +send "35\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "0\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/27_chage_interactive_date_-1/chage.test b/tests/tests/chage/27_chage_interactive_date_-1/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/27_chage_interactive_date_-1/config.txt b/tests/tests/chage/27_chage_interactive_date_-1/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/27_chage_interactive_date_-1/config/etc/group b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/27_chage_interactive_date_-1/config/etc/gshadow b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/27_chage_interactive_date_-1/config/etc/login.defs b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/27_chage_interactive_date_-1/config/etc/passwd b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/27_chage_interactive_date_-1/config/etc/shadow b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/27_chage_interactive_date_-1/data/shadow b/tests/tests/chage/27_chage_interactive_date_-1/data/shadow new file mode 100644 index 0000000..800f1a2 --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.::13:14:9:35:: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/27_chage_interactive_date_-1/run.exp b/tests/tests/chage/27_chage_interactive_date_-1/run.exp new file mode 100755 index 0000000..f4c20a1 --- /dev/null +++ b/tests/tests/chage/27_chage_interactive_date_-1/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send -- "-1\r" +expect -re "Password Expiration Warning .7\]: " +send "9\r" +expect -re "Password Inactive .-1\]: " +send "35\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send -- "-1\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/chage.test b/tests/tests/chage/28_chage_interactive_date_EPOCH/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/config.txt b/tests/tests/chage/28_chage_interactive_date_EPOCH/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/group b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/gshadow b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/login.defs b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/passwd b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/shadow b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/data/shadow b/tests/tests/chage/28_chage_interactive_date_EPOCH/data/shadow new file mode 100644 index 0000000..293987c --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:0:13:14:9:35:0: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/28_chage_interactive_date_EPOCH/run.exp b/tests/tests/chage/28_chage_interactive_date_EPOCH/run.exp new file mode 100755 index 0000000..a93e8cc --- /dev/null +++ b/tests/tests/chage/28_chage_interactive_date_EPOCH/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "1970-01-01\r" +expect -re "Password Expiration Warning .7\]: " +send "9\r" +expect -re "Password Inactive .-1\]: " +send "35\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "1970-01-01\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/chage.test b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/chage.test new file mode 100755 index 0000000..83b4ba2 --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config.txt b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/group b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/gshadow b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/login.defs b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/passwd b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/shadow b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/run.exp b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/run.exp new file mode 100755 index 0000000..a43fd04 --- /dev/null +++ b/tests/tests/chage/29_chage_interactive_date_pre-EPOCH/run.exp @@ -0,0 +1,26 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "1900-01-01\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/chage.test b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/chage.test new file mode 100755 index 0000000..83b4ba2 --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config.txt b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/group b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/gshadow b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/login.defs b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/passwd b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/shadow b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/run.exp b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/run.exp new file mode 100755 index 0000000..9c3c5db --- /dev/null +++ b/tests/tests/chage/30_chage_interactive_date_pre-EPOCH2/run.exp @@ -0,0 +1,32 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "1970-01-01\r" +expect -re "Password Expiration Warning .7\]: " +send "9\r" +expect -re "Password Inactive .-1\]: " +send "35\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "1900-01-01\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/chage.test b/tests/tests/chage/31_chage_interactive_date_invalid/chage.test new file mode 100755 index 0000000..1a8606a --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/passwd.lock /etc/shadow.lock' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/config.txt b/tests/tests/chage/31_chage_interactive_date_invalid/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/group b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/gshadow b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/login.defs b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/passwd b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/shadow b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/31_chage_interactive_date_invalid/run.exp b/tests/tests/chage/31_chage_interactive_date_invalid/run.exp new file mode 100755 index 0000000..91551d4 --- /dev/null +++ b/tests/tests/chage/31_chage_interactive_date_invalid/run.exp @@ -0,0 +1,26 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "2000-13-42\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/chage.test b/tests/tests/chage/32_chage_interactive_date_invalid2/chage.test new file mode 100755 index 0000000..83b4ba2 --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/config.txt b/tests/tests/chage/32_chage_interactive_date_invalid2/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/group b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/gshadow b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/login.defs b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/passwd b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/shadow b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/32_chage_interactive_date_invalid2/run.exp b/tests/tests/chage/32_chage_interactive_date_invalid2/run.exp new file mode 100755 index 0000000..edc3f78 --- /dev/null +++ b/tests/tests/chage/32_chage_interactive_date_invalid2/run.exp @@ -0,0 +1,26 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "2000-mm-42\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/chage.test b/tests/tests/chage/33_chage_interactive-W_invalid1/chage.test new file mode 100755 index 0000000..b2d6d32 --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage interactive session checks field validity" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/config.txt b/tests/tests/chage/33_chage_interactive-W_invalid1/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/group b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/gshadow b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/login.defs b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/passwd b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/shadow b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/33_chage_interactive-W_invalid1/run.exp b/tests/tests/chage/33_chage_interactive-W_invalid1/run.exp new file mode 100755 index 0000000..ac50231 --- /dev/null +++ b/tests/tests/chage/33_chage_interactive-W_invalid1/run.exp @@ -0,0 +1,32 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "0\r" +expect -re "Password Expiration Warning .7\]: " +send "9a\r" +#expect -re "Password Inactive .-1\]: " +#send "35\r" +#expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +#send "0\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/chage.test b/tests/tests/chage/34_chage_interactive-W_invalid2/chage.test new file mode 100755 index 0000000..b2d6d32 --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage interactive session checks field validity" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/config.txt b/tests/tests/chage/34_chage_interactive-W_invalid2/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/group b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/gshadow b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/login.defs b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/passwd b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/shadow b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/34_chage_interactive-W_invalid2/run.exp b/tests/tests/chage/34_chage_interactive-W_invalid2/run.exp new file mode 100755 index 0000000..04b6f57 --- /dev/null +++ b/tests/tests/chage/34_chage_interactive-W_invalid2/run.exp @@ -0,0 +1,32 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "13\r" +expect -re "Maximum Password Age .99999\]: " +send "14\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "0\r" +expect -re "Password Expiration Warning .7\]: " +send -- "-2\r" +#expect -re "Password Inactive .-1\]: " +#send "35\r" +#expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +#send "0\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/35_chage_interactive-W-1/chage.test b/tests/tests/chage/35_chage_interactive-W-1/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/35_chage_interactive-W-1/config.txt b/tests/tests/chage/35_chage_interactive-W-1/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/35_chage_interactive-W-1/config/etc/group b/tests/tests/chage/35_chage_interactive-W-1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/35_chage_interactive-W-1/config/etc/gshadow b/tests/tests/chage/35_chage_interactive-W-1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/35_chage_interactive-W-1/config/etc/login.defs b/tests/tests/chage/35_chage_interactive-W-1/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/35_chage_interactive-W-1/config/etc/passwd b/tests/tests/chage/35_chage_interactive-W-1/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/35_chage_interactive-W-1/config/etc/shadow b/tests/tests/chage/35_chage_interactive-W-1/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/35_chage_interactive-W-1/data/shadow b/tests/tests/chage/35_chage_interactive-W-1/data/shadow new file mode 100644 index 0000000..4b74f15 --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/35_chage_interactive-W-1/run.exp b/tests/tests/chage/35_chage_interactive-W-1/run.exp new file mode 100755 index 0000000..84fd749 --- /dev/null +++ b/tests/tests/chage/35_chage_interactive-W-1/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "\r" +expect -re "Maximum Password Age .99999\]: " +send "\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "\r" +expect -re "Password Expiration Warning .7\]: " +send -- "-1\r" +expect -re "Password Inactive .-1\]: " +send "\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/chage.test b/tests/tests/chage/36_chage_interactive-I_invalid1/chage.test new file mode 100755 index 0000000..b2d6d32 --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage interactive session checks field validity" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/config.txt b/tests/tests/chage/36_chage_interactive-I_invalid1/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/group b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/gshadow b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/login.defs b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/passwd b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/shadow b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/36_chage_interactive-I_invalid1/run.exp b/tests/tests/chage/36_chage_interactive-I_invalid1/run.exp new file mode 100755 index 0000000..1e3087b --- /dev/null +++ b/tests/tests/chage/36_chage_interactive-I_invalid1/run.exp @@ -0,0 +1,32 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "\r" +expect -re "Maximum Password Age .99999\]: " +send "\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "\r" +expect -re "Password Expiration Warning .7\]: " +send "\r" +expect -re "Password Inactive .-1\]: " +send "9a\r" +#expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +#send "0\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/chage.test b/tests/tests/chage/37_chage_interactive-I_invalid2/chage.test new file mode 100755 index 0000000..b2d6d32 --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage interactive session checks field validity" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/config.txt b/tests/tests/chage/37_chage_interactive-I_invalid2/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/group b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/gshadow b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/login.defs b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/passwd b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/shadow b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/37_chage_interactive-I_invalid2/run.exp b/tests/tests/chage/37_chage_interactive-I_invalid2/run.exp new file mode 100755 index 0000000..b059117 --- /dev/null +++ b/tests/tests/chage/37_chage_interactive-I_invalid2/run.exp @@ -0,0 +1,32 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "\r" +expect -re "Maximum Password Age .99999\]: " +send "\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "\r" +expect -re "Password Expiration Warning .7\]: " +send "\r" +expect -re "Password Inactive .-1\]: " +send -- "-2\r" +#expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +#send "0\r" +expect "chage: error changing fields\r\n" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/38_chage_interactive-I-1/chage.test b/tests/tests/chage/38_chage_interactive-I-1/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/38_chage_interactive-I-1/config.txt b/tests/tests/chage/38_chage_interactive-I-1/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/38_chage_interactive-I-1/config/etc/group b/tests/tests/chage/38_chage_interactive-I-1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/38_chage_interactive-I-1/config/etc/gshadow b/tests/tests/chage/38_chage_interactive-I-1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/38_chage_interactive-I-1/config/etc/login.defs b/tests/tests/chage/38_chage_interactive-I-1/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/38_chage_interactive-I-1/config/etc/passwd b/tests/tests/chage/38_chage_interactive-I-1/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/38_chage_interactive-I-1/config/etc/shadow b/tests/tests/chage/38_chage_interactive-I-1/config/etc/shadow new file mode 100644 index 0000000..922d955 --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:3:: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/38_chage_interactive-I-1/data/shadow b/tests/tests/chage/38_chage_interactive-I-1/data/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/38_chage_interactive-I-1/run.exp b/tests/tests/chage/38_chage_interactive-I-1/run.exp new file mode 100755 index 0000000..94eb463 --- /dev/null +++ b/tests/tests/chage/38_chage_interactive-I-1/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "\r" +expect -re "Maximum Password Age .99999\]: " +send "\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .2005-07-27\]: " +send "\r" +expect -re "Password Expiration Warning .7\]: " +send "\r" +expect -re "Password Inactive .3\]: " +send -- "-1\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chage/39_chage_interactive-d-1/chage.test b/tests/tests/chage/39_chage_interactive-d-1/chage.test new file mode 100755 index 0000000..8d5f5be --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/chage.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chage creates a shadow entry if there were none" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "chage interactive session as myuser1..." +./run.exp +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chage/39_chage_interactive-d-1/config.txt b/tests/tests/chage/39_chage_interactive-d-1/config.txt new file mode 100644 index 0000000..e9e4bbe --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/config.txt @@ -0,0 +1 @@ +group foo, GID 1000 diff --git a/tests/tests/chage/39_chage_interactive-d-1/config/etc/group b/tests/tests/chage/39_chage_interactive-d-1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/chage/39_chage_interactive-d-1/config/etc/gshadow b/tests/tests/chage/39_chage_interactive-d-1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/chage/39_chage_interactive-d-1/config/etc/login.defs b/tests/tests/chage/39_chage_interactive-d-1/config/etc/login.defs new file mode 100644 index 0000000..cf181ac --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chage/39_chage_interactive-d-1/config/etc/passwd b/tests/tests/chage/39_chage_interactive-d-1/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chage/39_chage_interactive-d-1/config/etc/shadow b/tests/tests/chage/39_chage_interactive-d-1/config/etc/shadow new file mode 100644 index 0000000..a1afc12 --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.::0:99999:7:3:: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/39_chage_interactive-d-1/data/shadow b/tests/tests/chage/39_chage_interactive-d-1/data/shadow new file mode 100644 index 0000000..a1afc12 --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/data/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.::0:99999:7:3:: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chage/39_chage_interactive-d-1/run.exp b/tests/tests/chage/39_chage_interactive-d-1/run.exp new file mode 100755 index 0000000..362436b --- /dev/null +++ b/tests/tests/chage/39_chage_interactive-d-1/run.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 5 + +# I've not been able to put the opening bracket in the regular expressions +# If anyone knows... + +spawn /usr/bin/chage myuser1 +expect -re "Minimum Password Age .0\]: " +send "\r" +expect -re "Maximum Password Age .99999\]: " +send "\r" +expect -re "Last Password Change \[(]YYYY-MM-DD\[)] .-1\]: " +send -- "-1\r" +expect -re "Password Expiration Warning .7\]: " +send "\r" +expect -re "Password Inactive .3\]: " +send "\r" +expect -re "Account Expiration Date \[(]YYYY-MM-DD\[)] .-1\]: " +send "\r" +expect { + eof { + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chroot/chage/01_chage--root/chage.test b/tests/tests/chroot/chage/01_chage--root/chage.test new file mode 100755 index 0000000..df9aad5 --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/chage.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "chage can change user's data in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change root's last day in chroot (chage --root $PWD/tmp/root -d 2012-12-12 root)..." +chage --root $PWD/tmp/root -d 2012-12-12 root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/chage/01_chage--root/config.txt b/tests/tests/chroot/chage/01_chage--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/chage/01_chage--root/config/etc/default/useradd b/tests/tests/chroot/chage/01_chage--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/chage/01_chage--root/config/etc/group b/tests/tests/chroot/chage/01_chage--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/chage/01_chage--root/config/etc/gshadow b/tests/tests/chroot/chage/01_chage--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/chage/01_chage--root/config/etc/passwd b/tests/tests/chroot/chage/01_chage--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/chage/01_chage--root/config/etc/shadow b/tests/tests/chroot/chage/01_chage--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/group b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/gshadow b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/login.defs b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/passwd b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/shadow b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chage/01_chage--root/data/shadow b/tests/tests/chroot/chage/01_chage--root/data/shadow new file mode 100644 index 0000000..c9e698b --- /dev/null +++ b/tests/tests/chroot/chage/01_chage--root/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:15686:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/chgpasswd.test b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/chgpasswd.test new file mode 100755 index 0000000..afbdb4b --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/chgpasswd.test @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "chgpasswd can change a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change nobody and lp's password in chroot..." +echo 'nogroup:test +lp:test2' | chgpasswd --root $PWD/tmp/root -c SHA256 +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config.txt b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/default/useradd b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/group b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/gshadow b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/passwd b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/shadow b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/group b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/group new file mode 100644 index 0000000..d2a4b10 --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/gshadow b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/login.defs b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/passwd b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/shadow b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chgpasswd/01_chgpasswd--root/data/gshadow b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/data/gshadow new file mode 100644 index 0000000..2ea5fca --- /dev/null +++ b/tests/tests/chroot/chgpasswd/01_chgpasswd--root/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:@PASS_SHA256 test2@:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:@PASS_SHA256 test@:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/chpasswd.test b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/chpasswd.test new file mode 100755 index 0000000..17282f9 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/chpasswd.test @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "chpasswd can change a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change nobody and lp's password in chroot..." +echo 'nobody:test +lp:test2' | chpasswd --root $PWD/tmp/root -c SHA256 +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/shadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config.txt b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/default/useradd b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/group b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/gshadow b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/passwd b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/shadow b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/group b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/group new file mode 100644 index 0000000..d2a4b10 --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/gshadow b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/login.defs b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/passwd b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/shadow b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/data/shadow b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/data/shadow new file mode 100644 index 0000000..8a67bed --- /dev/null +++ b/tests/tests/chroot/chpasswd/01_chpasswd--root_nopam/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:@PASS_SHA256 test2@:@TODAY@:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:@PASS_SHA256 test@:@TODAY@:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/chpasswd.test b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/chpasswd.test new file mode 100755 index 0000000..2e2f895 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/chpasswd.test @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "chpasswd can change a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change nobody and lp's password in chroot..." +echo 'nobody:test +lp:test2' | chpasswd --root $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/shadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config.txt b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/default/useradd b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/group b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/gshadow b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/passwd b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/shadow b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/group b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/group new file mode 100644 index 0000000..d2a4b10 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/gshadow b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/login.defs b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/chpasswd b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/chpasswd new file mode 100644 index 0000000..da2adcc --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/chpasswd @@ -0,0 +1,5 @@ +# The PAM configuration file for the Shadow 'chpasswd' service +# + +@include common-password + diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/common-password b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/common-password new file mode 100644 index 0000000..cb8c7b7 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/pam.d/common-password @@ -0,0 +1,33 @@ +# +# /etc/pam.d/common-password - password-related modules common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of modules that define the services to be +# used to change user passwords. The default is pam_unix. + +# Explanation of pam_unix options: +# +# The "sha512" option enables salted SHA512 passwords. Without this option, +# the default is Unix crypt. Prior releases used the option "md5". +# +# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in +# login.defs. +# +# See the pam_unix manpage for other options. + +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +password [success=1 default=ignore] pam_unix.so obscure sha512 +# here's the fallback if no module succeeds +password requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +password required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/passwd b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/shadow b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/data/shadow b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/data/shadow new file mode 100644 index 0000000..5839a29 --- /dev/null +++ b/tests/tests/chroot/chpasswd/02_chpasswd--root_pam/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:@PASS_SHA512 test2@:@TODAY@:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:@PASS_SHA512 test@:@TODAY@:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chsh/01_chsh--root/chsh.test b/tests/tests/chroot/chsh/01_chsh--root/chsh.test new file mode 100755 index 0000000..b99cbb4 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/chsh.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "chsh can change a user in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change user in chroot (chsh --root $PWD/tmp/root -s /bin/dash root)..." +chsh --root $PWD/tmp/root -s /bin/dash root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/chsh/01_chsh--root/config.txt b/tests/tests/chroot/chsh/01_chsh--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/chsh/01_chsh--root/config/etc/default/useradd b/tests/tests/chroot/chsh/01_chsh--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/chsh/01_chsh--root/config/etc/group b/tests/tests/chroot/chsh/01_chsh--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/chsh/01_chsh--root/config/etc/gshadow b/tests/tests/chroot/chsh/01_chsh--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/chsh/01_chsh--root/config/etc/passwd b/tests/tests/chroot/chsh/01_chsh--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/chsh/01_chsh--root/config/etc/shadow b/tests/tests/chroot/chsh/01_chsh--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot.list b/tests/tests/chroot/chsh/01_chsh--root/config_chroot.list new file mode 100644 index 0000000..166e521 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot.list @@ -0,0 +1 @@ +/bin/dash diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/group b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/gshadow b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/login.defs b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/chsh b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/chsh new file mode 100644 index 0000000..7eb604d --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/chsh @@ -0,0 +1,20 @@ +# +# The PAM configuration file for the Shadow `chsh' service +# + +# This will not allow a user to change their shell unless +# their current one is listed in /etc/shells. This keeps +# accounts with special shells from changing them. +auth required pam_shells.so + +# This allows root to change user shell without being +# prompted for a password +auth sufficient pam_rootok.so + +# The standard Unix authentication modules, used with +# NIS (man nsswitch) as well as normal /etc/passwd and +# /etc/shadow entries. +@include common-auth +@include common-account +@include common-session + diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-account b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-account new file mode 100644 index 0000000..316b173 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-account @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-account - authorization settings common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of the authorization modules that define +# the central access policy for use on the system. The default is to +# only deny service to users whose accounts are expired in /etc/shadow. +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. +# + +# here are the per-package modules (the "Primary" block) +account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so +# here's the fallback if no module succeeds +account requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +account required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-auth b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-auth new file mode 100644 index 0000000..5facfa2 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-auth @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-auth - authentication settings common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of the authentication modules that define +# the central authentication scheme for use on the system +# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the +# traditional Unix authentication mechanisms. +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +auth [success=1 default=ignore] pam_unix.so nullok_secure +# here's the fallback if no module succeeds +auth requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +auth required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-session b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-session new file mode 100644 index 0000000..4ad1729 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/pam.d/common-session @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-session - session-related modules common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of modules that define tasks to be performed +# at the start and end of sessions of *any* kind (both interactive and +# non-interactive). +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +session [default=1] pam_permit.so +# here's the fallback if no module succeeds +session requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +session required pam_permit.so +# and here are more per-package modules (the "Additional" block) +session required pam_unix.so +# end of pam-auth-update config diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/passwd b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shadow b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shells b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shells new file mode 100644 index 0000000..3cf5cc4 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/config_chroot/etc/shells @@ -0,0 +1,3 @@ +# /etc/shells: valid login shells +/bin/bash +/bin/dash diff --git a/tests/tests/chroot/chsh/01_chsh--root/data/passwd b/tests/tests/chroot/chsh/01_chsh--root/data/passwd new file mode 100644 index 0000000..72c8a86 --- /dev/null +++ b/tests/tests/chroot/chsh/01_chsh--root/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/dash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config.txt b/tests/tests/chroot/gpasswd/01_gpasswd--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/default/useradd b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/group b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/gshadow b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/passwd b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/shadow b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/group b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/group new file mode 100644 index 0000000..d2a4b10 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/gshadow b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/login.defs b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/passwd b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/shadow b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/data/group b/tests/tests/chroot/gpasswd/01_gpasswd--root/data/group new file mode 100644 index 0000000..5c28b63 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/data/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100:root +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/data/gshadow b/tests/tests/chroot/gpasswd/01_gpasswd--root/data/gshadow new file mode 100644 index 0000000..7b869c2 --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*::root +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/gpasswd/01_gpasswd--root/gpasswd.test b/tests/tests/chroot/gpasswd/01_gpasswd--root/gpasswd.test new file mode 100755 index 0000000..8e861aa --- /dev/null +++ b/tests/tests/chroot/gpasswd/01_gpasswd--root/gpasswd.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "gpasswd can change a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +ls tmp/root/lib + +echo -n "Chang group in chroot (gpasswd -a root users -Q $PWD/tmp/root)..." +gpasswd -a root users -Q $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config.txt b/tests/tests/chroot/groupadd/01_groupadd--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/default/useradd b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/group b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/gshadow b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/passwd b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/shadow b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/group b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/gshadow b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/login.defs b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/passwd b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/shadow b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/data/group b/tests/tests/chroot/groupadd/01_groupadd--root/data/group new file mode 100644 index 0000000..ffc452f --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/data/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +foo:x:1000: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/data/gshadow b/tests/tests/chroot/groupadd/01_groupadd--root/data/gshadow new file mode 100644 index 0000000..e4b350d --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/data/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: +foo:!:: diff --git a/tests/tests/chroot/groupadd/01_groupadd--root/groupadd.test b/tests/tests/chroot/groupadd/01_groupadd--root/groupadd.test new file mode 100755 index 0000000..26f4c9b --- /dev/null +++ b/tests/tests/chroot/groupadd/01_groupadd--root/groupadd.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "groupadd can add a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Add group foo in chroot (groupadd --root $PWD/tmp/root foo)..." +groupadd --root $PWD/tmp/root foo +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config.txt b/tests/tests/chroot/groupdel/01_groupdel--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/default/useradd b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/group b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/gshadow b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/passwd b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/shadow b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/group b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/gshadow b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/login.defs b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/passwd b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/shadow b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/data/group b/tests/tests/chroot/groupdel/01_groupdel--root/data/group new file mode 100644 index 0000000..9ee4d56 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/data/gshadow b/tests/tests/chroot/groupdel/01_groupdel--root/data/gshadow new file mode 100644 index 0000000..b969cf2 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/groupdel/01_groupdel--root/groupdel.test b/tests/tests/chroot/groupdel/01_groupdel--root/groupdel.test new file mode 100755 index 0000000..6361a12 --- /dev/null +++ b/tests/tests/chroot/groupdel/01_groupdel--root/groupdel.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "groupmod can delete a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Delete group users in chroot (groupdel --root $PWD/tmp/root users)..." +groupdel --root $PWD/tmp/root users +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config.txt b/tests/tests/chroot/groupmod/01_groupmod--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/default/useradd b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/group b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/gshadow b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/passwd b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/shadow b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/group b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/gshadow b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/login.defs b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/passwd b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/shadow b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/data/group b/tests/tests/chroot/groupmod/01_groupmod--root/data/group new file mode 100644 index 0000000..068bdf5 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +utilisateurs:x:100: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/data/gshadow b/tests/tests/chroot/groupmod/01_groupmod--root/data/gshadow new file mode 100644 index 0000000..249ec49 --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: +utilisateurs:*:: diff --git a/tests/tests/chroot/groupmod/01_groupmod--root/groupmod.test b/tests/tests/chroot/groupmod/01_groupmod--root/groupmod.test new file mode 100755 index 0000000..853df8f --- /dev/null +++ b/tests/tests/chroot/groupmod/01_groupmod--root/groupmod.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "groupmod can change a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change group in chroot (groupmod --root $PWD/tmp/root -n utilisateurs users)..." +groupmod --root $PWD/tmp/root -n utilisateurs users +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/grpck/01_grpck--root/config.txt b/tests/tests/chroot/grpck/01_grpck--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/grpck/01_grpck--root/config/etc/default/useradd b/tests/tests/chroot/grpck/01_grpck--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/grpck/01_grpck--root/config/etc/group b/tests/tests/chroot/grpck/01_grpck--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/grpck/01_grpck--root/config/etc/gshadow b/tests/tests/chroot/grpck/01_grpck--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/grpck/01_grpck--root/config/etc/passwd b/tests/tests/chroot/grpck/01_grpck--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/grpck/01_grpck--root/config/etc/shadow b/tests/tests/chroot/grpck/01_grpck--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/group b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/group new file mode 100644 index 0000000..d2a4b10 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/gshadow b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/login.defs b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/passwd b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/shadow b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/grpck/01_grpck--root/data/group b/tests/tests/chroot/grpck/01_grpck--root/data/group new file mode 100644 index 0000000..dd74ea8 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +crontab:x:101: +Debian-exim:x:102: +nogroup:x:65534: +myuser:x:424242: diff --git a/tests/tests/chroot/grpck/01_grpck--root/data/gshadow b/tests/tests/chroot/grpck/01_grpck--root/data/gshadow new file mode 100644 index 0000000..5b9b1d4 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +crontab:x:: +Debian-exim:x:: +nogroup:*:: +myuser:x:: diff --git a/tests/tests/chroot/grpck/01_grpck--root/grpck.test b/tests/tests/chroot/grpck/01_grpck--root/grpck.test new file mode 100755 index 0000000..93867d0 --- /dev/null +++ b/tests/tests/chroot/grpck/01_grpck--root/grpck.test @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck can sort groups in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Sort groups in chroot (grpck --sort --root $PWD/tmp/root)..." +grpck --sort --root $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config.txt b/tests/tests/chroot/grpconv/01_grpconv--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/default/useradd b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/group b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/gshadow b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/passwd b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/shadow b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/group b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/group new file mode 100644 index 0000000..27f1e9a --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:0: +daemon:*:1: +bin:*:2: +sys:*:3: +adm:*:4: +tty:*:5: +disk:*:6: +lp:*:7: +mail:*:8: +news:*:9: +uucp:*:10: +man:*:12: +proxy:*:13: +kmem:*:15: +dialout:*:20: +fax:*:21: +voice:*:22: +cdrom:*:24: +floppy:*:25: +tape:*:26: +sudo:*:27: +audio:*:29: +dip:*:30: +www-data:*:33: +backup:*:34: +operator:*:37: +list:*:38: +irc:*:39: +src:*:40: +gnats:*:41: +shadow:*:42: +utmp:*:43: +video:*:44: +sasl:*:45: +plugdev:*:46: +staff:*:50: +games:*:60: +users:foo:100: +nogroup::65534: +crontab:*:101: +Debian-exim:!:102: +myuser:*:424242: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/login.defs b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/passwd b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/shadow b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/data/group b/tests/tests/chroot/grpconv/01_grpconv--root/data/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/data/gshadow b/tests/tests/chroot/grpconv/01_grpconv--root/data/gshadow new file mode 100644 index 0000000..5f81b8f --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/data/gshadow @@ -0,0 +1,42 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:foo:: +nogroup::: +crontab:*:: +Debian-exim:!:: +myuser:*:: diff --git a/tests/tests/chroot/grpconv/01_grpconv--root/grpconv.test b/tests/tests/chroot/grpconv/01_grpconv--root/grpconv.test new file mode 100755 index 0000000..92e1bf0 --- /dev/null +++ b/tests/tests/chroot/grpconv/01_grpconv--root/grpconv.test @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpconv can change a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "grpconv in a chroot (grpconv --root $PWD/tmp/root)..." +grpconv --root $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/gshadow +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config.txt b/tests/tests/chroot/grpunconv/01_grpunconv--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/default/useradd b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/group b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/gshadow b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/gshadow new file mode 100644 index 0000000..b21489b --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/passwd b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/shadow b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/group b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/gshadow b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..86f5654 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/login.defs b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/passwd b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/shadow b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/data/group b/tests/tests/chroot/grpunconv/01_grpunconv--root/data/group new file mode 100644 index 0000000..9a03703 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/data/group @@ -0,0 +1,42 @@ +root:*:0: +daemon:*:1: +bin:*:2: +sys:*:3: +adm:*:4: +tty:*:5: +disk:*:6: +lp:*:7: +mail:*:8: +news:*:9: +uucp:*:10: +man:*:12: +proxy:*:13: +kmem:*:15: +dialout:*:20: +fax:*:21: +voice:*:22: +cdrom:*:24: +floppy:*:25: +tape:*:26: +sudo:*:27: +audio:*:29: +dip:*:30: +www-data:*:33: +backup:*:34: +operator:*:37: +list:*:38: +irc:*:39: +src:*:40: +gnats:*:41: +shadow:*:42: +utmp:*:43: +video:*:44: +sasl:*:45: +plugdev:*:46: +staff:*:50: +games:*:60: +users:*:100: +nogroup:*:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:424242: diff --git a/tests/tests/chroot/grpunconv/01_grpunconv--root/grpunconv.test b/tests/tests/chroot/grpunconv/01_grpunconv--root/grpunconv.test new file mode 100755 index 0000000..5d6edd5 --- /dev/null +++ b/tests/tests/chroot/grpunconv/01_grpunconv--root/grpunconv.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpunconv can change a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "grpunconv in a chroot (grpunconv --root $PWD/tmp/root)..." +grpunconv --root $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +test ! -f tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config.txt b/tests/tests/chroot/lastlog/01_lastlog--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/default/useradd b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/group b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/gshadow b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/passwd b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/shadow b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/group b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/group new file mode 100644 index 0000000..d2a4b10 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/gshadow b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/login.defs b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/passwd b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/shadow b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/data/group b/tests/tests/chroot/lastlog/01_lastlog--root/data/group new file mode 100644 index 0000000..5c28b63 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/data/group @@ -0,0 +1,42 @@ +staff:x:50: +root:x:0: +tty:x:5: +daemon:x:1: +bin:x:2: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +sys:x:3: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +adm:x:4: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +games:x:60: +users:x:100:root +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +disk:x:6: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/data/gshadow b/tests/tests/chroot/lastlog/01_lastlog--root/data/gshadow new file mode 100644 index 0000000..7b869c2 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*::root +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/data/lastlog.list b/tests/tests/chroot/lastlog/01_lastlog--root/data/lastlog.list new file mode 100644 index 0000000..e95b205 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/data/lastlog.list @@ -0,0 +1,2 @@ +Username +myuser diff --git a/tests/tests/chroot/lastlog/01_lastlog--root/lastlog.test b/tests/tests/chroot/lastlog/01_lastlog--root/lastlog.test new file mode 100755 index 0000000..d61d9a7 --- /dev/null +++ b/tests/tests/chroot/lastlog/01_lastlog--root/lastlog.test @@ -0,0 +1,47 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "gpasswd can change a group in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; rm -f tmp/root/var/log/lastlog; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Create an empty /var/log/lastlog in the chroot..." +> tmp/root/var/log/lastlog +echo "OK" + +echo -n "lastlog --root $PWD/tmp/root -u 424242..." +lastlog --root $PWD/tmp/root -u 424242> tmp/lastlog.out +echo "OK." + +echo "lastlog :" +echo "=======================================================================" +cat tmp/lastlog.out +echo "=======================================================================" + +echo -n "Check the list of logged in users..." +cat tmp/lastlog.out | cut -d" " -f1 > tmp/lastlog.list +diff -au data/lastlog.list tmp/lastlog.list +echo "OK." + +rm -f tmp/lastlog.out tmp/lastlog.list +rm -f tmp/root/var/log/lastlog + +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/login/01_login_sublogin/config.txt b/tests/tests/chroot/login/01_login_sublogin/config.txt new file mode 100644 index 0000000..aecff4a --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config.txt @@ -0,0 +1,3 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz diff --git a/tests/tests/chroot/login/01_login_sublogin/config/etc/group b/tests/tests/chroot/login/01_login_sublogin/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/login/01_login_sublogin/config/etc/gshadow b/tests/tests/chroot/login/01_login_sublogin/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/login/01_login_sublogin/config/etc/login.defs b/tests/tests/chroot/login/01_login_sublogin/config/etc/login.defs new file mode 100644 index 0000000..acf5f93 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +#ENV_SUPATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +#ENV_PATH /usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/login/01_login_sublogin/config/etc/passwd b/tests/tests/chroot/login/01_login_sublogin/config/etc/passwd new file mode 100644 index 0000000..7b82b88 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/nonexistent:*/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/login/01_login_sublogin/config/etc/shadow b/tests/tests/chroot/login/01_login_sublogin/config/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot.list b/tests/tests/chroot/login/01_login_sublogin/config_chroot.list new file mode 100644 index 0000000..e22e8e8 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot.list @@ -0,0 +1,3 @@ +/bin/dash +/bin/sh +/usr/bin/id diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/group b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/gshadow b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/login.defs b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/login.defs new file mode 100644 index 0000000..acf5f93 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/login.defs @@ -0,0 +1,314 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +#ENV_SUPATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +#ENV_PATH /usr/local/bin:/usr/bin:/bin:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK usage is discouraged because it catches only some classes of user +# entries to system, in fact only those made through login(1), while setting +# umask in shell rc file will catch also logins through su, cron, ssh etc. +# +# At the same time, using shell rc to set umask won't catch entries which use +# non-shell executables in place of login shell, like /usr/sbin/pppd for "ppp" +# user and alike. +# +# Therefore the use of pam_umask is recommended (Debian package libpam-umask) +# as the solution which catches all these cases on PAM-enabled systems. +# +# This avoids the confusion created by having the umask set +# in two different places -- in login.defs and shell rc files (i.e. +# /etc/profile). +# +# For discussion, see #314539 and #248150 as well as the thread starting at +# http://lists.debian.org/debian-devel/2005/06/msg01598.html +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +# 022 is the "historical" value in Debian for UMASK when it was used +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +#UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 100 +GID_MAX 60000 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# This enables userdel to remove user groups if no members exist. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, thus in Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is used by chpasswd, gpasswd and newusers. +# +#MD5_CRYPT_ENAB no + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-account b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-account new file mode 100644 index 0000000..316b173 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-account @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-account - authorization settings common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of the authorization modules that define +# the central access policy for use on the system. The default is to +# only deny service to users whose accounts are expired in /etc/shadow. +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. +# + +# here are the per-package modules (the "Primary" block) +account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so +# here's the fallback if no module succeeds +account requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +account required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-auth b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-auth new file mode 100644 index 0000000..5facfa2 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-auth @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-auth - authentication settings common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of the authentication modules that define +# the central authentication scheme for use on the system +# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the +# traditional Unix authentication mechanisms. +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +auth [success=1 default=ignore] pam_unix.so nullok_secure +# here's the fallback if no module succeeds +auth requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +auth required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-password b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-password new file mode 100644 index 0000000..cb8c7b7 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-password @@ -0,0 +1,33 @@ +# +# /etc/pam.d/common-password - password-related modules common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of modules that define the services to be +# used to change user passwords. The default is pam_unix. + +# Explanation of pam_unix options: +# +# The "sha512" option enables salted SHA512 passwords. Without this option, +# the default is Unix crypt. Prior releases used the option "md5". +# +# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in +# login.defs. +# +# See the pam_unix manpage for other options. + +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +password [success=1 default=ignore] pam_unix.so obscure sha512 +# here's the fallback if no module succeeds +password requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +password required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session new file mode 100644 index 0000000..4ad1729 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-session - session-related modules common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of modules that define tasks to be performed +# at the start and end of sessions of *any* kind (both interactive and +# non-interactive). +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +session [default=1] pam_permit.so +# here's the fallback if no module succeeds +session requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +session required pam_permit.so +# and here are more per-package modules (the "Additional" block) +session required pam_unix.so +# end of pam-auth-update config diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session-noninteractive b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session-noninteractive new file mode 100644 index 0000000..c9144d5 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/common-session-noninteractive @@ -0,0 +1,25 @@ +# +# /etc/pam.d/common-session-noninteractive - session-related modules +# common to all non-interactive services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of modules that define tasks to be performed +# at the start and end of all non-interactive sessions. +# +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +session [default=1] pam_permit.so +# here's the fallback if no module succeeds +session requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +session required pam_permit.so +# and here are more per-package modules (the "Additional" block) +session required pam_unix.so +# end of pam-auth-update config diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/login b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/login new file mode 100644 index 0000000..8acd533 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/login @@ -0,0 +1,107 @@ +# +# The PAM configuration file for the Shadow `login' service +# + +# Enforce a minimal delay in case of failure (in microseconds). +# (Replaces the `FAIL_DELAY' setting from login.defs) +# Note that other modules may require another minimal delay. (for example, +# to disable any delay, you should add the nodelay option to pam_unix) +auth optional pam_faildelay.so delay=3000000 + +# Outputs an issue file prior to each login prompt (Replaces the +# ISSUE_FILE option from login.defs). Uncomment for use +# auth required pam_issue.so issue=/etc/issue + +# Disallows root logins except on tty's listed in /etc/securetty +# (Replaces the `CONSOLE' setting from login.defs) +# +# With the default control of this module: +# [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] +# root will not be prompted for a password on insecure lines. +# if an invalid username is entered, a password is prompted (but login +# will eventually be rejected) +# +# You can change it to a "requisite" module if you think root may mis-type +# her login and should not be prompted for a password in that case. But +# this will leave the system as vulnerable to user enumeration attacks. +# +# You can change it to a "required" module if you think it permits to +# guess valid user names of your system (invalid user names are considered +# as possibly being root on insecure lines), but root passwords may be +# communicated over insecure lines. +auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_securetty.so + +# Disallows other than root logins when /etc/nologin exists +# (Replaces the `NOLOGINS_FILE' option from login.defs) +auth requisite pam_nologin.so + +# SELinux needs to be the first session rule. This ensures that any +# lingering context has been cleared. Without out this it is possible +# that a module could execute code in the wrong domain. +# When the module is present, "required" would be sufficient (When SELinux +# is disabled, this returns success.) +session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close + +# This module parses environment configuration file(s) +# and also allows you to use an extended config +# file /etc/security/pam_env.conf. +# +# parsing /etc/environment needs "readenv=1" +session required pam_env.so readenv=1 +# locale variables are also kept into /etc/default/locale in etch +# reading this file *in addition to /etc/environment* does not hurt +session required pam_env.so readenv=1 envfile=/etc/default/locale + +# Standard Un*x authentication. +@include common-auth + +# This allows certain extra groups to be granted to a user +# based on things like time of day, tty, service, and user. +# Please edit /etc/security/group.conf to fit your needs +# (Replaces the `CONSOLE_GROUPS' option in login.defs) +auth optional pam_group.so + +# Uncomment and edit /etc/security/time.conf if you need to set +# time constraints on logins. +# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs +# as well as /etc/porttime) +# account requisite pam_time.so + +# Uncomment and edit /etc/security/access.conf if you need to +# set access limits. +# (Replaces /etc/login.access file) +# account required pam_access.so + +# Sets up user limits according to /etc/security/limits.conf +# (Replaces the use of /etc/limits in old login) +session required pam_limits.so + +# Prints the last login info upon successful login +# (Replaces the `LASTLOG_ENAB' option from login.defs) +session optional pam_lastlog.so + +# Prints the motd upon successful login +# (Replaces the `MOTD_FILE' option in login.defs) +session optional pam_motd.so + +# Prints the status of the user's mailbox upon successful login +# (Replaces the `MAIL_CHECK_ENAB' option from login.defs). +# +# This also defines the MAIL environment variable +# However, userdel also needs MAIL_DIR and MAIL_FILE variables +# in /etc/login.defs to make sure that removing a user +# also removes the user's mail spool file. +# See comments in /etc/login.defs +session optional pam_mail.so standard + +# Standard Un*x account and session +@include common-account +@include common-session +@include common-password + +# SELinux needs to intervene at login time to ensure that the process +# starts in the proper default security context. Only sessions which are +# intended to run in the user's context should be run after this. +session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open +# When the module is present, "required" would be sufficient (When SELinux +# is disabled, this returns success.) diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/other b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/other new file mode 100644 index 0000000..59d776c --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/pam.d/other @@ -0,0 +1,16 @@ +# +# /etc/pam.d/other - specify the PAM fallback behaviour +# +# Note that this file is used for any unspecified service; for example +#if /etc/pam.d/cron specifies no session modules but cron calls +#pam_open_session, the session module out of /etc/pam.d/other is +#used. If you really want nothing to happen then use pam_permit.so or +#pam_deny.so as appropriate. + +# We fall back to the system default in /etc/pam.d/common-* +# + +@include common-auth +@include common-account +@include common-password +@include common-session diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/passwd b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/securetty b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/securetty new file mode 100644 index 0000000..f65650f --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/securetty @@ -0,0 +1,390 @@ +# /etc/securetty: list of terminals on which root is allowed to login. +# See securetty(5) and login(1). + +console + +# Local X displays (allows empty passwords with pam_unix's nullok_secure) +:0 +:0.0 +:0.1 +:1 +:1.0 +:1.1 +:2 +:2.0 +:2.1 +:3 +:3.0 +:3.1 +#... + + +# ========================================================== +# +# TTYs sorted by major number according to Documentation/devices.txt +# +# ========================================================== + +# Virtual consoles +tty1 +tty2 +tty3 +tty4 +tty5 +tty6 +tty7 +tty8 +tty9 +tty10 +tty11 +tty12 +tty13 +tty14 +tty15 +tty16 +tty17 +tty18 +tty19 +tty20 +tty21 +tty22 +tty23 +tty24 +tty25 +tty26 +tty27 +tty28 +tty29 +tty30 +tty31 +tty32 +tty33 +tty34 +tty35 +tty36 +tty37 +tty38 +tty39 +tty40 +tty41 +tty42 +tty43 +tty44 +tty45 +tty46 +tty47 +tty48 +tty49 +tty50 +tty51 +tty52 +tty53 +tty54 +tty55 +tty56 +tty57 +tty58 +tty59 +tty60 +tty61 +tty62 +tty63 + +# UART serial ports +ttyS0 +ttyS1 +ttyS2 +ttyS3 +ttyS4 +ttyS5 +#...ttyS191 + +# Serial Mux devices (Linux/PA-RISC only) +ttyB0 +ttyB1 +#... + +# Chase serial card +ttyH0 +ttyH1 +#... + +# Cyclades serial cards +ttyC0 +ttyC1 +#...ttyC31 + +# Digiboard serial cards +ttyD0 +ttyD1 +#... + +# Stallion serial cards +ttyE0 +ttyE1 +#...ttyE255 + +# Specialix serial cards +ttyX0 +ttyX1 +#... + +# Comtrol Rocketport serial cards +ttyR0 +ttyR1 +#... + +# SDL RISCom serial cards +ttyL0 +ttyL1 +#... + +# Hayes ESP serial card +ttyP0 +ttyP1 +#... + +# Computone IntelliPort II serial card +ttyF0 +ttyF1 +#...ttyF255 + +# Specialix IO8+ serial card +ttyW0 +ttyW1 +#... + +# Comtrol VS-1000 serial controller +ttyV0 +ttyV1 +#... + +# ISI serial card +ttyM0 +ttyM1 +#... + +# Technology Concepts serial card +ttyT0 +ttyT1 +#... + +# Specialix RIO serial card +ttySR0 +ttySR1 +#...ttySR511 + +# Chase Research AT/PCI-Fast serial card +ttyCH0 +ttyCH1 +#...ttyCH63 + +# Moxa Intellio serial card +ttyMX0 +ttyMX1 +#...ttyMX127 + +# SmartIO serial card +ttySI0 +ttySI1 +#... + +# USB dongles +ttyUSB0 +ttyUSB1 +ttyUSB2 +#... + +# LinkUp Systems L72xx UARTs +ttyLU0 +ttyLU1 +ttyLU2 +ttyLU3 + +# StrongARM builtin serial ports +ttySA0 +ttySA1 +ttySA2 + +# SCI serial port (SuperH) ports and SC26xx serial ports +ttySC0 +ttySC1 +ttySC2 +ttySC3 + +# ARM "AMBA" serial ports +ttyAM0 +ttyAM1 +ttyAM2 +ttyAM3 +ttyAM4 +ttyAM5 +ttyAM6 +ttyAM7 +ttyAM8 +ttyAM9 +ttyAM10 +ttyAM11 +ttyAM12 +ttyAM13 +ttyAM14 +ttyAM15 + +# Embedded ARM AMBA PL011 ports (e.g. emulated by QEMU) +ttyAMA0 +ttyAMA1 +ttyAMA2 +ttyAMA3 + +# DataBooster serial ports +ttyDB0 +ttyDB1 +ttyDB2 +ttyDB3 +ttyDB4 +ttyDB5 +ttyDB6 +ttyDB7 + +# SGI Altix console ports +ttySG0 + +# Motorola i.MX ports +ttySMX0 +ttySMX1 +ttySMX2 + +# Marvell MPSC ports +ttyMM0 +ttyMM1 + +# PPC CPM (SCC or SMC) ports +ttyCPM0 +ttyCPM1 +ttyCPM2 +ttyCPM3 +ttyCPM4 +ttyCPM5 + +# Altix serial cards +ttyIOC0 +ttyIOC1 +#...ttyIOC31 + +# NEC VR4100 series SIU +ttyVR0 + +# NEC VR4100 series SSIU +ttyVR1 + +# Altix ioc4 serial cards +ttyIOC84 +ttyIOC85 +#...ttyIOC115 + +# Altix ioc3 serial cards +ttySIOC0 +ttySIOC1 +#...ttySIOC31 + +# PPC PSC ports +ttyPSC0 +ttyPSC1 +ttyPSC2 +ttyPSC3 +ttyPSC4 +ttyPSC5 + +# ATMEL serial ports +ttyAT0 +ttyAT1 +#...ttyAT15 + +# Hilscher netX serial port +ttyNX0 +ttyNX1 +#...ttyNX15 + +# Xilinx uartlite - port +ttyUL0 +ttyUL1 +ttyUL2 +ttyUL3 + +# Xen virtual console - port 0 +xvc0 + +# pmac_zilog - port +ttyPZ0 +ttyPZ1 +ttyPZ2 +ttyPZ3 + +# TX39/49 serial port +ttyTX0 +ttyTX1 +ttyTX2 +ttyTX3 +ttyTX4 +ttyTX5 +ttyTX6 +ttyTX7 + +# SC26xx serial ports (see SCI serial ports (SuperH)) + +# MAX3100 serial ports +ttyMAX0 +ttyMAX1 +ttyMAX2 +ttyMAX3 + +# OMAP serial ports +ttyO0 +ttyO1 +ttyO2 +ttyO3 + +# User space serial ports +ttyU0 +ttyU1 + +# A2232 serial card +ttyY0 +ttyY1 + +# IBM 3270 terminal Unix tty access +3270/tty1 +3270/tty2 +#... + +# IBM iSeries/pSeries virtual console +hvc0 +hvc1 +#... +#IBM pSeries console ports +hvsi0 +hvsi1 +hvsi2 + +# Equinox SST multi-port serial boards +ttyEQ0 +ttyEQ1 +#...ttyEQ1027 + +# ========================================================== +# +# Not in Documentation/Devices.txt +# +# ========================================================== + +# Embedded Freescale i.MX ports +ttymxc0 +ttymxc1 +ttymxc2 +ttymxc3 +ttymxc4 +ttymxc5 + +# Serial Console for MIPS Swarm +duart0 +duart1 diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/security/limits.conf b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/security/limits.conf new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/shadow b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/login/01_login_sublogin/login.exp b/tests/tests/chroot/login/01_login_sublogin/login.exp new file mode 100755 index 0000000..4523935 --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/login.exp @@ -0,0 +1,25 @@ +#!/usr/bin/expect + +set timeout 10 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/bash +expect "# " + +send "strace -s 1000 -o /tmp/login.strace login\r" +expect " login: " +send "myuser\r" +expect "Password: " +send "myuserF00barbaz\r" +expect "Password: " +send "myuserF00barbaz\r" +expect "$ " + +send "# expect uid=424242(myuser) gid=424242(myuser) groups=424242(myuser)\r" +expect "$ " +send "id\r" +expect "uid=424242(myuser) gid=424242(myuser) groups=424242(myuser)\r" +expect "$ " +send "exit\r" + +exit 0 diff --git a/tests/tests/chroot/login/01_login_sublogin/login.test b/tests/tests/chroot/login/01_login_sublogin/login.test new file mode 100755 index 0000000..f5d271b --- /dev/null +++ b/tests/tests/chroot/login/01_login_sublogin/login.test @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +testname=$(basename $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "try regular login with user prompt" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +usermod -d $PWD/tmp/root myuser + +prepare_chroot + +./login.exp +echo + +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/pwck/01_pwck--root/config.txt b/tests/tests/chroot/pwck/01_pwck--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/pwck/01_pwck--root/config/etc/default/useradd b/tests/tests/chroot/pwck/01_pwck--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/pwck/01_pwck--root/config/etc/group b/tests/tests/chroot/pwck/01_pwck--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/pwck/01_pwck--root/config/etc/gshadow b/tests/tests/chroot/pwck/01_pwck--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/pwck/01_pwck--root/config/etc/passwd b/tests/tests/chroot/pwck/01_pwck--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/pwck/01_pwck--root/config/etc/shadow b/tests/tests/chroot/pwck/01_pwck--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/group b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/gshadow b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/login.defs b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/passwd b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/passwd new file mode 100644 index 0000000..76c6fc3 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/passwd @@ -0,0 +1,23 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash +testsuite::424244:424244::/home:/bin/bash +testsuite1::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/shadow b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/pwck/01_pwck--root/data/pwck.out b/tests/tests/chroot/pwck/01_pwck--root/data/pwck.out new file mode 100644 index 0000000..92a5670 --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/data/pwck.out @@ -0,0 +1,59 @@ +user 'root': program '/bin/bash' does not exist +user 'daemon': directory '/usr/sbin' does not exist +user 'daemon': program '/bin/sh' does not exist +user 'bin': directory '/bin' does not exist +user 'bin': program '/bin/sh' does not exist +user 'sys': directory '/dev' does not exist +user 'sys': program '/bin/sh' does not exist +user 'sync': directory '/bin' does not exist +user 'sync': program '/bin/sync' does not exist +user 'games': directory '/usr/games' does not exist +user 'games': program '/bin/sh' does not exist +user 'man': directory '/var/cache/man' does not exist +user 'man': program '/bin/sh' does not exist +user 'lp': directory '/var/spool/lpd' does not exist +user 'lp': program '/bin/sh' does not exist +user 'mail': directory '/var/mail' does not exist +user 'mail': program '/bin/sh' does not exist +user 'news': directory '/var/spool/news' does not exist +user 'news': program '/bin/sh' does not exist +user 'uucp': directory '/var/spool/uucp' does not exist +user 'uucp': program '/bin/sh' does not exist +user 'proxy': directory '/bin' does not exist +user 'proxy': program '/bin/sh' does not exist +user 'www-data': directory '/var/www' does not exist +user 'www-data': program '/bin/sh' does not exist +user 'backup': directory '/var/backups' does not exist +user 'backup': program '/bin/sh' does not exist +user 'list': directory '/var/list' does not exist +user 'list': program '/bin/sh' does not exist +user 'irc': directory '/var/run/ircd' does not exist +user 'irc': program '/bin/sh' does not exist +user 'gnats': directory '/var/lib/gnats' does not exist +user 'gnats': program '/bin/sh' does not exist +user 'nobody': directory '/nonexistent' does not exist +user 'nobody': program '/bin/sh' does not exist +user 'Debian-exim': directory '/var/spool/exim4' does not exist +user 'Debian-exim': program '/bin/false' does not exist +user 'myuser': directory '/home/' does not exist +user 'myuser': program '/bin/sh' does not exist +duplicate password entry +delete line 'testsuite::424243:424243::/home:/bin/bash'? No +user 'testsuite': no group 424243 +user 'testsuite': directory '/home' does not exist +user 'testsuite': program '/bin/bash' does not exist +no matching password file entry in /etc/shadow +add user 'testsuite' in /etc/shadow? No +duplicate password entry +delete line 'testsuite::424244:424244::/home:/bin/bash'? No +user 'testsuite': no group 424244 +user 'testsuite': directory '/home' does not exist +user 'testsuite': program '/bin/bash' does not exist +no matching password file entry in /etc/shadow +add user 'testsuite' in /etc/shadow? No +user 'testsuite1': no group 424243 +user 'testsuite1': directory '/home' does not exist +user 'testsuite1': program '/bin/bash' does not exist +no matching password file entry in /etc/shadow +add user 'testsuite1' in /etc/shadow? No +pwck: no changes diff --git a/tests/tests/chroot/pwck/01_pwck--root/pwck.test b/tests/tests/chroot/pwck/01_pwck--root/pwck.test new file mode 100755 index 0000000..25cba9f --- /dev/null +++ b/tests/tests/chroot/pwck/01_pwck--root/pwck.test @@ -0,0 +1,67 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck can change a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "pwck in a chroot (pwck --read-only --root $PWD/tmp/root)..." +pwck --read-only --root $PWD/tmp/root >tmp/pwck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.out +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/pwck.out tmp/pwck.out +echo "error message OK." +rm -f tmp/pwck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config.txt b/tests/tests/chroot/pwconv/01_pwconv--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/default/useradd b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/group b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/gshadow b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/passwd b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/shadow b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/group b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/gshadow b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/login.defs b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/passwd b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/passwd new file mode 100644 index 0000000..1a85284 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:!:102:102::/var/spool/exim4:/bin/false +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/data/passwd b/tests/tests/chroot/pwconv/01_pwconv--root/data/passwd new file mode 100644 index 0000000..89b6962 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite:x:424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/data/shadow b/tests/tests/chroot/pwconv/01_pwconv--root/data/shadow new file mode 100644 index 0000000..38bf30c --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/data/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:@TODAY@:0:99999:7::: +daemon:*:@TODAY@:0:99999:7::: +bin:*:@TODAY@:0:99999:7::: +sys:*:@TODAY@:0:99999:7::: +sync:*:@TODAY@:0:99999:7::: +games:*:@TODAY@:0:99999:7::: +man:*:@TODAY@:0:99999:7::: +lp:*:@TODAY@:0:99999:7::: +mail:*:@TODAY@:0:99999:7::: +news:*:@TODAY@:0:99999:7::: +uucp:*:@TODAY@:0:99999:7::: +proxy:*:@TODAY@:0:99999:7::: +www-data:*:@TODAY@:0:99999:7::: +backup:*:@TODAY@:0:99999:7::: +list:*:@TODAY@:0:99999:7::: +irc:*:@TODAY@:0:99999:7::: +gnats:*:@TODAY@:0:99999:7::: +nobody:*:@TODAY@:0:99999:7::: +Debian-exim:!:@TODAY@:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:@TODAY@:0:99999:7::: +testsuite::@TODAY@:0:99999:7::: diff --git a/tests/tests/chroot/pwconv/01_pwconv--root/pwconv.test b/tests/tests/chroot/pwconv/01_pwconv--root/pwconv.test new file mode 100755 index 0000000..3b92ab4 --- /dev/null +++ b/tests/tests/chroot/pwconv/01_pwconv--root/pwconv.test @@ -0,0 +1,50 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwconv can change a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "pwconv in a chroot (pwconv --root $PWD/tmp/root)..." +pwconv --root $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/shadow +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config.txt b/tests/tests/chroot/pwunconv/01_pwunconv--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/default/useradd b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/group b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/gshadow b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/passwd b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/shadow b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/group b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/gshadow b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/login.defs b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/passwd b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/shadow b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/data/passwd b/tests/tests/chroot/pwunconv/01_pwunconv--root/data/passwd new file mode 100644 index 0000000..1a85284 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/data/passwd @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:0:0:root:/root:/bin/bash +daemon:*:1:1:daemon:/usr/sbin:/bin/sh +bin:*:2:2:bin:/bin:/bin/sh +sys:*:3:3:sys:/dev:/bin/sh +sync:*:4:65534:sync:/bin:/bin/sync +games:*:5:60:games:/usr/games:/bin/sh +man:*:6:12:man:/var/cache/man:/bin/sh +lp:*:7:7:lp:/var/spool/lpd:/bin/sh +mail:*:8:8:mail:/var/mail:/bin/sh +news:*:9:9:news:/var/spool/news:/bin/sh +uucp:*:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:*:13:13:proxy:/bin:/bin/sh +www-data:*:33:33:www-data:/var/www:/bin/sh +backup:*:34:34:backup:/var/backups:/bin/sh +list:*:38:38:Mailing List Manager:/var/list:/bin/sh +irc:*:39:39:ircd:/var/run/ircd:/bin/sh +gnats:*:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:*:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:!:102:102::/var/spool/exim4:/bin/false +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/pwunconv/01_pwunconv--root/pwunconv.test b/tests/tests/chroot/pwunconv/01_pwunconv--root/pwunconv.test new file mode 100755 index 0000000..60c2552 --- /dev/null +++ b/tests/tests/chroot/pwunconv/01_pwunconv--root/pwunconv.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwunconv can change a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "pwunconv in a chroot (pwunconv --root $PWD/tmp/root)..." +pwunconv --root $PWD/tmp/root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +test ! -f tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/useradd/01_useradd--root/config.txt b/tests/tests/chroot/useradd/01_useradd--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/useradd/01_useradd--root/config/etc/default/useradd b/tests/tests/chroot/useradd/01_useradd--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/01_useradd--root/config/etc/group b/tests/tests/chroot/useradd/01_useradd--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/useradd/01_useradd--root/config/etc/gshadow b/tests/tests/chroot/useradd/01_useradd--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/useradd/01_useradd--root/config/etc/passwd b/tests/tests/chroot/useradd/01_useradd--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/useradd/01_useradd--root/config/etc/shadow b/tests/tests/chroot/useradd/01_useradd--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/group b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/gshadow b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/login.defs b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/passwd b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/shadow b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/useradd/01_useradd--root/data/group b/tests/tests/chroot/useradd/01_useradd--root/data/group new file mode 100644 index 0000000..ffc452f --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/data/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +foo:x:1000: diff --git a/tests/tests/chroot/useradd/01_useradd--root/data/gshadow b/tests/tests/chroot/useradd/01_useradd--root/data/gshadow new file mode 100644 index 0000000..e4b350d --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/data/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: +foo:!:: diff --git a/tests/tests/chroot/useradd/01_useradd--root/data/passwd b/tests/tests/chroot/useradd/01_useradd--root/data/passwd new file mode 100644 index 0000000..102186a --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/data/passwd @@ -0,0 +1,22 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash +foo:x:1000:1000::/home/foo: diff --git a/tests/tests/chroot/useradd/01_useradd--root/data/shadow b/tests/tests/chroot/useradd/01_useradd--root/data/shadow new file mode 100644 index 0000000..258cf2b --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/data/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +foo:!:@TODAY@:0:99999:7::: diff --git a/tests/tests/chroot/useradd/01_useradd--root/useradd.test b/tests/tests/chroot/useradd/01_useradd--root/useradd.test new file mode 100755 index 0000000..aa9dd35 --- /dev/null +++ b/tests/tests/chroot/useradd/01_useradd--root/useradd.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "useradd can add an user in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Add user foo in chroot (useradd --root $PWD/tmp/root foo)..." +useradd --root $PWD/tmp/root foo +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config.txt b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/default/useradd b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/group b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/gshadow b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/passwd b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/shadow b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/group b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/gshadow b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/login.defs b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/login.defs new file mode 100644 index 0000000..825aae3 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 2000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1500 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/passwd b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/shadow b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/group b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/group new file mode 100644 index 0000000..eb04ced --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +foo:x:2000: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/gshadow b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/gshadow new file mode 100644 index 0000000..e4b350d --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: +foo:!:: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/passwd b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/passwd new file mode 100644 index 0000000..25d10d6 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/passwd @@ -0,0 +1,22 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash +foo:x:2000:2000::/home/foo: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/shadow b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/shadow new file mode 100644 index 0000000..258cf2b --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/data/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +foo:!:@TODAY@:0:99999:7::: diff --git a/tests/tests/chroot/useradd/02_useradd--root_login.defs/useradd.test b/tests/tests/chroot/useradd/02_useradd--root_login.defs/useradd.test new file mode 100755 index 0000000..aa9dd35 --- /dev/null +++ b/tests/tests/chroot/useradd/02_useradd--root_login.defs/useradd.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "useradd can add an user in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Add user foo in chroot (useradd --root $PWD/tmp/root foo)..." +useradd --root $PWD/tmp/root foo +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config.txt b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/default/useradd b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/group b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/gshadow b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/passwd b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/shadow b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/default/useradd b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/default/useradd new file mode 100644 index 0000000..5051e1d --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/sh +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/group b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/gshadow b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/login.defs b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/passwd b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/shadow b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/group b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/group new file mode 100644 index 0000000..ffc452f --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: +foo:x:1000: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/gshadow b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/gshadow new file mode 100644 index 0000000..e4b350d --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: +foo:!:: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/passwd b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/passwd new file mode 100644 index 0000000..22fa744 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/passwd @@ -0,0 +1,22 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash +foo:x:1000:1000::/tmp/foo:/bin/sh diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/shadow b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/shadow new file mode 100644 index 0000000..f4c9dfb --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/data/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +foo:!:@TODAY@:0:99999:7:12:13849: diff --git a/tests/tests/chroot/useradd/03_useradd--root_useradd.default/useradd.test b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/useradd.test new file mode 100755 index 0000000..aa9dd35 --- /dev/null +++ b/tests/tests/chroot/useradd/03_useradd--root_useradd.default/useradd.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "useradd can add an user in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Add user foo in chroot (useradd --root $PWD/tmp/root foo)..." +useradd --root $PWD/tmp/root foo +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config.txt b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/default/useradd b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/group b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/gshadow b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/passwd b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/shadow b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/default/useradd b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/default/useradd new file mode 100644 index 0000000..5051e1d --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/sh +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/group b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/gshadow b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/login.defs b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/passwd b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/shadow b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/data/useradd.out b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/data/useradd.out new file mode 100644 index 0000000..581c055 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/data/useradd.out @@ -0,0 +1,7 @@ +GROUP=10 +HOME=/tmp +INACTIVE=12 +EXPIRE=2007-12-02 +SHELL=/bin/sh +SKEL=/etc/skel +CREATE_MAIL_SPOOL=no diff --git a/tests/tests/chroot/useradd/04_useradd--root_useradd-D/useradd.test b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/useradd.test new file mode 100755 index 0000000..069e704 --- /dev/null +++ b/tests/tests/chroot/useradd/04_useradd--root_useradd-D/useradd.test @@ -0,0 +1,61 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "useradd can list defaults from a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "List defaults in chroot (useradd --root $PWD/tmp/root foo)..." +useradd -D --root $PWD/tmp/root > tmp/useradd.out +echo "OK" + +echo "useradd reported:" +echo "=======================================================================" +cat tmp/useradd.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/useradd.out tmp/useradd.out +echo "OK." +rm -f tmp/useradd.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc//group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config.txt b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/default/useradd b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/group b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/gshadow b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/passwd b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/shadow b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/default/useradd b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/default/useradd new file mode 100644 index 0000000..d1406e4 --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/sh +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=100 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/group b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/gshadow b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/login.defs b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/passwd b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/shadow b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/data/useradd.default b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/data/useradd.default new file mode 100644 index 0000000..aaca91a --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/data/useradd.default @@ -0,0 +1,38 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/sh +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=424242 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2012-12-12 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes +SKEL=/etc/skel +CREATE_MAIL_SPOOL=no diff --git a/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/useradd.test b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/useradd.test new file mode 100755 index 0000000..97059da --- /dev/null +++ b/tests/tests/chroot/useradd/05_useradd--root_useradd-D-e-g/useradd.test @@ -0,0 +1,56 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "useradd can list defaults from a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "List defaults in chroot (useradd -D --root $PWD/tmp/root -e 2012-12-12 -g 424242)..." +useradd -D --root $PWD/tmp/root -e 2012-12-12 -g 424242 +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl config_chroot/etc/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc//group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" +echo -n "Check the useradd's default file..." +diff -au data/useradd.default tmp/root/etc/default/useradd +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +rm -f tmp/root/etc/default/useradd- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/userdel/01_userdel--root/config.txt b/tests/tests/chroot/userdel/01_userdel--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/userdel/01_userdel--root/config/etc/default/useradd b/tests/tests/chroot/userdel/01_userdel--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/userdel/01_userdel--root/config/etc/group b/tests/tests/chroot/userdel/01_userdel--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/userdel/01_userdel--root/config/etc/gshadow b/tests/tests/chroot/userdel/01_userdel--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/userdel/01_userdel--root/config/etc/passwd b/tests/tests/chroot/userdel/01_userdel--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/userdel/01_userdel--root/config/etc/shadow b/tests/tests/chroot/userdel/01_userdel--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/group b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/gshadow b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/login.defs b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/passwd b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/shadow b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/userdel/01_userdel--root/data/group b/tests/tests/chroot/userdel/01_userdel--root/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/userdel/01_userdel--root/data/gshadow b/tests/tests/chroot/userdel/01_userdel--root/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/userdel/01_userdel--root/data/passwd b/tests/tests/chroot/userdel/01_userdel--root/data/passwd new file mode 100644 index 0000000..4736f1c --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/userdel/01_userdel--root/data/shadow b/tests/tests/chroot/userdel/01_userdel--root/data/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/data/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/userdel/01_userdel--root/userdel.test b/tests/tests/chroot/userdel/01_userdel--root/userdel.test new file mode 100755 index 0000000..4ee203e --- /dev/null +++ b/tests/tests/chroot/userdel/01_userdel--root/userdel.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "userdel can change a user in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Delete a user in chroot (userdel --root $PWD/tmp/root myuser)..." +userdel --root $PWD/tmp/root myuser +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chroot/usermod/01_usermod--root/config.txt b/tests/tests/chroot/usermod/01_usermod--root/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/chroot/usermod/01_usermod--root/config/etc/default/useradd b/tests/tests/chroot/usermod/01_usermod--root/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/chroot/usermod/01_usermod--root/config/etc/group b/tests/tests/chroot/usermod/01_usermod--root/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/chroot/usermod/01_usermod--root/config/etc/gshadow b/tests/tests/chroot/usermod/01_usermod--root/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/chroot/usermod/01_usermod--root/config/etc/passwd b/tests/tests/chroot/usermod/01_usermod--root/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/chroot/usermod/01_usermod--root/config/etc/shadow b/tests/tests/chroot/usermod/01_usermod--root/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/group b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/gshadow b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/login.defs b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/login.defs new file mode 100644 index 0000000..3b216aa --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/login.defs @@ -0,0 +1,334 @@ +# +# /etc/login.defs - Configuration control definitions for the login package. +# +# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. +# If unspecified, some arbitrary (and possibly incorrect) value will +# be assumed. All other items are optional - if not specified then +# the described action or option will be inhibited. +# +# Comment lines (lines beginning with "#") and blank lines are ignored. +# +# Modified for Linux. --marekm + +# REQUIRED for useradd/userdel/usermod +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define MAIL_DIR and MAIL_FILE, +# MAIL_DIR takes precedence. +# +# Essentially: +# - MAIL_DIR defines the location of users mail spool files +# (for mbox use) by appending the username to MAIL_DIR as defined +# below. +# - MAIL_FILE defines the location of the users mail spool files as the +# fully-qualified filename obtained by prepending the user home +# directory before $MAIL_FILE +# +# NOTE: This is no more used for setting up users MAIL environment variable +# which is, starting from shadow 4.0.12-1 in Debian, entirely the +# job of the pam_mail PAM modules +# See default PAM configuration files provided for +# login, su, etc. +# +# This is a temporary situation: setting these variables will soon +# move to /etc/default/useradd and the variables will then be +# no more supported +MAIL_DIR /var/mail +#MAIL_FILE .mail + +# +# Enable logging and display of /var/log/faillog login failure info. +# This option conflicts with the pam_tally PAM module. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login failures are recorded. +# +# WARNING: Unknown usernames may become world readable. +# See #290803 and #298773 for details about how this could become a security +# concern +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable "syslog" logging of su activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp and sg. +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, all su activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format something like "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login failures will be logged here in a utmp format +# last, when invoked as lastb, will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then a "ps" will display the +# command is "-su". If not defined, then "ps" would display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a "write" program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP to the group number and +# TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign +# TTYPERM to either 622 or 600. +# +# In Debian /usr/bin/bsd-write or similar programs are setgid tty +# However, the default and recommended value for TTYPERM is still 0600 +# to not allow anyone to write to anyone else console or terminal + +# Users can still allow other people to write them by issuing +# the "mesg y" command. + +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# UMASK Default "umask" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# +# UMASK is the default umask value for pam_umask and is used by +# useradd and newusers to set the mode of the new home directories. +# 022 is the "historical" value in Debian for UMASK +# 027, or even 077, could be considered better for privacy +# There is no One True Answer here : each sysadmin must make up their +# mind. +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +UMASK 022 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_WARN_AGE 7 + +# +# Min/max values for automatic uid selection in useradd +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +#SYS_UID_MIN 100 +#SYS_UID_MAX 999 + +# +# Min/max values for automatic gid selection in groupadd +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +#SYS_GID_MIN 100 +#SYS_GID_MAX 999 + +# +# Max number of login retries if password is bad. This will most likely be +# overridden by PAM, since the default pam_unix module has it's own built +# in of 3 retries. However, this is a safe fallback in case you are using +# an authentication module that does not enforce PAM_MAXTRIES. +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login +# +LOGIN_TIMEOUT 60 + +# +# Which fields may be changed by regular users using chfn - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# If set to yes, userdel will remove the user's group if it contains no +# more members, and useradd will create by default a group with the name +# of the user. +# +# Other former uses of this variable such as setting the umask when +# user==primary group are not used in PAM environments, such as Debian +# +USERGROUPS_ENAB yes + +# +# Instead of the real user shell, the program specified by this parameter +# will be launched, although its visible name (argv[0]) will be the shell's. +# The program may do whatever it wants (logging, additional authentification, +# banner, ...) before running the actual shell. +# +# FAKE_SHELL /bin/fakeshell + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# upon these devices. +# +# This variable is used by login and su. +# +#CONSOLE /etc/consoles +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# List of groups to add to the user's supplementary group set +# when logging in on the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in on the console. +# How to do it is left as an exercise for the reader... +# +# This variable is used by login and su. +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# This variable is deprecated. You should use ENCRYPT_METHOD. +# +#MD5_CRYPT_ENAB no + +# +# 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 DES, DES-based algorithm will be used for encrypting password (default) +# Overrides the MD5_CRYPT_ENAB option +# +# Note: It is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only used if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute forcing the password. +# But note also that it more CPU resources will be needed to authenticate +# users. +# +# If not specified, the libc will choose the default number of rounds (5000). +# The values must be inside the 1000-999999999 range. +# 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 + +################# OBSOLETED BY PAM ############## +# # +# These options are now handled by PAM. Please # +# edit the appropriate file in /etc/pam.d/ to # +# enable the equivalents of them. +# +############### + +#MOTD_FILE +#DIALUPS_CHECK_ENAB +#LASTLOG_ENAB +#MAIL_CHECK_ENAB +#OBSCURE_CHECKS_ENAB +#PORTTIME_CHECKS_ENAB +#SU_WHEEL_ONLY +#PASS_CHANGE_TRIES +#PASS_ALWAYS_WARN +#ENVIRON_FILE +#NOLOGINS_FILE +#ISSUE_FILE +#PASS_MIN_LEN +#PASS_MAX_LEN +#ULIMIT +#ENV_HZ +#CHFN_AUTH +#CHSH_AUTH +#FAIL_DELAY + +################# OBSOLETED ####################### +# # +# These options are no more handled by shadow. # +# # +# Shadow utilities will display a warning if they # +# still appear. # +# # +################################################### + +# CLOSE_SESSIONS +# LOGIN_STRING +# NO_PASSWORD_CONSOLE +# QMAIL_DIR + + + diff --git a/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/passwd b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/passwd new file mode 100644 index 0000000..9bdeb8c --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/shadow b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/shadow new file mode 100644 index 0000000..038d5cf --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/config_chroot/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chroot/usermod/01_usermod--root/data/passwd b/tests/tests/chroot/usermod/01_usermod--root/data/passwd new file mode 100644 index 0000000..1f47aaf --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/data/passwd @@ -0,0 +1,21 @@ +root:x:0:100:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home/:/bin/sh +testsuite::424243:424243::/home:/bin/bash diff --git a/tests/tests/chroot/usermod/01_usermod--root/usermod.test b/tests/tests/chroot/usermod/01_usermod--root/usermod.test new file mode 100755 index 0000000..14f7a08 --- /dev/null +++ b/tests/tests/chroot/usermod/01_usermod--root/usermod.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "usermod can change a user in a chroot" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; clean_chroot; restore_config' 0 + +change_config + +prepare_chroot + +echo -n "Change user in chroot (usermod --root $PWD/tmp/root -g users root)..." +usermod --root $PWD/tmp/root -g users root +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/root/etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl config_chroot/etc/group tmp/root/etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl config_chroot/etc/shadow tmp/root/etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl config_chroot/etc/gshadow tmp/root/etc/gshadow +echo "OK" + +rm -f tmp/root/etc/.pwd.lock +rm -f tmp/root/etc/passwd- +rm -f tmp/root/etc/group- +rm -f tmp/root/etc/shadow- +rm -f tmp/root/etc/gshadow- +clean_chroot + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/01/data/chsh1 b/tests/tests/chsh/01/data/chsh1 new file mode 100644 index 0000000..01b3d53 --- /dev/null +++ b/tests/tests/chsh/01/data/chsh1 @@ -0,0 +1 @@ +You may not change the shell for 'myuser'. diff --git a/tests/tests/chsh/01/data/chsh2 b/tests/tests/chsh/01/data/chsh2 new file mode 100644 index 0000000..b017d6d --- /dev/null +++ b/tests/tests/chsh/01/data/chsh2 @@ -0,0 +1 @@ +You may not change the shell for 'myuser2'. diff --git a/tests/tests/chsh/01/data/group b/tests/tests/chsh/01/data/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/01/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/01/data/gshadow b/tests/tests/chsh/01/data/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/01/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/01/data/passwd b/tests/tests/chsh/01/data/passwd new file mode 100644 index 0000000..37b0467 --- /dev/null +++ b/tests/tests/chsh/01/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/01/data/shadow b/tests/tests/chsh/01/data/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/01/data/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/01/data/shells b/tests/tests/chsh/01/data/shells new file mode 100644 index 0000000..4fd4378 --- /dev/null +++ b/tests/tests/chsh/01/data/shells @@ -0,0 +1,16 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +/bin/zsh +/usr/bin/esh +/bin/bash +/bin/rbash diff --git a/tests/tests/chsh/01/run b/tests/tests/chsh/01/run new file mode 100755 index 0000000..4d72eea --- /dev/null +++ b/tests/tests/chsh/01/run @@ -0,0 +1,143 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test chage options + +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow shells + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + [ -f /etc/$i- ] && cp /etc/$i- tmp/$i- + done + + true +} + +restore() +{ + for i in passwd group shadow gshadow shells + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + [ -f tmp/$i- ] && cp tmp/$i- /etc/$i- && rm tmp/$i- + done + rm -f tmp/out + rm -f tmp/shell tmp/sh:ell + rmdir tmp +} + +save + +# restore the files on exit +trap 'if [ "$?" != "0" ]; then echo "FAIL"; fi; restore' 0 + +for i in passwd group shadow gshadow shells +do + cp data/$i /etc +done + +echo -n "changing to a restricted shell, by root..." +cp /bin/bash tmp/shell +chsh -s $(pwd)/tmp/shell myuser +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:"$(pwd)"/tmp/shell" ] || exit 1 +echo "OK" + +echo -n "changing from a restricted shell, by myuser..." +su myuser -c "chsh -s /bin/bash" 2> tmp/out && exit 1 +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:"$(pwd)"/tmp/shell" ] || exit 1 +diff -au data/chsh1 tmp/out +echo "OK" + +echo -n "changing from a restricted shell, by root..." +chsh -s /bin/bash myuser +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +echo "OK" + +# Need to be done by expect now (chage asks for a passwd if not root) +#echo -n "changing to a restricted shell, by myuser..." +#su myuser -c "chsh -s $(pwd)/tmp/shell" 2> tmp/out && exit 1 +#ent=$(getent passwd myuser) +#[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +#grep "/tmp/shell is an invalid shell." tmp/out > /dev/null +#[ $(wc -l tmp/out| cut -d" " -f1) = "1" ] || exit 1 +#echo "OK" + +#echo -n "changing to a new valid shell, by myuser..." +#echo $(pwd)/tmp/shell >> /tmp/shells +#su myuser -c "chsh -s $(pwd)/tmp/shell" 2> tmp/out && exit 1 +#ent=$(getent passwd myuser) +#[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +#grep "/tmp/shell is an invalid shell." tmp/out > /dev/null +#[ $(wc -l tmp/out| cut -d" " -f1) = "1" ] || exit 1 +#echo "OK" + +echo -n "changing another user's shell..." +su myuser -c "chsh -s /bin/sh myuser2" 2> tmp/out && exit 1 +ent=$(getent passwd myuser2) +[ "$ent" = "myuser2:x:424243:424242::/home:/bin/sh" ] || exit 1 +diff -au data/chsh2 tmp/out +echo "OK" + +#echo -n "changing to a non-executable shell..." +#chmod a-x tmp/shell +#su myuser -c "chsh -s $(pwd)/tmp/shell myuser" 2> tmp/out && exit 1 +#ent=$(getent passwd myuser) +#[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +#grep "/tmp/shell is an invalid shell." tmp/out > /dev/null +#[ $(wc -l tmp/out| cut -d" " -f1) = "1" ] || exit 1 +#echo "OK" + +echo -n "changing to an invalid shell name..." +cp /bin/bash tmp/sh:ell +echo $(pwd)/tmp/sh:ell >> /etc/shells +chsh -s $(pwd)/tmp/sh:ell myuser 2> tmp/out && exit 1 +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +grep -E "chsh: Invalid entry: .*/tmp/sh:ell" tmp/out > /dev/null +[ $(wc -l tmp/out| cut -d" " -f1) = "1" ] || exit 1 +echo "OK" + +echo "testing the interactive mode (1)..." +rm -f tmp/out +./run.exp /bin/bash myuser +[ -f tmp/out ] && exit 1 +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +echo "OK" + +#echo "testing the interactive mode (2)..." +#rm -f tmp/out +#su myuser -c "./run.exp /bin/bash" +#[ -f tmp/out ] && exit 1 +#ent=$(getent passwd myuser) +#[ "$ent" = "myuser:x:424242:424242::/home:/bin/bash" ] || exit 1 +#echo "OK" + +echo "testing the interactive mode (3)..." +rm -f tmp/out +./run.exp /bin/sh myuser +[ -f tmp/out ] && exit 1 +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:/bin/sh" ] || exit 1 +echo "OK" + +echo "testing the interactive mode (4)..." +rm -f tmp/out +./run.exp $(pwd)/tmp/sh:ell myuser && exit 1 +grep -E "chsh: Invalid entry: .*/tmp/sh:ell" tmp/out > /dev/null +ent=$(getent passwd myuser) +[ "$ent" = "myuser:x:424242:424242::/home:/bin/sh" ] || exit 1 +echo "OK" + diff --git a/tests/tests/chsh/01/run.exp b/tests/tests/chsh/01/run.exp new file mode 100755 index 0000000..4890193 --- /dev/null +++ b/tests/tests/chsh/01/run.exp @@ -0,0 +1,38 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "Changing the login shell for myuser" +expect "Enter the new value, or press ENTER for the default" +expect -re "Login Shell .*\]: " +send "$shell\r" +expect "$shell\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/02_chsh_usage/chsh.test b/tests/tests/chsh/02_chsh_usage/chsh.test new file mode 100755 index 0000000..3a6e656 --- /dev/null +++ b/tests/tests/chsh/02_chsh_usage/chsh.test @@ -0,0 +1,48 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can display its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get chsh usage (chsh -h)..." +chsh -h >tmp/usage.out +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/02_chsh_usage/config.txt b/tests/tests/chsh/02_chsh_usage/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/02_chsh_usage/config/etc/group b/tests/tests/chsh/02_chsh_usage/config/etc/group new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/02_chsh_usage/config/etc/gshadow b/tests/tests/chsh/02_chsh_usage/config/etc/gshadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/02_chsh_usage/config/etc/passwd b/tests/tests/chsh/02_chsh_usage/config/etc/passwd new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/02_chsh_usage/config/etc/shadow b/tests/tests/chsh/02_chsh_usage/config/etc/shadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/02_chsh_usage/data/usage.out b/tests/tests/chsh/02_chsh_usage/data/usage.out new file mode 100644 index 0000000..ef576ec --- /dev/null +++ b/tests/tests/chsh/02_chsh_usage/data/usage.out @@ -0,0 +1,7 @@ +Usage: chsh [options] [LOGIN] + +Options: + -h, --help display this help message and exit + -R, --root CHROOT_DIR directory to chroot into + -s, --shell SHELL new login shell for the user account + diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/chsh.test b/tests/tests/chsh/03_chsh_usage_invalid_option/chsh.test new file mode 100755 index 0000000..4552cc3 --- /dev/null +++ b/tests/tests/chsh/03_chsh_usage_invalid_option/chsh.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh displays its usage message is case of invalid option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use wrong chsh option (chsh -Z)..." +chsh -Z 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/config.txt b/tests/tests/chsh/03_chsh_usage_invalid_option/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/group b/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/group new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/gshadow b/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/gshadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/passwd b/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/passwd new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/shadow b/tests/tests/chsh/03_chsh_usage_invalid_option/config/etc/shadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/03_chsh_usage_invalid_option/data/usage.out b/tests/tests/chsh/03_chsh_usage_invalid_option/data/usage.out new file mode 100644 index 0000000..e930bab --- /dev/null +++ b/tests/tests/chsh/03_chsh_usage_invalid_option/data/usage.out @@ -0,0 +1,8 @@ +chsh: invalid option -- 'Z' +Usage: chsh [options] [LOGIN] + +Options: + -h, --help display this help message and exit + -R, --root CHROOT_DIR directory to chroot into + -s, --shell SHELL new login shell for the user account + diff --git a/tests/tests/chsh/04_chsh_usage_2_users/chsh.test b/tests/tests/chsh/04_chsh_usage_2_users/chsh.test new file mode 100755 index 0000000..ef1c181 --- /dev/null +++ b/tests/tests/chsh/04_chsh_usage_2_users/chsh.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh displays its usage message is case multiple users are provided" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chsh with 2 users (chsh -s /bin/sh root bin)..." +chsh -s /bin/sh root bin 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/04_chsh_usage_2_users/config.txt b/tests/tests/chsh/04_chsh_usage_2_users/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/04_chsh_usage_2_users/config/etc/group b/tests/tests/chsh/04_chsh_usage_2_users/config/etc/group new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/04_chsh_usage_2_users/config/etc/gshadow b/tests/tests/chsh/04_chsh_usage_2_users/config/etc/gshadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/04_chsh_usage_2_users/config/etc/passwd b/tests/tests/chsh/04_chsh_usage_2_users/config/etc/passwd new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/04_chsh_usage_2_users/config/etc/shadow b/tests/tests/chsh/04_chsh_usage_2_users/config/etc/shadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/04_chsh_usage_2_users/data/usage.out b/tests/tests/chsh/04_chsh_usage_2_users/data/usage.out new file mode 100644 index 0000000..ef576ec --- /dev/null +++ b/tests/tests/chsh/04_chsh_usage_2_users/data/usage.out @@ -0,0 +1,7 @@ +Usage: chsh [options] [LOGIN] + +Options: + -h, --help display this help message and exit + -R, --root CHROOT_DIR directory to chroot into + -s, --shell SHELL new login shell for the user account + diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/chsh.test b/tests/tests/chsh/05_chsh_myuser_restricted_shell/chsh.test new file mode 100755 index 0000000..4844266 --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/chsh.test @@ -0,0 +1,41 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +chmod a+w tmp + +echo -n "execute chsh..." +su myuser -c "./run.exp /bin/sh" +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/config.txt b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/group b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/gshadow b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/passwd b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/passwd new file mode 100644 index 0000000..37b0467 --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shadow b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shells b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shells new file mode 100644 index 0000000..16e922a --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/config/etc/shells @@ -0,0 +1,15 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +#/bin/zsh +/usr/bin/esh +/bin/rbash diff --git a/tests/tests/chsh/05_chsh_myuser_restricted_shell/run.exp b/tests/tests/chsh/05_chsh_myuser_restricted_shell/run.exp new file mode 100755 index 0000000..1abf085 --- /dev/null +++ b/tests/tests/chsh/05_chsh_myuser_restricted_shell/run.exp @@ -0,0 +1,34 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "You may not change the shell for 'myuser'.\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/chsh.test b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/chsh.test new file mode 100755 index 0000000..d8d88ac --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/chsh.test @@ -0,0 +1,41 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +chmod a+w tmp + +echo -n "execute chsh..." +su myuser -c "./run.exp /bin/sh" +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config.txt b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/group b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/gshadow b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/passwd b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/passwd new file mode 100644 index 0000000..37b0467 --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shadow b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shells b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shells new file mode 100644 index 0000000..d52a3bf --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/config/etc/shells @@ -0,0 +1,16 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +#/bin/zsh +/usr/bin/esh +/bin/bash +/bin/rbash diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/data/passwd b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/data/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/run.exp b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/run.exp new file mode 100755 index 0000000..0c0e023 --- /dev/null +++ b/tests/tests/chsh/06_chsh_myuser_non_restricted_shell/run.exp @@ -0,0 +1,40 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "Password: " +send "myuserF00barbaz\r" +expect "Changing the login shell for myuser" +expect "Enter the new value, or press ENTER for the default" +expect -re "Login Shell .*\]: " +send "$shell\r" +expect "$shell\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/chsh.test b/tests/tests/chsh/07_chsh_usage_invalid_user/chsh.test new file mode 100755 index 0000000..5d76de2 --- /dev/null +++ b/tests/tests/chsh/07_chsh_usage_invalid_user/chsh.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh checks that the user exist" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Use chsh for an invalid user (chsh wronguser)..." +chsh wronguser 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/config.txt b/tests/tests/chsh/07_chsh_usage_invalid_user/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/group b/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/group new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/gshadow b/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/gshadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/passwd b/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/passwd new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/shadow b/tests/tests/chsh/07_chsh_usage_invalid_user/config/etc/shadow new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/07_chsh_usage_invalid_user/data/usage.out b/tests/tests/chsh/07_chsh_usage_invalid_user/data/usage.out new file mode 100644 index 0000000..f57326c --- /dev/null +++ b/tests/tests/chsh/07_chsh_usage_invalid_user/data/usage.out @@ -0,0 +1 @@ +chsh: user 'wronguser' does not exist diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/chsh.test b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/chsh.test new file mode 100755 index 0000000..611d1a6 --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/chsh.test @@ -0,0 +1,41 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +chmod a+w tmp + +echo -n "execute chsh..." +su myuser -c "./run.exp /bin/bash" +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config.txt b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/group b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/gshadow b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/passwd b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shadow b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shells b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shells new file mode 100644 index 0000000..16e922a --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/config/etc/shells @@ -0,0 +1,15 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +#/bin/zsh +/usr/bin/esh +/bin/rbash diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/data/passwd b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/data/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/run.exp b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/run.exp new file mode 100755 index 0000000..b1bd8d6 --- /dev/null +++ b/tests/tests/chsh/08_chsh_myuser_to_restricted_shell/run.exp @@ -0,0 +1,41 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "Password: " +send "myuserF00barbaz\r" +expect "Changing the login shell for myuser" +expect "Enter the new value, or press ENTER for the default" +expect -re "Login Shell .*\]: " +send "$shell\r" +expect "$shell\r\n" +expect "chsh: $shell is an invalid shell\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/chsh.test b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/chsh.test new file mode 100755 index 0000000..6248780 --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/chsh.test @@ -0,0 +1,42 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +chmod a+w tmp + +echo /tmp/bash >> /etc/shells +echo -n "execute chsh..." +su myuser -c "./run.exp /tmp/bash" +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config.txt b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/group b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/gshadow b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/passwd b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shadow b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shells b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shells new file mode 100644 index 0000000..16e922a --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/config/etc/shells @@ -0,0 +1,15 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +#/bin/zsh +/usr/bin/esh +/bin/rbash diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/data/passwd b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/data/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/09_chsh_myuser_to_missing_shell/run.exp b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/run.exp new file mode 100755 index 0000000..b1bd8d6 --- /dev/null +++ b/tests/tests/chsh/09_chsh_myuser_to_missing_shell/run.exp @@ -0,0 +1,41 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "Password: " +send "myuserF00barbaz\r" +expect "Changing the login shell for myuser" +expect "Enter the new value, or press ENTER for the default" +expect -re "Login Shell .*\]: " +send "$shell\r" +expect "$shell\r\n" +expect "chsh: $shell is an invalid shell\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/chsh.test b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/chsh.test new file mode 100755 index 0000000..7dd4642 --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/chsh.test @@ -0,0 +1,46 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /tmp/bash' 0 + +change_config + +chmod a+w tmp + +echo /tmp/bash >> /etc/shells +cp /bin/bash /tmp/bash +chmod a-x /tmp/bash + +echo -n "execute chsh..." +su myuser -c "./run.exp /tmp/bash" +echo "OK" +rm -f /tmp/bash + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config.txt b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/group b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/gshadow b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/passwd b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shadow b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shells b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shells new file mode 100644 index 0000000..16e922a --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/config/etc/shells @@ -0,0 +1,15 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +#/bin/zsh +/usr/bin/esh +/bin/rbash diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/data/passwd b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/data/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/run.exp b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/run.exp new file mode 100755 index 0000000..b1bd8d6 --- /dev/null +++ b/tests/tests/chsh/10_chsh_myuser_to_non_executable_shell/run.exp @@ -0,0 +1,41 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "Password: " +send "myuserF00barbaz\r" +expect "Changing the login shell for myuser" +expect "Enter the new value, or press ENTER for the default" +expect -re "Login Shell .*\]: " +send "$shell\r" +expect "$shell\r\n" +expect "chsh: $shell is an invalid shell\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/11_chsh_auth_failure/chsh.test b/tests/tests/chsh/11_chsh_auth_failure/chsh.test new file mode 100755 index 0000000..dda9bc6 --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/chsh.test @@ -0,0 +1,41 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh checks password for non root" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +chmod a+w tmp + +echo -n "execute chsh..." +su myuser -c "./run.exp /bin/bash" +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/11_chsh_auth_failure/config.txt b/tests/tests/chsh/11_chsh_auth_failure/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/11_chsh_auth_failure/config/etc/group b/tests/tests/chsh/11_chsh_auth_failure/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/11_chsh_auth_failure/config/etc/gshadow b/tests/tests/chsh/11_chsh_auth_failure/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/11_chsh_auth_failure/config/etc/passwd b/tests/tests/chsh/11_chsh_auth_failure/config/etc/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/11_chsh_auth_failure/config/etc/shadow b/tests/tests/chsh/11_chsh_auth_failure/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/11_chsh_auth_failure/config/etc/shells b/tests/tests/chsh/11_chsh_auth_failure/config/etc/shells new file mode 100644 index 0000000..16e922a --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/config/etc/shells @@ -0,0 +1,15 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +#/bin/zsh +/usr/bin/esh +/bin/rbash diff --git a/tests/tests/chsh/11_chsh_auth_failure/data/passwd b/tests/tests/chsh/11_chsh_auth_failure/data/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/11_chsh_auth_failure/run.exp b/tests/tests/chsh/11_chsh_auth_failure/run.exp new file mode 100755 index 0000000..67e3455 --- /dev/null +++ b/tests/tests/chsh/11_chsh_auth_failure/run.exp @@ -0,0 +1,36 @@ +#!/usr/bin/expect + +set timeout 5 + +if {$argc < 1} { + puts "usage: run.exp \[shell] \[user]" + exit 1 +} +set shell [lindex $argv 0] + +if {$argc == 2} { + spawn /usr/bin/chsh [lindex $argv 1] +} else { + spawn /usr/bin/chsh +} + +expect "Password: " +send "wrong pass\r" +expect "chsh: PAM: Authentication failure\r\n" +expect { + eof { + if ([string compare $expect_out(buffer) ""]) { + set fp [open "tmp/out" w] + puts $fp "$expect_out(buffer)" + puts "\nFAIL" + exit 1 + } + } default { + puts "\nFAIL" + exit 1 + } +} + +puts "\nPASS" +exit 0 + diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/chsh.test b/tests/tests/chsh/12_chsh_warning_missing_shell/chsh.test new file mode 100755 index 0000000..de12b13 --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/chsh.test @@ -0,0 +1,48 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Change shell to a missing shell (chsh -s /tmp/bash bin)..." +chsh -s /tmp/bash bin 2>tmp/chsh.err +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/chsh.err +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/chsh.err tmp/chsh.err +echo "usage message OK." +rm -f tmp/chsh.err + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config.txt b/tests/tests/chsh/12_chsh_warning_missing_shell/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/group b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/gshadow b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/pam.d/chsh b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/pam.d/chsh new file mode 100644 index 0000000..7eb604d --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/pam.d/chsh @@ -0,0 +1,20 @@ +# +# The PAM configuration file for the Shadow `chsh' service +# + +# This will not allow a user to change their shell unless +# their current one is listed in /etc/shells. This keeps +# accounts with special shells from changing them. +auth required pam_shells.so + +# This allows root to change user shell without being +# prompted for a password +auth sufficient pam_rootok.so + +# The standard Unix authentication modules, used with +# NIS (man nsswitch) as well as normal /etc/passwd and +# /etc/shadow entries. +@include common-auth +@include common-account +@include common-session + diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/passwd b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shadow b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shells b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shells new file mode 100644 index 0000000..4fd4378 --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/config/etc/shells @@ -0,0 +1,16 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +/bin/zsh +/usr/bin/esh +/bin/bash +/bin/rbash diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/data/chsh.err b/tests/tests/chsh/12_chsh_warning_missing_shell/data/chsh.err new file mode 100644 index 0000000..7801a16 --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/data/chsh.err @@ -0,0 +1 @@ +chsh: Warning: /tmp/bash does not exist diff --git a/tests/tests/chsh/12_chsh_warning_missing_shell/data/passwd b/tests/tests/chsh/12_chsh_warning_missing_shell/data/passwd new file mode 100644 index 0000000..7e745d9 --- /dev/null +++ b/tests/tests/chsh/12_chsh_warning_missing_shell/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/tmp/bash +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/chsh.test b/tests/tests/chsh/13_chsh_warning_non_executable/chsh.test new file mode 100755 index 0000000..c98bad7 --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/chsh.test @@ -0,0 +1,52 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh can displays its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /tmp/bash' 0 + +change_config + +cp /bin/bash /tmp/bash +chmod a-x /tmp/bash + +echo -n "Change shell to a missing shell (chsh -s /tmp/bash bin)..." +chsh -s /tmp/bash bin 2>tmp/chsh.err +echo "OK" +rm -f /tmp/bash + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/chsh.err +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/chsh.err tmp/chsh.err +echo "usage message OK." +rm -f tmp/chsh.err + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config.txt b/tests/tests/chsh/13_chsh_warning_non_executable/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/group b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/gshadow b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/pam.d/chsh b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/pam.d/chsh new file mode 100644 index 0000000..7eb604d --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/pam.d/chsh @@ -0,0 +1,20 @@ +# +# The PAM configuration file for the Shadow `chsh' service +# + +# This will not allow a user to change their shell unless +# their current one is listed in /etc/shells. This keeps +# accounts with special shells from changing them. +auth required pam_shells.so + +# This allows root to change user shell without being +# prompted for a password +auth sufficient pam_rootok.so + +# The standard Unix authentication modules, used with +# NIS (man nsswitch) as well as normal /etc/passwd and +# /etc/shadow entries. +@include common-auth +@include common-account +@include common-session + diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/passwd b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/passwd new file mode 100644 index 0000000..ae3eda3 --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shadow b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shadow new file mode 100644 index 0000000..f004fa2 --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shells b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shells new file mode 100644 index 0000000..4fd4378 --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/config/etc/shells @@ -0,0 +1,16 @@ +# /etc/shells: valid login shells +/bin/ash +/bin/csh +/bin/sh +/usr/bin/es +/usr/bin/ksh +/bin/ksh +/usr/bin/rc +/usr/bin/tcsh +/bin/tcsh +/usr/bin/zsh +/bin/sash +/bin/zsh +/usr/bin/esh +/bin/bash +/bin/rbash diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/data/chsh.err b/tests/tests/chsh/13_chsh_warning_non_executable/data/chsh.err new file mode 100644 index 0000000..4a87ec2 --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/data/chsh.err @@ -0,0 +1 @@ +chsh: Warning: /tmp/bash is not executable diff --git a/tests/tests/chsh/13_chsh_warning_non_executable/data/passwd b/tests/tests/chsh/13_chsh_warning_non_executable/data/passwd new file mode 100644 index 0000000..7e745d9 --- /dev/null +++ b/tests/tests/chsh/13_chsh_warning_non_executable/data/passwd @@ -0,0 +1,21 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/tmp/bash +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser:x:424242:424242::/home:/bin/sh +myuser2:x:424243:424242::/home:/bin/sh diff --git a/tests/tests/chsh/14_chsh_locked_passwd/chsh.test b/tests/tests/chsh/14_chsh_locked_passwd/chsh.test new file mode 100755 index 0000000..c41e1eb --- /dev/null +++ b/tests/tests/chsh/14_chsh_locked_passwd/chsh.test @@ -0,0 +1,59 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh warns when passwd is already locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/passwd.lock' 0 + +change_config + +echo -n "Create lock file for /etc/passwd..." +touch /etc/passwd.lock +echo "done" + +echo -n "Change shell (chsh -s /bin/bash bin)..." +chsh -s /bin/bash bin 2>tmp/chsh.err && exit 1 || { + status=$? +} +echo "OK" +rm -f /etc/passwd.lock + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/chsh.err +echo "=======================================================================" +echo -n "Check the error message..." +diff -au data/chsh.err tmp/chsh.err +echo "error message OK." +rm -f tmp/chsh.err + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/14_chsh_locked_passwd/config.txt b/tests/tests/chsh/14_chsh_locked_passwd/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/14_chsh_locked_passwd/config/etc/group b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/14_chsh_locked_passwd/config/etc/gshadow b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/14_chsh_locked_passwd/config/etc/passwd b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chsh/14_chsh_locked_passwd/config/etc/shadow b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chsh/14_chsh_locked_passwd/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chsh/14_chsh_locked_passwd/data/chsh.err b/tests/tests/chsh/14_chsh_locked_passwd/data/chsh.err new file mode 100644 index 0000000..c5ebce9 --- /dev/null +++ b/tests/tests/chsh/14_chsh_locked_passwd/data/chsh.err @@ -0,0 +1,2 @@ +chsh: existing lock file /etc/passwd.lock without a PID +chsh: cannot lock /etc/passwd; try again later. diff --git a/tests/tests/chsh/15_chsh_PAM_error/chsh.test b/tests/tests/chsh/15_chsh_PAM_error/chsh.test new file mode 100755 index 0000000..c900e0c --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/chsh.test @@ -0,0 +1,58 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "chsh warns when the chsh PAM configuration is invalid" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Remove the PAM configuration (/etc/pam.d/chsh /etc/pam.d/other)..." +rm -f /etc/pam.d/chsh /etc/pam.d/other +echo OK + +echo -n "Change shell (chsh -s /bin/bash bin)..." +chsh -s /bin/bash bin 2>tmp/chsh.err && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "chsh reported:" +echo "=======================================================================" +cat tmp/chsh.err +echo "=======================================================================" +echo -n "Check the error message..." +diff -au data/chsh.err tmp/chsh.err +echo "error message OK." +rm -f tmp/chsh.err + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/chsh/15_chsh_PAM_error/config.txt b/tests/tests/chsh/15_chsh_PAM_error/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/chsh/15_chsh_PAM_error/config/etc/group b/tests/tests/chsh/15_chsh_PAM_error/config/etc/group new file mode 100644 index 0000000..245cc9c --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +myuser:x:424242: diff --git a/tests/tests/chsh/15_chsh_PAM_error/config/etc/gshadow b/tests/tests/chsh/15_chsh_PAM_error/config/etc/gshadow new file mode 100644 index 0000000..25bd55b --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +myuser:x:: diff --git a/tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/chsh b/tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/chsh new file mode 100644 index 0000000..9152969 --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/chsh @@ -0,0 +1 @@ +This file will be removed diff --git a/tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/other b/tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/other new file mode 100644 index 0000000..9152969 --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/config/etc/pam.d/other @@ -0,0 +1 @@ +This file will be removed diff --git a/tests/tests/chsh/15_chsh_PAM_error/config/etc/passwd b/tests/tests/chsh/15_chsh_PAM_error/config/etc/passwd new file mode 100644 index 0000000..5d27e12 --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/config/etc/passwd @@ -0,0 +1,26 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +myuser1:x:424242:424242::/home:/bin/bash +myuser2:x:424243:424242::/home:/bin/bash +myuser3:x:424244:424242::/home:/bin/bash +myuser4:x:424245:424242::/home:/bin/bash +myuser5:x:424246:424242::/home:/bin/bash +myuser6:x:424247:424242::/home:/bin/bash +myuser7:x:424248:424242::/home:/bin/bash diff --git a/tests/tests/chsh/15_chsh_PAM_error/config/etc/shadow b/tests/tests/chsh/15_chsh_PAM_error/config/etc/shadow new file mode 100644 index 0000000..da4c2bc --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/config/etc/shadow @@ -0,0 +1,26 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +myuser1:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::: +myuser2:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12992:1:99996:5::: +myuser3:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::0: +myuser4:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7::1: +myuser5:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:0:: +myuser6:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: +myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:12991:0:99999:7:1:: diff --git a/tests/tests/chsh/15_chsh_PAM_error/data/chsh.err b/tests/tests/chsh/15_chsh_PAM_error/data/chsh.err new file mode 100644 index 0000000..5c039d5 --- /dev/null +++ b/tests/tests/chsh/15_chsh_PAM_error/data/chsh.err @@ -0,0 +1 @@ +chsh: PAM: Critical error - immediate abort diff --git a/tests/tests/cktools/01/data/group b/tests/tests/cktools/01/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/01/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/01/data/gshadow b/tests/tests/cktools/01/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/01/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/01/data/passwd b/tests/tests/cktools/01/data/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/cktools/01/data/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/01/data/run2.err b/tests/tests/cktools/01/data/run2.err new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/01/data/run2.out b/tests/tests/cktools/01/data/run2.out new file mode 100644 index 0000000..00df312 --- /dev/null +++ b/tests/tests/cktools/01/data/run2.out @@ -0,0 +1,13 @@ +user 'lp': directory '/var/spool/lpd' does not exist +user 'news': directory '/var/spool/news' does not exist +user 'uucp': directory '/var/spool/uucp' does not exist +user 'www-data': directory '/var/www' does not exist +user 'list': directory '/var/list' does not exist +user 'irc': directory '/var/run/ircd' does not exist +user 'gnats': directory '/var/lib/gnats' does not exist +user 'nobody': directory '/nonexistent' does not exist +user 'Debian-exim': directory '/var/spool/exim4' does not exist +user 'test': no group 10002 +no matching password file entry in /etc/shadow +add user 'test' in /etc/shadow? No +pwck: no changes diff --git a/tests/tests/cktools/01/data/shadow b/tests/tests/cktools/01/data/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/01/data/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/01/run1 b/tests/tests/cktools/01/run1 new file mode 100755 index 0000000..04aa793 --- /dev/null +++ b/tests/tests/cktools/01/run1 @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test that useradd can add an user and userdel removes it. + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + done + + true +} + +restore() +{ + for i in passwd group shadow gshadow + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + done + rmdir tmp +} + +save + +# restore the files on exit +trap 'restore' 0 + +for i in passwd group shadow gshadow +do + cp data/$i /etc +done + +lines_passwd=$(wc -l /etc/passwd | cut -f1 -d" ") +lines_shadow=$(wc -l /etc/shadow | cut -f1 -d" ") +lines_group=$(wc -l /etc/group | cut -f1 -d" ") +lines_gshadow=$(wc -l /etc/gshadow | cut -f1 -d" ") + +echo "pwck accepts valid password file " +msg=$(pwck -r | grep -v "^user .*: directory .* does not exist$") +echo msg: $msg +test "$msg" = "pwck: no changes" +echo " OK" +echo "grpck accepts valid password file " +msg=$(grpck -r) +test "$msg" = "" +echo " OK" + diff --git a/tests/tests/cktools/01/run2 b/tests/tests/cktools/01/run2 new file mode 100755 index 0000000..df1e277 --- /dev/null +++ b/tests/tests/cktools/01/run2 @@ -0,0 +1,62 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +# Rational: +# Test that useradd can add an user and userdel removes it. + +save() +{ + [ ! -d tmp ] && mkdir tmp + for i in passwd group shadow gshadow + do + [ -f /etc/$i ] && cp /etc/$i tmp/$i + done + + true +} + +restore() +{ + rm -f tmp/err tmp/out + for i in passwd group shadow gshadow + do + [ -f tmp/$i ] && cp tmp/$i /etc/$i && rm tmp/$i + done + rmdir tmp +} + +save + +# restore the files on exit +trap 'restore' 0 + +for i in passwd group shadow gshadow +do + cp data/$i /etc +done + +lines_passwd=$(wc -l /etc/passwd | cut -f1 -d" ") +lines_shadow=$(wc -l /etc/shadow | cut -f1 -d" ") +lines_group=$(wc -l /etc/group | cut -f1 -d" ") +lines_gshadow=$(wc -l /etc/gshadow | cut -f1 -d" ") + +echo -n "Add an user without an entry in shadow " +echo "test:x:10002:10002::/tmp:/bin/false" >> /etc/passwd +echo "OK" + +echo "Check that pwck detects it " +pwck -r > tmp/out 2> tmp/err || true +diff -au data/run2.out tmp/out +diff -au data/run2.err tmp/err +echo " OK" +echo "grpck accepts valid password file " +msg=$(grpck -r) +test "$msg" = "" +echo " OK" + +#echo -n "Make sure pwck can fix it " +#pwcd +#echo "OK" diff --git a/tests/tests/cktools/02_pwck_sort/config.txt b/tests/tests/cktools/02_pwck_sort/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/02_pwck_sort/config/etc/group b/tests/tests/cktools/02_pwck_sort/config/etc/group new file mode 100644 index 0000000..5051825 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/02_pwck_sort/config/etc/gshadow b/tests/tests/cktools/02_pwck_sort/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/02_pwck_sort/config/etc/passwd b/tests/tests/cktools/02_pwck_sort/config/etc/passwd new file mode 100644 index 0000000..e69a810 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/config/etc/passwd @@ -0,0 +1,20 @@ +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +root:x:0:0:root:/root:/bin/bash +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +games:x:5:60:games:/usr/games:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/02_pwck_sort/config/etc/shadow b/tests/tests/cktools/02_pwck_sort/config/etc/shadow new file mode 100644 index 0000000..42cf133 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/config/etc/shadow @@ -0,0 +1,20 @@ +daemon:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/02_pwck_sort/data/passwd b/tests/tests/cktools/02_pwck_sort/data/passwd new file mode 100644 index 0000000..5b45b52 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh diff --git a/tests/tests/cktools/02_pwck_sort/data/shadow b/tests/tests/cktools/02_pwck_sort/data/shadow new file mode 100644 index 0000000..8033f27 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/02_pwck_sort/pwck.test b/tests/tests/cktools/02_pwck_sort/pwck.test new file mode 100755 index 0000000..9d6afb1 --- /dev/null +++ b/tests/tests/cktools/02_pwck_sort/pwck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "pwck can sort the passwd entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the passwd entries (pwck -s)..." +pwck -s +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/03_grpck_sort/config.txt b/tests/tests/cktools/03_grpck_sort/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/03_grpck_sort/config/etc/group b/tests/tests/cktools/03_grpck_sort/config/etc/group new file mode 100644 index 0000000..afbb01e --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/config/etc/group @@ -0,0 +1,42 @@ +daemon:x:1: +bin:x:2: +kmem:x:15: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +root:x:0: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +shadow:x:42: +gnats:x:41: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/03_grpck_sort/config/etc/gshadow b/tests/tests/cktools/03_grpck_sort/config/etc/gshadow new file mode 100644 index 0000000..8182ad7 --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/config/etc/gshadow @@ -0,0 +1,42 @@ +daemon:*:: +bin:*:: +kmem:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +root:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +shadow:*:: +gnats:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/03_grpck_sort/config/etc/passwd b/tests/tests/cktools/03_grpck_sort/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/03_grpck_sort/config/etc/shadow b/tests/tests/cktools/03_grpck_sort/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/03_grpck_sort/data/group b/tests/tests/cktools/03_grpck_sort/data/group new file mode 100644 index 0000000..1265953 --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: +nogroup:x:65534: diff --git a/tests/tests/cktools/03_grpck_sort/data/gshadow b/tests/tests/cktools/03_grpck_sort/data/gshadow new file mode 100644 index 0000000..f2209e3 --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: +nogroup:*:: diff --git a/tests/tests/cktools/03_grpck_sort/grpck.test b/tests/tests/cktools/03_grpck_sort/grpck.test new file mode 100755 index 0000000..75e62cf --- /dev/null +++ b/tests/tests/cktools/03_grpck_sort/grpck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "grpck can sort the group entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the group entries (grpck -s)..." +grpck -s +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config.txt b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/group b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/group new file mode 100644 index 0000000..5051825 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/gshadow b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/passwd b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/passwd new file mode 100644 index 0000000..e69a810 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/passwd @@ -0,0 +1,20 @@ +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +root:x:0:0:root:/root:/bin/bash +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +games:x:5:60:games:/usr/games:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/shadow b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/shadow new file mode 100644 index 0000000..64573fa --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/config/etc/shadow @@ -0,0 +1,19 @@ +daemon:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/passwd b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/passwd new file mode 100644 index 0000000..5b45b52 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/shadow b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/shadow new file mode 100644 index 0000000..f1e4d80 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/data/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/04_pwck_sort_missing_shadow_user/pwck.test b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/pwck.test new file mode 100755 index 0000000..9d6afb1 --- /dev/null +++ b/tests/tests/cktools/04_pwck_sort_missing_shadow_user/pwck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "pwck can sort the passwd entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the passwd entries (pwck -s)..." +pwck -s +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config.txt b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/group b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/group new file mode 100644 index 0000000..afbb01e --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/group @@ -0,0 +1,42 @@ +daemon:x:1: +bin:x:2: +kmem:x:15: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +root:x:0: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +shadow:x:42: +gnats:x:41: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/gshadow b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/gshadow new file mode 100644 index 0000000..695bf8f --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/gshadow @@ -0,0 +1,41 @@ +daemon:*:: +bin:*:: +kmem:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +root:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +shadow:*:: +gnats:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +foo:*:: diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/passwd b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/shadow b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/group b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/group new file mode 100644 index 0000000..1265953 --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: +nogroup:x:65534: diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/gshadow b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/gshadow new file mode 100644 index 0000000..7dcb3e5 --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +crontab:x:: +foo:*:: +nogroup:*:: diff --git a/tests/tests/cktools/05_grpck_sort_missing_shadow_group/grpck.test b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/grpck.test new file mode 100755 index 0000000..75e62cf --- /dev/null +++ b/tests/tests/cktools/05_grpck_sort_missing_shadow_group/grpck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "grpck can sort the group entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the group entries (grpck -s)..." +grpck -s +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/config.txt b/tests/tests/cktools/06_pwck_sort_NIS_server/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/group b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/group new file mode 100644 index 0000000..18eb6c2 --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: ++::: diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/gshadow b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/gshadow new file mode 100644 index 0000000..7a7ef3a --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: ++::: diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/passwd b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/passwd new file mode 100644 index 0000000..365af62 --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/passwd @@ -0,0 +1,24 @@ +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +root:x:0:0:root:/root:/bin/bash +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +games:x:5:60:games:/usr/games:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false ++miquels:::::: ++:*:::::/etc/NoShell +tester:*:299:10:Just a test account:/tmp: +miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/shadow b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/shadow new file mode 100644 index 0000000..5a24e78 --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/config/etc/shadow @@ -0,0 +1,21 @@ +daemon:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: ++:::::::: diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/data/passwd b/tests/tests/cktools/06_pwck_sort_NIS_server/data/passwd new file mode 100644 index 0000000..c12f8a9 --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/data/passwd @@ -0,0 +1,24 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ++miquels:::::: ++:*:::::/etc/NoShell +tester:*:299:10:Just a test account:/tmp: +miquels:1234567890123:101:10:Miquel van Smoorenburg:/home/miquels:/bin/zsh diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/data/shadow b/tests/tests/cktools/06_pwck_sort_NIS_server/data/shadow new file mode 100644 index 0000000..6a626df --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/data/shadow @@ -0,0 +1,21 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: ++:::::::: diff --git a/tests/tests/cktools/06_pwck_sort_NIS_server/pwck.test b/tests/tests/cktools/06_pwck_sort_NIS_server/pwck.test new file mode 100755 index 0000000..9d6afb1 --- /dev/null +++ b/tests/tests/cktools/06_pwck_sort_NIS_server/pwck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "pwck can sort the passwd entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the passwd entries (pwck -s)..." +pwck -s +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/config.txt b/tests/tests/cktools/07_pwck_sort_NIS_client/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/group b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/group new file mode 100644 index 0000000..f914b38 --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/group @@ -0,0 +1,45 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: ++::: ++miquels::: ++foo::: diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/gshadow b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/gshadow new file mode 100644 index 0000000..7a7ef3a --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: ++::: diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/passwd b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/passwd new file mode 100644 index 0000000..913d7fc --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/passwd @@ -0,0 +1,22 @@ +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +root:x:0:0:root:/root:/bin/bash +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +games:x:5:60:games:/usr/games:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false ++miquels:::::: ++:*:::::/etc/NoShell diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/shadow b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/shadow new file mode 100644 index 0000000..8f31dfb --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/config/etc/shadow @@ -0,0 +1,22 @@ +daemon:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: ++:::::::: ++foo2:!::::::: diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/data/passwd b/tests/tests/cktools/07_pwck_sort_NIS_client/data/passwd new file mode 100644 index 0000000..032bdd2 --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/data/passwd @@ -0,0 +1,22 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ++miquels:::::: ++:*:::::/etc/NoShell diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/data/shadow b/tests/tests/cktools/07_pwck_sort_NIS_client/data/shadow new file mode 100644 index 0000000..5350e77 --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/data/shadow @@ -0,0 +1,22 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: ++:::::::: ++foo2:!::::::: diff --git a/tests/tests/cktools/07_pwck_sort_NIS_client/pwck.test b/tests/tests/cktools/07_pwck_sort_NIS_client/pwck.test new file mode 100755 index 0000000..9d6afb1 --- /dev/null +++ b/tests/tests/cktools/07_pwck_sort_NIS_client/pwck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "pwck can sort the passwd entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the passwd entries (pwck -s)..." +pwck -s +echo "OK" + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config.txt b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/group b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/group new file mode 100644 index 0000000..d1e687c --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/gshadow b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/passwd b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/shadow b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/group b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/gshadow b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.exp b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.exp new file mode 100755 index 0000000..df3e04c --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group file entry" +expect "delete line 'foo:x'? " +send "yes\r" +expect "no matching group file entry in /etc/group" +expect "delete line 'foo:*::'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.test b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.test new file mode 100755 index 0000000..906d629 --- /dev/null +++ b/tests/tests/cktools/grpck/04_grpck_missing_field_group_delete/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config.txt b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/group b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/group new file mode 100644 index 0000000..d1e687c --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/gshadow b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/passwd b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/shadow b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/data/gshadow b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.exp b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.exp new file mode 100755 index 0000000..08d3526 --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group file entry" +expect "delete line 'foo:x'? " +send "no\r" +expect "no matching group file entry in /etc/group" +expect "delete line 'foo:*::'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.test b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/05_grpck_missing_field_group_keep/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config.txt b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/group b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/group new file mode 100644 index 0000000..d1e687c --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/gshadow b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/passwd b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/shadow b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.exp b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.exp new file mode 100755 index 0000000..c0aea87 --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group file entry" +expect "delete line 'foo:x'? " +send "no\r" +expect "no matching group file entry in /etc/group" +expect "delete line 'foo:*::'? " +send "no\r" +expect "grpck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.test b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/06_grpck_missing_field_group_no_changes/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config.txt b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/group b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/gshadow b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/gshadow new file mode 100644 index 0000000..b8fb234 --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*: diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/passwd b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/shadow b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/data/gshadow b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/data/gshadow new file mode 100644 index 0000000..be1575e --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:x:: diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.exp b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.exp new file mode 100755 index 0000000..6bb26e4 --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "no matching group file entry in /etc/gshadow" +expect "add group 'foo' in /etc/gshadow? " +send "yes\r" +expect "invalid shadow group file entry" +expect "delete line 'foo:*:'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.test b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/07_grpck_missing_field_gshadow_add/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config.txt b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/group b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/gshadow b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/gshadow new file mode 100644 index 0000000..b8fb234 --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*: diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/passwd b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/shadow b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/data/gshadow b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.exp b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.exp new file mode 100755 index 0000000..ed6ffca --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "no matching group file entry in /etc/gshadow" +expect "add group 'foo' in /etc/gshadow? " +send "no\r" +expect "invalid shadow group file entry" +expect "delete line 'foo:*:'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.test b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/08_grpck_missing_field_gshadow_delete/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config.txt b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/group b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/gshadow b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/gshadow new file mode 100644 index 0000000..b8fb234 --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*: diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/passwd b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/shadow b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.exp b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.exp new file mode 100755 index 0000000..a5f1817 --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "no matching group file entry in /etc/gshadow" +expect "add group 'foo' in /etc/gshadow? " +send "no\r" +expect "invalid shadow group file entry" +expect "delete line 'foo:*:'? " +send "no\r" +expect "grpck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.test b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/09_grpck_missing_field_gshadow_no_changes/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config.txt b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/group b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/group new file mode 100644 index 0000000..d1e687c --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/gshadow b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/passwd b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/shadow b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/group b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/gshadow b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.exp b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.exp new file mode 100755 index 0000000..8f5dc7b --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck tmp/group tmp/gshadow\r" +expect "invalid group file entry" +expect "delete line 'foo:x'? " +send "yes\r" +expect "no matching group file entry in tmp/group" +expect "delete line 'foo:*::'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.test b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.test new file mode 100755 index 0000000..666852e --- /dev/null +++ b/tests/tests/cktools/grpck/10_grpck_missing_field_group_local/grpck.test @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "copy group and gshadow locally..." +cp /etc/group /etc/gshadow tmp/ +echo "OK" + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/gshadow +echo "OK" + +rm -f tmp/group tmp/group- tmp/gshadow tmp/gshadow- + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config.txt b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/group b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/gshadow b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/gshadow new file mode 100644 index 0000000..b8fb234 --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*: diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/passwd b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/shadow b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/group b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/gshadow b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/gshadow new file mode 100644 index 0000000..be1575e --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:x:: diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/shadow b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.exp b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.exp new file mode 100755 index 0000000..63fe7db --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck tmp/group tmp/gshadow\r" +expect "no matching group file entry in tmp/gshadow" +expect "add group 'foo' in tmp/gshadow? " +send "yes\r" +expect "invalid shadow group file entry" +expect "delete line 'foo:*:'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.test b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.test new file mode 100755 index 0000000..666852e --- /dev/null +++ b/tests/tests/cktools/grpck/11_grpck_missing_field_gshadow_local/grpck.test @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "copy group and gshadow locally..." +cp /etc/group /etc/gshadow tmp/ +echo "OK" + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +../../../common/compare_file.pl data/gshadow tmp/gshadow +echo "OK" + +rm -f tmp/group tmp/group- tmp/gshadow tmp/gshadow- + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config.txt b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/group b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/group new file mode 100644 index 0000000..757aef8 --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,foo2,bin diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/gshadow b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/gshadow new file mode 100644 index 0000000..3e97ea4 --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::daemon,bin diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/passwd b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/shadow b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/data/group b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/data/group new file mode 100644 index 0000000..cf18eb5 --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,bin diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.exp b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.exp new file mode 100755 index 0000000..39b700b --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "group foo: no user foo2" +expect "delete member 'foo2'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.test b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.test new file mode 100755 index 0000000..741bfe1 --- /dev/null +++ b/tests/tests/cktools/grpck/12_grpck_unknown_user_group/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config.txt b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/group b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/group new file mode 100644 index 0000000..cf18eb5 --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,bin diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/gshadow b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/gshadow new file mode 100644 index 0000000..d2a1782 --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::daemon,foo2,bin diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/passwd b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/shadow b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/data/gshadow b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/data/gshadow new file mode 100644 index 0000000..3e97ea4 --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::daemon,bin diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.exp b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.exp new file mode 100755 index 0000000..05858b5 --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.exp @@ -0,0 +1,21 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "'foo2' is a member of the 'foo' group in /etc/gshadow but not in /etc/group" +expect "shadow group foo: no user foo2" +expect "delete member 'foo2'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.test b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/13_grpck_unknown_user_gshadow/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config.txt b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/group b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/group new file mode 100644 index 0000000..cf18eb5 --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,bin diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/gshadow b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/gshadow new file mode 100644 index 0000000..a7d227e --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:foo3,foo4:foo3,daemon,bin,foo2 diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/passwd b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/shadow b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/data/gshadow b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/data/gshadow new file mode 100644 index 0000000..3e97ea4 --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::daemon,bin diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.exp b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.exp new file mode 100755 index 0000000..b5a65b1 --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.exp @@ -0,0 +1,31 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "'foo3' is a member of the 'foo' group in /etc/gshadow but not in /etc/group" +expect "'foo2' is a member of the 'foo' group in /etc/gshadow but not in /etc/group" +expect "shadow group foo: no administrative user foo3" +expect "delete administrative member 'foo3'? " +send "yes\r" +expect "shadow group foo: no administrative user foo4" +expect "delete administrative member 'foo4'? " +send "yes\r" +expect "shadow group foo: no user foo3" +expect "delete member 'foo3'? " +send "yes\r" +expect "shadow group foo: no user foo2" +expect "delete member 'foo2'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.test b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/14_grpck_unknown_user_adm_gshadow/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config.txt b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/group b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/group new file mode 100644 index 0000000..4eeb1ff --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,foo2,foo2,bin diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/gshadow b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/gshadow new file mode 100644 index 0000000..3e97ea4 --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::daemon,bin diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/passwd b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/shadow b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/data/group b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/data/group new file mode 100644 index 0000000..cf18eb5 --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,bin diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.exp b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.exp new file mode 100755 index 0000000..4de3e21 --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "group foo: no user foo2" +expect "delete member 'foo2'? " +send "yes\r" +expect "group foo: no user foo2" +expect "delete member 'foo2'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.test b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.test new file mode 100755 index 0000000..741bfe1 --- /dev/null +++ b/tests/tests/cktools/grpck/15_grpck_unknown_user_duplicate_group/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config.txt b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/group b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/group new file mode 100644 index 0000000..7351800 --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon +foo:x:1000:bin diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/gshadow b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/passwd b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/shadow b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/data/group b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/data/group new file mode 100644 index 0000000..5c08ae1 --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:bin diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.exp b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.exp new file mode 100755 index 0000000..8c08987 --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "duplicate group entry" +expect "delete line 'foo:x:1000:daemon'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.test b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.test new file mode 100755 index 0000000..741bfe1 --- /dev/null +++ b/tests/tests/cktools/grpck/16_grpck_duplicate_entry_group/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config.txt b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/group b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/group new file mode 100644 index 0000000..fda0a6d --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/gshadow b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/gshadow new file mode 100644 index 0000000..124c805 --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +foo:*::daemon +crontab:x:: +Debian-exim:x:: +foo:*::bin diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/passwd b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/shadow b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/data/gshadow b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/data/gshadow new file mode 100644 index 0000000..bdd8388 --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::bin diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.exp b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.exp new file mode 100755 index 0000000..2fd4ff1 --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "duplicate shadow group entry" +expect "delete line 'foo:*::daemon'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.test b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/17_grpck_duplicate_entry_gshadow/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config.txt b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/group b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/group new file mode 100644 index 0000000..7351800 --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/group @@ -0,0 +1,43 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon +foo:x:1000:bin diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/gshadow b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/passwd b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/shadow b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.exp b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.exp new file mode 100755 index 0000000..51d64df --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.exp @@ -0,0 +1,24 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "duplicate group entry" +expect "delete line 'foo:x:1000:daemon'? " +send "no\r" +expect "'daemon' is a member of the 'foo' group in /etc/group but not in /etc/gshadow" +expect "duplicate group entry" +expect "delete line 'foo:x:1000:bin'? " +send "no \r" +expect "grpck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.test b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/18_grpck_duplicate_entry_group_no_changes/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config.txt b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/group b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/group new file mode 100644 index 0000000..fda0a6d --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/gshadow b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/gshadow new file mode 100644 index 0000000..124c805 --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +foo:*::daemon +crontab:x:: +Debian-exim:x:: +foo:*::bin diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/passwd b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/shadow b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.exp b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.exp new file mode 100755 index 0000000..57e9090 --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "duplicate shadow group entry" +expect "delete line 'foo:*::daemon'? " +send "no\r" +expect "duplicate shadow group entry" +expect "delete line 'foo:*::bin'? " +send "no\r" +expect "grpck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.test b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/19_grpck_duplicate_entry_gshadow_no_changes/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config.txt b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/group b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/group new file mode 100644 index 0000000..fda0a6d --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/gshadow b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/gshadow new file mode 100644 index 0000000..124c805 --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/gshadow @@ -0,0 +1,43 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +foo:*::daemon +crontab:x:: +Debian-exim:x:: +foo:*::bin diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/passwd b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/shadow b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/data/gshadow b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/data/gshadow new file mode 100644 index 0000000..a1a4f31 --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +foo:*::daemon +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.exp b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.exp new file mode 100755 index 0000000..7796948 --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "duplicate shadow group entry" +expect "delete line 'foo:*::daemon'? " +send "no\r" +expect "duplicate shadow group entry" +expect "delete line 'foo:*::bin'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.test b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.test new file mode 100755 index 0000000..dcfa249 --- /dev/null +++ b/tests/tests/cktools/grpck/20_grpck_duplicate_entry_gshadow_delete_second/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config.txt b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/group b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/group new file mode 100644 index 0000000..220f375 --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +f o o:x:1000: diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/gshadow b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/gshadow new file mode 100644 index 0000000..8337b65 --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +f o o:*:: diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/passwd b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/shadow b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.exp b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.exp new file mode 100755 index 0000000..8312839 --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.exp @@ -0,0 +1,17 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group name 'f o o'" +expect "grpck: no changes" +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.test b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/21_grpck_invalid_group_name/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config.txt b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/group b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/group new file mode 100644 index 0000000..e9efa8b --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:-1: diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/gshadow b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/passwd b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/shadow b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/group b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/gshadow b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.exp b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.exp new file mode 100755 index 0000000..af20b34 --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group file entry" +expect "delete line 'foo:x:-1:'? " +send "yes\r" +expect "no matching group file entry in /etc/group" +expect "delete line 'foo:*::'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.test b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.test new file mode 100755 index 0000000..906d629 --- /dev/null +++ b/tests/tests/cktools/grpck/22_grpck_invalid_group_ID_-1/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config.txt b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/group b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/group new file mode 100644 index 0000000..c6a2e19 --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:4294967295: diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/gshadow b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/passwd b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/shadow b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.exp b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.exp new file mode 100755 index 0000000..29a5e9f --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.exp @@ -0,0 +1,18 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group ID '4294967295'" +expect "grpck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.test b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/23_grpck_invalid_group_ID_4294967295/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config.txt b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/group b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/group new file mode 100644 index 0000000..cb278ce --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:4294967296: diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/gshadow b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/passwd b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/shadow b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/group b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/gshadow b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/data/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.exp b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.exp new file mode 100755 index 0000000..b4eaaa9 --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "invalid group file entry" +expect "delete line 'foo:x:4294967296:'? " +send "yes\r" +expect "no matching group file entry in /etc/group" +expect "delete line 'foo:*::'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.test b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.test new file mode 100755 index 0000000..906d629 --- /dev/null +++ b/tests/tests/cktools/grpck/24_grpck_invalid_group_ID_4294967296/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config.txt b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/group b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/group new file mode 100644 index 0000000..757aef8 --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon,foo2,bin diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/gshadow b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/gshadow new file mode 100644 index 0000000..d2a1782 --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*::daemon,foo2,bin diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/passwd b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/shadow b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.exp b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.exp new file mode 100755 index 0000000..15cd397 --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "group foo: no user foo2" +expect "delete member 'foo2'? " +send "no\r" +expect "shadow group foo: no user foo2" +expect "delete member 'foo2'? " +send "no\r" +expect "grpck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.test b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.test new file mode 100755 index 0000000..81bf12c --- /dev/null +++ b/tests/tests/cktools/grpck/25_grpck_unknown_user_group_no_changes/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config.txt b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/group b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/group new file mode 100644 index 0000000..9303fe2 --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/group @@ -0,0 +1,42 @@ +daemon:x:1: +bin:x:2: +kmem:x:15: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +root:x:0: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +shadow:x:42: +gnats:x:41: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:bar diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/gshadow b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/gshadow new file mode 100644 index 0000000..695bf8f --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/gshadow @@ -0,0 +1,41 @@ +daemon:*:: +bin:*:: +kmem:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +root:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +shadow:*:: +gnats:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/passwd b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/shadow b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/data/grpck.out b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/data/grpck.out new file mode 100644 index 0000000..929e0e8 --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/data/grpck.out @@ -0,0 +1,3 @@ +group foo: no user bar +delete member 'bar'? No +grpck: no changes diff --git a/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/grpck.test b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/grpck.test new file mode 100755 index 0000000..0ccd682 --- /dev/null +++ b/tests/tests/cktools/grpck/26_grpck_no_gshadow_file/grpck.test @@ -0,0 +1,58 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck can check the group entries when there are no gshadow file" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Remove the gshadow file..." +rm -f /etc/gshadow +echo "done" + +echo -n "Check the group entries (grpck -r)..." +grpck -r >tmp/grpck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/grpck.out +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/grpck.out tmp/grpck.out +echo "error message OK." +rm -f tmp/grpck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +test ! -f /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config.txt b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/group b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/group new file mode 100644 index 0000000..afbb01e --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/group @@ -0,0 +1,42 @@ +daemon:x:1: +bin:x:2: +kmem:x:15: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +root:x:0: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +shadow:x:42: +gnats:x:41: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/gshadow b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/gshadow new file mode 100644 index 0000000..695bf8f --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/gshadow @@ -0,0 +1,41 @@ +daemon:*:: +bin:*:: +kmem:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +root:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +shadow:*:: +gnats:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/passwd b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/shadow b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/data/group b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/data/group new file mode 100644 index 0000000..1265953 --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: +nogroup:x:65534: diff --git a/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/grpck.test b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/grpck.test new file mode 100755 index 0000000..31a6e9e --- /dev/null +++ b/tests/tests/cktools/grpck/27_grpck_sort_no_gshadow_file/grpck.test @@ -0,0 +1,43 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck can sort the group entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Remove the gshadow file..." +rm -f /etc/gshadow +echo "done" + +echo -n "Sort the group entries (grpck -s)..." +grpck -s +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +test ! -f /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/28_grpck_usage/config.txt b/tests/tests/cktools/grpck/28_grpck_usage/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/grpck/28_grpck_usage/config/etc/default/useradd b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/cktools/grpck/28_grpck_usage/config/etc/group b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/28_grpck_usage/config/etc/gshadow b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/28_grpck_usage/config/etc/passwd b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/grpck/28_grpck_usage/config/etc/shadow b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/28_grpck_usage/data/usage.out b/tests/tests/cktools/grpck/28_grpck_usage/data/usage.out new file mode 100644 index 0000000..899e2d7 --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/data/usage.out @@ -0,0 +1,9 @@ +Usage: grpck [options] [group [gshadow]] + +Options: + -h, --help display this help message and exit + -r, --read-only display errors and warnings + but do not change files + -R, --root CHROOT_DIR directory to chroot into + -s, --sort sort entries by UID + diff --git a/tests/tests/cktools/grpck/28_grpck_usage/grpck.test b/tests/tests/cktools/grpck/28_grpck_usage/grpck.test new file mode 100755 index 0000000..e397aaf --- /dev/null +++ b/tests/tests/cktools/grpck/28_grpck_usage/grpck.test @@ -0,0 +1,47 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck can display its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get grpck usage (grpck -h)..." +grpck -h >tmp/usage.out + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/config.txt b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/default/useradd b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/group b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/gshadow b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/passwd b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/shadow b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/data/usage.out b/tests/tests/cktools/grpck/29_grpck_sort_readonly/data/usage.out new file mode 100644 index 0000000..cd278fa --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/data/usage.out @@ -0,0 +1 @@ +grpck: -s and -r are incompatible diff --git a/tests/tests/cktools/grpck/29_grpck_sort_readonly/grpck.test b/tests/tests/cktools/grpck/29_grpck_sort_readonly/grpck.test new file mode 100755 index 0000000..417584f --- /dev/null +++ b/tests/tests/cktools/grpck/29_grpck_sort_readonly/grpck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck report failure when sorting and read only are enabled" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get grpck usage (grpck -r -s)..." +grpck -r -s 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/config.txt b/tests/tests/cktools/grpck/30_grpck_3_files/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/default/useradd b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/group b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/gshadow b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/passwd b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/shadow b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/data/usage.out b/tests/tests/cktools/grpck/30_grpck_3_files/data/usage.out new file mode 100644 index 0000000..899e2d7 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/data/usage.out @@ -0,0 +1,9 @@ +Usage: grpck [options] [group [gshadow]] + +Options: + -h, --help display this help message and exit + -r, --read-only display errors and warnings + but do not change files + -R, --root CHROOT_DIR directory to chroot into + -s, --sort sort entries by UID + diff --git a/tests/tests/cktools/grpck/30_grpck_3_files/grpck.test b/tests/tests/cktools/grpck/30_grpck_3_files/grpck.test new file mode 100755 index 0000000..e2614d9 --- /dev/null +++ b/tests/tests/cktools/grpck/30_grpck_3_files/grpck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks its number of arguments" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get grpck usage (grpck -r foo bar baz)..." +grpck -r foo bar baz 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config.txt b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/group b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/group new file mode 100644 index 0000000..d1e687c --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/gshadow b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/passwd b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/shadow b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/data/group b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/data/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/data/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.exp b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.exp new file mode 100755 index 0000000..8c53688 --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck tmp/group\r" +expect "invalid group file entry" +expect "delete line 'foo:x'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.test b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.test new file mode 100755 index 0000000..3c74960 --- /dev/null +++ b/tests/tests/cktools/grpck/31_grpck_missing_field_group_local_no_gshadow/grpck.test @@ -0,0 +1,44 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "copy group and gshadow locally..." +cp /etc/group tmp/ +echo "OK" + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +../../../common/compare_file.pl data/group tmp/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +rm -f tmp/group tmp/group- tmp/gshadow tmp/gshadow- + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/config.txt b/tests/tests/cktools/grpck/32_grpck_sort_nis/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/group b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/group new file mode 100644 index 0000000..e644ed9 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/group @@ -0,0 +1,45 @@ +daemon:x:1: +bin:x:2: +kmem:x:15: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +root:x:0: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +shadow:x:42: +gnats:x:41: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: ++::: ++foo1::: +-foo2: diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/gshadow b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/gshadow new file mode 100644 index 0000000..8182ad7 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/gshadow @@ -0,0 +1,42 @@ +daemon:*:: +bin:*:: +kmem:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +root:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +shadow:*:: +gnats:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/passwd b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/shadow b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/data/group b/tests/tests/cktools/grpck/32_grpck_sort_nis/data/group new file mode 100644 index 0000000..23467d3 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/data/group @@ -0,0 +1,45 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: +nogroup:x:65534: ++::: ++foo1::: +-foo2: diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/data/gshadow b/tests/tests/cktools/grpck/32_grpck_sort_nis/data/gshadow new file mode 100644 index 0000000..f2209e3 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: +nogroup:*:: diff --git a/tests/tests/cktools/grpck/32_grpck_sort_nis/grpck.test b/tests/tests/cktools/grpck/32_grpck_sort_nis/grpck.test new file mode 100755 index 0000000..d509689 --- /dev/null +++ b/tests/tests/cktools/grpck/32_grpck_sort_nis/grpck.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck can sort the group entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Sort the group entries (grpck -s)..." +grpck -s +echo "OK" + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/config.txt b/tests/tests/cktools/grpck/33_grpck_locked_group/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/default/useradd b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/group b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/gshadow b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/passwd b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/shadow b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/data/grpck.err b/tests/tests/cktools/grpck/33_grpck_locked_group/data/grpck.err new file mode 100644 index 0000000..1f6325d --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/data/grpck.err @@ -0,0 +1,2 @@ +grpck: existing lock file /etc/group.lock without a PID +grpck: cannot lock /etc/group; try again later. diff --git a/tests/tests/cktools/grpck/33_grpck_locked_group/grpck.test b/tests/tests/cktools/grpck/33_grpck_locked_group/grpck.test new file mode 100755 index 0000000..0aa139c --- /dev/null +++ b/tests/tests/cktools/grpck/33_grpck_locked_group/grpck.test @@ -0,0 +1,60 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks if the group file is locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/group.lock' 0 + +change_config + +echo -n "Create lock file for /etc/group..." +touch /etc/group.lock +echo "done" + +echo -n "Check groups (grpck)..." +grpck 2>tmp/grpck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/group.lock + +echo -n "Check returned status ($status)..." +test "$status" = "4" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/grpck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/grpck.err tmp/grpck.err +echo "error message OK." +rm -f tmp/grpck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config.txt b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/default/useradd b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/default/useradd new file mode 100644 index 0000000..31c44ab --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/default/useradd @@ -0,0 +1,36 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# The default home directory. Same as DHOME for adduser +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/group b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/gshadow b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/passwd b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/shadow b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/data/grpck.err b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/data/grpck.err new file mode 100644 index 0000000..868dee1 --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/data/grpck.err @@ -0,0 +1,2 @@ +grpck: existing lock file /etc/gshadow.lock without a PID +grpck: cannot lock /etc/gshadow; try again later. diff --git a/tests/tests/cktools/grpck/34_grpck_locked_gshadow/grpck.test b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/grpck.test new file mode 100755 index 0000000..4c6ea0c --- /dev/null +++ b/tests/tests/cktools/grpck/34_grpck_locked_gshadow/grpck.test @@ -0,0 +1,60 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks if the gshadow file is locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/gshadow.lock' 0 + +change_config + +echo -n "Create lock file for /etc/gshadow..." +touch /etc/gshadow.lock +echo "done" + +echo -n "Check groups (grpck)..." +grpck 2>tmp/grpck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/gshadow.lock + +echo -n "Check returned status ($status)..." +test "$status" = "4" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/grpck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/grpck.err tmp/grpck.err +echo "error message OK." +rm -f tmp/grpck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config.txt b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/group b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/group new file mode 100644 index 0000000..213b065 --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/group @@ -0,0 +1,45 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000:daemon ++::: +-bar::: +foo:x:1000:bin diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/gshadow b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/passwd b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/shadow b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/data/group b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/data/group new file mode 100644 index 0000000..6c080ef --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/data/group @@ -0,0 +1,44 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: ++::: +-bar::: +foo:x:1000:bin diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.exp b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.exp new file mode 100755 index 0000000..8c08987 --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "grpck\r" +expect "duplicate group entry" +expect "delete line 'foo:x:1000:daemon'? " +send "yes\r" +expect "grpck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.test b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.test new file mode 100755 index 0000000..741bfe1 --- /dev/null +++ b/tests/tests/cktools/grpck/35_grpck_duplicate_entry_group_NIS/grpck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./grpck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config.txt b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config.txt new file mode 100644 index 0000000..3d43135 --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/group b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/group new file mode 100644 index 0000000..52cf2af --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/group @@ -0,0 +1,42 @@ +daemon:x:1: +bin:x:2: +kmem:x:15: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +root:x:0: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +shadow:x:42: +gnats:x:41: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:toto:1000: diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/gshadow b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/gshadow new file mode 100644 index 0000000..817f174 --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/gshadow @@ -0,0 +1,42 @@ +daemon:*:: +bin:*:: +kmem:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +root:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +shadow:*:: +gnats:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*::foo +nogroup:*:: +crontab:x:: +foo:foo:: +Debian-exim:*:: diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/passwd b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/passwd new file mode 100644 index 0000000..dc7bf84 --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:::/bin/false diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/shadow b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/data/grpck.out b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/data/grpck.out new file mode 100644 index 0000000..476a798 --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/data/grpck.out @@ -0,0 +1,2 @@ +group foo has an entry in /etc/gshadow, but its password field in /etc/group is not set to 'x' +grpck: no changes diff --git a/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/grpck.test b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/grpck.test new file mode 100755 index 0000000..d32ae67 --- /dev/null +++ b/tests/tests/cktools/grpck/36_grpck_password_group_gshadow/grpck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck can sort the group entries" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Check the group entries (grpck -r)..." +grpck -r >tmp/grpck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/grpck.out +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/grpck.out tmp/grpck.out +echo "error message OK." +rm -f tmp/grpck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/config.txt b/tests/tests/cktools/grpck/37_grpck_invalid_option/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/group b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/gshadow b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/passwd b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/shadow b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/data/usage.out b/tests/tests/cktools/grpck/37_grpck_invalid_option/data/usage.out new file mode 100644 index 0000000..1142051 --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/data/usage.out @@ -0,0 +1,10 @@ +grpck: unrecognized option '--invalid' +Usage: grpck [options] [group [gshadow]] + +Options: + -h, --help display this help message and exit + -r, --read-only display errors and warnings + but do not change files + -R, --root CHROOT_DIR directory to chroot into + -s, --sort sort entries by UID + diff --git a/tests/tests/cktools/grpck/37_grpck_invalid_option/grpck.test b/tests/tests/cktools/grpck/37_grpck_invalid_option/grpck.test new file mode 100755 index 0000000..c13be5f --- /dev/null +++ b/tests/tests/cktools/grpck/37_grpck_invalid_option/grpck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck reports usage when called with an invalid option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Call grpck with an invalid option (grpck --invalid)..." +grpck --invalid 2>tmp/usage.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "grpck reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config.txt b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config.txt new file mode 100644 index 0000000..b3c3e75 --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config.txt @@ -0,0 +1,2 @@ +group foo +user foo with typo in passwd diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/group b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/gshadow b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/passwd b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/passwd new file mode 100644 index 0000000..4ee448d --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000:: diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/shadow b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/passwd b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/passwd new file mode 100644 index 0000000..2b911d1 --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/passwd @@ -0,0 +1,10 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/shadow b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/shadow new file mode 100644 index 0000000..0a2fddb --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/data/shadow @@ -0,0 +1,10 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.exp b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.exp new file mode 100755 index 0000000..8ddfd2b --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid password file entry" +expect "delete line 'foo:x:1000:1000::'? " +send "yes\r" +expect "no matching password file entry in /etc/passwd" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.test b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.test new file mode 100755 index 0000000..9f8c33a --- /dev/null +++ b/tests/tests/cktools/pwck/04_pwck_missing_field_passwd_delete/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config.txt b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/group b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/gshadow b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/passwd b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/passwd new file mode 100644 index 0000000..4ee448d --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000:: diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/shadow b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/data/shadow b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/data/shadow new file mode 100644 index 0000000..0a2fddb --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/data/shadow @@ -0,0 +1,10 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.exp b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.exp new file mode 100755 index 0000000..ae0e8ea --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.exp @@ -0,0 +1,22 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid password file entry" +expect "delete line 'foo:x:1000:1000::'? " +send "no\r" +expect "no matching password file entry in /etc/passwd" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "yes\r" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.test b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.test new file mode 100755 index 0000000..688759d --- /dev/null +++ b/tests/tests/cktools/pwck/05_pwck_missing_field_passwd_keep/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config.txt b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/group b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/group new file mode 100644 index 0000000..d1e687c --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/gshadow b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/passwd b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/passwd new file mode 100644 index 0000000..4ee448d --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000:: diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/shadow b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.exp b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.exp new file mode 100755 index 0000000..086b25d --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid password file entry" +expect "delete line 'foo:x:1000:1000::'? " +send "no\r" +expect "no matching password file entry in /etc/passwd" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "no\r" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.test b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.test new file mode 100755 index 0000000..b9f4a13 --- /dev/null +++ b/tests/tests/cktools/pwck/06_pwck_missing_field_passwd_no_changes/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck check the number of fields and does not change the system database if requested" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config.txt b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/group b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/gshadow b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/passwd b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/shadow b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/shadow new file mode 100644 index 0000000..3a064c0 --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7:: diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/data/shadow b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/data/shadow new file mode 100644 index 0000000..c9a0314 --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/data/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:x:@TODAY@:0:99999:7::: diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.exp b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.exp new file mode 100755 index 0000000..819a5ea --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "no matching password file entry in /etc/shadow" +expect "add user 'foo' in /etc/shadow? " +send "yes\r" +expect "invalid shadow password file entry" +expect "delete line 'foo:!:12977:0:99999:7::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.test b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.test new file mode 100755 index 0000000..688759d --- /dev/null +++ b/tests/tests/cktools/pwck/07_pwck_missing_field_shadow_add/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config.txt b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/group b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/gshadow b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/passwd b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/shadow b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/shadow new file mode 100644 index 0000000..3a064c0 --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7:: diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/data/shadow b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/data/shadow new file mode 100644 index 0000000..0a2fddb --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/data/shadow @@ -0,0 +1,10 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.exp b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.exp new file mode 100755 index 0000000..d72e00f --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "no matching password file entry in /etc/shadow" +expect "add user 'foo' in /etc/shadow? " +send "no\r" +expect "invalid shadow password file entry" +expect "delete line 'foo:!:12977:0:99999:7::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.test b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.test new file mode 100755 index 0000000..688759d --- /dev/null +++ b/tests/tests/cktools/pwck/08_pwck_missing_field_shadow_delete/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config.txt b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/group b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/gshadow b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/passwd b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/shadow b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/shadow new file mode 100644 index 0000000..3a064c0 --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7:: diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.exp b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.exp new file mode 100755 index 0000000..30ca663 --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "no matching password file entry in /etc/shadow" +expect "add user 'foo' in /etc/shadow? " +send "no\r" +expect "invalid shadow password file entry" +expect "delete line 'foo:!:12977:0:99999:7::'? " +send "no\r" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.test b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.test new file mode 100755 index 0000000..893ba6e --- /dev/null +++ b/tests/tests/cktools/pwck/09_pwck_missing_field_shadow_no_changes/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck check the number of fields and can change the system database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config.txt b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/group b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/gshadow b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/passwd b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/passwd new file mode 100644 index 0000000..4ee448d --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000:: diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/shadow b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/passwd b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/passwd new file mode 100644 index 0000000..2b911d1 --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/passwd @@ -0,0 +1,10 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/shadow b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/shadow new file mode 100644 index 0000000..0a2fddb --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/data/shadow @@ -0,0 +1,10 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.exp b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.exp new file mode 100755 index 0000000..4304cae --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck tmp/passwd tmp/shadow\r" +expect "invalid password file entry" +expect "delete line 'foo:x:1000:1000::'? " +send "yes\r" +expect "no matching password file entry in tmp/passwd" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.test b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.test new file mode 100755 index 0000000..b66eb34 --- /dev/null +++ b/tests/tests/cktools/pwck/10_pwck_missing_field_passwd_local/pwck.test @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck check the number of fields and can change local databases" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "copy passwd and shadow locally..." +cp /etc/passwd /etc/shadow tmp/ +echo "OK" + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +rm -f tmp/passwd tmp/passwd- tmp/shadow tmp/shadow- + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config.txt b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config.txt new file mode 100644 index 0000000..52fad51 --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in gshadow diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/group b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/gshadow b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/passwd b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/shadow b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/shadow new file mode 100644 index 0000000..3a064c0 --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7:: diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/passwd b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/shadow b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/shadow new file mode 100644 index 0000000..c9a0314 --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/data/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:x:@TODAY@:0:99999:7::: diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.exp b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.exp new file mode 100755 index 0000000..b8ec619 --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck tmp/passwd tmp/shadow\r" +expect "no matching password file entry in tmp/shadow" +expect "add user 'foo' in tmp/shadow? " +send "yes\r" +expect "invalid shadow password file entry" +expect "delete line 'foo:*:'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.test b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.test new file mode 100755 index 0000000..b7675e6 --- /dev/null +++ b/tests/tests/cktools/pwck/11_pwck_missing_field_shadow_local/pwck.test @@ -0,0 +1,45 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the number of fields and can change local databases" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "copy passwd and shadow locally..." +cp /etc/passwd /etc/shadow tmp/ +echo "OK" + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +../../../common/compare_file.pl data/passwd tmp/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +../../../common/compare_file.pl data/shadow tmp/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +rm -f tmp/passwd tmp/passwd- tmp/shadow tmp/shadow- + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config.txt b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/group b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/gshadow b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/passwd b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/passwd new file mode 100644 index 0000000..58f2d75 --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1001::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/shadow b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.exp b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.exp new file mode 100755 index 0000000..1fb8c1d --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.exp @@ -0,0 +1,18 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "user 'foo': no group 1001" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.test b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.test new file mode 100755 index 0000000..8df5482 --- /dev/null +++ b/tests/tests/cktools/pwck/12_pwck_unknown_user_group_ID/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check that the user's GID matches an existing group" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config.txt b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/group b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/gshadow b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/passwd b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/passwd new file mode 100644 index 0000000..33debc5 --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/passwd @@ -0,0 +1,12 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh +foo:x:1001:1001::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/shadow b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/data/passwd b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/data/passwd new file mode 100644 index 0000000..a45f378 --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/data/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1001:1001::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.exp b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.exp new file mode 100755 index 0000000..825a111 --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "duplicate password entry" +expect "delete line 'foo:x:1000:1000::/home:/bin/sh'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.test b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.test new file mode 100755 index 0000000..4d4b957 --- /dev/null +++ b/tests/tests/cktools/pwck/13_pwck_duplicate_entry_passwd/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check that user are uniq" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config.txt b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/group b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/gshadow b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/passwd b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/shadow b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/shadow new file mode 100644 index 0000000..a5344f5 --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/config/etc/shadow @@ -0,0 +1,12 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/data/shadow b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/data/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/data/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.exp b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.exp new file mode 100755 index 0000000..4431322 --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.exp @@ -0,0 +1,20 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "duplicate shadow password entry" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.test b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.test new file mode 100755 index 0000000..4430d1a --- /dev/null +++ b/tests/tests/cktools/pwck/14_pwck_duplicate_entry_shadow/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check unicity of users in the shadow database" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config.txt b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/group b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/gshadow b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/passwd b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/passwd new file mode 100644 index 0000000..69c72ff --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/passwd @@ -0,0 +1,12 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh +foo:x:1000:1000::/home:/bin/bash diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/shadow b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.exp b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.exp new file mode 100755 index 0000000..06dcc79 --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "duplicate password entry" +expect "delete line 'foo:x:1000:1000::/home:/bin/sh'? " +send "no\r" +expect "duplicate password entry" +expect "delete line 'foo:x:1000:1000::/home:/bin/bash'? " +send "no\r" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.test b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.test new file mode 100755 index 0000000..9ceb60e --- /dev/null +++ b/tests/tests/cktools/pwck/15_pwck_duplicate_entry_passwd_no_changes/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check unicity of users in passwd" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config.txt b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/group b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/gshadow b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/passwd b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/shadow b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/shadow new file mode 100644 index 0000000..a5344f5 --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/config/etc/shadow @@ -0,0 +1,12 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.exp b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.exp new file mode 100755 index 0000000..8ee1246 --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "duplicate shadow password entry" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "no\r" +expect "duplicate shadow password entry" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "no\r" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.test b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.test new file mode 100755 index 0000000..8eed716 --- /dev/null +++ b/tests/tests/cktools/pwck/16_pwck_duplicate_entry_shadow_no_changes/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks unicity of users in shadow" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config.txt b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/group b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/gshadow b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/passwd b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/passwd new file mode 100644 index 0000000..69c72ff --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/passwd @@ -0,0 +1,12 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh +foo:x:1000:1000::/home:/bin/bash diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/shadow b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/data/passwd b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/data/passwd new file mode 100644 index 0000000..6377a5d --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/data/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.exp b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.exp new file mode 100755 index 0000000..33accaf --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "duplicate password entry" +expect "delete line 'foo:x:1000:1000::/home:/bin/sh'? " +send "no\r" +expect "duplicate password entry" +expect "delete line 'foo:x:1000:1000::/home:/bin/bash'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.test b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.test new file mode 100755 index 0000000..d61a946 --- /dev/null +++ b/tests/tests/cktools/pwck/17_pwck_duplicate_entry_passwd_delete_second/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks the unicity of users in passwd" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config.txt b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/group b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/gshadow b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/passwd b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/passwd new file mode 100644 index 0000000..a82dbf6 --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +f o o:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/shadow b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/shadow new file mode 100644 index 0000000..f771b66 --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +f o o:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.exp b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.exp new file mode 100755 index 0000000..3767009 --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.exp @@ -0,0 +1,18 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid user name 'f o o'" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.test b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.test new file mode 100755 index 0000000..587f11c --- /dev/null +++ b/tests/tests/cktools/pwck/18_pwck_invalid_user_name/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the validity of usernames" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config.txt b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/group b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/gshadow b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/passwd b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/passwd new file mode 100644 index 0000000..850768a --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:-1:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/shadow b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/passwd b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/passwd new file mode 100644 index 0000000..2b911d1 --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/passwd @@ -0,0 +1,10 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/shadow b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/shadow new file mode 100644 index 0000000..0a2fddb --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/data/shadow @@ -0,0 +1,10 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.exp b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.exp new file mode 100755 index 0000000..6c51256 --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid password file entry" +expect "delete line 'foo:x:-1:1000::/home:/bin/sh'? " +send "yes\r" +expect "no matching password file entry in /etc/passwd" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.test b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.test new file mode 100755 index 0000000..8b56894 --- /dev/null +++ b/tests/tests/cktools/pwck/19_pwck_invalid_user_ID_-1/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks the validity of UIDs" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config.txt b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/group b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/gshadow b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/passwd b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/passwd new file mode 100644 index 0000000..e438734 --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:4294967295:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/shadow b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.exp b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.exp new file mode 100755 index 0000000..d69ab37 --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.exp @@ -0,0 +1,18 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid user ID '4294967295'" +expect "pwck: no changes" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.test b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.test new file mode 100755 index 0000000..19d157f --- /dev/null +++ b/tests/tests/cktools/pwck/20_pwck_invalid_user_ID_4294967295/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck check the validity of the UID" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config.txt b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config.txt new file mode 100644 index 0000000..01189bd --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config.txt @@ -0,0 +1,2 @@ +user foo +group foo with typo in group diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/group b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/gshadow b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/gshadow new file mode 100644 index 0000000..5042e58 --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/passwd b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/passwd new file mode 100644 index 0000000..de8dd66 --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/passwd @@ -0,0 +1,11 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +foo:x:4294967296:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/shadow b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/shadow new file mode 100644 index 0000000..d3c0775 --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/config/etc/shadow @@ -0,0 +1,11 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/passwd b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/passwd new file mode 100644 index 0000000..2b911d1 --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/passwd @@ -0,0 +1,10 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/shadow b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/shadow new file mode 100644 index 0000000..0a2fddb --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/data/shadow @@ -0,0 +1,10 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.exp b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.exp new file mode 100755 index 0000000..4dc35ce --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.exp @@ -0,0 +1,23 @@ +#!/usr/bin/expect + +set timeout 2 +expect_after default {puts stderr "\nFAIL"; exit 1} + +spawn /bin/sh +send "if \[ \$(id -u) -eq 0 \]; then PS1='# '; else PS1='$ '; fi\r" +expect "# " + +send "pwck\r" +expect "invalid password file entry" +expect "delete line 'foo:x:4294967296:1000::/home:/bin/sh'? " +send "yes\r" +expect "no matching password file entry in /etc/passwd" +expect "delete line 'foo:!:12977:0:99999:7:::'? " +send "yes\r" +expect "pwck: the files have been updated" +expect "# " +send "echo \$?\r" +expect "2" +send "exit\r" +puts "OK\n" +exit 0 diff --git a/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.test b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.test new file mode 100755 index 0000000..8b56894 --- /dev/null +++ b/tests/tests/cktools/pwck/21_pwck_invalid_user_ID_4294967296/pwck.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "grpck checks the validity of UIDs" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +./pwck.exp + +echo -n "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/22_pwck_usage/config.txt b/tests/tests/cktools/pwck/22_pwck_usage/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/pwck/22_pwck_usage/config/etc/group b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/pwck/22_pwck_usage/config/etc/gshadow b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/pwck/22_pwck_usage/config/etc/passwd b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/passwd new file mode 100644 index 0000000..43fc135 --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/pwck/22_pwck_usage/config/etc/shadow b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/22_pwck_usage/data/usage.out b/tests/tests/cktools/pwck/22_pwck_usage/data/usage.out new file mode 100644 index 0000000..fa62941 --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/data/usage.out @@ -0,0 +1,10 @@ +Usage: pwck [options] [passwd [shadow]] + +Options: + -h, --help display this help message and exit + -q, --quiet report errors only + -r, --read-only display errors and warnings + but do not change files + -R, --root CHROOT_DIR directory to chroot into + -s, --sort sort entries by UID + diff --git a/tests/tests/cktools/pwck/22_pwck_usage/pwck.test b/tests/tests/cktools/pwck/22_pwck_usage/pwck.test new file mode 100755 index 0000000..ccca31a --- /dev/null +++ b/tests/tests/cktools/pwck/22_pwck_usage/pwck.test @@ -0,0 +1,47 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck can display its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get pwck usage (pwck -h)..." +pwck -h >tmp/usage.out + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/usage.out +echo "=======================================================================" +echo -n "Check the usage message..." +diff -au data/usage.out tmp/usage.out +echo "usage message OK." +rm -f tmp/usage.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/config.txt b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/group b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/gshadow b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/passwd b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/shadow b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/23_pwck_locked_passwd/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/data/pwck.err b/tests/tests/cktools/pwck/23_pwck_locked_passwd/data/pwck.err new file mode 100644 index 0000000..798e427 --- /dev/null +++ b/tests/tests/cktools/pwck/23_pwck_locked_passwd/data/pwck.err @@ -0,0 +1,2 @@ +pwck: existing lock file /etc/passwd.lock without a PID +pwck: cannot lock /etc/passwd; try again later. diff --git a/tests/tests/cktools/pwck/23_pwck_locked_passwd/pwck.test b/tests/tests/cktools/pwck/23_pwck_locked_passwd/pwck.test new file mode 100755 index 0000000..8731b28 --- /dev/null +++ b/tests/tests/cktools/pwck/23_pwck_locked_passwd/pwck.test @@ -0,0 +1,60 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck checks if the passwd file is locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/passwd.lock' 0 + +change_config + +echo -n "Create lock file for /etc/passwd..." +touch /etc/passwd.lock +echo "done" + +echo -n "Check user database (pwck)..." +pwck 2>tmp/pwck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/passwd.lock + +echo -n "Check returned status ($status)..." +test "$status" = "4" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/pwck.err tmp/pwck.err +echo "error message OK." +rm -f tmp/pwck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/config.txt b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/group b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/gshadow b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/passwd b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/shadow b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/24_pwck_locked_shadow/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/data/pwck.err b/tests/tests/cktools/pwck/24_pwck_locked_shadow/data/pwck.err new file mode 100644 index 0000000..f8112fb --- /dev/null +++ b/tests/tests/cktools/pwck/24_pwck_locked_shadow/data/pwck.err @@ -0,0 +1,2 @@ +pwck: existing lock file /etc/shadow.lock without a PID +pwck: cannot lock /etc/shadow; try again later. diff --git a/tests/tests/cktools/pwck/24_pwck_locked_shadow/pwck.test b/tests/tests/cktools/pwck/24_pwck_locked_shadow/pwck.test new file mode 100755 index 0000000..61e2926 --- /dev/null +++ b/tests/tests/cktools/pwck/24_pwck_locked_shadow/pwck.test @@ -0,0 +1,60 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck checks if the shadow file is locked" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config; rm -f /etc/shadow.lock' 0 + +change_config + +echo -n "Create lock file for /etc/shadow..." +touch /etc/shadow.lock +echo "done" + +echo -n "Check user database (pwck)..." +pwck 2>tmp/pwck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/shadow.lock + +echo -n "Check returned status ($status)..." +test "$status" = "4" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/pwck.err tmp/pwck.err +echo "error message OK." +rm -f tmp/pwck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config.txt b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/group b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/gshadow b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/passwd b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/shadow b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/data/pwck.err b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/data/pwck.err new file mode 100644 index 0000000..b08f13f --- /dev/null +++ b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/data/pwck.err @@ -0,0 +1,11 @@ +pwck: invalid option -- 'Z' +Usage: pwck [options] [passwd [shadow]] + +Options: + -h, --help display this help message and exit + -q, --quiet report errors only + -r, --read-only display errors and warnings + but do not change files + -R, --root CHROOT_DIR directory to chroot into + -s, --sort sort entries by UID + diff --git a/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/pwck.test b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/pwck.test new file mode 100755 index 0000000..a8d5941 --- /dev/null +++ b/tests/tests/cktools/pwck/25_pwck_usage_invalid_option/pwck.test @@ -0,0 +1,56 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck displays its usage message when called with an invalid option" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Call pwck with an invalid option (pwck -Z)..." +pwck -Z 2>tmp/pwck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/passwd.lock + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/pwck.err tmp/pwck.err +echo "error message OK." +rm -f tmp/pwck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/config.txt b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/group b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/gshadow b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/passwd b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/shadow b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/26_pwck_usage-s-r/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/data/pwck.err b/tests/tests/cktools/pwck/26_pwck_usage-s-r/data/pwck.err new file mode 100644 index 0000000..e44d375 --- /dev/null +++ b/tests/tests/cktools/pwck/26_pwck_usage-s-r/data/pwck.err @@ -0,0 +1 @@ +pwck: -s and -r are incompatible diff --git a/tests/tests/cktools/pwck/26_pwck_usage-s-r/pwck.test b/tests/tests/cktools/pwck/26_pwck_usage-s-r/pwck.test new file mode 100755 index 0000000..6f0a3b5 --- /dev/null +++ b/tests/tests/cktools/pwck/26_pwck_usage-s-r/pwck.test @@ -0,0 +1,56 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck warns that -r and -s are exclusive" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Call pwck with the -r and -s options (pwck -r -s)..." +pwck -r -s 2>tmp/pwck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/passwd.lock + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/pwck.err tmp/pwck.err +echo "error message OK." +rm -f tmp/pwck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/config.txt b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/group b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/group new file mode 100644 index 0000000..b6fae89 --- /dev/null +++ b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3:root +adm:x:4:root,foo +tty:x:5: +disk:x:6: +lp:x:7:foo,root +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21:foo +voice:x:22: +cdrom:x:24: +floppy:x:25:foo +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100:foo +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/gshadow b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/gshadow new file mode 100644 index 0000000..1f2ba8d --- /dev/null +++ b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*::root +adm:*::root,foo +tty:*::foo +disk:*:foo: +lp:*::foo,root +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:foo:foo +voice:*:: +cdrom:*:foo:foo +floppy:*::foo +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/passwd b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/passwd new file mode 100644 index 0000000..bf52df0 --- /dev/null +++ b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/home/foo:/bin/false diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/shadow b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/27_pwck_usage_3_files/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/data/pwck.err b/tests/tests/cktools/pwck/27_pwck_usage_3_files/data/pwck.err new file mode 100644 index 0000000..fa62941 --- /dev/null +++ b/tests/tests/cktools/pwck/27_pwck_usage_3_files/data/pwck.err @@ -0,0 +1,10 @@ +Usage: pwck [options] [passwd [shadow]] + +Options: + -h, --help display this help message and exit + -q, --quiet report errors only + -r, --read-only display errors and warnings + but do not change files + -R, --root CHROOT_DIR directory to chroot into + -s, --sort sort entries by UID + diff --git a/tests/tests/cktools/pwck/27_pwck_usage_3_files/pwck.test b/tests/tests/cktools/pwck/27_pwck_usage_3_files/pwck.test new file mode 100755 index 0000000..9c8c81d --- /dev/null +++ b/tests/tests/cktools/pwck/27_pwck_usage_3_files/pwck.test @@ -0,0 +1,56 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck displays its usage message when called with 3 files" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Call pwck with 3 files (pwck data/passwd data/shadow data/foo)..." +pwck data/passwd data/shadow data/foo 2>tmp/pwck.err && exit 1 || { + status=$? +} +echo "OK" + +rm -f /etc/passwd.lock + +echo -n "Check returned status ($status)..." +test "$status" = "1" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.err +echo "=======================================================================" +echo -n "Check that there were a failure message..." +diff -au data/pwck.err tmp/pwck.err +echo "error message OK." +rm -f tmp/pwck.err + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config.txt b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/group b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/gshadow b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/gshadow new file mode 100644 index 0000000..be1575e --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:x:: diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/passwd b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/passwd new file mode 100644 index 0000000..57434e6 --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/passwd @@ -0,0 +1,23 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/tmp:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/tmp:/bin/sh +uucp:x:10:10:uucp:/tmp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/tmp:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/tmp:/bin/sh +irc:x:39:39:ircd:/tmp:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/tmp:/bin/sh +nobody:x:65534:65534:nobody:/tmp:/bin/sh +Debian-exim:x:102:102::/tmp:/bin/false +foo:pass:1000:1000::/home/foo:/bin/sh +foo:pass:1001:1000::/tmp:/bin/sh +foo2:pass:1000:1000::/tmp:/bin/shs +foo3:x:1000:1000::/tmp: diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/shadow b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/data/pwck.out b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/data/pwck.out new file mode 100644 index 0000000..e0cac3d --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/data/pwck.out @@ -0,0 +1,7 @@ +duplicate password entry +delete line 'foo:pass:1000:1000::/home/foo:/bin/sh'? No +user 'foo': directory '/home/foo' does not exist +duplicate password entry +delete line 'foo:pass:1001:1000::/tmp:/bin/sh'? No +user 'foo2': program '/bin/shs' does not exist +pwck: no changes diff --git a/tests/tests/cktools/pwck/28_pwck_no_shadow_file/pwck.test b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/pwck.test new file mode 100755 index 0000000..e792f78 --- /dev/null +++ b/tests/tests/cktools/pwck/28_pwck_no_shadow_file/pwck.test @@ -0,0 +1,58 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck report issues when the shadow file does not exist" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Remove /etc/shadow..." +rm -f /etc/shadow +echo "OK" + +echo -n "Check user database (pwck -r)..." +pwck -r >tmp/pwck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.out +echo "=======================================================================" +echo -n "Check the report..." +diff -au data/pwck.out tmp/pwck.out +echo "report OK." +rm -f tmp/pwck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +test ! -f /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config.txt b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/group b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/gshadow b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/gshadow new file mode 100644 index 0000000..be1575e --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:x:: diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/passwd b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/passwd new file mode 100644 index 0000000..ded978d --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/tmp:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/tmp:/bin/sh +uucp:x:10:10:uucp:/tmp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/tmp:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/tmp:/bin/sh +irc:x:39:39:ircd:/tmp:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/tmp:/bin/sh +nobody:x:65534:65534:nobody:/tmp:/bin/sh +Debian-exim:x:102:102::/tmp:/bin/false +foo:x:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/shadow b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/shadow new file mode 100644 index 0000000..3781988 --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:99997:0:99999:7::: diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/data/pwck.out b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/data/pwck.out new file mode 100644 index 0000000..12d2fbf --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/data/pwck.out @@ -0,0 +1,2 @@ +user foo: last password change in the future +pwck: no changes diff --git a/tests/tests/cktools/pwck/29_pwck_password_change_in_future/pwck.test b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/pwck.test new file mode 100755 index 0000000..6ccd810 --- /dev/null +++ b/tests/tests/cktools/pwck/29_pwck_password_change_in_future/pwck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck checks that the password was set in the past" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Check user database (pwck -r)..." +pwck -r >tmp/pwck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.out +echo "=======================================================================" +echo -n "Check the report..." +diff -au data/pwck.out tmp/pwck.out +echo "report OK." +rm -f tmp/pwck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/config.txt b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/group b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/gshadow b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/gshadow new file mode 100644 index 0000000..be1575e --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:x:: diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/passwd b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/passwd new file mode 100644 index 0000000..e5bbc07 --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/passwd @@ -0,0 +1,23 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/tmp:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/tmp:/bin/sh +uucp:x:10:10:uucp:/tmp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/tmp:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/tmp:/bin/sh +irc:x:39:39:ircd:/tmp:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/tmp:/bin/sh +nobody:x:65534:65534:nobody:/tmp:/bin/sh +Debian-exim:x:102:102::/tmp:/bin/false +foo:x:1000:1000::/home:/bin/sh ++:::::: +-bar:::::: +foo:x:1001:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/shadow b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/shadow new file mode 100644 index 0000000..d3c0765 --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/config/etc/shadow @@ -0,0 +1,23 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:99997:0:99999:7::: ++:::::::: +-bar:::::::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/data/pwck.out b/tests/tests/cktools/pwck/30_pwck_NIS_entries/data/pwck.out new file mode 100644 index 0000000..56dce35 --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/data/pwck.out @@ -0,0 +1,10 @@ +duplicate password entry +delete line 'foo:x:1000:1000::/home:/bin/sh'? No +duplicate password entry +delete line 'foo:x:1001:1000::/home:/bin/sh'? No +duplicate shadow password entry +delete line 'Debian-exim:!:12977:0:99999:7:::'? No +user foo: last password change in the future +duplicate shadow password entry +delete line 'Debian-exim:!:12977:0:99999:7:::'? No +pwck: no changes diff --git a/tests/tests/cktools/pwck/30_pwck_NIS_entries/pwck.test b/tests/tests/cktools/pwck/30_pwck_NIS_entries/pwck.test new file mode 100755 index 0000000..733fa94 --- /dev/null +++ b/tests/tests/cktools/pwck/30_pwck_NIS_entries/pwck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck ignores NIS lines silently" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Check user database (pwck -r)..." +pwck -r >tmp/pwck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.out +echo "=======================================================================" +echo -n "Check the report..." +diff -au data/pwck.out tmp/pwck.out +echo "report OK." +rm -f tmp/pwck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config.txt b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/group b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/group new file mode 100644 index 0000000..fecba0c --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/gshadow b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/gshadow new file mode 100644 index 0000000..be1575e --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:x:: diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/passwd b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/passwd new file mode 100644 index 0000000..fbeb96c --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/tmp:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/tmp:/bin/sh +uucp:x:10:10:uucp:/tmp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/tmp:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/tmp:/bin/sh +irc:x:39:39:ircd:/tmp:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/tmp:/bin/sh +nobody:x:65534:65534:nobody:/tmp:/bin/sh +Debian-exim:x:102:102::/tmp:/bin/false +foo:pass:1000:1000::/home:/bin/sh diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/shadow b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/shadow new file mode 100644 index 0000000..2baad3b --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/config/etc/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/data/pwck.out b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/data/pwck.out new file mode 100644 index 0000000..5cedc7c --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/data/pwck.out @@ -0,0 +1,2 @@ +user foo has an entry in /etc/shadow, but its password field in /etc/passwd is not set to 'x' +pwck: no changes diff --git a/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/pwck.test b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/pwck.test new file mode 100755 index 0000000..4c5b1f5 --- /dev/null +++ b/tests/tests/cktools/pwck/31_pwck_shadow_entry_passwd_no_x/pwck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck checks that the password is set to x if there is a shadow entry" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Check user database (pwck -r)..." +pwck -r >tmp/pwck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.out +echo "=======================================================================" +echo -n "Check the report..." +diff -au data/pwck.out tmp/pwck.out +echo "report OK." +rm -f tmp/pwck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/config.txt b/tests/tests/cktools/pwck/32_pwck_quiet/config.txt new file mode 100644 index 0000000..31f5635 --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/config.txt @@ -0,0 +1,10 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo, in group users (only in /etc/group) +user foo, in group tty (only in /etc/gshadow) +user foo, in group floppy +user foo, admin of group disk +user foo, admin and member of group fax +user foo, admin and member of group cdrom (only in /etc/gshadow) diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/group b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/group new file mode 100644 index 0000000..1012390 --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/gshadow b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/gshadow new file mode 100644 index 0000000..ae42486 --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/passwd b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/passwd new file mode 100644 index 0000000..4491abe --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/passwd @@ -0,0 +1,22 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +Debian-exim:x:103:102::/var/spool/exim4:/bin/false +Debian-exim2:x:104:103::/var/spool/exim4:/bin/false +Debian-exim3:x:102:103::/var/spool/exim4:/bin/false diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/shadow b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/shadow new file mode 100644 index 0000000..5f50d18 --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/data/pwck.out b/tests/tests/cktools/pwck/32_pwck_quiet/data/pwck.out new file mode 100644 index 0000000..c9a8c2c --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/data/pwck.out @@ -0,0 +1,9 @@ +duplicate password entry +delete line 'Debian-exim:x:102:102::/var/spool/exim4:/bin/false'? No +duplicate password entry +delete line 'Debian-exim:x:103:102::/var/spool/exim4:/bin/false'? No +no matching password file entry in /etc/shadow +add user 'Debian-exim2' in /etc/shadow? No +no matching password file entry in /etc/shadow +add user 'Debian-exim3' in /etc/shadow? No +pwck: no changes diff --git a/tests/tests/cktools/pwck/32_pwck_quiet/pwck.test b/tests/tests/cktools/pwck/32_pwck_quiet/pwck.test new file mode 100755 index 0000000..c8a8b8e --- /dev/null +++ b/tests/tests/cktools/pwck/32_pwck_quiet/pwck.test @@ -0,0 +1,54 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "pwck can display its usage message" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +echo -n "Get pwck usage (pwck -q -r)..." +pwck -q -r >tmp/pwck.out && exit 1 || { + status=$? +} +echo "OK" + +echo -n "Check returned status ($status)..." +test "$status" = "2" +echo "OK" + +echo "pwck reported:" +echo "=======================================================================" +cat tmp/pwck.out +echo "=======================================================================" +echo -n "Check the report..." +diff -au data/pwck.out tmp/pwck.out +echo "report OK." +rm -f tmp/pwck.out + +echo -n "Check the passwd file..." +../../../common/compare_file.pl config/etc/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../../common/compare_file.pl config/etc/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../../common/compare_file.pl config/etc/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../../common/compare_file.pl config/etc/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/tests/cleanup.sh b/tests/tests/cleanup.sh new file mode 100755 index 0000000..26b1b27 --- /dev/null +++ b/tests/tests/cleanup.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +for t in * +do + if [ ! -d $t/data ]; then continue; fi + for i in passwd group shadow gshadow + do + if [ -f $t/data/$i ] + then + if cmp -s $t/config/etc/$i $t/data/$i + then + echo "# $t/data/$i identical to config" + svn rm "$t/data/$i" + fi + fi + done +done + +for t in * +do + cd $t + if [ ! -d data ]; then cd ..; continue; fi + for i in data/* + do + if [ ! -f $i ]; then continue; fi + if ! grep -q $i *.test + then + echo "# $t/$i not used" + svn rm "$i" + fi + done + cd .. +done diff --git a/tests/tests/common/Makefile b/tests/tests/common/Makefile new file mode 100644 index 0000000..4ee04dd --- /dev/null +++ b/tests/tests/common/Makefile @@ -0,0 +1,14 @@ +all: \ + fopen_failure.so \ + link_failure.so \ + open_RDONLY_failure.so \ + open_RDWR_failure.so \ + rename_failure.so \ + rmdir_failure.so \ + time_0.so \ + time_past.so \ + unlink_failure.so \ + unlinkat_failure.so + +%.so: %.c + gcc -W -Wall -pedantic -g $< -shared -ldl -o $@ diff --git a/tests/tests/common/compare_file.pl b/tests/tests/common/compare_file.pl new file mode 100755 index 0000000..eb498d3 --- /dev/null +++ b/tests/tests/common/compare_file.pl @@ -0,0 +1,116 @@ +#!/usr/bin/perl + +open (TEMPLATE, $ARGV[0]) or die "Cannot open '".$ARGV[0]."': $!"; +my $template = join "",